[CG実習 >  CG実習 課題(2025) >  [課題00] サンプルプログラムによるテスト]

[課題00] サンプルプログラムによるテスト

課題

課題提出に関する注意」をよく理解した上で, 次に示すプログラムを入力,実行して, 以下の指示にしたがって提出して下さい.
nca.rb

最初に言語設定を「日本語 (Mozc)」にしておきます. 画面右上の『ja』を押すと選択できます.

次に以下の手順でEmacsで新規ファイルを開いて,左のプログラムをそのまま入力して保存して下さい.

Emacsの起動
画面左上の[Activities]を押すと画面下にDockが表示されます. 次にDockの一番右のアイコン(Show Applications)を選ぶとアプリケーション一覧が表示されます. そこからEmacs(GUI)を起動できます.
Emacsが起動したら,ファイルを新規作成します. ファイル名は次のルールのもとで適宜決めてください.
ファイル名のルール
1. 英数字,「.」,「_」,「-」を組み合わせたファイル名にする.1文字めは英数字にする.
2. ファイル名は「.rb」で終わる(.rbはRubyのファイルを表す拡張子です).
3. ファイル名には空白文字,日本語を入れない.
Emacsでの新規ファイル作成
1. [File]→[Visit New File]
2. ファイルを開く画面が表示される
3. Name欄にファイル名を入力
4. [OK]を押す.

「.rb」で終わるファイル名を付けた場合,最初の12行(先頭から「=end」の行まで)が自動的に入力された状態でファイルが開かれます. なおこのようにファイルの先頭に自動的に取り込まれる内容はカスタマイズできます(Emacsの設定のカスタマイズ).

なお以下の説明ではファイル名を「cautomaton.rb」としています.

プログラムの入力に関して,いくつか注意点を示します.

プログラムをすべて入力できたらファイルを保存してください([File]→[Save]). 入力の途中でも適宜ファイルを保存しておくとよいでしょう. ファイルが完成して保存できたら[Activities]を押してDockを開いて, Terminal(端末)を起動します(モニタ(PCの画面)のアイコン). 端末画面が現れたら,以下のようにプログラムを実行して下さい. なお「$」は端末画面に最初から出ているプロンプトを表しています(「ruby」から入力します).またプログラムのファイル名「cautomaton.rb」は自分がつけたファイルの名前に置き換えてください.

$ ruby  cautomaton.rb  -x 0x5a  512  256

プログラムが正しく記述されていて,上のとおり実行を指示できていれば,次のような図形が表示されるはずです.このようになるかどうか確認してみてください.

セルオートマトンで描かれるシェルピンスキーのガスケット

課題では,以下の「今回のプログラムによる画像の生成」にしたがって, プログラムを実行することによって,さまざまな図形が生成できることを確認してください. その上でプログラムの実行例の情報をいくつか,次に示すようにプログラムの先頭に書き加えてください. 面白いパターンの画像を作ることができたら,是非その実行例を入れてください.


=begin

所属:     都学部0回生
氏名:     左京太郎
学生番号: 0123456789
難易度(5段階評価): 3

感想など(任意)

プログラムの実行例: 
  ruby cautomaton.rb -x 0x2b -n 5 -r 600 450
  ruby cautomaton.rb -x 0x609 -b 3 800 600

=end

今回のプログラムによる画像の生成

今回のプログラムではセルオートマトンという仕組みを使って, さまざまな画像を生成するようになっています(課題をこなすために仕組みを理解する必要はありません).

プログラムを実行する際には,作成する図形領域の範囲を決めるデータを指定する必要があります. 実行すると画像が表示されます. 場合によってはほとんど何も表示されないかもしれませんが, その場合は一旦プログラムを終了して,再度実行してみてください(以下を参照のこと).

$  ruby  cautomaton.rb  600  400

ここで指定している二つの数値で図形全体の縦横のサイズが決まります. 最初の数値が横方向,2番めの数値が縦方向のサイズを決めています. 画像を確認したら,次のいずれかでプログラムを終了します.

