University of Fukui, Department of Applied Physics

Koishi's Page

太陽系の壊し方

目的

太陽系の惑星の動きをシミュレートするプログラムのを変更することで、 プログラミングの知識を深めます。 また、プログラムパラメータを少し変更するだけで太陽系が壊れてしまうので、 いかに現在の太陽系が微妙なバランスの上に成り立っているかも学ぶことが出来ます。


準備

「太陽系の作り方」をやった人はファイルが 「マイドキュメント」に残っていますので、 そのファイルをそのまま使います。 ファイルがなくなっている場合は「太陽系の作り方」 の「準備」のところをもう一度行ってください。

始めに、「太陽系の作り方」 でのSTEP7まで進んだファイルを編集対象にします。

$ cp sos7.c sos0.c

これで、sos0.cがsos7.cで上書きされます。 sos0.cを予め保存しておきたい人は、上記の操作の前にcp sos0.c sos0_keep.c として保存しておいてください。


パラメータの変更

惑星の各パラメータはプログラムに書いてあります。

中略

これらのパラメータを見てわかるように、 太陽はそのままの比では大きすぎるので1/100にしてあり、 木星と土星も大きすぎるので1/3になっていることがわかります。

例えば、木星と土星の惑星半径の/3を削除して、上書き、コンパイル、 実行 (やり方を忘れた人は「太陽系の作り方」で復習してください。) を行うと木星と土星の大きさを変えることができます。


動作の変更

キーボードのキーが押されたときの処理は

キーボード処理

この辺に書いてあります。ここに処理を追加することで、 特定のキーが押されたときの動作を付け加えることが出来ます。


太陽をもっと重く

上記のキーボード処理の下に以下のような文追加してみましょう。

太陽をもっと重くする

この処理は、'a'が押されたとき太陽の質量を3倍にする、というものです。 上書き、コンパイル、実行を行って、 プログラムが起動したら'a'キーを押してみてください。 太陽の重さが3倍になります。


地球のスピードをもっと早く

今度は以下のような文追加してみましょう。

地球をもっと早く

この処理は、'b'が押されたとき地球のスピードを1.2倍にする処理です。 vl[0], vl[1], vl[2] とパラメータが三つあるのはそれぞれx成分、y成分、z成分の値が入っています。


シミュレーションのスピードを可変に

次に以下のような文追加してみましょう。

スピード調整

この処理は、 押されたキーが'1'から'9'の間のときに update_num に1から9の数字を入れる処理です。 プログラムを実行して、'1'から'9'のキーを押してみてください。 押したキーに応じてシミュレーションの実行スピードが変化します。


太陽を吹っ飛ばす

最後に以下のような文追加してみましょう。

太陽系崩壊

この処理は、'c'が押されたとき太陽の速度のz成分に0.02を加えます。 この処理で何が起こるか実行して確認してみてください。


終わりに

プログラムを変更するネタはいくらでもありますので、 後は各自で工夫して変更してみてください。

このプログラムは自由に改変、再配布しても構いませんので、 自由に使って遊んでみてください。 ただし、 惑星のテクスチャのデータはNASAのホームページから取ってきたものですので、 再配布するときはその点を明記してください。

基礎知識

  • コマンドでの操作(1)「ディレクトリとファイル」

C言語を使ったプログラミング

  • プログラミング(1)「コンパイルと実行」
  • プログラミング(2)「変数」
  • プログラミング(3)「制御命令」
  • プログラミング(4)「関数」

太陽系の作成

  • 太陽系の作り方
  • 太陽系の壊し方

Copyright (C) T. Koishi