Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Three.js计算几何体面的面积(面3)_Javascript_Three.js - Fatal编程技术网

Javascript Three.js计算几何体面的面积(面3)

Javascript Three.js计算几何体面的面积(面3),javascript,three.js,Javascript,Three.js,我使用ColladaLoader导出一个3D模型,每个网格创建一个具有多个面的几何体对象 我设法选择面来更改单个面的颜色和纹理,该面是一个三角形阵列Face3。 知道我需要得到每个面的面积我知道这些面是面3的三角形实例的总和。我试着循环遍历每个相关的面,像这样求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 - f

我使用ColladaLoader导出一个3D模型,每个网格创建一个具有多个面的几何体对象

我设法选择面来更改单个面的颜色和纹理,该面是一个三角形阵列Face3。

知道我需要得到每个面的面积我知道这些面是面3的三角形实例的总和。我试着循环遍历每个相关的面,像这样求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));
如何计算Face3三角形对象的面积?

您可以使用三个。三角形及其方法:

var geom=新的三平面几何1,1; var face0=geom.faces[0];//你知道什么样的脸,你想得到它的面积 var verts=几何顶点; var tri=新的三个三角形杠杆[face0.a]、顶点[face0.b]、顶点[face0.c]; var area=tri.getArea; 控制台。后勤区; 面3的值a、b和c不存储实际顶点。相反,geometry.Vertex中顶点的索引存储在那里。因此,要检索这三个顶点,您需要以下内容:

var va = geometry.vertices[face.a];
var vb = geometry.vertices[face.b];
var vc = geometry.vertices[face.c];
在处理向量时,您使用的计算不会以这种方式工作。您需要使用实例var v=new THREE.Vector3中的函数;v、 子向量a,vb;进行这些计算

或者,您可以使用一个类:

var t = new THREE.Triangle(va,vb,vc);
var area = t.getArea();

在数学上,如果你做两个向量的叉积,得到的向量的长度将是你要寻找的面积的两倍。在three.js中:

new THREE.Vector3().crossVectors(
 new THREE.Vector3().subVectors( vertexB, vertexA ),
 new THREE.Vector3().subVectors( vertexC, vertexA ),
).length() / 2 
提供了一种方便的方法,可以传递二维多边形的点/顶点数组:

.面积等高线:数字

轮廓-二维多边形

计算二维轮廓多边形的面积

该方法与@pailhead的答案大致相同,但适用于具有多个点的多边形,而不是三角形中只有三个点

若要将其用于三维网格中不在X-Y平面中的顶点,需要先旋转/投影网格,使其最终位于X-Y平面中。您可以使用旋转矩阵轻松地执行此操作


注意:请注意,此方法使用的方法对自交多边形具有限制。另请检查以供参考。

:D三个三角形的双拍。如果两个都是三角形,那么它就像一个符咒,我将把重点交给马丁,他先回答。编辑-我向上投你们两个票是的,三个。三角形的用法完全相同:很遗憾,我只能向上投一次票: