Advertisement
cd62131

GL Draw Circle Animation

Jan 30th, 2014
606
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.48 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define __USE_BSD
  4. #define _USE_MATH_DEFINES
  5. #include <math.h>
  6. #include <time.h>
  7. #include <unistd.h>
  8. #include <GL/glut.h>
  9. void display(void) {
  10.   int n = 50;
  11.   glColor3f(0.0, 0.0, 0.0); // 図形の色の指定
  12.   glClearColor(1.0, 1.0, 1.0, 1.0); // 背景色の指定
  13. // これまでfor文の外に書いていたglClearとglFlushを、for文の中に書くことで、
  14. // 画面のクリアと再描画が繰り返され、アニメーションが可能になる。
  15.   for (double r = .5; r < 1.; r += .025) {
  16.     double t = clock();
  17.     for (;;) {
  18.       if ((clock() - t) / 1000000 > .3) break;
  19.     }
  20.     glClear(GL_COLOR_BUFFER_BIT); // 画面をクリア。アニメーションのためfor文の中に。
  21.     glBegin(GL_LINE_LOOP); // glVertex2dで指定した各座標を順に直線で結ぶ。
  22. // 最初と最後の座標の間にも線を引きループ状にする
  23.     for (int i = 0; i < n; i++) {
  24.       double rad = M_PI * i * 2  / n;
  25.       glVertex2d(r * cos(rad), r * sin(rad));
  26.     }
  27.     glEnd();
  28.     glFlush(); // 画面の描画、あるいは再描画。アニメーションのためfor文の中に。
  29.   }
  30. }
  31.  
  32. int main(int argc, char** argv) {
  33.   glutInit(&argc, argv);
  34.   glutInitWindowSize(400, 400); // ウィンドウサイズは400x400ドット
  35.   glutInitWindowPosition(600, 300); // ウィンドウの表示位置の指定
  36.   glutCreateWindow("simple");
  37.   glutDisplayFunc(display);
  38.   glutMainLoop();
  39.   return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement