2006年12月9日

[計圖]旋轉平移縮放程式碼

程式載點:http://0rz.tw/a92ca

旋轉、平移、縮放的量值都要另外以global的形式宣告出來,主要旋轉平移縮放的程式碼都要扔在display中。

display的程式碼:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef( 0 - VxDistance, 0 - VyDistance, 0 - VzDistance );
glRotatef( 0 - VxAngle, 1.0, 0.0, 0.0 );
glRotatef( 0 - VyAngle, 0.0, 1.0, 0.0 );
glRotatef( 0, 0.0, 0.0, 1.0 );
//以上這段為視角的旋轉平移、意味著底下的axle、colorcube也會受這部份影響而轉動

glMatrixMode(GL_MODELVIEW);
axle();
glPushMatrix();
//畫出軸向,PushMatrix讓下面的colorcube旋轉平移縮放不會影響到axle。

glTranslatef( xDistance, yDistance, zDistance );
glRotatef( xAngle, 1.0, 0.0, 0.0 );
glRotatef( yAngle, 0.0, 1.0, 0.0 );
glRotatef( zAngle, 0.0, 0.0, 1.0 );
glScalef( xS, yS, zS );

colorcube();
//colorcube的旋轉平移縮放
glPopMatrix();
//將axle的矩陣Pop出來
glFlush();

在ScrollBar的事件處理寫法如下,使用的是Change這個事件,舉例中我改動的為 xAngle

 xAngle = ScrollBar->Position;
GLBox1->Invalidate();

ScrollBar、GLBox1分別是捲軸與GLCtrl的Name,另外,ScrollBar的參數中,Max與Min代表最大最小值、LargeChange代表如果我直接點卷軸中的空白處卷軸會做大量移動、每次大量移動的值是多少、而Position就是卷軸位置的值囉。而用來顯示目前量值的Label,其顯示文字參數為Caption。

希望能對同學有些幫助ˊˇˋ



Posted by kevingao814 at 樂多Roodo! │09:43 │回應(0)引用(0)├學知識
樂多分類:日記/一般 工具:編輯本文
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/2556763