https://jsyeh.org/3dcg10/
下載win32 和 data
解壓縮win32 和 data 將解壓縮完的data拉進windows資料夾
6.按Transformation
旋轉-Rotate
3.會照上面這個方向進行旋轉
#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);
glPopMatrix();///還原矩陣
glutSwapBuffers();
}
int main(int argc, char *argv[]){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("ME");
glutDisplayFunc(display);
glutMainLoop();
}
#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);
glPopMatrix();
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("ME");
glutDisplayFunc(display);
glutMotionFunc(motion);
glutMainLoop();
}
#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);
glColor3f(1,1,0);
glutSolidTeapot(0.3);
glPopMatrix();
glutSwapBuffers();
}
void mouse (int button,int state,int x,int y)
{
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("ME");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutMainLoop();
}
滑鼠往左邊拉就進行旋轉
用滑鼠寫程式
#include <GL/glut.h>
#include <stdio.h>
int mouseX=0,mouseY=0 ,N=0;
int mx[100],my[100];
void display(){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1,1,0);
glBegin(GL_LINE_LOOP);
for( int i=0;i<N;i++){
glVertex2f((mx[i]-150)/150.0,-(my[i]-150/150.0));
}
glEnd();
glutSwapBuffers();
}
void mouse (int button,int state,int x,int y)
{
// printf("%d %d %d\n",button,state,x,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;
}
}
int main(int argc, char *argv[]){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("ME");
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutMainLoop();
}
沒有留言:
張貼留言