2010-10-28 27 views
0

Je veux savoir si un rayon provenant d'un point arbitraire va frapper un polygone. Il serait utile de connaître le point dans l'espace où cette intersection se produit et aussi une référence à ce polygone. J'utilise la bibliothèque System.Windows.Media.Media3D et j'ai effectué un test de trace de rayon mais je n'ai pas encore trouvé d'informations sur l'objet HitTestResult retourné par VisualTreeHelper.HitTest.Test de rayons arbitraires utilisant C# et WPF

Est-ce que je cherche au mauvais endroit? Y at-il une approche différente pour tester l'intersection arbitraire?

Le Codez:

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. 
    } 
} 

Répondre

0

Pouvez-vous réduire le HitTestResult à RayHitTestResult? Est-ce que cela a l'information dont vous avez besoin?

2

Je ne sais pas System.Windows.Media.Media3D, mais:

  1. Je suppose que vous devez créer la direction des rayons en construisant un vecteur de la "coordonnée de l'oeil" à la coordonnée de la souris sur le plan de la vue
  2. Si le polygone est planaire, vous pouvez résoudre l'intersection du plan et du rayon pour obtenir la coordonnée de frappe dans ce plan, puis déterminer si le point est dans le polygone

Une petite réponse vague je sais, mais j'espère que ça vous sera utile de toute façon.