プログラミング初心者です。
三角関数で、画像Aの座標から画像Bの座標に向かってまっすぐ動かしたいのですがわかりません。なお、画像Bが動いたら画像Aもそれに対応して向きを変えるなどそういう条件で教えていただけないでしょうか。よろしくお願いします。
~に向かって
Re: ~に向かって
動かすだけなら三角関数はいらないと思いますよ。
単純に点(x0, y0)から点(x1, y1)に時間Tだけかけて移動する時,時間t経過後の位置は,
x = x0 + (x1 - x0) * t / T
y = y0 + (y1 - y0) * t / T
で算出できます。
速度vが与えられた場合,
T = √((x1 - x0)2+(y1 - y0)2) / v
より,
x = x0 + v * t * (x1 - x0) / √((x1 - x0)2+(y1 - y0)2)
y = y0 + v * t * (y1 - y0) / √((x1 - x0)2+(y1 - y0)2)
となります。
三平方の定理と比の考えだけを使っています。
# cos Θ = (x1 - x0) / √((x1 - x0)2+(y1 - y0)2) , sin Θ = (y1 - y0) / √((x1 - x0)2+(y1 - y0)2)なわけですが。
画像Aの表示の向きを変更するのであれば,なんらかの逆三角関数を必要とするかもしれませんが……。
単純に点(x0, y0)から点(x1, y1)に時間Tだけかけて移動する時,時間t経過後の位置は,
x = x0 + (x1 - x0) * t / T
y = y0 + (y1 - y0) * t / T
で算出できます。
速度vが与えられた場合,
T = √((x1 - x0)2+(y1 - y0)2) / v
より,
x = x0 + v * t * (x1 - x0) / √((x1 - x0)2+(y1 - y0)2)
y = y0 + v * t * (y1 - y0) / √((x1 - x0)2+(y1 - y0)2)
となります。
三平方の定理と比の考えだけを使っています。
# cos Θ = (x1 - x0) / √((x1 - x0)2+(y1 - y0)2) , sin Θ = (y1 - y0) / √((x1 - x0)2+(y1 - y0)2)なわけですが。
画像Aの表示の向きを変更するのであれば,なんらかの逆三角関数を必要とするかもしれませんが……。