从一个角度确定速度

时间:2015-09-22 17:04:18

标签: c#

我知道如何从速度产生旋转,我相信这有点像这个

thing.rotation = Math.Atan2(thing.velocity.Y, thing.velocity.X);

但是,有没有办法根据旋转产生速度?我认为更简单的方法就是说,是否存在Atan2的有效反转,而是返回Vector2而不是double?感谢。

3 个答案:

答案 0 :(得分:0)

你无法回复,在这个组(atan2,x,y)中你总是需要知道2个参数来找出第​​3个参数。

答案 1 :(得分:0)

给定一个角度,您可以通过以下方式生成Vector2

new Vector2(Math.Cos(angle), Math.Sin(angle));

这将为您提供单位长度的向量。您应该乘以速度的大小来获得适当的速度矢量:

Vector2 velocity = new Vector2(speed * Math.Cos(angle), speed * Math.Sin(angle));

这将允许您为任意角度的给定速度创建速度矢量。

请注意,需要两个参数:您想要的角度和幅度。

答案 2 :(得分:0)

您可能会将速度视为具有直角坐标(x,y)的复数,并将其转换为极坐标(ro,theta):

double theta(double x, double y) { return atan2(y, x); }
void ro(double x, double y) { return sqrt(x*x + y*y); }

现在速度用模数(ro)表示,表示其大小,角度θ表示方向。

逆变换由下式给出:

double X(double ro, double theta) {return ro * cos(theta); }
double Y(double ro, double theta) {return ro * sin(theta); }

由于您使用的是OOP语言,因此使用或创建复杂数字类肯定会更好,它是处理平面几何的强大工具。