0

我想知道来自任意点的光线是否会撞击多边形。知道发生交叉的空间点以及对该多边形的引用会很有用。我正在使用 System.Windows.Media.Media3D 库并进行了光线跟踪测试,但还没有从 VisualTreeHelper.HitTest 返回的 HitTestResult 对象中破解我想要的任何信息。

我找错地方了吗?

是否有不同的方法来测试任意交叉点?

代码:

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

2 回答 2

2

我不知道 System.Windows.Media.Media3D,但是:

  1. 我想你应该通过在视图平面上构造一个从“眼睛坐标”到鼠标坐标的向量来创建光线方向
  2. 如果多边形是平面的,您可以求解平面和射线的交点以获得该平面中的命中坐标,然后确定该点是否在多边形内

我知道一个有点模糊的回答,但我希望它对你有帮助。

于 2010-10-28T17:40:52.470 回答
0

你能把HitTestResulta降级RayHitTestResult吗?那有你需要的信息吗?

于 2011-04-01T10:57:51.970 回答