首页 > 解决方案 > 确定一个对象是否在 2D 空间中其他两个对象的路径中

问题描述

假设有 3 个对象由 xy 坐标中的矩形定义。矩形可以是任何方向(不一定平行于轴)。

您将如何处理从对象 A 的角度确定对象 C 是否部分、完全或完全不被对象 B 遮挡的问题(对象 A 可以从其矩形的任何位置看到)?

第二个问题:是否可以确定物体 C 可见的百分比?

标签: mathcoordinate-systems

解决方案


这是我的(完全未经测试的)方法。
首先考虑同样的问题,但只从一个固定点 P 看。

找到穿过 P 的两条(无限)线并包围你的矩形 B。由于它是一个矩形,这两条线将是穿过 P 和 B 的每个顶点的四条线中的两条。

检查 C 的每个顶点是否在这两行之间。如果 C 的任何顶点位于这两条线之间,请检查它是否比 B 更接近或更远离 P。如果它比 B 更远,则至少部分遮挡 C。

现在对 A 的每个顶点执行此操作。如果您从 A 中的一个点 P 看到 C 的一部分,从 A 中的不同点 P 看到 C 的不同部分,您可能会得到更复杂的结果。我将由您决定如何处理那个。

要确定覆盖率百分比,请计算从矩形 C 与这两条线相交得到的形状并计算其面积,然后除以形状的总面积。

我已经把所有的数学问题都留给你来解决,但是如果你对你的工作有任何具体的问题,请随时提出这些问题。

添加一些图片会很好地受益于这个答案,但我希望您在根据提供的步骤绘制自己的图表时能够理解这个答案。


推荐阅读