我将根据我在三角测量库中创建的三角形为网格几何体创建面poly2tri我只有一个逆时针方向的简单多边形。此外,我没有洞,施泰纳点只有一个轮廓!
var swctx = new poly2tri.SweepContext(contour);
swctx.triangulate();
var triangles = swctx.getTriangles();
triangles.forEach(function(t) {
t.getPoints().forEach(function (p) {
console.log(p.x, p.y);
})
})
这目前已经奏效了。结果:三角形
但下一步将是为我的Mesh.geometry创建面。要创建Face3几何体,我需要顶点的索引。
类似这样的东西:
for (var i = 0; i < triangles.length; i++) {
geometry.faces.push(new THREE.Face3(triangles[i][0],triangles[i][1],triangles[i][2]));
}
如何从三角形中获取索引?
我相信您正在寻找getPoint()。基于上面代码示例的设置:
var triangles = swctx.getTriangles();
for ( var i = 0; i < triangles.length; i++ ) {
console.log(triangles[i].getPoint(0).x + ", " + triangles[i].getPoint(0).y);
console.log(triangles[i].getPoint(1).x + ", " + triangles[i].getPoint(1).y);
console.log(triangles[i].getPoint(2).x + ", " + triangles[i].getPoint(2).y);
}