最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

計算機圖形學基礎(四):矩陣變換

2023-08-27 17:01 作者:寧牁兒  | 我要投稿

我們在各種軟件中常見到的圖形或者物體的變換,例如旋轉、平移、放縮、投影等,都是以矩陣變換的形式來計算的,接下來討論這些矩陣變換。

二維變換

可以用一個二維矩陣來表示二維空間運算:

%5Cbegin%7Bbmatrix%7D%0A%0Aa_%7B11%7D%20%26%20a_%7B12%7D%5C%5C%0A%0Aa_%7B21%7D%20%26%20a_%7B22%7D%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Ax%5C%5C%0A%0Ay%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Aa_%7B11%7Dx%20%2B%20a_%7B12%7Dy%5C%5C%0A%0Aa_%7B21%7Dx%20%2B%20a_%7B22%7Dy%0A%0A%5Cend%7Bbmatrix%7D

放縮

放縮的矩陣運算可表示為:

scale(s_%7Bx%7D%2Cs_%7By%7D)%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0As_%7Bx%7D%20%26%200%5C%5C%0A%0A0%20%26%20s_%7By%7D%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Ax%5C%5C%0A%0Ay%0A%0A%5Cend%7Bbmatrix%7D%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0As_%7Bx%7Dx%5C%5C%0A%0As_%7By%7Dy%0A%0A%5Cend%7Bbmatrix%7D

圖1

自由拉伸

x軸和y軸方向的拉伸可分別表示為:

%5Cbegin%7Bcases%7D%0A%0Ax_%7Bshear%7D(%5Cvarphi)%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0A1%20%26%20tan%5Cvarphi%5C%5C%0A%0A0%20%26%201%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Ax%5C%5C%0A%0Ay%0A%0A%5Cend%7Bbmatrix%7D%5C%5C%0A%0Ay_%7Bshear%7D(%5Cvarphi)%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0A1%20%26%200%5C%5C%0A%0Atan%5Cvarphi%20%26%201%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Ax%5C%5C%0A%0Ay%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cend%7Bcases%7D

其中tan%5Cvarphi為拉伸角度的正切值

圖2

旋轉

將一個圖形逆時針旋轉角度%5Cvarphi

rotate(%5Cvarphi)%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Acos%5Cvarphi%20%26%20-sin%5Cvarphi%5C%5C%0A%0Asin%5Cvarphi%20%26%20cos%5Cvarphi%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Ax%5C%5C%0A%0Ay%0A%0A%5Cend%7Bbmatrix%7D

圖3

鏡像

關于x軸和y軸分別作鏡像變換:

%5Cbegin%7Bcases%7D%0A%0Ax_%7Breflect%7D%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0A1%20%26%200%5C%5C%0A%0A0%20%26%20-1%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Ax%5C%5C%0A%0Ay%0A%0A%5Cend%7Bbmatrix%7D%5C%5C%0A%0Ay_%7Breflect%7D%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0A-1%20%26%200%5C%5C%0A%0A0%20%26%201%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Ax%5C%5C%0A%0Ay%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cend%7Bcases%7D

圖4

組合變換

在進行多個變換時,假設先進行一個S變換v_%7B2%7D%3DSv_%7B1%7D,再進行R變換v_%7B3%7D%3DRv_%7B2%7D,則有v_%7B3%7D%3DR(Sv_%7B1%7D)%3D(RS)v_%7B1%7D,復合變換M%3DRS,即可以用一個矩陣來表示若干個變換運算

圖5

三維變換

與二維變換對應的,三維變換在形式上很類似:

放縮

scale(s_%7Bx%7D%2Cs_%7By%7D%2Cs_%7Bz%7D)%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0As_%7Bx%7D%20%26%200%20%26%200%5C%5C%0A%0A0%20%26%20s_%7By%7D%20%26%200%5C%5C%0A%0A0%20%26%200%20%26%20s_%7Bz%7D%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Ax%5C%5C%0A%0Ay%5C%5C%0A%0Az%0A%0A%5Cend%7Bbmatrix%7D

