从一个角度计算速度
本文关键字:计算 速度 一个 | 更新日期: 2023-09-27 18:14:04
我知道如何根据速度产生旋转,我相信这在某种程度上与一致
thing.rotation = Math.Atan2(thing.velocity.Y, thing.velocity.X);
然而,有没有一种方法可以根据旋转产生速度?我认为一个简短的说法是,是否存在Atan2的有效逆,它返回Vector2而不是double?谢谢
给定角度,您可以通过生成Vector2
new Vector2(Math.Cos(angle), Math.Sin(angle));
这将给你一个单位长度的向量。你应该乘以你的速度大小,得到你合适的速度矢量:
Vector2 velocity = new Vector2(speed * Math.Cos(angle), speed * Math.Sin(angle));
这将允许您为任意角度的给定速度创建速度向量。
请注意,需要两个参数:所需的角度和大小。
您无法恢复,在这个组(atan2,x,y(中,您总是需要知道2个参数才能找到第三个参数。
您可能认为速度是一个具有直角坐标(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); }
由于您使用的是面向对象语言,因此使用或创建一个复数类肯定会更好,它是处理平面几何的强大工具。