[學術] 三維空間旋轉

看板Mechanical (機械)作者 (小寶)時間12年前 (2013/06/24 15:26), 編輯推噓2(206)
留言8則, 4人參與, 最新討論串1/1
我想繼續針對我上次的問題繼續發問 空間中有三點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

06/24 15:44, , 1F
分類後有一個空格, [學術] 三維……
06/24 15:44, 1F

06/24 16:17, , 2F
請問一下,那我該怎麼更改
06/24 16:17, 2F

06/24 16:21, , 3F
回到文章列表,在你的文章前按大寫T即可
06/24 16:21, 3F

06/24 17:04, , 4F
大寫的e吧
06/24 17:04, 4F
※ 編輯: raypeter96 來自: 140.120.101.181 (06/24 18:06)

06/24 18:07, , 5F
感謝糾正
06/24 18:07, 5F

06/25 11:37, , 6F
其實我看不太懂你的目的是什麼耶??
06/25 11:37, 6F

06/25 11:39, , 7F
看起來也不像是座標軸旋轉
06/25 11:39, 7F

06/25 11:40, , 8F
向量AB 乘以AC單位向量不就結束了嗎?
06/25 11:40, 8F
文章代碼(AID): #1Hn_ImX1 (Mechanical)
文章代碼(AID): #1Hn_ImX1 (Mechanical)