TIM Labs

基本的な図形との戯れ(子供向け勉強再開)

| コメント(0) | トラックバック(0)
今まで、線しか描いていなかったが、図形の内部を塗ってみよう。

circleSolid  で円の内部がつまった円板になる。
rectangleSolid で内部がつまった長方形になる。

このままだと、塗る色が黒なのだが、color で色を指定することができる。

import Graphics.Gloss

picture = pictures [
    circleSolid 80,
    color green (rectangleSolid 200 100) ]

main = display (InWindow "Nice Window" (300, 200) (10, 10)) white picture

関数colorについて、ちょっと注意しておこう。
普通の感覚だと、 color 色 で、塗る色が切り替わる、と考えるかも知れないが、それは誤りだ。
関数colorの型を見てみよう。

Prelude Graphics.Gloss> :t color
color :: Color -> Picture -> Picture

第1パラメータが色だが、第2パラメータにPictureを与え、結果として指定色になったPictureが出てくるのだ。

ということで、このプログラムを実行すると、こんな表示になる。

sample-circleboxsolid.png

次に、図形の移動をしてみよう。
関数translateで、平行移動ができる。
x方向移動量 y方向移動量 図形 を与えると、移動された図形が得られる。

Prelude Graphics.Gloss> :t translate
translate :: Float -> Float -> Picture -> Picture

関数rotateで図形を回転できる。
回転量は、度で与える。
さて、回転の方向はどちらであろうか、結果を見て考えてみよう。

ということで、こんなプログラムを実行してみた。

import Graphics.Gloss

rec     = rectangleSolid 100 50
picture = pictures [
    translate 100 50 (color orange rec),
    rotate 60        (color blue   rec) ]

main = display (InWindow "Nice Window" (400, 200) (10, 10)) white picture

sample-circleboxmove.png

この図から、yの方向は、画面の上方向がプラス、下方向がマイナスである。
回転方向は、時計と同じ方向に回転するのがプラスである。

回転と移動が組み合わさると、最初はなかなか理解しにくいかも知れない。
どうして、その位置に表示されるのか、しっかり考えてみよう。
Haskellよりも、グラフィックの問題になってしまったかな。

では、また(つづく)

トラックバック(0)

トラックバックURL: http://labs.timedia.co.jp/mt/mt-tb.cgi/353

コメントする

このブログ記事について

このページは、fujiが2013年1月 9日 00:00に書いたブログ記事です。

ひとつ前のブログ記事は「オープンコースウェア」です。

次のブログ記事は「第3週、★の描き方」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。