Aufgabe - Geometrie Punkte

Ich hab den Abstand zweier Punkte nun auch hinbekommen danke:

      double dx = other.xpos - xpos;
      double dy = other.ypos - ypos;
      return Math.sqrt(dx*dx + dy*dy);
    }```

Dadurch funktioniert nun auch die berechnung vom Umfang nur fehlt da halt anscheinend noch ein Punkt weil ein falsches ergebnis geliefert wird.
Mir fehlt anscheinend die letzte strecke vom letzten Punkt zum Anfangspunkt. Ich wüsste nicht wie ich diese mit einbeziehen kann,..

Ja das stimmt. Hatte ich übersehen.
Du musst lediglich noch den Abstand vom letzten Punkt zum ersten Punkt dazurechnen. Natürlich nur wenn du mehr als zwei Punkte in deiner Liste hast.

Okay ich hab es denke ich geschafft

      double umfang = 0d;
      for (int i=0; i<eckpunkte.length; i++) {
        umfang += eckpunkte**.abstand(eckpunkte[(i+1) % eckpunkte.length]);
      }
      return umfang;
    }```

Die Ausgabe stimmt soweit, also denke ich müsste das auch soweit inordnung sein,..
Immer wenn ich kurz vorm ende stehe bekomme ich ein neues Problem,..

```public class Quadrat extends Polygon {

   public Quadrat(Punkt mittelpunkt, double seitenlaenge) {
        super.getEckpunkte();
        
   }
}```

ich hoffe soweit ist das richtig mit den superklassen,..? 
Der Konstruktor der Klasse Quadrat soll nun als Parameter den Mittelpunkt und die Seitenlänge eines Quadrates übergeben werden, daraus will ich die eckpunkte errechnen und diesen attributen die eckpunkte der Super-Klasse zuweisen, ausserdem soll der Bezeichner des Polygons den String mit "Quadrat" besetzen.

[quote=Brexoi]ch hoffe soweit ist das richtig mit den superklassen,…?[/quote]Nein.

[quote=Brexoi;117619]```public class Quadrat extends Polygon {

public Quadrat(Punkt mittelpunkt, double seitenlaenge) {
super.getEckpunkte(); // du willst hier den Konstruktor der Superklasse Polygon aufrufen, nicht irgendeine Methode von Polygon…
}
}```[/quote]Die Konsequenz dieses Konstruktor ist aus fachlicher Sicht, dass es keine gedrehten Quadrdate geben kann und aus technischer Sicht, das vor dem Aufruf des Konstruktors der Super-Klasse die Eckpunktpunkte berechnet werden müssen, was nicht gerade trivial ist, vor allem deswegen, weil vor dem Aufruf von super() nichts anderes gemacht werden darf.

Dieses Problem zu umgehen ist etwas aufwändig.
[spoiler]```public class Quadrat extends Polygon {

public Quadrat(Punkt mittelpunkt, double seitenlaenge) {
super(new Punkt[]{berechneObenLinks(mittelpunkt,seitenlaenge),
berechneObenRechts(mittelpunkt,seitenlaenge),
berechneUntenLinks(mittelpunkt,seitenlaenge),
berechneUntenRechts(mittelpunkt,seitenlaenge)});
}
private Point berechneObenLinks(Punkt mittelpunkt, double seitenlaenge){
return new Point(mittelpunkt.getX()-seitenlaenge/2,mittelpunkt.gety()+seitenlaenge/2);
}
private Point berechneObenRechts(Punkt mittelpunkt, double seitenlaenge){
return new Point(mittelpunkt.getX()+seitenlaenge/2,mittelpunkt.gety()+seitenlaenge/2);
}
// usw. …
}```[/spoiler]
Im Zusammenspiel mit der “Selbstjustierung” der Punkte führt dies zudem dazu, dass an den Rändern Quadrate erzeugt werden können, die keine sind (new Quadrat(new Punkt(3,512),17.0))…

bye
TT

[QUOTE=Brexoi]Ich hab den Abstand zweier Punkte nun auch hinbekommen danke:

      double dx = other.xpos - xpos;
      double dy = other.ypos - ypos;
      return Math.sqrt(dx*dx + dy*dy);
    }```

Dadurch funktioniert nun auch die berechnung vom Umfang nur fehlt da halt anscheinend noch ein Punkt weil ein falsches ergebnis geliefert wird.
Mir fehlt anscheinend die letzte strecke vom letzten Punkt zum Anfangspunkt. Ich wüsste nicht wie ich diese mit einbeziehen kann,..[/QUOTE]

Es geht noch ein Fitzelchen besser:

```public double abstand(Punkt that) {
      return Math.hypot(this.xpos - that.xpos, this.ypos - that.ypos);
}```

Ja ich hab nun alles soweit hinbekommen auch das problem mit den superklassen und alles funktioniert soweit so gut, danke euch allen!!!

[quote=Brexoi]ich hab nun alles soweit hinbekommen[/quote]Die nicht quadratischen Quadrate auch?

bye
TT