OpenGL知識點梳理3----變換與坐標系統
變換
一、需要註意的一些點
1.變換矩陣不可變,其參數不能使用變量。
2.齊次坐標w>0表示真實物理世界中的點,w=0可用來統一表示一個無窮遠的點。而實際應用中w=0常用來表示一個向量。
3.齊次坐標的優點是只需要管線最後做一次除法就能將齊次坐標轉換為非齊次。
4.進行組合變換矩陣時,先縮放,再旋轉,最後平移或移動到合適位置。
數學原因:矩陣的乘法不可交換
幾何原因:若先位移再縮放,位移矩陣也會被縮放相同的倍數。
5.旋轉總是相對於原點的,旋轉和平移是不可交換的,從數學角度分析,即矩陣相乘的不可交換性
6.三維旋轉的幾何解釋
任意三個正交向量U,V,W可構成一個三維空間中的旋轉矩陣。當用這個矩陣去乘以一個點p時,結果為各個UP,VP,WP
正好為點乘結果,所以可看成將點映射到由UVW組成的新坐標系中。
7.如果物體上的某個位置可以表示成物體質心加上一個位移量,那麽,旋轉它等價於旋轉質心然後
旋轉這個位移。//此點仍然有疑問
二、常用的公式
1、由二維旋轉推導出的旋轉矩陣
x=rcos? y=rsin?
x′=rcos(θ+?) y′=rsin(θ+?)
通過三角函數展開得到
x′=rcosθcos??rsinθsin?
y′=rsinθcos?+rcosθsin?
帶入x和y表達式得到
x′=xcosθ?ysinθ
y′=xsinθ+ycosθ
寫成矩陣的形式是:
此為基本公式,而在三維空間中圍繞各個軸旋轉也就是取一軸坐標不變,其余類似於二維旋轉。
2.繞三軸旋轉
繞X軸的旋轉:
x′=x
y′=ycosθ?zsinθ
z′=ysinθ+zcosθ
繞Y軸旋轉:
x′=zsinθ+xcosθ
y′=y
z′=zcosθ?xsinθ
繞Z軸旋轉
坐標系統
裁剪空間
1.正射投影
此投影是不考慮透視效果的,所以投影結果會不真實,但是在一些工程學中會需要用到正射投影。
2.透視投影
考慮深度對投影的影響,所以進行透視除法,將分量都除以W從而得到越遠越小的效果。
perspective(glm::radians(45.0f), (float)width/(float)height, 0.1f, 100.0f);
參數說明:第一個參數為fov(視野),第二個參數設置了寬高比,由視口的寬除以高所得。第三和第四個參數設置了平截頭體的近和遠平面。
所有在近平面和遠平面內且處於平截頭體內的頂點都會被渲染。
遠近平面說明:近平面不可設置為0,遠平面影響不大。近平面對深度分辨率更加敏感些。
攝像機
更新中。。。。
OpenGL知識點梳理3----變換與坐標系統