旋轉

%5Cbegin%7Bcases%7D%0A%0Arotate_%7Bx%7D(%5Cvarphi)%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0A1%20%26%200%20%26%200%20%5C%5C%0A%0A0%20%26%20cos%5Cvarphi%20%26%20-sin%5Cvarphi%5C%5C%0A%0A0%20%26%20sin%5Cvarphi%20%26%20cos%5Cvarphi%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Ax%5C%5C%0A%0Ay%5C%5C%0A%0Az%0A%0A%5Cend%7Bbmatrix%7D%5C%5C%0A%0Arotate_%7By%7D(%5Cvarphi)%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Acos%5Cvarphi%20%26%200%20%26%20sin%5Cvarphi%20%5C%5C%0A%0A0%20%26%201%20%26%200%5C%5C%0A%0A-sin%5Cvarphi%20%26%200%20%26%20cos%5Cvarphi%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Ax%5C%5C%0A%0Ay%5C%5C%0A%0Az%0A%0A%5Cend%7Bbmatrix%7D%5C%5C%0A%0Arotate_%7Bz%7D(%5Cvarphi)%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Acos%5Cvarphi%20%26%20-sin%5Cvarphi%20%26%200%20%5C%5C%0A%0Asin%5Cvarphi%20%26%20cos%5Cvarphi%20%26%200%5C%5C%0A%0A0%20%26%200%20%26%201%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Ax%5C%5C%0A%0Ay%5C%5C%0A%0Az%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cend%7Bcases%7D

自由拉伸

x_%7Bshear%7D(d_%7By%7D%2Cd_%7Bz%7D)%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0A1%20%26%20d_%7By%7D%20%26%20d_%7Bz%7D%20%5C%5C%20%0A%0A0%20%26%201%20%26%200%20%5C%5C%20%0A%0A0%20%26%200%20%26%201%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Ax%20%5C%5C%20%0A%0Ay%20%5C%5C%20%0A%0Az%0A%0A%5Cend%7Bbmatrix%7D

法線向量變換

現(xiàn)在如果要對一個三維物體的表面以矩陣M進行變換,假設變換前的法線向量為n,那么對法線向量同樣進行矩陣M變換操作得到的新向量通常不會垂直于新的物體表面。我們定義法線向量n需要通過矩陣N的變換操作n_%7BN%7D才垂直新的物體表面,變換前物體表面的一條切線為t,變換后此切線變?yōu)?img type="latex" class="latex" src="http://api.bilibili.com/x/web-frontend/mathjax/tex?formula=t_%7BM%7D" alt="t_%7BM%7D">,那么有:

%5Cbegin%7Bcases%7D%0A%0An%5ETt%3D0%5C%5C%0A%0An_%7BN%7D%5ETt_%7BM%7D%3D0%0A%0A%5Cend%7Bcases%7D

若要求解在物體進行M變換后法線向量n的變換情況N

%5Cbegin%7Barray%7D%7Bl%7D%0A%0A%26n%5ETt%3Dn%5ETIt%3Dn%5ETM%5E%7B-1%7DMt%3D0%5C%5C%0A%0A%3D%3E%26(n%5ETM%5E%7B-1%7D)(Mt)%3D(n%5ETM%5E%7B-1%7D)t_%7BM%7D%3D0%5C%5C%0A%0A%3D%3E%26n_%7BN%7D%5ET%3Dn%5ETM%5E%7B-1%7D%5C%5C%0A%0A%3D%3E%26n_%7BN%7D%3D(n%5ETM%5E%7B-1%7D)%5ET%3D(M%5E%7B-1%7D)%5ETn%5C%5C%0A%0A%3D%3E%26N%3D(M%5E%7B-1%7D)%5ET%0A%0A%5Cend%7Barray%7D


平移(Translation)與仿射(Affine)

