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

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

課題

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

最初に言語設定を「Japanese (Mozc)」にしておきます.言語設定はログイン後に1度だけでOKです(※「 Other (Mozc)」になっているかもしれません). 画面右上の『ja▼』を押すと選択できます(ログインするたびに設定する必要があります).

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

Emacsの起動
[Activities]でDockを表示させて,一番下の[Show Applications]からEmacs(GNU Emacs)を起動できます. アプリケーションの中にEmacsが見当たらない場合は, 画面下に『All』というボタンがあるはずですので,それを選んで下さい (※よく使われるアプリケーションは『Frequent』の方にリストアップされます).
Emacsが起動したら,ファイルを新規作成します. ファイル名は次のルールのもとで自分にとってわかりやすくなるように適宜決めてください.
ファイル名のルール
1. 英数字,「.」,「_」,「-」を組み合わせたファイル名にする.1文字めは英数字にする.
2. ファイル名は「.rb」で終わる(.rbはRubyのファイルを表す拡張子です).
3. ファイル名には空白文字,日本語を入れない.
Emacsでの新規ファイル作成
1. [File]→[Visit New File]
2. 画面一番下の帯状の領域(Mini Buffer)に「Find File ~/」と表示される
3. 「Find File ~/」につづいてファイル名を入力する
4. [Enter]でファイル名を決定する→ファイルが開く

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

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

入力できたら,Emacsでファイルを保存して([File]→[Save]),[Activities]からDockを開いて, 一番上の「端末」(Terminal)を起動します. 端末画面が現れたら,以下のようにプログラムを実行して下さい. なお「$」は端末画面に最初から出ているプロンプトを表しています(「ruby」から入力します).またプログラムのファイル名「cautomaton.rb」は自分がつけたファイルの名前に置き換えてください.

$ ruby  cautomaton.rb  -x 0x5a  512  256

このとき下のような図形が表示されるはずです.このようになるかどうか確認してみてください.

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

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


=begin

所属:     都学部0回生
氏名:     左京太郎
学生番号: 0123456789

プログラムの実行例: 
  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

提出するファイルの先頭の「実行例」にはこれらの情報を入れるようにして下さい.

 プログラムの実行例:
 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」で指定するパラメタについては適当な値を自分で見つけることは簡単ではないでしょう. 次にパラメタ設定の基準を示します.

「-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. [コピー]  コピーしたい部分をマウスの左ボタンでドラッグする(ドラッグした部分は反転表示される).
  2. [貼り付け] 貼り付けたい位置でマウスの中ボタン(ホイール)を押す.

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

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

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

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

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

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