سؤال

أريد أن أعرف ما إذا كان شعاع من نقطة تعسفية سيضرب مضلعًا. سيكون من المفيد معرفة النقطة في الفضاء الذي يحدث التقاطع وأيضًا إشارة إلى هذا المضلع. أنا أستخدم مكتبة System.windows.media.media3d وقمت بإجراء اختبار تتبع الأشعة ، لكنني لم أقم بعد بتكسير أي من المعلومات التي أريدها من كائن HitTestResult الذي تم إرجاعه بواسطة VisualTreeHelper.hittest.

هل أنظر في المكان الخطأ؟

هل هناك نهج مختلف لاختبار التقاطع التعسفي؟

الكودز:

private void MainViewport_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
    // Retrieve the coordinate of the mouse position.
    Point pt = e.GetPosition((UIElement)sender);

    // Perform the hit test against a given portion of the visual object tree.
    HitTestResult result = VisualTreeHelper.HitTest(MainViewport, pt);

    if (result != null)
    {
        // Perform action on hit visual object.
    }
}
هل كانت مفيدة؟

المحلول

هل يمكنك الخروج HitTestResult إلى RayHitTestResult؟ هل هذا لديه المعلومات التي تحتاجها؟

نصائح أخرى

لا أعرف system.windows.media.media3d ، ولكن:

  1. أعتقد أنه يجب عليك إنشاء اتجاه الشعاع عن طريق بناء متجه من "إحداثيات العين" إلى تنسيق الماوس على متن الطائرة
  2. إذا كان المضلع مستويًا ، فيمكنك حل تقاطع الطائرة والأشعة للحصول على تنسيق ضرب في تلك الطائرة ، ثم معرفة ما إذا كانت هذه النقطة داخل المضلع

استجابة غامضة قليلاً أعرفها ، لكنني آمل أن يكون ذلك مفيدًا لك على أي حال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top