我如何计算vector的反方向,添加一些松弛

在这里输入图像说明

我怎样才能为我的对象的(黑色)行进方向(绿色)计算有效范围(红色)。 绿色是一个Vector2,其中x和y的范围是-1到1。

我在这里要做的是创造火箭燃料燃烧效应。 所以我得到的是

  • 火箭速度(浮动)
  • 火箭方向(Vector2 x = [-1,1],y = [-1,1])

我可能认为火箭的速度并不重要,因为燃料燃烧效应(粒子)是以自己的速度在位置上产生的。

你需要一个正常的vector为你的火箭方向。 您可以使用叉积来计算它,在二维结果为normal = vector(direction.y, -direction.x);

现在刻录vector只是“方向”和“正常”的归一化线性组合。 例如

 float k = random() * 0.3; burn = normalize(normal * k - direction * (1 - k)); 

我建议你计算vector的极角(X轴的角度)。 然后,您可以旋转180°,并为每个粒子添加一个随机化的值,基于烧伤效果锥体的宽度(例如+/- 30°)。 然后将角度转换回vector。

这里有一些C#示例代码来将PolarAngle属性添加到Vector2D类。 请注意,它在Radian中运行不是学位。

 /** * An angle describing the orientation of the Vector. (-1,0) is 0. (1,0) is Pi. */ public double PolarAngle { get { return Math.Atan2(Y, X) + Math.PI; } set { double len = Length; X = len * Math.Cos(value); Y = len * Math.Sin(value); } }