作者raypeter96 (小寶)
看板Mechanical
標題[學術] 三維空間旋轉
時間Mon Jun 24 15:26:37 2013
我想繼續針對我上次的問題繼續發問
空間中有三點A(0,0,0) B(1,2,3) C(8,5,9)
AB為一線段,AC為一線段
現在想要AB轉至AC線段上,使AB與AC重疊
以下是我寫為MATLAB的做法,但無法重疊
請教板上各位大大
該如何改寫,或者我的方法錯誤,感謝教導
A=[0;0;0]
B=[1;2;3]
C=[8;5;9]
%alfa 旋轉X軸之角度,(投影在YZ平面)
q1=B(2,:)*C(2,:)+B(3,:)*C(3,:)
q2=sqrt((B(2,:).^2+B(3,:).^2)*(C(2,:).^2+C(3,:).^2))
alfa=acosd(q1/q2)
%alfa=360-alfa
alfa=alfa*pi/180
Rx=[1 0 0;
0 cos(alfa) -sin(alfa);
0 sin(alfa) cos(alfa)]
B1=Rx*B
%--------------------------------------------------------
%theta 旋轉Z軸之角度,(投影在XY平面)
q3=B1(1,:)*C(1,:)+B1(2,:)*C(2,:)
q4=sqrt((B1(1,:).^2+B1(2,:).^2)*(C(1,:).^2+C(2,:).^2))
theta=acosd(q3/q4)
%theta=360-theta
theta=theta*pi/180
Rz=[cos(theta) -sin(theta) 0;
sin(theta) cos(theta) 0;
0 0 1]
B2=Rz*B1
%-------------------------------------------------------
%beta 旋轉Y軸之角度,(投影在XZ平面)
q5=B2(1,:)*C(1,:)+B2(3,:)*C(3,:)
q6=sqrt((B2(1,:).^2+B2(3,:).^2)*(C(1,:).^2+C(3,:).^2))
beta=acosd(q5/q6)
%beta=360-beta
beta=beta*pi/180
Ry=[cos(beta) 0 sin(beta);
0 1 0;
-sin(beta) 0 cos(beta)]
B3=Ry*B2
PO=[A';B3';A';C']
plot3(PO(:,1),PO(:,2),PO(:,3))
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.120.101.181
→ d1d1:分類後有一個空格, [學術] 三維…… 06/24 15:44
→ raypeter96:請問一下,那我該怎麼更改 06/24 16:17
→ d1d1:回到文章列表,在你的文章前按大寫T即可 06/24 16:21
推 goodrain:大寫的e吧 06/24 17:04
※ 編輯: raypeter96 來自: 140.120.101.181 (06/24 18:06)
→ raypeter96:感謝糾正 06/24 18:07
推 alamabarry:其實我看不太懂你的目的是什麼耶?? 06/25 11:37
→ alamabarry:看起來也不像是座標軸旋轉 06/25 11:39
→ alamabarry:向量AB 乘以AC單位向量不就結束了嗎? 06/25 11:40