(プログラムを終了した後に)再度プログラムを実行すると,(おそらく)さきほどとは異なる図形が表示されるでしょう. これは表示される図形を決める重要なパラメタが勝手に選ばれているためです. よいパラメタが選ばれなかった場合には,ほとんど何も表示されないこともあります.

さてプログラムを実行すると端末に次のような情報が表示されます.

PARAMETERS:  -b 2  -n 3  -x 0x95  600 400

ここで表示されたデータをそのままプログラムに指定して実行すると,いつでも同じ図形を再現できます.

$  ruby  cautomaton.rb  -b 2  -n 3  -x 0x95  600 400

提出するファイルの先頭の「実行例」には,これらのパラメータ(-b, -n, -x)とその値をすべて含めて,次のような形で示してください.

 プログラムの実行例:
 ruby cautomaton.rb -b 2 -n 3 -x 0xa5 512 512
 ruby cautomaton.rb -b 3 -n 5 -x 0x1229e 600 400

端末画面に表示されたデータをファイルに取り込む方法についてはこのページの「パラメタのファイルへの取り込み」で説明しています.

これらのパラメタ(-b, -n, -x)を自分で独自に指定して,プログラムを実行することもできます.

-b kkは2以上の整数とする.指定しない場合はk=2となる.
-n ssは3以上の奇数とする.指定しない場合はs=3となる.
-x 0x????0xにつづいて16進表記で値を指定する.指定しない場合はランダムに決定する.

「-x」は(指定しないでおいて)ランダムに決定することにして, 「-b」「-n」の両方,あるいはどちらか一方を指定して,実行してみるとよいでしょう. 次に「-b」と「-n」を設定する場合の目安を示します.

「-x」は一度作成した図を再現するときに指定するものだと考えればよいでしょう. すでに述べたように,課題として提出する「実行例」については,すべてのパラメタ(-b, -n, -x)の値を含めるようにしてください.

なお実行するときに「-r」を追加指定することもできます. 「-r」を指定した場合には,パラメタ(-b,-n,-x)の値が同じでも(おそらく)毎回異なった図形が表示されます.

$  ruby  cautomaton.rb  -b 2  -n 5  -x 0x2b  -r  600  400
$  ruby  cautomaton.rb  -b 4  -n 3  -x 0x2c4a9  -r  600  400

ここで描画している図形の生成方法については「セルオートマトン」で簡単に説明しています.

パラメタのファイルへの取り込み

端末画面に表示されたデータは次のようにしてコピーして貼り付けられます.

  1. コピーしたい部分をマウスの左ボタンでドラッグする(ドラッグした部分は反転表示される).その後,右クリックのメニューで「Copy」を選ぶ
  2. Emacsで開いているファイルで,貼り付けたい場所にカーソルを動かしておいてから, [Edit]→[Paste]で貼り付ける(ショートカットは[Ctrl]+[y]).

貼り付けたら再度保存した上で, ファイルをPandAで提出してください.

[参考]セルオートマトン

セルオートマトンとは整列した均質な「セル(cell)」で構成されるシステムです. セルにはそれぞれ状態が定められていて,k通りの状態をとります(kは「-b」で指定する値). 各セルの状態は1ステップごとに変化していくようになっています. 各セルの状態の変化は,そのセル自身を中心としたs個のセルの状態と(sは「-n」で指定する値),それらの状態にもとづいて次の状態を定めるルールによって決められるようになっています(なお左端のセルと右端のセルがつながっているものとして扱っています). 今回のプログラムでは「-x」で与える16進表記の数でルールが決まるようになっています.

今回のプログラムでは,一列に並んだn個セルのtステップの間の時間変化を上から下に並べていった図形を生成します(セルが横にn個,縦にt列並ぶ). プログラムで最後に指定する二つの値がnとtです. またセルの状態によって画像上でのセルの明るさを変えるようになっています.

なお「-r」を追加指定すると,各セルの初期状態をランダムに決めます. 「-r」が指定されていない場合には,中央のセルが状態1で他のセルはすべて状態0からスタートするようになっています.

[CG実習 >  CG実習 課題(2025) >  [課題00] サンプルプログラムによるテスト]