計算機圖形學:考題預測

繪圖工具

窗口到視口的變換,(x,y)→(sx,sy)(Wl,Wr,Wb,Wt)→(Vl,Vr,Vb,Vt)

sx=Ax+C,sy=By+D,Vl=AWl+C,Vr=AWr+C,A=(Vr-Vl)/(Wr-Wl),C=Vl-AWl=(WrVl-WlVr)/(Wr-Wl)

寬高比:if world aspect ratio R>W/H,viewport(0,W,0,W/R)else viewport(0,H✖️R,0,H)

Cohen-Sutherland 裁剪算法

do{
    形成p1,p2的碼字(e.g. FTFT)
    if 平凡接受 return 1(case FFFF && FFFF)
    if 平凡拒絕 return 0(case p1 and p2 has same T)
    將線段在下一個窗口處階段(最多循環4次,在4個邊界處截斷:根據比例關係重新計算 x 值或 y 值)
}while(1);

在這裏插入圖片描述


向量工具

向量的點乘:求向量的夾角 cos θ

向量的叉乘:應用矩陣,計算向量之間的面積

ab2=a22ab+b2|a-b|^2=|a|^2-2a·b+|b|^2

向量的分解:c=k·v+m·v⊥,同乘 v 或 v⊥,得到 k=c·v/v·v,m=c·v⊥/v⊥·v⊥,distance=m·v⊥

向量的反射:r-a=2(-a·n)·n → r=a-2(a·n)·n

點的任意仿射組合是一個合理的點,E=fP+gR(f+g=1),證明:座標系平移 u 後,E’=E+u=fP+gR+(f+g)u

點與向量的和與點的仿射組合等價:P=A+t(B-A)== P=tB+(1-t)A

直線:l(t)=C+b·t,fx+gy=1,n·(R-C)=0

平面:p(s,t)=C+s·a+b·t,p(s,t)=sA+tB+(1-s-t)C

判斷平面多邊形的凸性:所有相鄰邊向量的叉乘都指向平面的內側或外側

判斷點Q是否在凸多邊形內:對凸多邊形每個點Pi,(Q-Pi)·ni<0

凸多邊形和線段的裁剪算法:enter:t-in=max(t-in,t-hit),exit:t-out=min(t-out,t-hit)

線性插值:lerp(a,b,t)= a +(b-a)t = a(1-t)+ bt


矩陣工具

矩陣求逆:增廣矩陣A|E通過初等(行)變換,代數餘子式轉置得伴隨矩陣 A*:aij=Mji/|M|

矩陣分塊求逆:Ab1A1A1b「A、 b | ^{-1} 「A^{-1}、 -A^{-1}·b|

矩陣分塊求逆:0101|0、 1」 → |0 、 1 」

正交矩陣:各行(列)相互正交 == AT=A1A^T=A^{-1}


仿射變換

基本仿射變換:平移,旋轉(c,-s,0;s,c,0;0,0,1),放縮,剪切,逆變換

仿射變換組合

繞任一點旋轉(平移 - 的點左邊,旋轉,平移回去)

關於過原點直線的反射(旋轉角度到 x 軸,關於 x 軸反射:即 【1,-1】的縮放,旋轉回去)

仿射變換的性質:證明的話針對每一種基本仿射變換證明

保持點的仿射組合

保持共線和共面的關係

保持直線和平面的平行性

矩陣的列揭示了變換後的座標系

保持相互比例

經矩陣 M 仿射變換後面積爲原來的 |det M| 倍

每一個仿射變換都由基本仿射變換組成

三維仿射變換關於某一座標軸的旋轉(y-roll:c,s;-s,c)

關於任意軸的旋轉(歐拉定理:關於某個點的任何旋轉等價於繞通過此點的某個軸的單一旋轉)

經典方法:先變換到某一座標軸,基本旋轉,逆變換,Ru(ß)=Ry(-θ)Rz(φ)Rx(ß)Rz(-φ)Ry(θ)

構造性方法:找出旋轉軸和旋轉角度

在這裏插入圖片描述

