在三維空間裡乙個點繞x軸 y軸 z軸旋轉一定弧度後新的點的座標是容易計算的,問題是如果它所繞的旋轉軸是乙個任意向量(x,y,z)的話,怎麼知道旋轉angle弧度後新的點的座標呢?
在opengl裡有乙個函式glrotatef(angle,x,y,z)可以實現此功能,它的實現是左乘乙個矩陣
x2(1-c)+c xy(1-c)-zs xz(1-c)+ys
yx(1-c)+zs y2(1-c)+c yz(1-c)-xs
xz(1-c)-ys yz(1-c)+xs z2(1-c)+c
假定座標軸是右手系的(opengl的座標軸是右手系的), 其中 c = cos(angle), s = sin(angle), angle是從向量(x,y,z)的正向看去逆時針方向旋轉所成的, 向量(x,y,z)必須是已經單位化了的
new_x = (x2(1-c)+c) * old_x + (xy(1-c)-zs) * old_y + (xz(1-c)+ys) * old_z
new_y = (yx(1-c)+zs) * old_x + (y2(1-c)+c) * old_y + (yz(1-c)-xs) * old_z
new_z = (xz(1-c)-y) * old_x + (yz(1-c)+xs) * old_y + (z2(1-c)+c) * old_z
(old_x,old_y,old_z)是原來的點的座標, (new_x,new_y,new_z)是旋轉後的新的點的座標
這個公式是怎麼推導出來的我就不打算去深究了,這個問題困惑我好久了,比如乙個向量繞乙個向量旋轉一定角度後得到新的向量是什麼,用它來計算就可以,可以分別計算向量的起點和終點旋轉後得到的新的點的座標,也就得到了新的向量
三維空間的繞軸旋轉變換
最近在看文獻的時候看到作者有用到三維繞軸變換。我看了好久都沒摸清他的矩陣是怎麼得到的。待我提筆一畫,媽呀,果然這腦子是廢了,這麼easy的問題都他麼的解不出來。既然腦子廢了那手還是勤勞點把。嘆氣。唉,豬生艱難。我只想過吃完就睡睡完就吃的生活啊!為什麼要這麼torture我。咳,言歸正傳。首先出乙個清...
空間座標乘旋轉矩陣 三維空間中的旋轉變換與旋轉矩陣
在三維空間中,繞著x軸,y軸,z軸的旋轉可以使用4 4的矩陣表示,而根據左右手座標系的不同,又可分為左手座標系下的三維旋轉矩陣和右手座標系下的三維旋轉矩陣。1 左手座標系下的旋轉矩陣 設旋轉角為 角,而 角表示從軸的正方嚮往座標軸的反方向觀察,順時針旋轉的角度 在左手座標系下,順時針旋轉為旋轉的正方...
三維座標要建乙個4 4的矩陣 平移 旋轉 縮放
移植不知道三維物體的旋轉平移縮放和矩陣的關係。找到這篇文章借鑑一下。我們應該怎麼平移乙個三維空間中的點呢?答案很簡單,我們只需要對這個點的座標中的每個分量 x,y,z 和對應軸上的平移距離相加即可。例如,點p1 x1,y1,z1 在x軸y軸以及z軸上分別平移 x,y,z到新的點p2 x2,y2,z2...