三維旋轉矩陣推導

哈市雪花發表於2019-03-15

1.繞X軸旋轉,

分別求出Y、Z基向量繞X軸旋轉θ後描述,

X基向量不變為X'=(1,0,0),

Y基向量繞X軸旋轉θ後為Y'=(0,cosθ,sinθ),

Z基向量繞X軸旋轉θ後為Z'=(0,-sinθ,cosθ),

若為矩陣乘列向量形式,矩陣為,

1        0       0

0     cosθ     -sinθ

0     sinθ      cosθ ,

若為行向量乘矩陣形式,矩陣為,

1        0       0

0     cosθ     sinθ

0     -sinθ      cosθ ,

2.繞Y軸旋轉

X基向量繞Y軸旋轉θ後為X'=(cosθ,0,-sinθ),

Y基向量不變,為Y'=(0,1,0),

Z基向量繞Y軸旋轉θ後為Z'=(sinθ,0,cosθ),

若為矩陣乘列向量形式,矩陣為,

cosθ    0    sinθ

0         1      0

-sinθ    0    cosθ,

若為行向量乘矩陣形式,矩陣為,

cosθ    0    -sinθ

0         1      0

sinθ    0    cosθ,

3.繞Z軸旋轉

X基向量繞Z軸旋轉θ後為X'=(cosθ,sinθ,0),

Y基向量繞Z軸旋轉θ後為Y'=(-sinθ,cosθ,0),

Z基向量不變,為Z'=(0,0,1),

若表示為矩陣乘列向量形式,矩陣為,

cosθ   -sinθ   0

sinθ   cosθ    0

0         0        1,

若表示為行向量乘矩陣形式,矩陣為,

cosθ   sinθ   0

-sinθ   cosθ    0

0         0        1,

3.繞任意軸旋轉,

為方便推導,設向量n(x0,y0,z0)為單位向量,向量v(x,y,z)

將向量v分解為平行於向量n的向量v∥和垂直於向量n的向量v⊥,

已知,

v=v∥+v⊥,

v'=v'∥+v'⊥=v∥+v'⊥,

而v∥=(v·n)*n,

v⊥=v-v∥=v-(v·n)*n,

令向量w=n×v⊥=n×[v-(v·n)*n]=n×v,其大小為|n|*|v⊥|*sin90°=|v⊥|,

那麼v'⊥=sinθ*w+cosθv⊥

             =sinθ*n×v+cosθ*(v-(v·n)*n)

那麼v'=v'∥+v'⊥

         =(v·n)*n+sinθ*n×v+cosθ*(v-(v·n)*n)

接下來就可以求各基向量繞向量n旋轉θ後的表示,

X'=(X·n)*n+sinθ*n×X+cosθ*(X-(X·n)*n)

     |x0^2  |       |    0        |      | cosθ-cosθ*x0^2 |

   =|x0*y0|  +   |z0*sinθ |  +  |  -cosθ*x0y0       |

     |x0*z0|       |-y0*sinθ |      |  -cosθ*x0z0       |

   

    |x0^2*(1-cosθ)+cosθ     |

=  |x0y0*(1-cosθ)+z0*sinθ |

    |x0z0*(1-cosθ)-y0*sinθ |,

同樣,

Y'=(Y·n)*n+sinθ*n×Y+cosθ*(Y-(Y·n)*n)

     |x0*y0|       |-z0*sinθ |      | -cosθ*x0y0         |

   =|y0^2 |  +   |     0       |  +  |  cosθ-cosθ*y0^2 |

     |y0*z0|       |x0*sinθ |      |  -cosθ*y0z0         |

   

    |x0y0*(1-cosθ)-z0*sinθ  |

=  |y0^2*(1-cosθ)+cosθ     |

    |y0z0*(1-cosθ)+x0*sinθ |,

同樣,

Z'=(Z·n)*n+sinθ*n×Z+cosθ*(Z-(Z·n)*n)

     |x0*z0|       |y0*sinθ  |      | -cosθ*x0z0         |

   =|y0z0 |  +   |-x0*sinθ |  +  | -cosθ*y0z0         |

     |z0^2 |       |      0      |      | cosθ -cosθ*z0^2 |

   

    |x0z0*(1-cosθ)+y0*sinθ  |

=  |y0z0*(1-cosθ)-x0*sinθ   |

    |z0^2*(1-cosθ)+cosθ      |,

然後構造矩陣,

若為矩陣乘列向量形式,矩陣為

|x0^2*(1-cosθ)+cosθ       x0y0*(1-cosθ)-z0*sinθ    x0z0*(1-cosθ)+y0*sinθ  |

|x0y0*(1-cosθ)+z0*sinθ    y0^2*(1-cosθ)+cosθ       y0z0*(1-cosθ)-x0*sinθ   |

|x0z0*(1-cosθ)-y0*sinθ    y0z0*(1-cosθ)+x0*sinθ   z0^2*(1-cosθ)+cosθ      |,

若為行向量乘矩陣形式,矩陣為

|x0^2*(1-cosθ)+cosθ       x0y0*(1-cosθ)+z0*sinθ    x0z0*(1-cosθ)-y0*sinθ  |

|x0y0*(1-cosθ)-z0*sinθ    y0^2*(1-cosθ)+cosθ       y0z0*(1-cosθ)+x0*sinθ   |

|x0z0*(1-cosθ)+y0*sinθ    y0z0*(1-cosθ)-x0*sinθ   z0^2*(1-cosθ)+cosθ      |,

得安裝公式編輯器了=-=!

 

相關文章