大部分信息都不需要回答我的问题,我将其包括在内,万一有人知道更简单的方法,我的问题就在最后。
我有一个X和Y矢量,我使用的是一个旅行球的路径。当那个球击中墙壁时,让我们说顶壁,它会向负方向反弹,这很容易。但是如果它撞到一个有角度的墙壁,我可以很容易地计算出一个方向,我想把剩下的力量加到另一个方向上。把它想象成Pong或Minigolf。
实施例
一个球正在行进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
我知道我可以将它们全部转换为正面然后进行比较,但这看起来很笨重。
答案 0 :(得分:8)
使用Math.Abs
功能将-15和+15转换为+15:
var a = -10;
var b = 5;
Console.WriteLine(Math.Abs(a) + Math.Abs(b))
答案 1 :(得分:1)
在我看来,你正在寻找矢量的长度。长度计算如下:
Math.Sqrt((x*x) + (y*y))
使用矢量的长度,您也可以将矢量与其他方向进行比较,例如(2,11)与(5,10)的长度相同。