Javascript 如何使用4个角的位置获取三维平面的角度

Javascript 如何使用4个角的位置获取三维平面的角度,javascript,math,graphics,3d,trigonometry,Javascript,Math,Graphics,3d,Trigonometry,大约6个月前,我开始制作3d图形引擎。 看起来已经很不错了。我已经实现了旋转、平移、缩放、Z缓冲区(画家的算法),。。。我现在正在做一个镜面反射着色器。为此,我需要一些方法来获得各个面的角度 我的问题是,我如何只知道四个角的位置就得到一个平面的角度 以下是我到目前为止得到的信息: function faceAngle(verts,faces){ var arr = []; for(var i=0;i<faces.length;i++){ var posA = ver

大约6个月前,我开始制作3d图形引擎。 看起来已经很不错了。我已经实现了旋转、平移、缩放、Z缓冲区(画家的算法),。。。我现在正在做一个镜面反射着色器。为此,我需要一些方法来获得各个面的角度 我的问题是,我如何只知道四个角的位置就得到一个平面的角度

以下是我到目前为止得到的信息:

function faceAngle(verts,faces){
    var arr = [];
    for(var i=0;i<faces.length;i++){
    var posA = verts[faces[i][0]];//the four corners
    var posB = verts[faces[i][1]];//    A       B
    var posC = verts[faces[i][2]];//      -----
    var posD = verts[faces[i][3]];//     |     |
                                  //     |     |
    var ar = [];                  //      -----
    ar.push(/*some Maths*/);//x   //    D       C
    ar.push(/*some Maths*/);//y
    ar.push(/*some Maths*/);//z
    arr.push(ar);
    }
    return arr;
}
功能面角度(顶点、面){
var-arr=[];

对于(var i=0;i平面在空间中的方向由法向量定义。要获得此向量,请计算(属于平面)。因此,平面中只需要三个非共线点

n = (posB - posA) x (posC - posA)   //cross product of two vectors

请注意,标准化的组件(单位)法向量是平面和什么之间的角度?很抱歉我对这个主题理解不好。但是我如何使用法向量计算平面的方向?我必须使用毕达哥拉斯定理来计算面中心和法向量与三个轴之间的线的角度吗?因为我想rEt以弧度为单位旋转角度。@DylanMissuwe平面的方向是法向量;但如果您想将其转换为球形极角,请参见。@Dylan Missuwe这就是我问的原因-您的意思是什么角度。法向量是方向的最佳表征。所有其他参数都可以从normal@MBo谢谢你我终于明白了。我还以为“X”代表乘法。