/**
  *
  * Programmieraufgabe P-16 (geometrie2.jar)
  *
  * @author Leonhard Fellermayr
  * @version 1.0
  *
  */

/** Zugehšrigkeit zum Package geometrie */

package geometrie;

/** Implementierung der Klasse Rechteck - verfeinert die Oberklasse Viereck */

public class Rechteck extends Viereck
{

	/**
	  * Rechteck (p, q, breite): Konstruktor der Klasse Rechteck.
	  *
	  * Ruft den Konstruktor der Oberklasse (= Viereck) auf und
	  * erzeugt ein Rechteck mit den SeitenlŠngen || p, q ||Êund
	  * 0. Die Seite der LŠnge 0 wird um 90 Grad gedreht, so
	  * dass ein Rechteck entsteht, anschlie§end durch Streckung
	  * auf die LŠnge/Breite "breite" gebracht.
	  *
	  * @param p Definitionspunkt p des Rechtecks
	  * @param q Definitionspunkt q des Rechtecks
	  * @param breite Breite des Rechtecks
	  *
	  */

	public Rechteck (Punkt p, Punkt q, double breite)
	{

		super (p, q, (Punkt)p.clone(), (Punkt)q.clone());

		/** Wir erstellen zunŠchst ein "Viereck" der Hšhe 0, also
		  * eine Linie. Die "unteren" Eckpunkte liegen auf den
		  * "oberen" Eckpunkten.
		  *
		  * p/r---------q/s
		  *
		  */

		/** Nun wird durch 90-Grad-Rotation ein "echtes" Rechteck erzeugt. */

		/**
		  *  p----------q
		  *  |          |
		  *  |          |
		  *  s----------r
		  *
		  */

		/** Der Streckungsfaktor errechnet sich aus dem Quotienten der
		  * gewŸnschten Breite und der LŠnge der vorgegebenen Strecke.
		  *
		  * Die LŠnge ermittelt laenge () aus der Klasse Punkt mittels der
		  * Euklidischen Norm.
		  *
		  */

		/** r = p um 90 Grad um q im Gegen-UZS rotieren */

		punkte[2].rotieren (q, (-1) * Math.PI / 2);
		punkte[2].strecken (q, breite / laenge (p, q));

		/** s = q um 90 Grad um p im UZS rotieren */

		punkte[3].rotieren (p, Math.PI / 2);
		punkte[3].strecken (p, breite / laenge (p, q));

	} // Konstruktor

} // Klasse Rechteck