ボールの衝突シミュレーション

2つのボールが衝突したときの挙動をシミュレートするプログラムです。パラメータとして、ボールの初速と質量を変更できます。

速度: 5 m/s
速度: 0 m/s

左側のボール

右側のボール

生成AIをもちいた制作

なお、このプログラムはHTML・CSS・JSを生成AIをもちいて制作しました。

パラメータが少ないので、すぐできるだろうと予測していたとおり、すぐできました。

ちなみに、書いたプロンプトは以下のような感じです。

1回目

JavaScriptで、無重力・真空の空間で2つのボールが衝突したときの挙動をシミュレーションするプログラムを作ってください。詳細仕様は、以下によります。
・2次元で表現する。
・画面横方向に2つのボールを配置する。
・画面左側のボールの初速を設定し、画面右側のボールに衝突させて、その後の動きをシミュレートする。
・画面左のボールのパラメータとして、「初速(m/s)」「重量(kg)」を変更可能とする。初期値は、「初速5m/s」「重量1kg」とする。
・画面右のボールのパラメータとして、「重量(kg)」を変更可能とする。初期値は、「初速0m/s」「重量1kg」とする。
・パラメーターは、画面下に、テキストボックスとスライダーを配置し設定する。ただし、左右のボールに対応して2列で配置すること。

2回目

以下を追加修正してください。差分だけでOKです。
・どちらかのボールが画面の外に出た時点で、画面の更新を中止してください。
・canvasのheightを240pxとしてください。
・各ボールの速度をcanvas左下、右下に表示してください。

3回目

以下を追加修正してください。差分だけでOKです。
・ボールのグラフィックを、グラデーションを使って立体的に表現してください。
・右のボールの初速を変更可能にしてください。初期値0m/sで、マイナス(画面左方向)方向のみ変更可能とします。

今回は、前のコードをプロンプトに書かず、差分だけ提示させました。プログラムの学習をするためには、この方法のほうがコードを読むので効果的です。

さて、途中で仕様変更をしました。当初は右側のボールは静止状態のみとしていました。しかし、AIからの提示を見て、やっぱり動かしたほうが面白いということで追加しました

後出しの仕様変更にも、素直に応じてくれるのがAIの良いところです。

人間がコードは書けなくても、ロジックは考えてあげないと、より優れたプロダクトは生まれないのかと思います。