PolyK中的三角测量问题

时间:2016-05-10 09:02:15

标签: three.js polygon triangulation

我使用库 PolyK 执行了一些三角测量任务。仅用于比较我的简单多边形。 我有一个带有7个顶点的多边形。但我得到这个库只有9个索引== 3个三角形,我猜想更少。

在下面的代码中,您可以看到我在THREE.js中实现PolyK.js

var pts3 = [];
var ids2 = PolyK.Triangulate(pts3);
for (var k = 0; k < ids2.length; k+=3) 
{
 geometry.faces.push(new THREE.Face3(ids2[k], ids2[k + 1], ids2[k + 2]));
}

我的点阵:

(带x和y值的7分)

var points = [
    158.56000000005588, 336.73000000044703,
    158.60000000009313, 335.21999999973923,
    161.589999999851, 335.3099999995902,
    161.7799999997951, 329.820000000298,
    155.52000000001863, 329.62000000011176,
    155.29999999981374, 336.62999999988824,
    158.56000000005588, 336.73000000044703
];

这是当前的结果:

enter image description here

这是预期的结果:

enter image description here

源代码中PolyK的使用有什么问题吗?

1 个答案:

答案 0 :(得分:0)

这些是要点:

4 _______________ 3
 |               |
 |               |
 |               |
 |               |
 |               |
 |        _______|
 |       |1       2
 |_______|
5        0/6       

我在a fiddle here进行了测试,它似乎像你说的那样工作。 我得到结果:

[5, 6, 0, 0, 1, 2, 0, 2, 3]

这与您在图纸中显示的结果不一致。

起初我认为删除重复点(0与6相同)可以解决问题,但这也会导致错误的结果。

我建议您使用其他库,例如earcutpoly2tri

同时检查this triangulation adapter/library on GitHub that I made for three.js。它可能对你有用。