您可以在此处检查Reuleaux三角形的定义: https://en.wikipedia.org/wiki/Reuleaux_triangle
我一直在处理2D几何形状并进行检查,设置测试以查看它们是否与另一个相交,或者是否在另一个形状内(包括触摸)。我测试了圆(以 Point 类型定义为中心,并以 double x,y属性作为坐标,以及 double 半径),三角形(具有三个顶点点),五边形(具有五个顶点 Point ),但我发现了一个有趣的形状,称为reuleaux三角形,由三个圆组成,弧边到另一侧顶点的距离相同。
首先,我尝试查看顶点是否在形状内,就像我将边缘用作原始大圆的一部分(以顶点为中心)一样,或者尝试如果上面提到的其他形状的一部分与之相交(圆形比带有直线边缘的形状更容易混淆),但是我卡住了,因为我不知道如何限制角度或其他东西,因此我只能扫描要测试的弧形部分,实际上很难进行设置进行相交检测的测试。
我试图找到从顶点到are边缘的中点的距离,并将其视为六边形,但是在小的弧形部分中总是会有更多的空间不包括在内。现在,我不知道要设置一种新方法来测试这个怪异的圆形三角形是否会在内部/外部/相交/接触到任何已经找到一种测量位置关系的形状(圆形,三角形,五角形)的形状。
那么您对此有何想法?也许形成这个三角形的三个大圆圈会有所帮助?
答案 0 :(得分:1)
找到另一种形状与围绕Reuleaux三角形的角A的圆的交点,以及另一种形状的顶点位于围绕A的圆内的其他形状的顶点(在下面的图像中这四个点都是黑色的) 。
然后检查这些点中的任何一个是否位于线AB的右侧和线AC的左侧(即图像中的红色部分; 4个黑点中的2个确实存在,所以形状相交)。
对B和C周围的圆执行相同的操作。这将为您提供Reuleaux三角形与其他形状的所有交点,以及Reuleaux三角形内部的其他形状的所有顶点。
此外,如果整个Reuleaux三角形位于另一个形状内,则应检查拐角A,B和C是否位于另一个形状内。
应该可以通过组合已有的圆和三角形功能(的一部分)来做到这一点。
答案 1 :(得分:1)