程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> OpenGL的矩陣

OpenGL的矩陣

編輯:關於C語言

1.
OpenGL中的矩陣
m[0]  m[4]  m[8]    m[12] 
m[1]  m[5]  m[9]    m[13] 
m[2]  m[6]  m[10]  m[14] 
m[3]  m[7]  m[11]  m[15] 

對它定義的新坐標系,OpenGL是這麼說的:
x軸向量(m[0], m[1], m[2]);
y軸向量(m[4], m[5], m[6]);
z軸向量(m[8], m9], m[10]);
原點(m[12], m[13], m[14]);

2.
回過頭,矩陣只不過是方程組的一種表達形式,這個矩陣對應的方程組應為:
x  = m[0]x   + m[1]y   +m[2]z   + m[3]w;
y  = m[4]x   + m[5]y   +m[6]z   + m[7]w;
z  = m[8]x   + m[9]y   +m[10]z + m[11]w;
w = m[12]x + m[13]y +m[14]z + m[15]w;
 

3.
因為w和w’都是1,由這個方程組我唯一能看出來的是m[3],m[7],m[11]跟平移量有關系,它們和原點(Ox,Oy,Oz)有如下關系:
m[3] = - (m[0]*Ox + m[1]*Oy +m[2]*Oz)
m[7] = - (m[4]*Ox + m[5]*Oy +m[6]*Oz)
m[11] = - (m[8]*Ox + m[9]*Oy +m[10]*Oz)

疑問:
??這跟OpenGL所說的貌似矛盾了。

一種說法
有筒子提出,我在2. 還原的方程組不正確,正確的方程組是
x  = m[0]x   + m[4]y   +m[8]z   + m[12]w;
y  = m[1]x   + m[5]y   +m[9]z   + m[13]w;
z  = m[2]x   + m[6]y    +m[10]z + m[14]w;
w = m[3]x   + m[7]y   +m[11]z  + m[15]w;

我個人並不同意這種說法。
即便如此,原點坐標也並不是OpenGL所說的12-14,更何況,這個方程組決定的坐標系的x軸方向已經變成了(m[0],m[4],m[8])。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved