【发布时间】:2021-01-10 12:00:15
【问题描述】:
我是 JS,THREE.js 的新手,想创建一个函数:
- 每 3 个值生成一个新顶点,
- 每 3 个顶点,生成一个新的 THREE.Triangle(ta, tb, tc);
- 将所有这些三角形记录在一个数组中
- 求每个 Triangle.getArea() 的总和
这是我目前所拥有的:
// An empty Array to store all the Triangles
var triangles = [];
// pos is an array that holds all the points/vertices -- there's 72 values total
var pos = threeMesh1.geometry.attributes.position;
function makeTriangle(ta, tb, tc){
for (i = 0; i < pos.count; i++) {
// For *every 3 instances*, assign the values to ta, tb, tc,
ta = new THREE.Vector3( pos.getX(i), pos.getY(i), pos.getZ(i)); //posX(0),posY(0),posZ(0)
tb = new THREE.Vector3( pos.getX(i+=1), pos.getY(i+=1), pos.getZ(i+=1) );//posX(1),posY(1),posZ(1)
tc = new THREE.Vector3( pos.getX(i+=2), pos.getY(i+=2), pos.getZ(i+=2));//posX(2),posY(2),posZ(2)
//the next set should be i =(3,4,5) (6,7,8) (9,10,11), etc.
// Make a new triangle Object
tri = new THREE.Triangle(ta, tb, tc);
// Add new triangle to initial "triangles" array
triangles.push(tri);
}
}
makeTriangle(triangles);
console.log(triangles); // returns [Triangle, Triangle, Triangle]
如何使 for 循环内的 每 3 个实例 工作? 截至目前,而不是 0,1,2 / 3,4,5 /6,7,8 它给出了 0,3,6,9 等。
【问题讨论】:
-
你有什么问题?
-
我编辑了上面的问题,谢谢!
标签: javascript arrays three.js