貴様ら!ブロック崩し作るので見てください
■ このスレッドは過去ログ倉庫に格納されています
0309249
NGNGといっても、
ベクトルは単に複数の数をまとめて扱うというだけ
行例は、数式の係数をまとめて扱うというだけという理解でとりあえずスタート
たとえば、玉の動きは
x = x + speed * cos(angle)
y = y + speed * sin(angle)
これは正しい でも
ball_x = ball_x + vx * (90 - Angle)
ball_y = ball_y + vy * Angle
こではダメっての説明してみるね。
前者は回転だけど、後者は、伸張になってしまう。
○回転というのは
vx*cos(w) - vy*sin(w)
vx*sin(w) + vy*cos(w)
という形になっている。これはひとつのスタイルだから覚える。
そして、掛算してるのは vx,vyと4つの係数だからそれぞれ
|vx| |cos ,-sin|
|vy| | sin , cos| と分離して考える。
左がベクトルで右側が行列だ
で、元の格好に直す規則は・・・判るよね?
ここまでいい? とにかく2つの数がこういう格好に並んでいれば回転だって事で
○反射は既にやってるように
vx=vx
vy=-vy
という格好になっている これも分離すると
|vx| | 1 , 0|
|vy| | 0 ,-1| となる。
上の回転では角度がどうであれこの格好にならないの判るよね?
任意の角度で反射させるには回転を組み合わせればいい。
ただ、反射する時は反射面に対して倍角で反射するというのに注意
で、組み合わせる時は この反射を掛算した結果のベクトルは
| vx|
|-vy| となるなら、上の回転の vyを単に-vyにするだけでいい
○伸張 y軸が斜面で、斜めにあるのを上から見る場合は
| 1 , 0|
| 0 , a | というようになるよね? これが伸張さらに裏から見たら 上にある反射になる
○拡大/縮小 これは簡単で全体に
| a , 0|
| 0 , a | とaを掛算すればいい
■ このスレッドは過去ログ倉庫に格納されています