我正在处理Processing中的一个简单重力程序。我的程序根据重力公式吸收粒子并将它们吸引到彼此。不幸的是,一旦我尝试将力乘以PVector.mult()
的方向,就会出现标题错误:
不能在基本类型float上调用mult(float)。
这是该方法的代码。 G在其他地方定义。
public float distance(Particle other) {
return location.sub(other.location).mag();
}
public PVector direction(Particle other) {
return location.sub(other.location).normalize();
}
public void gravity(Particle other) {
float grav = (G*((mass * other.mass)/pow(distance(other), 2)));
if(distance(other) != 0) {
acceleration.add(distance(other).mult(grav));
}
为什么我不能在需要浮动的地方通过浮动?
答案 0 :(得分:0)
让我们分开这行,并将其分为多个步骤:
acceleration.add(distance(other).mult(grav));
这是我尝试将其拆分为多行:
float grav = 42;
float distanceFromOther = distance(other);
float multipliedValue = distanceFromOther.mult(grav);
acceleration.add(multipliedValue);
希望这使发生的事情更加明显:您正在尝试使用mult()
值调用float
,这将不起作用。您需要在mult
或另一个包含PVector
函数的类上调用mult()
。