3D空間變換

2021-09-25 13:35:24 字數 2646 閱讀 9342

它相當於是平移變換(t)和旋轉變換(r)的復合,等距變換前後長度,面積,線線之間的角度都不變。

自由度 6 (旋轉變換r自由度+3,平移變換t自由度+3)

t =[

rt0t

1]t= \begin r & t \\ 0^t & 1 \\ \end

t=[r0t

​t1​

]

//4x4矩陣

//eigen::isometry3d

eigen::isometry3d t = eigen::isometry3d::

identity()

;// 三維變換矩陣

t.rotate

( rotation_vector )

;// 旋轉部分賦值

t.pretranslate

( eigen::

vector3d(1

,0,0

));// 設定平移向量

cout <<

"transform matrix = \n"

<< t.

matrix()

<< endl;

等距變換和均勻縮放(s)的乙個復合,類似相似三角形,體積比不變。

自由度 7 (歐式變換+6,和歐式變換相比多個乙個縮放引數s,自由度+1)

t s=

[srt

0t1]

t_s= \begin sr & t \\ 0^t & 1 \\ \end

ts​=[s

r0t​

t1​]

//4x4矩陣

double s;

eigen::isometry3d ts = eigen::isometry3d::

identity()

;// 三維變換矩陣

ts.rotate

( s*rotation_vector )

;// 旋轉部分賦值

ts.pretranslate

( eigen::

vector3d(1

,0,0

));// 設定平移向量

cout << ts.

matrix()

<< endl;

乙個平移變換(t)和乙個非均勻變換(a)的復合,a是可逆矩陣,並不要求是正交矩陣。

仿射變換的不變數是:平行線,平行線的長度的比例,面積的比例

自由度12 (非奇異線性變換a自由度+9,平移變換t自由度+3)

t a=

[at0

t1]t_a= \begin a & t \\ 0^t & 1 \\ \end

ta​=[a

0t​t

1​]可以看出,仿射變換就是對影象的旋轉+平移+縮放+切變(shear),相比前兩種變換影象的形狀發生了改變,但是原圖中的平行線仍然保持平行。

//4x4矩陣

//eigen::affine3d

當影象中的點的齊次座標的一般非奇異線性變換(a),射影變換的不變數是:重合關係、長度的交比

自由度15 (非奇異線性變換a自由度+9,平移變換t自由度+3,縮放變換v自由度+3),縮放變換v是對每個座標的縮放,當s不為0時,由於採用齊次座標,因此整個變換矩陣除以s,可以得到右下角為1的矩陣,當s=0時,是右下角為0的矩陣。

t s=

[atv

ts]=

[a11a

21a31t

1a12a

22a32t

2a13a

23a33t

3v1v

2v3s

]⟶x∗

v1+y

∗v2+

z∗v3

+s=1

t_s= \begin a & t \\ v^t & s \\ \end= \begin a_ & a_ & a_& t_1 \\ a_ & a_ & a_ & t_2 \\ a_ & a_& a_ & t_3 \\ v_1 & v_2 & v_3& s \\ \end \\ \longrightarrow x*v_1+y*v_2+z*v_3+s=1

ts​=[a

vt​t

s​]=

⎣⎢⎢⎡

​a11

​a12

​a13

​v1​

​a21

​a22

​a23

​v2​

​a31

​a32

​a33

​v3​

​t1​

t2​t

3​s​

⎦⎥⎥⎤

​⟶x∗

v1​+

y∗v2

​+z∗

v3​+s=1

//4x4矩陣

《計算機圖形學》第

九、十章

3D變換案例

正面是,當滑鼠懸停到上,背面出現文字。container content face pictures face text 濃縮咖啡 content face pictures face text 卡布奇諾 content face pictures face text 拿鐵 content face...

3d變換 Css 筆記

transform rotate 45deg 中心旋轉45度 transform origin top center left right bottom 百分比 百分比時,第乙個值為從左到右,第二個值為從上到下 例 transform origin 100 50 表示的位置是乙個盒子的最右邊的中點 ...

Windows UWP開發系列 3D變換

在win8.1中,引入了乙個planeprojection可以實現3d變換,但它的變換方式比較簡單,只能實現基本的旋轉操作。在windows 10 uwp中,引入了乙個更加強大的3d變換transform3d,系統缺省內置了兩中變換方式 perspectivetransform3d和composit...