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 回答