前提:乙個圖在直角座標系上的所有點,都是從原點(0, 0, 0)開始。
以二維為例,所有的矩陣變換,都可以表示成 x` = ax + by, y` = cx + dy. 這種表示方法的原理和背後的意義,見
縮放矩陣 的推導
如圖所示,所謂縮放,即乙個圖上的所有點的x和y值,都乘以縮放係數s。縮放0.5,其實就是x值變成0.5x,y變成0.5y,寫成
對比 x` = ax + by, y` = cx + dy. 可知 a = s,b = 0, c = s,d = 0. 可推出縮放矩陣的變換為
旋轉矩陣 的推導
如圖所示,點p繞著原點(0, 0)旋轉θ
x` = c - d
y` = a + b
a = sinθ·x
b = cosθ·y
c = cosθ·x
d = -sinθ·y
x` = cosθ·x - sinθ·y
y` = sinθ·x + cosθ·y
對比 x` = ax + by, y` = cx + dy. 可得旋轉矩陣為
平移矩陣 的推導
如圖所示,所謂平移矩陣,即在x方向上移動了t
x,在y方向上移動了ty
可是,由於平移矩陣並不能表示成 x` = ax + by, y` = cx + dy.的形式
於是我們在原來的維度上「強行」加多一維,用三維來表示二維
這樣,原來的表示方法依然成立:
x` = ax + by + ez
y` = cx + dy + fy
z` = gx + hy + iz
那麼在二維空間中,z值 是多少?
我們認為,對於乙個點而言,z值是1;對於向量而言,z值是0,表示乙個點沒有產生相對位移。
好了,現在拿平移矩陣代入這個形式中,
x` = x + tx = ax + by + ez(z=1),可知 a = 1, b = 0, e = tx
y` = y + ty = y` = cx + dy + fz(z=1),可知 c = 0, d = 1, f = ty
z` = 1 = gx + hy + iz(z=1),可知 g = 0,h = 0, i = 1
從而得到平移矩陣的變換為
切變矩陣 的推導
如圖所示,所謂切變矩陣,即乙個圖形上的某些點在x方向上發生了偏移,偏移的大小跟y有關,y越大偏移越大,即
x` = x + ?y
y` = y
再仔細分析,發現偏移值跟y的百分比有關,y為0時沒有偏移也就是,在中間y=0.5c時偏移0.5b,在最高點y=1c時偏移1b,
可知 x的偏移量等於y/b*c,即
x` = x + (b/c)y
這裡有2個變數b和c,我們可以減少其中乙個變數的影響,即把c歸一化(b和c同時除以c),比如c是100,除以100等於1,那麼b也除以100,把b/c看成a/1
注意:這裡的a是紅線等於1時的值,如果紅線等於其他值n,要除以n才能得到a
矩陣變換推導
翻譯如下 背景知識 本次教程主要介紹3d物體的多種變換,在螢幕上如何展示3d物體,並在視覺上保持物體在場景中的深度。最普遍的方法是用矩陣來代表乙個變換,乙個乙個矩陣的連乘點得座標最終得到乙個結果。每篇教程都會講解乙個變換。下面我們來看下平移變換 translation transformation ...
旋轉矩陣怎麼推導 矩陣旋轉變換推導
矩陣旋轉變換,就是說給定乙個角度和點,我們將點繞著乙個座標軸旋轉。在旋轉過程中發生變化的總是 三個座標裡面的其中兩個,而不讓第三個座標值變化。這意味著,旋轉路徑總在三個座標軸平面中的乙個之中 繞 z 軸的是 xy 面 繞 x 軸的是 yz 面 繞 y 軸的是 xz 面。還有許多複雜的旋轉變換可以讓你...
DirectX中陰影矩陣的推導過程
directx龍書中給出了點光源和平行光源的投影矩陣,也就是從某個光源上的物體 光源與平面的交點的變換矩陣。書上給出了從物體上的點p投影到平面上的點s的變換公式以及變換矩陣,但是沒有給出這個矩陣的推導過程,並且說明了可以在網上找到這個過程,出於好奇心和試試看的想法,本人就試著推導了一下這個公式 以平...