1

この情報のほとんどは私の質問に答えるのに必要ではありません、私はそれを含めています、誰かがこれを行うためのはるかに簡単な方法を知っている場合に備えて、私の質問は最後です。

私はXとYのベクトルを持っています。これは、移動するボールのパスです。そのボールが壁にぶつかると、たとえば上壁に当たると、負の方向に跳ね返ります。これは簡単です。しかし、角度の付いた壁に当たった場合は、一方の方向を簡単に計算できるので、残りの力をもう一方の方向に追加したいと思います。それをポンまたはミニゴルフと考えてください。

例。

ボールは5,10を移動します。つまり、5ピクセルごとに、ボールは右に移動します。10を移動します。ボールが底に当たったら、Y軸に-1を掛けて、5、-10にします。

しかし、代わりに45度の角度を打つと、その力の一部がX方向に伝達されます。どちらにしても。

質問: X + Yを合計15にする必要があります。そのうちのいずれかが負の場合、正と見なされる必要があります。

-10+5 = 15
-5+10 = 15  
 5+10 = 15
-5+-10 = 15

最初にすべてを正に変換してから比較できることはわかっていますが、それはかさばるようです。

4

2 に答える 2

8

この関数を使用してMath.Abs、-15と+15の両方を+15に変換します。

var a = -10;
var b = 5;

Console.WriteLine(Math.Abs(a) + Math.Abs(b))
于 2012-06-19T11:50:14.133 に答える
1

あなたはベクトルの長さを探しているように私には思えます。長さは次のように計算されます。

Math.Sqrt((x*x) + (y*y))

ベクトルの長さを使用すると、ベクトルを他の方向と比較することもできます。たとえば、(2、11)は(5、10)と同じ長さです。

于 2012-06-19T12:01:47.397 に答える