プログラムで作図

[| ]  最終更新: 2011/02/10 19:35:42

このページについて

ここでは、コンピュータ上で、プログラムで作図する方法、きわめて簡素なコンピュータグラフィックについて体験してみます。

コンピュータ上で作図するには、いくつか方法があります。 たとえば、

といった方法があります。
今回は、直接的に結果がわかる三つ目の方法を試してみます。

とはいえ、この方法は一番、普遍性がありません(グラフなどが困難なお絵かきソフトを除いて)。
基本的に、画面に何かを描く方法は、

に依存します。

そのため、具体的な「やりかた」については深入りせず、2次元で線画を描くための方法について、体験してみることを主とします。

今回使用する手段は、

です。 いずれも(本来のXとEGGX)、学院大学KNOPPIX EduTGには用意されているので、KNOPPIXさえ動けば自宅でも試せます、一応。


作図してみる

準備

スタートメニュー→ASTEC-X
スタートメニュー→ASTEC-X
起動すると右下のタスクトレイに小さなX印
起動すると右下のタスクトレイに小さなX印
graph.cの実行結果
graph.cの実行結果
まず、eggxを一式持ってきます。

「マイコンピュータ」→「Users」→「Kumagai」→「Computer」→「eggx」
の中にあるファイル(8個)をすべて、自分のcygwin/programフォルダにコピーします。

コンパイルできるかを確かめます。

$ egg -o graph graph.c
いままで、gccを使っていましたが、グラフィックをいじるときはいろいろと設定が必要なので、それをまとめてやってくれるのが「egg」です。
(eggを実行するとやたらと長いgcc〜が表示される)

次に、ASTEC-Xを起動します。
スタートメニュー→「ASTEC-X」→「ASTEC-X」
で起動します。
※注意:デスクトップにもUNIXと書かれたXアイコンがありますが、これではありません。 正常に起動すると右下に「X」アイコンがでます。
この操作は、普段はログオン後一度行えば、ログオフするまでは必要ありません。
なお、一見なにもウインドウが出てこないので、おかしいなと思って2回起動したりすると、2回目以降は文句を言われます。

さて先ほどのプログラムを実行してみます。

$ graph
すると、右の3枚目の画像のようなグラフが表示されると思います。
(他のウインドウの下に出てしまうことが多いので、そのときはタスクバーで選ぶか、掘り出してください)

プログラムを止めるには、

をしてください。

挑戦してみよう

draw.cの実行結果
draw.cの実行結果
とりあえずこれを目標
とりあえずこれを目標
図の座標
図の座標
元気があれば、このくらい目指してみましょう(プログラム的に。美的には真似してはいけないレベル...。)
元気があれば、このくらい目指してみましょう(プログラム的に。美的には真似してはいけないレベル...。)
ここでは、自分で描画してみましょう。

まず、先ほどコピーした中にある draw.c もコンパイルして実行してみます。

$ egg -o draw draw.c
$ draw
$
右上の図のように、正方形のウインドウが開いて、黒線、赤線、青い矢印、記号が10個ほど表示されたと思います。 黒の線は、下1/4くらいのところに水平に引かれていますが、この線は、draw.cの
  newcolor(win,"black");   drawline(win,0,100,399,100); で作られています。newcolorは、以下「black」の色で作図せよ、drawlineは、座標(0,100)から座標(399,100)まで線を引け、という指示です。
座標とは、画面上の位置を表す数値で、右方向の位置(x座標)と、上方向の位置(y座標)を表しています。
今回は、左右も上下も0〜399で、左下が(0,0)で、右上が(399,399)です。
(グラフの座標と基本的に同じ、ただし、コンピュータの画面の座標としては左上が(0,0)で下方向がプラスのものが多い)

基本的には、コンピュータ上の作図はすべて、座標で行われます。
ので、自分で出力したいものを座標で考えて、それを指定すればいいわけです。
EGGXでは基本的な図形がいくつか描画できます。 マニュアルにこと細かにかいてありますが、使いそうな主なものとしては、

などがあります。なお、必ず最初に「win」がありますが、これは「どのウインドウに描くか」を指定するためのもので必須です。

さて、ここからは、試行錯誤してください。
draw.cを適当にコピー、名前を変えて、自分のファイルを作ってください。
その上で、「//以下お絵かき」の下から「なにかキーを押したら終了」の上までの間を好きに書き換えてください。 それ以外はいじらない方が無難です。

挑戦課題:クリスマスツリー(?)

まずは、右の上から2番目の図のような、シンプルな木を目指しましょう。

一発でうまくいくとは思わず、適当にdrawlineして、思ったとおりいかなかったら考えてみる、というのが手頃です。
(実際、この図はそうやって作った)

そこまでできたら、いろいろやってみましょう。 とりあえず、右3枚目は、

とかやってみました。

自分なりに工夫した作品ができたら、見せびらかしてください。
楽しみにしています。
このページ、ここで終了。



熊谷正朗 [→連絡]
東北学院大学 工学部 機械知能工学科 RDE
[| ]