Arrays


Massenpunkt M1, M2, M3;

M1 = new Massenpunkt(1.0, 0.0, 0.5, 1.5, 1.0);
M2 = new Massenpunkt(1.0, 0.0, 0.5, 1.5, 4.0);
M3 = new Massenpunkt(1.0, 0.0, 0.5, 1.5, 9.0);

...
M1.euler(dt, kraft1);
M2.euler(dt, kraft2);
M3.euler(dt, kraft3);
...

oder mit den Arrays:

Massenpunkt M[] = new Massenpunkt[3];

M[0] = new Massenpunkt(1.0, 0.0, 0.5, 1.5, 1.0);
M[1] = new Massenpunkt(1.0, 0.0, 0.5, 1.5, 4.0);
M[2] = new Massenpunkt(1.0, 0.0, 0.5, 1.5, 9.0);

for(int i = 0; i < 3; i++) {
  ...
  M[i].euler(dt, kraft[i]);
  ...
}



Vektor Federkraft(Massenpunkt M[], int n) {
  final double ax = 1.0, ay = 1.0; // Federkonstanten

  Vektor kraft = new Vektor(0.0, 0.0);
  for(int i = 0; i < 3; i++) {
    if(i != n) {
      kraft.x += -ax * (M[n].q.x - M[i].q.x);
      kraft.y += -ay * (M[n].q.y - M[i].q.y);
    }
  }
  return kraft;
}



final int N = 3;

public void paint(Graphics g) {
  Massenpunkt M[] = new Massenpunkt[N];
  Color Farbe[] = new Color[N];
  Vektor kraft[] = new Vektor[N];
  double tmax = 15.0, dt = 0.01;

  M[0] = new Massenpunkt(-1.0, 0.0, 0.0, -0.1, 1.0);
  M[1] = new Massenpunkt(1.0, 0.0, 0.0, 0.1, 4.0);
  M[2] = new Massenpunkt(0.0, 1.0, 0.0, 0.0, 9.0);

  Farbe[0] = Color.blue;
  Farbe[1] = Color.red;
  Farbe[2] = Color.green;

  setRange(-2.0, 2.0, -2.0, 2.0);

  for(double t = 0.0; t <= tmax; t += dt) {

    // Momentaufnahme der Kraefte
    for(int i = 0; i < N; i++) {
      kraft[i] = Gravitationskraft(M, i);
    }

    // Integration und zeichnen
    for(int i = 0; i < N; i++) {

      M[i].euler(dt, kraft[i]);

      g.setColor(Farbe[i]);
      g.fillOval(sx( M[i].q.x) - 2, sy(M[i].q.y) - 2, 4, 4);
    }
  }
}