给定一个平面(在我的例子中是一个三角形)正常N_T和参考标准N_R,两者的长度都是1。
我计算了rotation_normal
N = N_T x N_R
现在我需要计算这个rotation_normal的角度,我得到以下计算:
angle = acos(<N_T, N_R>), with <x,y> is the dotproduct of x and y
此角度在[0°,180°]的区间内,是两个法线之间的最小角度。 所以我的问题是,如果我想以其法线等于参考法线的方式旋转我的三角形,我需要知道计算出的角度在哪个方向(正或负)。
有人知道如何获得这个方向或如何解决这个问题吗?
答案 0 :(得分:2)
你需要使用atan2(四象限弧形)
创建参考平面基础向量u,v
N=N_T x N_R;
...参考平面正常旋转将会发生U=N_T;
V= N x U;
... x
表示跨产品U/=|U|; V/=|V|;
计算N_R
u=(N_R.U);
... .
表示点积v=(N_R.V);
计算角度
ang=atan2(v,u);
atan2
,请使用ang=
atanxy (u,v);
ang=<0,2*M_PI>
if (ang>M_PI) ang-=2.0*M_PI;
... M_PI
众所周知的常数Pi=3.1415...
-ang