目次
一人年越しハッカソンとは
年をまたいで一人でやるハッカソンです。参加者は集中的に何かしらのソフトウェアやサービスを開発しましょう。
三重振り子のシミュレーションするやつを作った
一人年越しハッカソン、いつ寝落ちっても良いように会場をおふとんの上に移した
— G2U (@G2U) December 31, 2015
12月31日の夜、唐突に「この前見た三重振り子とかいうクレイジーなやつのシミュレーションをしよう」と思い立ってしまったのがこれを作ったきっかけです。一人年越しハッカソンと称して、ガキ使やお笑いを見て爆笑しながら作ってました。数値計算もC++もOpenGLも素人なので、それらを学ぶのに結構時間がとられましたが、やっぱり色々とできるようになると楽しいですね。三重振り子のシミュレーション自体は沢山の人がやっていることだとは思いますが、実際に自分でやってみると達成感がたまらないです。
新年あけまして三度寝をした
— G2U (@G2U) January 1, 2016
途中爆睡するなどのハプニングがあった気もしますが、まあなんとか仕上がりました。以下が動かしている動画です。動画を撮っているせいで遅くなっていますが、本当はこれの6倍くらい早いです。
技術的な話
以下は技術的な蛇足です(内容が薄すぎて蛇足にすらなっていない気もしますが)。
仮定
- 二次元上で運動
- 玉は質点
- 棒は直線
- 棒の質量なし
流れ
- ラグランジュアンから運動方程式を導出
- 変数変換によって一階の連立常微分方程式にする
- LU分解で解く
- 四次のルンゲ・クッタ法で微分方程式を解く
1,2は解析的にペンと紙で計算して、3,4はコンピューターで計算しました。最初は3の変数を独立にする過程も解析的に解きたかったのですが、時間がものすごくかかって途中で心が折れたのでやめました。
新年初進捗を出せたので、もう今年は進捗出さなくて良いような気がします。それでは皆様良いお年を。