OpenGLで五芒星を描く

Haskell PlatformにはOpenGLGLUTのライブラリが入っているので、余計な手間不要ですぐ使える。
OpenGL - HaskellWikiにあるチュートリアルを読めば、使い方はすぐ分かる。

とりあえず、関数型言語らしさがどうとか気にせず、素直に書いた。

import Graphics.Rendering.OpenGL
import Graphics.UI.GLUT

main = do
  (progname, _) <- getArgsAndInitialize
  createWindow "Star"
  displayCallback $= display
  mainLoop

display = do
  clear [ColorBuffer]
  renderPrimitive LineStrip $ do
                color $ (Color3 (1.0::GLfloat) 1.0 1.0)
                vertex $ (Vertex3 ((cos (pi * 90 / 180))::GLfloat)
                                  (sin (pi * 90 / 180))
                                  0)
                vertex $ (Vertex3 ((cos (pi * (90 + 2 * 72) / 180))::GLfloat)
                                  (sin (pi * (90 + 2 * 72) / 180))
                                  0)
                vertex $ (Vertex3 ((cos (pi * (90 + 4 * 72) / 180))::GLfloat)
                                  (sin (pi * (90 + 4 * 72) / 180))
                                  0)
                vertex $ (Vertex3 ((cos (pi * (90 + 72) / 180))::GLfloat)
                                  (sin (pi * (90 + 72) / 180))
                                  0)
                vertex $ (Vertex3 ((cos (pi * (90 + 3 * 72) / 180))::GLfloat)
                                  (sin (pi * (90 + 3 * 72) / 180))
                                  0)
                vertex $ (Vertex3 ((cos (pi * 90 / 180))::GLfloat)
                                  (sin (pi * 90 / 180))
                                  0)
  flush

僕が最初に書いたプログラムはBASICで、本に書かれたコードをそのまま入力して、FM-7の画面の上に線と円で描いた絵が表示された。
最近流行りのプログラミング言語は、どれも初学者がいきなり絵を描くには向いてなくて、Hello, Worldとか、せいぜいASCII文字を並べて端末上に三角形を描かせる程度しか最初は出来ない。
プログラミング教育で何を教えるか、というところでこの辺の良し悪しは違ってくるけれど、やっぱりLOGOとかプログラミンとかで、綺麗な絵を描いたり絵を動かしたりすることは楽しい。