opengl繪製在螢幕座標中固定位置的座標軸模型

2021-06-17 23:47:03 字數 1425 閱讀 5931

得到的繪圖結果如下圖所示,座標軸的原點位置永遠固定在螢幕座標的左下角為起點(50,50)處。同時根據滑鼠的移動,座標軸模型會在其原點上旋轉。

1.固定點繪製:

思路:為了在螢幕固定位置畫點p,我們可以先在空間座標上某個位置繪製一點(這一點在投影到螢幕中的位置好確定),然後再移動到相應的位置p』,使得p』投影到螢幕時位置正好為p。

當空間投影面如上定義時,我採用的方法是:先在投影面的座標原點o(0,0)處定義點p,這時點p對映到螢幕座標時應顯示在螢幕上的o點處。但真實的點應該定義在p』處。可見需要對其平移到p』處.那麼就要計算平移距離transx,transy.

投影面的平移距離是可以根據螢幕的平移距離計算出來的。螢幕座標o移動到p(50,50)處時,x向左平移w/2-50,y向下平移h/2-50。由於投影面與螢幕是成比例的,乙個畫素對應的空間座標長度就是20/h(或者( 寬比寬)20.0/h*w/w,他們是相同的)。因此畫素移動的距離為(w/2-50,h/2-50),則座標移動的距離為((w/2-50)*20/h,(h/2-50)*20/h).

2.座標軸繞固定點旋**

思路:簡單的旋轉變化,但是由於opengl的旋轉變化都是相對原點的,所以產生旋轉時,要先在原點位置處進行旋轉操作,後才能進行平移操作。

**:

#include using namespace std;

#includeglfloat transx,transy;

glfloat scale;

int primw=300;

int primh=300;

glfloat rotatex=0,rotatey=0;

glint mousepx,mousepy;

void rend(void)

void reshape(int w, int h)

else }

void motion(int x, int y)

{ int w,h;

w=glutget(glut_window_width);

h=glutget(glut_window_height);

if(0<=x && x<=w && 0<=y && y<=h)

{ rotatex=(mousepy-y)/(glfloat)h*360;

rotatey=(mousepx-x)/(glfloat)w*360;

/* cout<

opengl 螢幕座標

建立opengl模型過程 opengl座標變換很有特點,為了簡單描述先定義2個座標系 1 世界座標系 無論如何變換,世界座標系都不動,以螢幕中心為原點 0,0,0 你面對螢幕,你的右邊是x正軸,上面是y正軸,螢幕指向你的為z正軸。2 當前繪圖座標系 即區域性座標系 當前繪圖座標系是繪製物體時的座標系...

OpenGL 螢幕座標向OpenGL座標轉換

螢幕座標向opengl座標轉換 很多人用opengl繪圖會遇到乙個問題即螢幕座標向opengl座標轉換,在網上流傳著如下類似的 glint viewport 4 gldouble modelview 16 gldouble projection 16 glfloat winx,winy,winz g...

螢幕座標向OpenGL座標轉換

很多人用opengl繪圖會遇到乙個問題即螢幕座標向opengl座標轉換,在網上流傳著如下類似的 glint viewport 4 gldouble modelview 16 gldouble projection 16 glfloat winx,winy,winz gldouble posx,pos...