1 前往 https://jsyeh.org/3dcg10/ 下載WIN跟Data
2 解壓縮後,將Data資料夾放進Windows資料夾
3點擊Transformation.exe
WEEK04-1
程式碼
#include <GL/glut.h>
void myTeapot(float x,float y)
{
glPushMatrix();
glTranslatef(x,y,0);
glutSolidTeapot(0.3);
glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3f(1,0,1);
myTeapot(+0.5,+0.5);
myTeapot(+0.5,-0.5);
myTeapot(-0.5,-0.5);
myTeapot(-0.5,+0.5);
glutSwapBuffers();
}
int main( int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("04-2");
glutDisplayFunc(display);
glutMainLoop();
}
結果
04-2
程式碼
#include <GL/glut.h>
#include <stdio.h>
void mouse (int button,int state,int x,int y)
{
printf("%d %d %d %d \n",button,state,x,y);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glutSwapBuffers();
}
int main( int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("04-2");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
結果
*左鍵為0,中鍵為1,右鍵為2
04-3
程式碼
#include <GL/glut.h>
#include <stdio.h>
int mouseX=0,mouseY=0;
void mouse (int button,int state,int x,int y)
{
mouseX=x,mouseY=y;
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3f(1,0,1);
glPushMatrix();
glTranslatef((mouseX-150)/150.0, -(mouseY-150)/150.0, 0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
int main( int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("04-3");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
結果
04-4
程式碼
#include <GL/glut.h>
#include <stdio.h>
int mouseX=0,mouseY=0,N=0;
int mx[100],my[100];
void mouse (int button,int state,int x,int y)
{
mouseX=x,mouseY=y;
if(state==GLUT_DOWN){
printf(" glVertex2f((%d-150)/150.0,-(%d-150)/150.0);\n",x,y);
N++;
mx[N-1]=x;my[N-1]=y;
}
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3f(1,0,1);
glBegin(GL_LINE_LOOP);
for(int i=0;i<N;i++){
glVertex2f((mx[i]-150)/150.0,-(my[i]-150)/150.0);
}
glEnd();
glutSwapBuffers();
}
int main( int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
glutCreateWindow("04-4");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
沒有留言:
張貼留言