2013-09-28 136 views
0

我有一個非常簡單的問題,但這使我困惑如何在C++中做到這一點。水平旋轉一個平面

在這裏,我有一個斜面,法向量是(a,b,c)。現在我想旋轉這個平面水平90和180度。即我想在XY平面上將平面正常旋轉90度和180度。

問題是我不知道矢量落在哪個象限中。它可能在第一或第三......或任何其他。

所以,我的問題是,任何通用公式將旋轉向量旋轉90度和180度。例如,如果更新的矢量是[a1,b1,c](90)和[a2,b2,c](180),那麼a1,b1和a2,b2是什麼?

回答

3
a1 = -b 
b1 = a 

a2 = -a 
b2 = -b 
1

一點更一般的:旋轉[X,Y,Z]繞Z軸的角度theta變得

[x,y,z]->[cos(theta)*x-sin(theta)*y , sin(theta)*x+cos(theta)*y , z]