【发布时间】:2019-03-11 11:55:12
【问题描述】:
您可以在此处检查 Reuleaux 三角形的定义: https://en.wikipedia.org/wiki/Reuleaux_triangle
我一直在处理几何 2D 形状并进行检查,设置测试以查看它们是否与另一个相交,或者在另一个形状内(包括触摸)。我测试了圆(以 Point 类型为中心,以 double x,y 属性为坐标,以及 double 半径),三角形(三个顶点Point),五边形(五个顶点Point),但是我发现了一个有趣的形状,叫做reuleaux triangle,它是由三个圆组成的,并且弧边到对边的顶点的距离相同。
首先,我尝试查看顶点是否在形状内部,就好像我使用边缘作为原始大圆的一部分一样(圆圈比直边形状更令人困惑),但我坚持,因为我不知道如何限制角度或其他东西,所以我只能扫描要测试的这部分弧,实际上很难设置检测相交的测试。
我试图找到从顶点到边缘中点的距离,并将其视为六边形,但在小弧段中总是有更多的空间不会被包括在内。现在我不知道要设置一种新方法来测试这个奇怪的圆形三角形是否会在我已经找到一种测量位置关系的方法的内部/外部/相交/接触任何形状(圆形、三角形、五角形)。
那么您对此有何看法?也许形成这个三角形的三个大圆圈会有所帮助?
【问题讨论】:
-
您可以使用愚蠢三角形的质心与另一个对象之间的夹角来将搜索限制在位于该向量任一侧的对象的两个象限内。有没有一种简单的算法可以用来识别特殊三角形的每个边缘坐标?您可以测试这些是否穿透您的其他对象。
-
我将从两个对象中心之间的线的交点开始沿边缘进行二分搜索,然后在任一侧逐渐检查。我确信有一些优化可以应用于近似每条曲线的多面体。
-
@jwdonahue 感谢您的提醒。下次我会尝试明智地使用我的标签。我认为最难的部分是弄清楚如何用几何方法确定它,然后我很容易用代码实现它。代码不是我的主要问题,很抱歉造成混淆:)现在我快到了,但仍然感谢您的建议!
标签: algorithm geometry computational-geometry geometry-surface