天天看點

3D 坐标變換 公式 推導

[ 更新 ]更好的方法見[用抽象代數讨論仿射變換和仿射空間中的坐标變換] ,以下是之前的内容。

以下的推導 結論是正确的,可是過程有點懵。

以下使用行向量:

e1=(1,0,0)

e2=(0,1,0)

e3=(0,0,1)

i, j, k是三個線性無關的向量。它們在e1,e2,e3坐标系下的坐标也記作i,j,k

i’, j’, k’是三個線性無關的向量,它們在e1,e2,e3坐标系下的坐标也記作i’, j’, k’

denote⎡⎣⎢ijk⎤⎦⎥=A,⎡⎣⎢i′j′k′⎤⎦⎥=B

3D 坐标變換 公式 推導

已知點P相對于Oijk的坐标是(x,y,z)

則點P相對于O’i’j’k’的坐标:

(x′,y′,z′)=((x,y,z)A+(O−O′))B−1

若B是正交矩陣。就不用求逆了,求轉置就是。

特别地,

若O=(0,0,0),i=e1,j=e2,k=e3,則

(x′,y′,z′)=((x,y,z)−O′))B−1

推導

設點P相對于O’i’j’k’的坐标是(x’,y’,z’)

∵P=O+(x,y,z)A=O′+(x′,y′,z′)B

∴(x′,y′,z′)=((x,y,z)A+(O−O′))B−1

補充

記 B=AM(M=A−1B),即M是把i,j,k變換到i’,j’,k’的變換矩陣,

∴(x′,y′,z′)=((x,y,z)A+(O−O′))M−1A−1

特别地。

(x′,y′,z′)=((x,y,z)−O′))M−1andM=B

應用

實際應用中,用到的一般都是O=(0,0,0),i=e1,j=e2,k=e3的特殊情況。

這是由于:問題在描寫叙述O’i’j’k’坐标的時候一般都是相對于Oikj而言的;

這裡沒有絕對的坐标系,仿射空間中不論什麼一個點都看以看成(0,0,…0),随意一組基都能夠看成{(1,0,…0), (0,1,…0), (0,0,…1)}。

(x,y,z,1)[M−1−O′M−101]=(x′,y′,z′,1)

[M−1−O′M−101]=[MO′01]−1

換個角度了解

點P不動。把坐标架O,i,j,k變換到O’,i’,j’,k’,則變換矩陣是(MO′01), M=B,

就相當于 坐标架不動,點P逆着上述變換,變換到新坐标。

變換的兩種方式

①先原地變換坐标架,再平移坐标架

[B001][IO′01]=[BO′01]

②先平移坐标架。再​

​相對平移之後的原點​

​變換坐标架

[IO′01]X=[BO′01]X=[BO′−O′B01]

X能夠看成先平移回原點,相對原點 原地變換 坐标架,再平移過去:

X=[B−O′B01][IO′01]

  1. javascript:void(0) ​​↩​​

繼續閱讀