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。
希望能對同學有些幫助ˊˇˋ