无法在基本类型float上调用mult(float)

时间:2018-09-21 16:30:19

标签: parameter-passing processing

我正在处理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));
}

为什么我不能在需要浮动的地方通过浮动?

1 个答案:

答案 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()