我刚刚开始学习处理,我在http://natureofcode.com/book/chapter-1-vectors/中遇到了一个问题(练习1.8)。我试图实现一个可变幅度的加速度,当距离鼠标更近或更远时,球的加速度应该更强。
我不知道如何做到这一点,并希望有人可以指导我进行这项练习。谢谢。
答案 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