【问题标题】:test if square overlaps poly in c++ w/ directx (optional)测试正方形是否与带有directx的c ++中的多边形重叠(可选)
【发布时间】:2012-12-14 21:25:27
【问题描述】:

我将如何检查正方形区域内是否存在三角形多边形? (即想象一个正方形网格覆盖一组二维多边形。)

或者更好的是,我如何确定这些正方形之一被给定多边形(如果有的话)占据的百分比。

我以前使用过directx,但似乎无法在他们的文档中找到正确的功能组合。 - 虽然感觉光线追踪可能是相关的。

我使用 c++,如果有帮助可以使用 directx。 感谢您的任何建议或想法。 :)

【问题讨论】:

  • 要检查三角形是否存在于正方形中,只需检查它的任何角是否在正方形内。您可以通过简单地将正方形的角坐标与三角形的坐标进行比较来做到这一点。
  • @Algomorph 不考虑大三角形中心的正方形

标签: c++ directx raytracing hittest


【解决方案1】:

您可以考虑使用 clipper 库来进行通用 2D 多边形裁剪、面积计算、相交测试等。它相当紧凑且易于处理,并且有很好的使用示例。

它是 Vatti 裁剪算法的一种实现,可以处理许多奇怪的边缘情况(这对你来说可能有点过头了)

【讨论】:

    【解决方案2】:

    有几种方法可以做到这一点,它本质上是一个剪辑问题。

    一种方法是使用 Cohen-Sutherland 算法:http://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland

    您将运行该算法 3 次(每个三角形边运行一次)。

    然后你可以通过计算area(clipped_triangle) / area(square_region)来找到所占面积的百分比。

    【讨论】:

      【解决方案3】:

      您可能会考虑使用裁剪器库来进行通用 2D 多边形裁剪、面积计算、相交测试等。它相当紧凑且易于处理,并且有很好的使用示例。

      它是 Vatti 裁剪算法的一种实现,可以处理许多奇怪的边缘情况(这对你来说可能有点过头了)

      Can ho celadon city - vinhomes central park

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-31
        • 1970-01-01
        • 2020-06-19
        • 1970-01-01
        • 2014-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多