座標系變換:(i’,j’,k’)= M(i,j,k)(a,b,1)= M(c,d,1)due to ai=ci’=cMi


相機

根據up、eye、look 計算 n、u、v,歸一化!!!

在這裏插入圖片描述

世界座標到相機座標的轉換矩陣

在這裏插入圖片描述

移動攝像機:eye+=u+v+n,look+=u+v+n,up 不變

旋轉攝像機:u’= cos(α)u + sin(α)v、v’= -sin(α)u + cos(α)v


透視投影

點的透視投影:(x*,y*)=(NPx/(-Pz),NPy/(-Pz))

證明:通過從原點到 P 點的光線和視平面的交點 A

光線 t=0 在原點,t=1 在 P 點,參數方程爲 r(t)= Pt

Pt0=A,Pzt0=Az=-N,t0=-Pz/N

直線的透視投影:P(t)= A+ct,P(t)=(N(Ax+cxt)/(-Az-czt),N(Ay+cyt)/(-Az-czt))

證明!!!

若直線平行於視平面:cz=0,P(t)= N/-Az(Ax+cxt,Ay+cyt)

若直線不平行於視平面:P(無窮)=(Ncx/-cz,Ncy/-cz)(直線的滅點)

增加僞深度:(x*,y*,z*)=(NPx/(-Pz),NPy/(-Pz),(aPz+b)/-Pz)

從 N 到 F,僞深度從-1到1,所以 a= -(F+N)/(F-N),b= -2FN/(F-N)

使用齊次座標

在這裏插入圖片描述

透視變換和正交投影

在這裏插入圖片描述

透視變換的幾何性質

通過視點的直線被映射爲平行於 z 座標軸的直線

證明:這種直線上的所有點都被映射爲視平面上的同一點(x*,y*),z* 取遍-1到1

與 z 座標軸垂直的直線映射後依然垂直於 z 座標軸

證明:這種直線上的點具有相同的 z 值,所以映射後也有相同的僞深度值

透視矩陣:平移(-(l+r)/2,-(b+t)/2)縮放(2/(r-l),2/(t-b))

在這裏插入圖片描述

使用正則視景體 CVV 對面片進行裁剪 AC:A+(C-A)t

以 x=-1 爲例:ax/aw>-1 即 BCo= ax+aw>0

直線在內,平凡接受:兩個端點都在 CVV 內,12個 BC 值爲正

直線在外,平凡拒絕:兩個端點都同一個平面外

計算相交 t 值,以 x=1 爲例:(ax+(cx-ax)t)/(aw+(cw-aw)t),t=(aw-ax)/((ax-ax)-(cw-cx))

視口變換:照相機寬高比(近平面寬高比) → 正則寬高比(1.0) → 視口寬高比


紋理映射

爲什麼不能線性插值:投影后面片上相等的間隔並不對應於三維面片上相等的間隔(近大遠小)

在這裏插入圖片描述

在這裏插入圖片描述

顏色線性插值

在這裏插入圖片描述


曲線設計

德卡斯特里奧算法

三點:Fu=1u2P0+2u1uP1+u2P2F(u)=(1-u)^2 P0 + 2u(1-u)P1 + u^2 P2

四點:Fu=1u3P0+3u1u2P1+3u21uP1+u3P3F(u)=(1-u)^3 P0 + 3u(1-u)^2 P1 + 3u^2(1-u)P1 + u^3 P3


圖形繪製管道

M:仿射變換

V:相機矩陣

Shade:着色

Perspective transformation:透視矩陣

clip:裁剪

Perspective division:透視除法

viewport:窗口到視口的映射

screen

在這裏插入圖片描述

每個頂點 V 附帶着紋理對(s,t)和一個頂點法向 n。頂點通過模式視點矩陣變換,產生視點座標系下的頂點 A 和法向 n’。計算着色時使用這個法向,產生顏色 c。頂點經過透視變換,產生 a~ =(a1,a2,a3,a4),紋理座標和顏色 c 並沒有改變。(裁剪後的點加上一個1計算出來的 1/a4 在計算雙線性插值時使用)


附錄

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章