通過矩陣變換點得到其在另一個坐標系的位置
這里只是提供簡單的實現,不解釋任何數學原理。
對于一個點(x, y, z),可以用 [x , y ,z ,1 ] 這個矩陣表示。
通過點構造的矩陣,發(fā)生了什么樣的變換按順序(下文)進行運算即可,下面提供了我對引用的“數學篇”的變換的代碼實現,自由測試喵。

本文大片引用“Unity Shader入門精要”數學篇,作者放出了數學篇的PDF。
對Shader有興趣可以購買圖書。

對于一個點(x, y, z),可以用 [x , y ,z ,1 ] 這個矩陣表示。
Unity的Transform是一個記錄變換的組件,我們可以用矩陣操作復現他。

首先要說明,矩陣是不兼容交換律的,即A*B ≠ B*A,不清楚的應該先去學習一下矩陣的基礎。
A*B的運算中,A提供新矩陣的行,B提供新矩陣的列,交換之后可能都無法運算。
Transform的運算順序如下,他是從右向左運算的。

旋轉矩陣是由xyz三個軸上的旋轉構成的:

這里的5個M矩陣(M旋轉包含了xyz),如果其一沒有發(fā)生,可以不運算。
即坐標系相對于原坐標系只發(fā)生了xy旋轉,Mx * My * 原點矩陣,即可。

標簽: