它相當於是平移變換(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
0tt
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
vtt
s]=
⎣⎢⎢⎡
a11
a12
a13
v1
a21
a22
a23
v2
a31
a32
a33
v3
t1
t2t
3s
⎦⎥⎥⎤
⟶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...