Processing 如何在处理过程中修复此太阳系模型?

Processing 如何在处理过程中修复此太阳系模型?,processing,physics,Processing,Physics,我正在尝试使用Java模式在处理(版本3.4)上构建一个太阳系模型(仅与地球、太阳和月球相关)。我是处理新手,我只在这个上下文中使用过Java(因此,我也是Java新手) 我有一些部分有效的东西: 这是我的密码。第一个选项卡: Planet sun; void setup() { size(900, 1200); sun = new Planet(100, 10, 0); sun.spawnMoons(1,2); } void draw() { background(0);

我正在尝试使用Java模式在处理(版本3.4)上构建一个太阳系模型(仅与地球、太阳和月球相关)。我是处理新手,我只在这个上下文中使用过Java(因此,我也是Java新手)

我有一些部分有效的东西:

这是我的密码。第一个选项卡:

Planet sun;

void setup() {
  size(900, 1200);
  sun = new Planet(100, 10, 0);
  sun.spawnMoons(1,2);
}

void draw() {
  background(0);
  translate(750, 900/2);
  sun.show();
  sun.orbit();
}
第二个选项卡:

class Planet {
  float radius;
  float distance;
  Planet[] planets;
  float angle;
  float orbitspeed;

  Planet(float r, float d, float o) {
    radius = r;
    distance = 400;
    angle = PI;
    orbitspeed = o;
  }

  void orbit() {
    angle = angle + orbitspeed;
    if (planets != null) {
      for (int i = 0; i < planets.length; i++) {
        planets[i].orbit();
      }
    }
  }

  void spawnMoons(int total, int level) {
    planets = new Planet[total];
    for (int i = 0; i < planets.length; i++) {
      float r = radius/(level*2);
      float d = distance/(level*4);
      float o = 0.01;
      planets[i] = new Planet(r, d/(level*8), o);
      if (level < 3) {
        int num = 2;
        planets[i].spawnMoons(num, level+1);
      }
    }
  }

  void show() {
    pushMatrix();
    fill(255, 100);
    rotate(angle);
    translate(distance, 0);
    ellipse(0, 0, radius*2, radius*2);
    if (planets != null) {
      for (int i = 0; i < planets.length; i++) {
        planets[i].show();
      }
    }
    popMatrix();
  }
}
考虑到我建造它的方式,地球和太阳之间的距离和地球和月球之间的距离是一样的

我能使每个物体的半径成比例。尽管如此,我在他们之间的距离上没有做到这一点。下面的线路本应保持距离上的比例,但它失败了:

      float d = distance/(level*4);
我该如何解决这个问题

谢谢。

这是错误:

Planet(float r, float d, float o) {
  radius = r;
  distance = 400; //<== here
  angle = PI;
  orbitspeed = o;
}
Planet(float r, float d, float o) {
  radius = r;
  distance = 400; //<== here
  angle = PI;
  orbitspeed = o;
}
//in setup()
sun = new Planet(100, 400, 0);
//in the planet constructor
distance = d;
//in spawnMoons()
float d = distance/level;
planets[i] = new Planet(r, d, o);