1.前往以下網址:https://jsyeh.org/3dcg10/
2.下載windows.zip及data.zip 這2個檔案,並且解壓縮
3.執行Transformation.exe
下方數字拖曳滑鼠可改變角度,右上角視窗點及滑鼠右鍵可改變模型
***旋轉黃色茶壺***
1.將下列程式碼打上
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();///備份矩陣
glRotatef(180,0,0,1);///轉180度
glColor3f(1,1,0);
glutSolidTeapot(0.3);
glPushMatrix();///備份矩陣
glutSwapBuffers();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week05");
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
2.執行結果
***滑鼠旋轉茶壺***
1.將下列程式碼打上
#include <GL/glut.h>
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();///備份矩陣
glRotatef(angle,0,0,1);
glColor3f(1,1,0);
glutSolidTeapot(0.3);
glPushMatrix();///備份矩陣
glutSwapBuffers();
}
void motion(int x,int y)
{
angle=x;
display();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week05");
glutDisplayFunc(display);
glutMotionFunc(motion);
glutMainLoop();
return 0;
}
2.執行結果
點擊、拖曳滑鼠可旋轉茶壺
***還是滑鼠旋轉茶壺***
1.將下列程式碼打上
#include <GL/glut.h>
float angle=0,oldX=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glPushMatrix();///備份矩陣
glRotatef(angle,0,0,1);///轉180度
glColor3f(1,1,0);
glutSolidTeapot(0.3);
glPushMatrix();///備份矩陣
glutSwapBuffers();
}
void mouse(int button,int state,int x,int y)
{///按下mouse 放開mouse
oldX=x;
}
void motion(int x,int y)
{ ///拖著它動
angle+=(x-oldX);
oldX=x;
display();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("week05");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutMainLoop();
return 0;
}
2.執行結果
***畫線***
1.將下列程式碼打上
#include <stdio.h>
#include <GL/glut.h>
int N=0;
int x[1000], y[1000];
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_LINE_LOOP);
for(int i=0; i<N; i++){
glVertex2f( (x[i]-150)/150.0, -(y[i]-150)/150.0);
}
glEnd();
glutSwapBuffers();
}
void motion(int mouseX, int mouseY)
{
N++; ///多一個頂點
x[N-1] = mouseX;
y[N-1] = mouseY;
printf("按下滑鼠,得到新座標 %d %d\n", x[N-1], y[N-1]);
display();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("mouse");
glutDisplayFunc(display);
glutMotionFunc(motion);
glutMainLoop();
}
2.執行程式











沒有留言:
張貼留言