れおなちずむ

素粒子物理、量子計算、機械学習、計算機科学とかの話をします

ミニマル物理エンジンをつくってみた

こんにちは、れおなちです🎉

ちょっと前に2Dの剛体物理エンジンを作ったのですが、完璧主義なところが祟って公開するようなことはしていませんでした。
折角作ったのにこのままお蔵入りにしておくのももったいないので、この度ポートフォリオがてらGitHubのほうに公開いたします。

ちょっとというかかなり前なので、自分で自分の実装内容を覚えていないんですが、一応物理エンジンとしての最小要件を満たしてます。
現段階では、衝突は総当たりで判定していて、剛体の形状も円しか用意しておらず、拘束の種類も多くないため、実用的とは言えないですが、今後また気が向いたら更新しようと思います。

ちなみに物理エンジン自体はHaxeという静的型付けのマルチプラットフォーム言語で書きました。自分はよくAltJSとしてHaxeを使っています😋

所感

物理学徒としての所感ですが、物理学を学ぶことと物理シミュレーションを実装することとは全く違うものなのだということを常に痛感させられます。
例えどんなに、素粒子物理学解析力学といった高度な物理を学んでいたとしても、残念ながら剛体物理シミュレーションにはあまり役に立ちません。
剛体物理シミュレーションにおいて本質的な話題となるのは、剛体同士の拘束をいかに高速かつ正確に検出して、いかに上手に解消するか、その一点だと思いました。
拘束の理論もそれなりに美しくて面白いと思うのですが、解を数値計算で求めるとなるとやはり厳しいものがあります。
いくらでも理想的な状況を考えられるのが基礎理論の美しくて面白いところですが、数値計算の前では全てが無力なのです。


これまでは物理の話ばかりしていたんですが、今後はちょくちょくプログラミングの話もしていこうと思います。
どうぞよしなに~😉