使用 C# 和 WPF 进行任意光线测试

发布于 2024-09-30 08:01:18 字数 676 浏览 6 评论 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.
    }
}

I want to know if a ray from an arbitrary point will strike a polygon. It would be useful to know the point in space that intersection occurs and also a reference to that polygon. I'm using the System.Windows.Media.Media3D library and have done a ray trace test but have yet to crack any of teh information i want out of the HitTestResult object returned by VisualTreeHelper.HitTest.

Am i looking in the wrong place?

Is there a different approach to test for arbitrary intersection?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

友谊不毕业 2024-10-07 08:01:18

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

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

我知道有点模糊的反应,但我希望它无论如何对你有帮助。

I don't know the System.Windows.Media.Media3D, but:

  1. I guess you should create the ray direction by constructing a vector from the "eye coordinate" to the mouse-coordinate on the view-plane
  2. If the polygon is planar, you could solve for the intersection of the plane and the ray to get the hit-coordinate in that plane, then figure out if that point is within the polygon

A little vague response I know, but I hope it will be helpfull to you anyways.

酒与心事 2024-10-07 08:01:18

您可以将 HitTestResult 向下转换为 RayHitTestResult?其中有您需要的信息吗?

Can you downcast the HitTestResult to a RayHitTestResult? Does that have the information you need?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文