/*
* Dateiname: Rechteck2D.java
* Autor(en): Lukas K�nig
* Java-Version: 6.0
* Letzte Aenderung: 19.12.2008
*
* (c) Lukas K�nig, die Datei unterliegt der LGPL
* -> http://www.gnu.de/lgpl-ger.html
*/
package fmg.fmg8.graphVis.zeichenModi;
import fmg.fmg8.umgebung2D.Vektor2D;
/**
* @author Lukas K�nig
*/
public class Rechteck2D {
/**
* Eckpunktkoordinate.
*/
private double x1;
/**
* Eckpunktkoordinate.
*/
private double y1;
/**
* Eckpunktkoordinate.
*/
private double x2;
/**
* Eckpunktkoordinate.
*/
private double y2;
/**
* Eckpunkt.
*/
private Vektor2D linksOben;
/**
* Eckpunkt.
*/
private Vektor2D rechtsUnten;
/**
* Konstruktor.
*
* @param v1 Vektor f�r linke obere Ecke.
* @param v2 Vektor f�r rechte untere Ecke.
*/
public Rechteck2D(final Vektor2D v1, final Vektor2D v2) {
this.linksOben = new Vektor2D(Vektor2D.NULL_VEKTOR);
this.rechtsUnten = new Vektor2D(Vektor2D.NULL_VEKTOR);
this.set(v1, v2);
}
/**
* Verschiebt das Rechteck um den angegebenen Vektor.
*
* @param vek Der Verschiebevektor.
*/
public void verschiebe(final Vektor2D vek) {
this.linksOben.add(vek);
this.rechtsUnten.add(vek);
this.x1 += vek.x;
this.x2 += vek.x;
this.y1 += vek.y;
this.y2 += vek.y;
}
/**
* Setze Rechteckkoordinaten.
*
* @param v1 Vektor f�r eine Ecke.
* @param v2 Vektor f�r die andere Ecke.
*/
public void set(final Vektor2D v1, final Vektor2D v2) {
if (v1.x < v2.x) {
this.x1 = v1.x;
this.x2 = v2.x;
} else {
this.x1 = v2.x;
this.x2 = v1.x;
}
if (v1.y < v2.y) {
this.y1 = v1.y;
this.y2 = v2.y;
} else {
this.y1 = v2.y;
this.y2 = v1.y;
}
this.linksOben.x = x1;
this.linksOben.y = y1;
this.rechtsUnten.x = x2;
this.rechtsUnten.y = y2;
}
/**
* Setzt eine Seite des Rechtecks neu.
*
* @param xx1 Der zu setzende neue Wert.
*/
public void setLinks(final double xx1) {
this.set(new Vektor2D(xx1, this.y1), this.rechtsUnten);
}
/**
* Setzt eine Seite des Rechtecks neu.
*
* @param xx2 Der zu setzende neue Wert.
*/
public void setRechts(final double xx2) {
this.set(this.linksOben, new Vektor2D(xx2, this.y2));
}
/**
* Setzt eine Seite des Rechtecks neu.
*
* @param yy1 Der zu setzende neue Wert.
*/
public void setOben(final double yy1) {
this.set(new Vektor2D(this.x1, yy1), this.rechtsUnten);
}
/**
* Setzt eine Seite des Rechtecks neu.
*
* @param yy2 Der zu setzende neue Wert.
*/
public void setUnten(final double yy2) {
this.set(this.linksOben, new Vektor2D(this.x2, yy2));
}
/**
* @return Die linke obere Ecke.
*/
public Vektor2D liObEcke() {
return this.linksOben;
}
/**
* @return Die rechte untere Ecke.
*/
public Vektor2D getRechtUntEcke() {
return this.rechtsUnten;
}
/**
* @return Die H�he.
*/
public double getHoehe() {
return y2 - y1;
}
/**
* @return Die Breite.
*/
public double getBreite() {
return x2 - x1;
}
}