我有一个系统,您可以单击一次以在场景中放置节点。当您放置3个节点时,它将形成一个三角形。当您放置任何将来的节点时,它将通过将该节点连接到最近的2个现有节点来创建一个新的三角形。
这在大多数情况下都可以正常工作,但是在接近三角形的锐角附近使用时存在缺陷,因为两个最近节点之一通常不应该使用。
例如,请参见下图。品红色三角形是第一个放置的三角形。如果然后单击标记为X的位置,则得到的是蓝色叠加层所在的新三角形。我想要的是一个绿色覆盖的新三角形。(在此示例中,即与洋红色对称。澄清:绿色和洋红色三角形不重叠-绿色在蓝色一个下方延伸到最左侧的节点)
创建新三角形时如何确定要使用哪个2个现有顶点,以使三角形不会像这样叠加?
编辑:搜索最近的边缘会得到更好的结果,但不是完美的结果。考虑这种情况:
“最近边缘”测试含糊不清,可以返回AB或AC(因为两者的最接近X的点都在A处)。期望的结果将是AC,以形成没有重叠边的ACX三角形。我如何确保这个结果?(如果可能的话,我宁愿不必作为决胜局进行单独的边缘重叠测试,因为考虑到浮点精度问题,我担心最接近的边缘测试不一定会发现2是等距的。)