TransFormation
http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/下載[data] [win32] glut32.dll
windows解壓縮 將data和glut32.dll丟進去(如圖)
開啟Transformation 了解視窗代表的意義 ,旋轉根據安培右手定則旋轉
_________________________________________________________________________________
ROTATE
_________________________________________________________________________________
用水壺來試試吧
因為可能太難了 老師決定用簡單的方式讓我們了解 打了水壺的程式碼 使用滑鼠讓他轉動
如下:
#include <GL/glut.h>
float myAngle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(myAngle,0,0,1);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void motion(int x,int y)
{
myAngle=x;
display();
}
int main(int argc, char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week 04 rotate");
glutMotionFunc(motion);
glutDisplayFunc(display);
glutMainLoop();
}
_________________________________________________________________________________
記住舊的座標點累加
加此段程式碼可以更加控制水壺,記住舊的座標點繼續累加,沒有加這個程式碼的話每按一次滑鼠就得重新來過
int oldX=0;
void mouse(int button,int state,int x, int y)//按下去記住位置
{
if(state==GLUT_DOWN) oldX=x;
}
void motion(int x,int y)
{
myAngle+=(x-oldX);//加的角度
oldX=x;//新的角度取代舊的
display();//每次做動作就重畫
}







沒有留言:
張貼留言