幾種基本矩陣變換的推導過程

2022-10-09 12:00:09 字數 1900 閱讀 2405

前提:乙個圖在直角座標系上的所有點,都是從原點(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的變換公式以及變換矩陣,但是沒有給出這個矩陣的推導過程,並且說明了可以在網上找到這個過程,出於好奇心和試試看的想法,本人就試著推導了一下這個公式 以平...