Punkt.java
public class Punkt {
// stellt einen Punkt auf einer abstrakten 2d-Zeichenfläche dar
// wird gleichzeitig auch als Verschiebungsvektor verwendet, ist also
// als Ortsvektor zu verstehen
// abstrakte Zeichenfläche:
// unendlich ausgedehnt
// genaue Koordinaten (keine Pixel)
protected double x, y;
// Konstruktoren
public Punkt(double x1, double y1) {
x = x1;
y = y1;
}
public Punkt() {
// Standardpunkt: der Ursprung
this(0.0, 0.0);
}
// öffentliche Methoden
public void move(Punkt p) {
// um p verschieben
x += p.x;
y += p.y;
}
public void scale(double s) {
// skaliert um Faktor s, Bezugspunkt O
// meint hier: als Vektor vom Ursprung
x *= s;
y *= s;
}
public void rotate(double alpha) {
// dreht um Winkel alpha, Drehpunkt O
double xn = x * Math.cos(alpha) + y*Math.sin(alpha);
y = -x * Math.sin(alpha) + y*Math.cos(alpha);
x = xn;
}
public int getX() {
// gibt die X-Koordinate des Punkts für den Bildschirm
return (int) Math.round(x);
}
public int getY() {
// gibt die Y-Koordinate des Punkts für den Bildschirm
return (int) Math.round(y);
}
public String toString() {
return "(" + x + ", " + y + ")";
}
}