2011-06-23 27 views
1

これはおそらく非常に愚かな数学の質問ですが、私はそれを把握していないようです。私が持っているのは、ポイントAのサークルで、そこからマウスを離してドラッグすることができます。マウスを離すと、リリースポイントBがターゲットポイントとみなされ、ボールはその方向に移動する必要があります。どのような私が今やっていることは、このようなものです:速度計算アルゴリズム

velocityX = (b.x - a.x)/somenumber 
velocityY = (b.y - a.y)/somenumber 

これは私が別の「ショット」を使用することができます遠くマウスが円から解放される速度。から速度を選択し

  • 最小値と最大速度(アニメーションフレームあたりのピクセル数)を持つように

    • :しかし、今、私はこのアイデアを好きではないし、代わりに私はそれを次のようにやりたいことを実現しましたショットの前のこの間隔は、簡単に目標を設定するために点Bを使用するようにショットの前に
    • です。ショット速度は、私はそれが死んでシンプルでなければなりません知っているが、どのようにi(点AとBの座標を知って、MIN、MAX、選択した速度行う事前に選択され、それはマウスが

    をリリースしているどのくらいに依存しshould't )xとyの速度をショットの方向を考慮して円に設定しますか?

    答えて

    1

    円の中心から点までのベクトルを正規化してから、必要な速度で乗算します。どのようなベクトルライブラリでも、そのような関数がありますが、明確にするために:

    length=square_root((b.x - a.x)^2+(b.y - a.y)^2) 
    velocityX = (b.x - a.x)/length * speed 
    velocityY = (b.y - a.y)/length * speed 
    
    +0

    ありがとうございます - 魅力のように動作します! – Marius

    2

    私はそれを行う方法は2つ考えられます。

    AからBへの角度が次にTであると言うことができます:

    Tは、((バイ・AY)/(BX-AX))ATANに等しい

    Tを知るあなたは、xを計算することができそしてy速度:動作するはず

    Vxと= COS(T)V Vyの=罪(T)V

    すばやく行うには、cos(T)とsin(T)を直接計算できます。

    sin(T)は、比率y/hを与えます。ここで、hは、aとbの間の線の長さです。

    我々はピタゴラスの定理使用時間を計算することができます。私たちはVxのための式を導き出すことができ、このから

    H =のSQRT((バイ・AY)^ 2 +(BX-AX)^ 2)

    をし、 VY

    Vxの= V×(BX-AX)/ SQRT((バイAY)^ 2 +(BX-AX)^ 2)

    Vyは(V×(BX-AX)/ SQRTを(=^2 +(bx-ax)^ 2)

    あなたがPythagorean定理関数を構築しているならば、

    +0

    説明ありがとうございます – Marius

    関連する問題