在二維空間中首先進行一個S變換(拉伸、旋轉、縮放),再進行一個平移變換T,可以用一個三階方陣來表示:

ST(x%2Cy)%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Ax%5E%7B'%7D%20%5C%5C%20%0A%0Ay%5E%7B'%7D%20%5C%5C%20%0A%0A1%0A%0A%5Cend%7Bbmatrix%7D%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0As_%7B11%7D%20%26%20s_%7B12%7D%20%26%20x_%7Bt%7D%20%5C%5C%20%0A%0As_%7B21%7D%20%26%20s_%7B22%7D%20%26%20y_%7Bt%7D%20%5C%5C%20%0A%0A0%20%26%200%20%26%201%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Ax%20%5C%5C%20%0A%0Ay%20%5C%5C%20%0A%0A1%0A%0A%5Cend%7Bbmatrix%7D%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0As_%7B11%7Dx%20%2B%20s_%7B12%7Dy%20%2B%20x_%7Bt%7D%20%5C%5C%20%0A%0As_%7B21%7Dx%20%2B%20s_%7B22%7Dy%20%2B%20y_%7Bt%7D%20%5C%5C%20%0A%0A1%0A%0A%5Cend%7Bbmatrix%7D


坐標系變換

通常上來說一個坐標系統(tǒng),包括一個原點P和一組正交基U%2CV%2CW,則坐標系(u%2Cv%2Cw)可以被描述為:

%5Cbegin%7Barray%7D%7Bl%7D%0A%0Ap%2BuU%2BvV%2BwW%0A%0A%5Cend%7Barray%7D

假設在一個坐標系中使用o作為原點,xy為正交基,其中有一點p,進行坐標系變換后,使用e作為原點,uv作為正交基

圖6

按照平移與仿射變換:

ST(x%2Cy)%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0As_%7B11%7D%20%26%20s_%7B12%7D%20%26%20x_%7Bt%7D%20%5C%5C%20%0A%0As_%7B21%7D%20%26%20s_%7B22%7D%20%26%20y_%7Bt%7D%20%5C%5C%20%0A%0A0%20%26%200%20%26%201%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Ax%20%5C%5C%20%0A%0Ay%20%5C%5C%20%0A%0A1%0A%0A%5Cend%7Bbmatrix%7D

有:

%5Cbegin%7Bbmatrix%7D%0A%0Ax_%7Bp%7D%20%5C%5C%20%0A%0Ay_%7Bp%7D%20%5C%5C%20%0A%0A1%0A%0A%5Cend%7Bbmatrix%7D%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Ax_%7Bu%7D%20%26%20x_%7Bv%7D%20%26%20x_%7Be%7D%20%5C%5C%20%0A%0Ay_%7Bu%7D%20%26%20y_%7Bv%7D%20%26%20y_%7Be%7D%20%5C%5C%20%0A%0A0%20%26%200%20%26%201%0A%0A%5Cend%7Bbmatrix%7D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0Au_%7Bp%7D%20%5C%5C%20%0A%0Av_%7Bp%7D%20%5C%5C%20%0A%0A1%0A%0A%5Cend%7Bbmatrix%7D

即:

%5Cbegin%7Barray%7D%7Bl%7D%0A%0A%26P_%7Bxy%7D%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0AU%20%26%20V%20%26%20E%20%5C%5C%20%0A%0A0%20%26%200%20%26%201%0A%0A%5Cend%7Bbmatrix%7D%0A%0AP_%7Buv%7D%5C%5C%0A%0A%3D%3E%26P_%7Buv%7D%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0AU%20%26%20V%20%26%20E%20%5C%5C%20%0A%0A0%20%26%200%20%26%201%0A%0A%5Cend%7Bbmatrix%7D%5E%7B-1%7D%0A%0AP_%7Bxy%7D%5C%5C%0A%0A%3D%3E%26P_%7Buv%7D%3D%0A%0A%5Cbegin%7Bbmatrix%7D%0A%0AX_%7Buv%7D%20%26%20Y_%7Buv%7D%20%26%20O_%7Buv%7D%20%5C%5C%20%0A%0A0%20%26%200%20%26%201%0A%0A%5Cend%7Bbmatrix%7D%0A%0AP_%7Bxy%7D%0A%0A%5Cend%7Barray%7D

