- 111 名前:名前は開発中のものです。 mailto:sage [2008/09/02(火) 02:51:02 ID:csq9srzC]
- >>107
2点を発射位置P(x,y)、命中位置Q(x2,y2)とする。 平行移動して発射位置が原点に来るように移動。 P' = (0, 0) Q' = (x2-x, y2-y) = (x', y') 新しい命中位置Q'(x',y')がX軸に重なるように回転。 回転させるために回転行列Rを用意する。 R = ( cosX, sinX ) ( -sinX, cosX ) 角度Xは線分P'Q'とX軸の間 P'' = RP' = 原点 Q'' = RQ' = X軸上の点 最後に原点からQ''までの間を、長さrでn本の線分Tで目指す。 線分の各点を Tn(tx(n),ty(n)) とするとき、極座標で差分を表現する。 tx(n) = tx(n-1) + r*cos(t) ty(n) = ty(n-1) + r*sin(t) rに乱数を混ぜれば線分の長さがかわる。 角度tの変化を抑えれば急激な曲がり方はしない。 例えば t(n) = t(n-1) + rand() * ??? という風に。 計算が終わったら逆回転と逆平行移動すればおわり。 0除算に気をつけろ! とか、如何ですか。
|

|