OpenGLで五芒星を描く
Haskell PlatformにはOpenGLとGLUTのライブラリが入っているので、余計な手間不要ですぐ使える。
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とかプログラミンとかで、綺麗な絵を描いたり絵を動かしたりすることは楽しい。