4-16
#ifdef _WIN32
#include <windows.h>
#endif
#ifndef _USE_MATH_DEFINES
#define _USE_MATH_DEFINES
#endif
#include <math.h>
#include <GL/gl.h>
#include "glut.h"
//-----------------------イベント関数------------------------
void display(){//描画処理
glClearColor(1.0, 1.0, 1.0, 0.0);//初期画面は白色
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );//画面の消去
glColor3f(0.0, 0.0, 0.0);//描画色の設定(黒)
//座標軸を線で描画
glBegin(GL_LINES);
glVertex2d(-10.0, 0.0);//1本目
glVertex2d( 10.0, 0.0);//1本目
glVertex2d( 0.0, -10.0);//2本目
glVertex2d( 0.0, 10.0);//2本目
glEnd();
glutSwapBuffers();//描画バッファを切り替え
glPointSize(2); //点の大きさを設定
//座標(-5,1), (3,3), (3,-6)に点を描画
glBegin(GL_POINTS);
glVertex2d( -5.0, 1.0);
glVertex2d( 3.0, 3.0);
glVertex2d( 3.0, -6.0);
glEnd();
//原点からの距離が5、x軸との角度が30度の位置に点を描画
double t=30.0*M_PI/180.0;
double x=5.0*cos(t);
double y=5.0*sin(t);
glBegin(GL_POINTS);//点を描画
glVertex2d( x, y);
glEnd();
//上の点をさらに45度回転させた位置に点を描画
t=30.0*M_PI/180.0;
x=5.0*cos(t);
y=5.0*sin(t);
double ang1=30.0*M_PI/180.0;
double x1=x*cos(ang1) - y*sin(ang1);
double y1=x*sin(ang1) + y*cos(ang1);
glBegin(GL_POINTS);//点を描画
glVertex2d( x, y);
glVertex2d( x1, y1);
glEnd();
//半径2の円の描画
glBegin(GL_POINTS);
for(double k=1.0; k<360.0; k+=10.0){//角度は10度ずつ増やす
t=k*M_PI/180.0;
x=2.0*cos(t);
y=2.0*sin(t);
glVertex2d( x, y);
}
glEnd();
//極座標(1+cost, t) t=0~2πが表す図形の描画
glBegin(GL_POINTS);
for(double k=1.0; k<360.0; k+=1.0){//角度は10度ずつ増やす
t=k*M_PI/180.0;
x=t;
y=1.0*cos(t)+1;
glVertex2d( x, y);
}
//glVertex2d( x1, y1);
glEnd();
glutSwapBuffers();//描画バッファを切り替え
}
void initialize(){ //初期化処理
}
void idle(){//アイドリング処理
}
void reshape( int width, int height ){//リサイズ処理
glViewport( 0, 0, width, height );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluOrtho2D( -10.0, 10.0, -10.0, 10.0 );//画面へ投影する座標系範囲
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
}
//------------------------メイン関数------------------------
int main( int argc, char **argv ){
glutInit( &argc, argv );
glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH );
glutInitWindowSize( 500, 500 ); //ウィンドウの初期サイズを設定
glutCreateWindow( argv[0] ); //ウィンドウのタイトルバーに表示される名前を設定
glutReshapeFunc( reshape );
glutDisplayFunc( display );
glutIdleFunc( idle );
initialize();
glutMainLoop();
return 0;
}
最終更新:2007年05月14日 12:44