Mak*_*rov 4 javascript three.js
我正在使用 ColladaLoader 导出 3D 模型,每个网格创建一个具有多个面的几何对象。
我设法选择面来更改单个面的颜色和纹理,该面是三角形数组(Face3)。

知道我需要获取每个“面”的面积我知道这些面是 Face3 的三角形实例的总和。我尝试循环遍历每个相关的面并像这样对a、b 和 c值求和,但没有成功。
var sAB = Math.abs(face.a - face.b);
var sBC = Math.abs(face.b - face.c);
var sCA = Math.abs(face.c - face.a);
var s = sAB + sBC + sCA;
var a = Math.sqrt(s*(s-sAB)*(s-sBC)*(s-sCA));
Run Code Online (Sandbox Code Playgroud)
如何计算 Face3 三角形对象的面积?
Face3 的值a、b和c不存储实际的顶点。相反,顶点的索引geometry.vertices存储在那里。因此,要检索三个顶点,您需要如下所示:
var va = geometry.vertices[face.a];
var vb = geometry.vertices[face.b];
var vc = geometry.vertices[face.c];
Run Code Online (Sandbox Code Playgroud)
在处理向量时,您使用的计算不会以这种方式工作。THREE.Vector3您需要使用(例如)中的函数var v = new THREE.Vector3(); v.subVectors(va, vb);来进行这些计算。
或者,您可以使用一个类THREE.Triangle来实现此目的:
var t = new THREE.Triangle(va,vb,vc);
var area = t.getArea();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4641 次 |
| 最近记录: |