目次

一人年越しハッカソンとは

年をまたいで一人でやるハッカソンです。参加者は集中的に何かしらのソフトウェアやサービスを開発しましょう。

三重振り子のシミュレーションするやつを作った

12月31日の夜、唐突に「この前見た三重振り子とかいうクレイジーなやつのシミュレーションをしよう」と思い立ってしまったのがこれを作ったきっかけです。一人年越しハッカソンと称して、ガキ使やお笑いを見て爆笑しながら作ってました。数値計算もC++もOpenGLも素人なので、それらを学ぶのに結構時間がとられましたが、やっぱり色々とできるようになると楽しいですね。三重振り子のシミュレーション自体は沢山の人がやっていることだとは思いますが、実際に自分でやってみると達成感がたまらないです。

途中爆睡するなどのハプニングがあった気もしますが、まあなんとか仕上がりました。以下が動かしている動画です。動画を撮っているせいで遅くなっていますが、本当はこれの6倍くらい早いです。

技術的な話

以下は技術的な蛇足です(内容が薄すぎて蛇足にすらなっていない気もしますが)。

仮定

  1. 二次元上で運動
  2. 玉は質点
  3. 棒は直線
  4. 棒の質量なし

流れ

  1. ラグランジュアンから運動方程式を導出
  2. 変数変換によって一階の連立常微分方程式にする
  3. LU分解で解く
  4. 四次のルンゲ・クッタ法で微分方程式を解く

1,2は解析的にペンと紙で計算して、3,4はコンピューターで計算しました。最初は3の変数を独立にする過程も解析的に解きたかったのですが、時間がものすごくかかって途中で心が折れたのでやめました。

新年初進捗を出せたので、もう今年は進捗出さなくて良いような気がします。それでは皆様良いお年を。