Advertisement
cd62131

GL simple example

Jan 29th, 2014
661
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.98 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <limits.h>
  5. #include <time.h>
  6. #include <GL/glut.h>
  7. void display(void) {
  8.   double x[8]; // x座標の値を入れる変数
  9.   double y[8]; // y座標の値を入れる変数
  10.   srand((unsigned int) time(NULL));
  11. //乱数を用いて棒を8本作る
  12.   for (int i = 0; i < 8; i++) {
  13. //x座標は0.2刻み
  14.     x[i] = -0.8 + 0.2 * i;
  15. //y座標は乱数
  16.     y[i] = (double) (rand() % 20 + 1) / 10 - 1;
  17.   }
  18.   int min = 0;
  19.   int max = 0;
  20.   double min_value = y[min];
  21.   double max_value = y[max];
  22.   for (int i = 0; i < 8; i++) {
  23.     if (min_value > y[i]) {
  24.       min = i;
  25.       min_value = y[i];
  26.     }
  27.     if (max_value < y[i]) {
  28.       max = i;
  29.       max_value = y[i];
  30.     }
  31.   }
  32.   glClear(GL_COLOR_BUFFER_BIT);
  33.   glClearColor(1.0, 1.0, 1.0, 1.0); // 背景色の指定
  34.   for (int i = 0; i < 8; i++) {
  35. // glBeginとglEndの間で座標を指定する。
  36. // 座標を指定するには、『glVertex(x座標, y座標);』と書く。
  37.     if (i == min) {
  38.       glColor3d(1., 0., 0.);
  39.     }
  40.     else if (i == max) {
  41.       glColor3d(0., 0., 1.);
  42.     }
  43.     else {
  44.       glColor3d(0., 0., 0.);
  45.     }
  46.     glBegin(GL_LINES); // 線を描く場合はGL_LINESと書く。
  47.     glVertex2f(x[i], -1.0); // 画面最下部から(x[i], y[i])まで
  48.     glVertex2f(x[i], y[i]); // 垂直な線を引く
  49.     glEnd();
  50.   }
  51.   glColor3d(0., 1., 0.);
  52.   glBegin(GL_LINES);
  53.   glVertex2d(-1., (max_value + min_value) / 2);
  54.   glVertex2d(1., (max_value + min_value) / 2);
  55.   glEnd();
  56.   glFlush();
  57. }
  58.  
  59. int main(int argc, char** argv) {
  60.   glutInit(&argc, argv);
  61.   glutInitWindowSize(400, 400); // ウィンドウサイズは400x400ドット
  62.   glutInitWindowPosition(600, 300); // ウィンドウの表示位置
  63.   glutCreateWindow("simple");
  64. // フォーカスを変えずにすむように
  65. //  printf("開始します。何かキーを押してください。");
  66. //  getchar();
  67.   glutDisplayFunc(display);
  68.   glutMainLoop();
  69.   return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement