太陽系の作り方
目的
太陽系の惑星の動きをシミュレートするプログラムの作成を通して、 プログラミングの体験をします。 プログラムの名前はSimplified solar system simulator略してsosです。
準備
始めにsos.zipをダウンロードします。
福井大学の演習室で操作する場合は、ファイルをZドライブに保存します。
保存後にファイルを右クリックしてメニューを出し「すべ展開(T)...」
を選んでファイルを展開します。
(※以下の説明は福井大学の演習室での操作を前提にしています。)
デスクトップの左端の上の方にあるcygwinをダブルクリックして開きます。
ダブルクリック |
カレントディレクトリをz:に移動するために、cd z:と入力します。
キーボードで入力 |
同じようにカレントディレクトリをsosに移動します。
$ cd sos_fukui/sos <- キーボードで入力
($はプロンプトと呼ばれるもので、 プロンプトの後にコマンドを入力することが出来ます。 )
コンパイルと実行
ここまで操作で必要なプログラム等が「マイドキュメント」の 「sos」というフォルダに保存されました。 次のプログラムをコンパイルして実行してみます。
$ make <- キーボードで入力
これで、sos0.cがコンパイルさせ実行ファイルsos0.exeが出来ました。 次にこのプログラムを実行します。
$ ./sos0 <- キーボードで入力
実行結果は以下のようになります。
実行結果 |
このように球が描画されます。 このプログラムではマウスを使って見る位置を操作することが出来ます。 操作法は以下の通りです。
左ドラッグ | 回転 |
右ドラッグ(上下) | ズームアップ・ズームダウン |
左と右同時押しドラッグ | 移動 |
STEP1:地球を作る
ここからプログラムを変更しながら太陽系を作っていきます。 先ずは先ほどの球を地球にしましょう。
プログラムの変更には「秀丸」を使います。 デスクトップ左側にある「秀丸」をダブルクリックして開いてください。
ダブルクリック |
次に、「ファイル」-「開く」からZドライブの「sos_fukui」-「sos」-「sos0.c」 を開きます。
以下のようにプログラムを修正します。
修正前 |
修正後 |
修正したら「ファイル」-「上書き保存」でファイルを保存します。 次に、プロうグラムをコンパイルして実行します。
$ make $ ./sos0
実行結果は以下のようになります。
STEP1の実行結果 |
これで地球が出来ました。 ここではテクスチャマッピングという手法を使って先ほどの球に地球の絵を貼り付けてあります。
STEP2:惑星を全部揃える
地球だけではさびしいので、 以下のようにプログラムを修正して8個の惑星を作ります。
修正前 |
修正後 |
先ほどと同じように「ファイル」-「上書き保存」でファイルを保存し、 プログラムをmakeでコンパイルしてsos0を入力して実行します。
STEP2の実行結果 |
STEP3:表示をリアルに
惑星の大きさがそろっていてあまりリアルでないので、 惑星のパラメータを利用して表示をリアルにします。
修正前 |
修正後 |
また先ほどと同じように同じように「ファイル」-「上書き保存」 でファイルを保存し、プログラムをコンパイルして実行します。
STEP3の実行結果 |
これで、惑星大きさの比や惑星間の距離の比が現実に基づくようになりました。 ただし、表示のバランスを考えて木星と土星の大きさは1/3になっています。 変更してみたい人は、 プログラムの始めの方に惑星のパラメータが書いてある場所があるので、 そこを変更してみてください。 変更後は上書き保存とコンパイルを忘れないように。
STEP4:太陽を作る
太陽系と言っているわりにはまだ太陽が無いので、太陽を作ります。
修正前 |
修正後 |
上書き保存、コンパイル、実行を行うと以下のような結果になります。
STEP4の実行結果 |
まばゆい太陽が出来ました。太陽もそのままの比で描くと大きすぎるので、 1/100になっています。
STEP5:軌道を描く
太陽系の全体像がわかりにくいので、各惑星の軌道線を描きます。
修正前 |
修正後 |
上書き保存、コンパイル、実行を行うと以下のような結果になります。
STEP5の実行結果 |
軌道線が描けて、かなり太陽系っぽくなってきました。
STEP6:自転の追加
次に動きを付けていきます。先ずは、惑星を自転させましょう。
修正前 |
修正後 |
上書き保存、コンパイル、実行を行うと以下のような結果になります。
STEP6の実行結果 |
あまり変わっていないように見えますが、 他の惑星を見ると自転をしていることがわかります。 自転の比も実際の惑星の値に基づいています。
STEP6:公転の追加
惑星を公転させます。
修正前 |
修正後 |
上書き保存、コンパイル、実行を行うと以下のような結果になります。
STEP7の実行結果 |
これで完成です。なかなかリアルな太陽系が出来ました。