algorithm - 检查鲁洛三角形是否在 C 中的三角形/五边形/圆形的内部/外部

标签 algorithm geometry computational-geometry geometry-surface

您可以在此处检查鲁洛三角形的定义: https://en.wikipedia.org/wiki/Reuleaux_triangle

我一直在处理几何二维形状并进行检查,设置测试以查看它们是否与另一个形状相交,或者位于另一个形状内部(包括接触)。我测试了圆(以 Point 类型作为中心,以 double x,y 属性作为坐标,以及 double 半径定义),到目前为止,我已经了解了三角形(具有三个顶点)、五边形(具有五个顶点),但我发现了一个有趣的形状,称为鲁洛三角形,它由三个圆组成,圆弧边到对边顶点的距离相同。

首先,我尝试查看顶点是否在形状内部,就好像我使用边缘作为原始大圆的一部分(其顶点穿过的部分是中心),或者尝试看看我上面提到的其他形状的一部分是否与它相交(圆形比具有直边的形状更令人困惑),但我卡住了,因为我不知道如何限制角度或其他东西,所以我只能扫描要测试的弧线的这一部分,而且实际上很难设置检测相交的测试。

我试图找到从顶点到弧边中点的距离,并将其视为六边形,但小弧段中总是有更多的空间不会被包含在内。现在我不知道如何设置一种新方法来测试这个奇怪的圆三角形是否在内部/外部/相交/接触我已经找到一种测量位置关系的方法的任何形状(圆形、三角形、五边形)。

那么您对此有何想法?也许形成这个三角形的三个大圆圈会有帮助?

最佳答案

找到另一个形状与围绕鲁洛三角形 A 角的圆的交点,以及位于 A 周围圆内的另一个形状的顶点(这就是下图中的 4 个黑点) 。

然后检查这些点中是否有任何点位于 AB 线的右侧和 AC 线的左侧(即图像中的红色部分;4 个黑点中的 2 个位于该位置,因此形状相交)。

Reuleaux Triangle and Pentagon

对 B 和 C 周围的圆执行相同的操作。这将为您提供鲁洛三角形和其他形状的所有交点,以及鲁洛三角形内的其他形状的所有顶点。

此外,您应该检查角 A、B 和 C 是否位于另一个形状内,以防整个鲁洛三角形位于另一个形状内。

应该可以通过组合已有的圆形和三角形函数(部分)来做到这一点。

关于algorithm - 检查鲁洛三角形是否在 C 中的三角形/五边形/圆形的内部/外部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52674687/

相关文章:

algorithm - 包含最大权重的生成树

opencv - 从基本矩阵中查找单应矩阵

图形问题 : How do I restrict the mouse cursor to within a circle?

algorithm - 如何找到位于采样边界内的最大圆?

algorithm - 网络流算法相关问题

algorithm - 软件开发中的非确定性有限状态机?

c - 在不破坏原始列表和额外存储空间的情况下深度复制链表(使用 ANSI C)

geolocation - 如何使用 ArcMap 或其他软件计算拓扑距离?

algorithm - 具有多个键和范围搜索支持的 TreeMap

c++ - 在包围点的网格内找到三角形的快速方法