Vector 优先考虑向量的Y值

Vector 优先考虑向量的Y值,vector,processing,Vector,Processing,限制向量时myVector.limit(10)你能给Y值“优先级”吗?即从向量上的X减去,但不接触Y? 我正在考虑使用以下伪代码 if(myVector.mag()>=10) { myVector.x--; } 这是一个“好”主意还是有更好的方法来解决这个问题 编辑: 我所做的是试图限制汽车上坡时的速度。通过限制X,我希望防止它“跳”上山。我们无法告诉您这是否是一个好主意,因为这实际上取决于您正在尝试做什么 我要说的是,您的方法不会处理您希望将PVector限制为小于y值的情况 但是可以肯定的

限制向量时
myVector.limit(10)你能给Y值“优先级”吗?即从向量上的X减去,但不接触Y?
我正在考虑使用以下伪代码

if(myVector.mag()>=10)
{
myVector.x--;
}
这是一个“好”主意还是有更好的方法来解决这个问题

编辑:


我所做的是试图限制汽车上坡时的速度。通过限制X,我希望防止它“跳”上山。

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

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

但是可以肯定的是,没有什么可以阻止您分别处理
x
y
值。您可以考虑使用<代码>()(<代码)>或<代码>约束()/<代码>函数。< /P>
//limits your `y` value to be between 0 and 10
myVector.y = constrain(myVector.y, 0, 10);
另一个提示是查看
PVector#limit()
函数的后面,它非常简单:

 public PVector limit(float max) {
    if (magSq() > max*max) {
      normalize();
      mult(max);
    }
    return this;
  }
所有这一切都是为了使
PVector
的大小等于传递到
limit()函数的值。您可以执行类似于
y
值的操作。如果给定
x
值,可以使用除法计算出
y
值将为您提供的目标幅值是多少

但是就像我说的,你做什么取决于你的目标是什么

<强>编辑:你也可以考虑改变你如何存储你的动作。与其存储X速度和Y速度,不如存储角度和速度


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

我想我从你告诉我的关于我需要如何解决/改进问题的内容中学到了更多,请阅读SO指南。再次感谢沃克曼先生!为了社区的利益,我正在编辑我的问题以改进它。@Christophert哈哈,没问题。感谢您抽出时间改进您的问题。我还编辑了我的答案,包括你可能会考虑的另一种方法。我想你肯定是一个原因让我回来了。可悲的是,大多数问题我都无法回答,但我总是努力回馈@克里斯托弗·皮尔特提出好问题是一种回馈。如果没有有趣的问题,我们在这里就什么都做不了@克里斯托弗,我也支持你!