(GLUT)線を繋げて絵を描く


アニメ『ラーメン大好き小泉さん』

どのラーメンも美味しそうです。

ラーメン食べたくなったので、GLUTでラーメンマン描きます。
※ラーメンから連想するものがラーメンマンしかありませんでした。

先に定型処理です。

takk@deb9:~$ cat -n ramen.c | tail -23
    54  void callback_display()
    55  {
    56          glClearColor(WHITE);
    57          glClear(GL_COLOR_BUFFER_BIT);
    58
    59          ramen();
    60
    61          glFlush();
    62  }
    63
    64  int main(int argc, char *argv[])
    65  {
    66          glutInit(&argc, argv);
    67          glutInitDisplayMode(GLUT_RGBA);
    68          glutCreateWindow("Ramen");
    69
    70          glutDisplayFunc(callback_display);
    71
    72          glutMainLoop();
    73
    74          return 0;
    75  }
    76
takk@deb9:~$

では先頭から。

takk@deb9:~$ cat -n ramen.c
     1  #include <GL/glut.h>
     2
     3  #define WHITE 1.0, 1.0, 1.0, 0.0
     4  #define RED   1.0, 0.0, 0.0, 0.0
     5  #define BLACK 0.0, 0.0, 0.0, 0.0
     6

使う色は白、赤、黒です。

     7  void ramen()
     8  {
     9          glBegin(GL_POLYGON);
    10          glColor4f(RED);
    11          glVertex2d(-0.3, -0.5);
    12          glVertex2d( 0.3, -0.5);
    13          glVertex2d( 0.3,  0.5);
    14          glVertex2d(-0.3,  0.5);
    15          glEnd();
    16

うる覚えラーメンマンの頭部は長方形で作ります。

    17          glBegin(GL_POLYGON);
    18          glColor4f(WHITE);
    19          glVertex2d(-0.2,  0.2);
    20          glVertex2d(-0.1,  0.2);
    21          glVertex2d(-0.05,  0.15);
    22          glEnd();
    23
    24          glBegin(GL_POLYGON);
    25          glVertex2d( 0.2,  0.2);
    26          glVertex2d( 0.1,  0.2);
    27          glVertex2d( 0.05,  0.15);
    28          glEnd();
    29

目です。細い目だった気がします。

    30          glColor4f(BLACK);
    31          glBegin(GL_LINES);
    32
    33          glVertex2d(-0.5, -0.3);
    34          glVertex2d(-0.1, -0.1);
    35
    36          glVertex2d( 0.5, -0.3);
    37          glVertex2d( 0.1, -0.1);
    38
    39          glEnd();
    40

確か髭がありました。

    41          glBegin(GL_LINE_LOOP);
    42          glVertex2d(-0.05,  0.4);
    43          glVertex2d( 0.05,  0.4);
    44          glVertex2d( 0.05,  0.35);
    45          glVertex2d(-0.05,  0.35);
    46          glEnd();
    47
    48          glBegin(GL_LINES);
    49          glVertex2d( 0.0,  0.42);
    50          glVertex2d( 0.0,  0.33);
    51          glEnd();
    52  }
    53

中を書いたら完成です。ラーメンマンもラーメン大好きでしたね。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA