OpenGL矩陣變換

2021-07-03 16:58:17 字數 1570 閱讀 8236

現在考慮object座標系中的點p(

px,p

y,pz

) 向camera座標系進行變換,object座標軸分別為xyz,camera座標軸分別為uvn p=

pxx⃗ 

+pyy

⃗ +pz

z⃗ 先只考慮旋轉變換,camera座標系的基向量可表示為: ⎧⎩

⎨⎪⎪u

⃗ v⃗ n

⃗ =u.

xx⃗ +

u.yy

⃗ +u.

zz⃗ =

v.xx

⃗ +v.

yy⃗ +

v.zz

⃗ =n.

xx⃗ +

n.yy

⃗ +n.

zz⃗  即 (

u⃗ ,v

⃗ ,n⃗ 

)t=m

(x⃗ ,

y⃗ ,z

⃗ )t

其中, m=

⎛⎝⎜u

.xv.

xn.x

u.yv

.yn.

yu.z

v.zn

.z⎞⎠

⎟ 可以觀察到mm

t=i ,所以有 mt

(u⃗ ,

v⃗ ,n

⃗ )t=

(x⃗ ,

y⃗ ,z

⃗ )t⇒

(u⃗ ,

v⃗ ,n

⃗ )m=

(x⃗ ,

y⃗ ,z

⃗ )現在再考慮點p

p=(x

⃗ ,y⃗ 

,z⃗ )

⋅⎛⎝⎜

pxpy

pz⎞⎠

⎟=(u

⃗ ,v⃗ 

,n⃗ )

⋅m⎛⎝

⎜pxp

ypz⎞

⎠⎟可以看到,齊次座標下,旋轉變換矩陣為 ⎛⎝

⎜⎜⎜u

.xv.

xn.x

0u.y

v.yn

.y0u

.zv.

zn.z

0000

1⎞⎠⎟

⎟⎟再考慮平移變換,camera座標系原點與object座標系原點構成的向量即為平移向量,記為ey

e→,向camera座標系的座標軸投影,即得到平移變換矩陣 ⎛⎝

⎜⎜⎜⎜

⎜100

0010

0001

0−ey

e→⋅u

⃗ −ey

e→⋅v

⃗ −ey

e→⋅n

⃗ 1⎞⎠

⎟⎟⎟⎟

⎟ 所以,最終的modelview矩陣為: ⎛⎝

⎜⎜⎜⎜

⎜u.x

v.xn

.x0u

.yv.

yn.y

0u.z

v.zn

.z0−

eye→

⋅u⃗ −

eye→

⋅v⃗ −

eye→

⋅n⃗ 1

⎞⎠⎟⎟

⎟⎟⎟

opengl 矩陣變換

opengl 矩陣變換 opengl 座標系的變換如下圖 我們給我們的圖形,設定好頂點座標後,通過model matrix 變換為世界座標,然後 view matrix相機座標,projection matrix 螢幕座標x,y 1,1 矩陣變換的結果是把三維的世界最終裁剪為二維的螢幕,數學的說法就...

從矩陣的定義開始談OpenGL矩陣變換

前言 矩陣的定義 先從2d場景說起.先從乙個最簡單的問題開始.q1 乙個點p x,y 它關於原點o的對稱點為p x y 請問x y 與x,y有什麼關係?下面兩個問題稍微難一些。q2 點 繞o逆時針旋轉45 得到點p x y 求p 的座標。a2 設p座標為p x,y 且滿足 由題意 p旋轉45 後得到...

OpenGL 矩陣變換GLM庫的使用

glm和mvp矩陣操作速記 連續工作15小時,累了,睡覺。若未特別說明,以下示例均假設矩陣 向量為四維 glm mat4 mat glm vec4 vec 對於vec來說,第四位為1代表座標,0代表方向 平移矩陣 1 0 0 x 0 1 0 y 0 0 1 z 0 0 0 1 構造平移矩陣 glm ...