ねこでじ(Nekodigi)

Nekodigi’s diary

学習中の気づきをまとめています。応援よろしくお願いします

【Processing】Softbodyと多角形との当たり判定

成果物

www.youtube.com
今回は、前回のSoftbodyの当たり判定を多角形にも対応させました。これで2D上ではあらゆる形に対応できるようになったかと思います。多少荒ぶることはありますが、なかなかリアルに動作しています。
nekodigi.hatenablog.com

仕組み

今回、衝突したときの動作は、この式のように、速度ベクトルdを反射させることで実装しています。つまり、法線が分かれば反射の処理を行うことができるわけです。
r = d - 2 (d \cdot n) n
頂点が障害物の内側にあるかどうかのテストは、前回の記事で紹介しました。
nekodigi.hatenablog.com
もし、内側にあった場合は一番近い辺の法線を使って反射を計算するという仕組みです。一番近い辺の求め方は少し変わっているのでソースコードをチェックしてみてください。

コード

Softbody_1_1_Polygonという名前で、Softbodyリポジトリに追加しておきました。
github.com