如何使用四角位置获得3d平面的角度

大约6个月前,我开始制作3D图形引擎。 它已经很好看了。我已经实现了旋转,平移,缩放,Z缓冲(画家的算法)......我现在正在研究镜面着色器。为此,我需要一些方法来获得他个人面孔的角度 我的问题是,如何通过只知道四个角的位置来获得飞机的角度?如何使用四角位置获得3d平面的角度

这是我走到这一步:在空天飞机的

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;

}

回答:

方向由法线定义。为了得到这个矢量,计算cross product of two edges(属于飞机)。所以你在飞机上只需要三个非共线点。

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

注意,归一化(单位)法向矢量的分量direction cosines

以上是 如何使用四角位置获得3d平面的角度 的全部内容, 来源链接: utcz.com/qa/265943.html

回到顶部