处理1.5 - 如何实现可变幅度的加速度?

时间:2013-11-28 11:37:48

标签: processing

我刚刚开始学习处理,我在http://natureofcode.com/book/chapter-1-vectors/中遇到了一个问题(练习1.8)。我试图实现一个可变幅度的加速度,当距离鼠标更近或更远时,球的加速度应该更强。

我不知道如何做到这一点,并希望有人可以指导我进行这项练习。谢谢。

2 个答案:

答案 0 :(得分:0)

练习中的示例代码目前正在设置加速度:

PVector dir = PVector.sub(mouse,location);
dir.normalize();
dir.mult(0.5);
acceleration = dir;

第一行获取从移动者到鼠标的向量。将其归一化使其成为“单位矢量”(即长度为1.0) - 这为您提供了与幅度无关的方向。然后mult(0.5)行按比例缩放,给出固定的0.5的幅度。

练习要求您根据与鼠标的距离给它一个可变的幅度。您需要做的就是计算移动器距离鼠标的距离,并根据该移动器(而不是硬编码的0.5值)缩放方向向量。你会发现使用原始距离可能会太多了,所以你需要将它稍微加倍。

答案 1 :(得分:0)

我认为应该是这样的:

PVector direction = PVector.sub(mouse,location); //Subtracting the mouse location from the object location to find the vector dx,dy
m = direction.mag(); // calculating the magnitude
println(m); // outputting the result of the magnitude
direction.normalize(); //normalize
direction.mult(m*0.1); //scaling with a fixed magnitude