Classiclll's Blog

an old boy

たわむ紐 - 習作 EtudeOfString

イメージ 1

たわむ紐 - 習作 EtudeOfString by Processing(Proce55ing)

やっと望むモノが出来た!

先々週から作業を始めたんだけど、予想以上に時間がかかってしまった。

何回バンザイしようとしたことか!出来てうれしい。

前記事宇宙の紐 - TetherTestでモデル化したのは【単なるバネの結合体】
少なくともいずれかの端点を固定して重力で引っ張ってもらわないと【しなやかさ】が発揮されない。
すなわち、紐本来の【しなやかさ】や【こわさ】じゃない【まがい物の】物理モデル。

ガラクタ置き場たわむ紐 - 習作は紐自身が【たわむ】性質を持った本物。
(ウィンドウをクリックした後なら、末端にマウスを近づけるとグラブポイントがわかる。グラブすれば端点を動かせる)

弾性(バネ)特性を持ったRod(こっちは前記事とほぼ同じ)に加えて、新たに【弾性接合】モデルJointを加えた。
重力の無いところでも【しなやかさ】を維持するが、上のアプレットはとりあえず重力のある2次元空間での挙動。
スクリプトでLocのインスタンスaddの要素を全部ゼロにすれば無重力状態になる)

この解説は当面ごかんべん。(ミソはclass Joint=3次元空間上で初期接合角度を維持しようとする弾性体)

この後、【たわむ】紙、【たわむ】タイプライター用紙、【風車】、【折り紙(塑性モデル必須)】と、道は遠い。
(さらに、計算量も半端じゃないんで、どこまで拡張できるやら)

今年の夏休みの成果は【たわむ】紙の習作まで、・・・・乞う了承>papaさん

【注意!】class Loc は(いくつかのバグ修正、というか手抜き手当とともに)機能拡張している。まだ、暫定版
 Loc変更点の覚え書き
  1.今まで左ネジ系だった!>右ネジ系に変更・・・corss積の符号を逆にした(これが悩んだ最大の原因)
  2.一次従属性の判定メソッド,isOnSameLine()追加
  3.ついでに同一方向の一次従属性判定メソッド、isSameDirection()追加
  4.任意のベクトルとの間の余弦を得るメソッド、cosine()の手抜きを改修
    (計算誤差なのか内積が1を超える場合があった>一次従属、あるいはゼロベクトルへの対応)