同理,擴展到三維空間上,有:

%5Cbegin%7Barray%7D%7Bl%7D%0A%26P_%7Bxyz%7D%3D%0A%5Cbegin%7Bbmatrix%7D%0AU%20%26%20V%20%26%20W%20%26%20E%20%5C%5C%20%0A0%20%26%200%20%26%200%20%26%201%0A%5Cend%7Bbmatrix%7D%0AP_%7Buvw%7D%5C%5C%0A%3D%3E%26P_%7Buvw%7D%3D%0A%5Cbegin%7Bbmatrix%7D%0AU%20%26%20V%20%26%20W%20%26%20E%20%5C%5C%20%0A0%20%26%200%20%26%200%20%26%201%0A%5Cend%7Bbmatrix%7D%5E%7B-1%7D%0AP_%7Bxyz%7D%5C%5C%0A%3D%3E%26P_%7Buvw%7D%3D%0A%5Cbegin%7Bbmatrix%7D%0AX_%7Buvw%7D%20%26%20Y_%7Buvw%7D%20%26%20Z_%7Buvw%7D%20%26%20O_%7Buvw%7D%20%5C%5C%20%0A0%20%26%200%20%26%200%20%26%201%0A%5Cend%7Bbmatrix%7D%0AP_%7Bxyz%7D%5C%5C%0A%3D%3E%26%5Cbegin%7Bbmatrix%7D%0Au_%7Bp%7D%20%5C%5C%0Av_%7Bp%7D%5C%5C%0Aw_%7Bp%7D%5C%5C%0A1%0A%5Cend%7Bbmatrix%7D%3D%0A%5Cbegin%7Bbmatrix%7D%0Ax_%7Bu%7D%20%26%20y_%7Bu%7D%20%26%20z_%7Bu%7D%20%26%200%5C%5C%0Ax_%7Bv%7D%20%26%20y_%7Bv%7D%20%26%20z_%7Bv%7D%20%26%200%5C%5C%0Ax_%7Bw%7D%20%26%20y_%7Bw%7D%20%26%20z_%7Bw%7D%20%26%200%5C%5C%0A0%20%26%200%20%26%200%20%26%201%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0A1%20%26%200%20%26%200%20%26%20-x_%7Be%7D%5C%5C%0A0%20%26%201%20%26%200%20%26%20-y_%7Be%7D%5C%5C%0A0%20%26%200%20%26%201%20%26%20-z_%7Be%7D%5C%5C%0A0%20%26%200%20%26%200%20%26%201%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0Ax_%7Bp%7D%20%5C%5C%0Ay_%7Bp%7D%5C%5C%0Az_%7Bp%7D%5C%5C%0A1%0A%5Cend%7Bbmatrix%7D%0A%5Cend%7Barray%7D


計算機圖形學基礎(四):矩陣變換的評論 (共 條)

分享到微博請遵守國家法律
福建省| 兖州市| 满城县| 达拉特旗| 高雄县| 渝中区| 仁化县| 北辰区| 和龙市| 甘洛县| 阿拉尔市| 华安县| 社旗县| 奎屯市| 乌拉特后旗| 肥乡县| 成武县| 嘉义市| 静海县| 高唐县| 江陵县| 明溪县| 湘乡市| 石首市| 西城区| 平南县| 泗水县| 札达县| 凌云县| 珲春市| 邻水| 呼和浩特市| 河源市| 肃宁县| 茂名市| 邵武市| 正蓝旗| 新巴尔虎右旗| 永城市| 子长县| 昌黎县|