这是给你的谜语。你有一个正好由4个顶点组成的多边形,称它们为v1,v2,v3,v4。它们以任意的随机顺序给出。如何将这些顶点拆分为两个集合,每个集合定义一个三角形,以便这两个三角形组成没有重叠的多边形。
结果应该如下所示:
三角形1: v1,v2,v3三角形2: v2,v3,v4
..。诀窍是,三角形不能重叠,这些点以任何顺序给出,没有任何指示它们的x,y坐标。这有可能吗?如果不是,请建议对坐标已知的4点多边形进行三角化的最佳方法。我正在寻找一个有效的循环。
发布于 2010-10-02 13:46:36
如果你不知道坐标是不可能的。
对于第一个三角形,拾取任意三个点。不管是哪一个,你都会得到一个可行的三角形。
对于第二个三角形,找到“远”点并将其移除,代之以剩余的点。
诀窍是找到远端的点。由于您只有三个选项,因此只需执行两次检查即可确定是哪一个(如果不是前两个,就是第三个)。这差不多是你能得到的最高效率了。
给定第一个三角形(A, B, C)和第四个点D,远点是三角形中线段(A, D)和(B, C)相交的点(假设它是A)。就这么简单。
请注意,这将适用于退化的四边形三角形,但不适用于直线段。也许它会,取决于你是如何定义工作的。
https://stackoverflow.com/questions/3844499
复制相似问题