1.早鳥福利_利用sin(),cos()函數畫出圓形
#include <math.h> //sin(),cos()
#include <GL/glut.h>
void mycircle(float r){
glBegin(GL_POLYGON); //多邊型
for(float a=0 ; a<3.1415926*2 ; a+=0.01){ //範圍(弧度,圓或是半圓)
glVertex2f( r*cos(a) , r*sin(a) ); //r:半徑(圓的大小)
}
glEnd(); // 結束畫
}
void display(){
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glCcolr3f(1,1,0); //顏色
mycircle(2);
glCcolr3f(0,1,1);
mycircle(0.6);
glutSwapBuffers();
}
int main(int argc,char**argv){
}
2.移動圖形 glTranslate(x,y,z)
#include <GL/glut.h>
void myteatop(float x,float y){ ///把它變成函式就不用一直打
glPushMatrix();///備份矩陣
///移動會累積,因為它會修改矩陣
glTranslatef(x, y , 0);//x,y,z方向
glColor3f(1,1,0);
glutSolidTeapot(0.3);
glPopMatrix();///還原矩陣(還原舊的位置)
}
void display(){
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
/*glPushMatrix();///備份矩陣
///移動會累積,因為它會修改矩陣
glTranslatef(0.5, 0.5 , 0);//x,y,z方向
glColor3f(1,1,0);
glutSolidTeapot(0.3);
glPopMatrix();///還原矩陣(還原舊的位置)
*/
myteatop(0.5,0.5);
myteatop(-0.5,0.5);
myteatop(0.5,-0.5);
myteatop(-0.5,-0.5);
glutSwapBuffers();
}
int main(int argc,char**argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week03_translate");
glutDisplayFunc(display);
glutMainLoop();
}






4.如何使用上述方法畫圖:
沒有留言:
張貼留言