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

2022-03-30 02:07:02 字數 1991 閱讀 6789

前言

矩陣的定義

先從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°後得到p'(x',y'),由三角函式知識可得

由公式,

可得

所以p'座標為

.q3:點p(x,y)繞o逆時針旋轉且旋轉角為α,得到p(x',y'),請問x',y'與x,y有什麼關係?

a3:設

則即

設p(x,y)經過某種變換之後得到點p'(x',y'),且滿足

,則這種變換被稱為線性變換(linear transformation).為方便,我們把這種變換記作乙個正方形數表

這種數表被稱為矩陣(matrix)。這裡這個數表是2x2的,因此被稱為二階矩陣。例如q1中,矩陣為

;q2中,矩陣為

q3中,矩陣為

。為方便,我們將點p(x,y)理解為乙個從o指向p的向量,將(x,y)稱為向量op的座標。討論矩陣時,可以認為點p和向量op是等價的,不區分它們。點p(x,y)經過某種變換後得到點p'(x',y'),與向量v(x,y)經過某種變換後得到向量v'(x',y')兩種說法等價。

像矩陣一樣,(x,y)也可以寫成一列的形式

這種形式的向量被稱為列向量

矩陣運算(矩陣乘向量)

如果向量v經過矩陣m的變換後得到乙個新的向量v',我們為方便,就會說向量v'是矩陣m與向量v的乘積,記為v'=mv.注意矩陣要在前面,不能寫成v'=vm.

如果矩陣m1,m2分別和向量v相乘(也就是向量v經過m1,m2的變換後),得到乙個新的向量v',記作

.矩陣運算(矩陣乘矩陣)

如果有3個矩陣m1、m2和m,對於向量v,m2m1v得到的結果和mv相等,可以認為矩陣m1、m2所共同產生的變換等於矩陣m的變換。這種情況下,我們會說m1與m2的乘積等於m,用公式表示就是m1m2=m。

(to be continued)

opengl的轉換矩陣

矩陣真的是乙個很神奇的數學工具,雖然單純從數學上看,它並沒有什麼特別的意義,但一旦用到空間中的座標變換,它就 一遇風雲便成龍 大顯神威了。簡單的工具實現了複雜的功能,便預示著要理解它我們還是要花上點功夫的。下面就簡單介紹一下opengl中的轉換矩陣。1 轉換矩陣的原理 opengl中的轉換矩陣是這樣...

opengl的矩陣理解

矩陣真的是乙個很神奇的數學工具,雖然單純從數學上看,它並沒有什麼特別的意義,但一旦用到空間中的座標變換,它就 一遇風雲便成龍 大顯神威了。簡單的工具實現了複雜的功能,便預示著要理解它我們還是要花上點功夫的。下面就簡單介紹一下opengl中的轉換矩陣。1 轉換矩陣的原理 opengl中的轉換矩陣是這樣...

OpenGL從1 0開始 繪製二次曲面

glutwiresphere r,nlongitudes,nlatitudes 球面線框圖,引數分別為半徑,經緯度數目 glutsolidsphere r,nlongitudes,nlatitudes 球面實體圖 glutwirecone rbase,height,nlongitudes,nlati...