优先考虑向量

时间:2016-09-26 20:44:20

标签: vector processing

当限制向量myVector.limit(10);时,你可以给出" priority"到Y值? IE从矢量上的X减去但不触及Y? 我在考虑使用以下伪代码

if(myVector.mag()>=10)
{
myVector.x--;
}

这是一个好的"想法还是有更好的方法来解决这个问题?

编辑:

我正在做的是试图限制汽车上坡时的速度。通过限制X我希望防止它只是"跳跃"上山。

1 个答案:

答案 0 :(得分:2)

我们无法告诉您这是否是一个好主意,因为这实际上取决于您尝试做什么。

我会说,您的方法无法处理您希望将PVector限制为小于y值的情况。

但是,确定,没有什么能阻止您分别处理xy值。您可以考虑使用map()constrain()函数。

//limits your `y` value to be between 0 and 10
myVector.y = constrain(myVector.y, 0, 10);

另一个提示是查看PVector#limit()函数后面的the source code,这非常简单:

 public PVector limit(float max) {
    if (magSq() > max*max) {
      normalize();
      mult(max);
    }
    return this;
  }

所有这一切正在使PVector的大小等于你传递给limit()函数的任何内容。您可以执行与y值类似的操作。也许使用除法来确定y值会给出x值给出的目标幅度?

但就像我说的那样,你所做的事情取决于你的目标是什么。

修改:您还可以考虑更改存储动作的方式。而不是存储X速度和Y速度,存储角度和速度。

换句话说,跟踪你前进的方向,以及你的前进速度。然后,您可以使用cos()sin()来计算X速度和Y速度。然后你只需要限制整体速度,而不是分别限制Y速度。