BlueJ?
Ich schreibe gerade in BlueJ eine Klasse Punkt. Der Punkt kann zu einem Punkt verschoben werden und um x/y Koordinaten verschoben werden. Jetzt brauche ich noch eine Formel um den Abstand zum Ursprung herauszufinden?
Habe jetzt darüber nachgedacht, wie die Formel lautet, aber bin mir immer noch nicht sicher, da wenn der Ursprung zb x=5 y=5 und der Punkt ist x=8 y=9, dann muss man doch erst die Differenz ausrechnen, oder? Wie lautet die Formel dann?
2 Antworten
Erstmal musst du natürlich den Ursprung speichern, wenn du den Punkt erzeugst. Dann kannst du mit Math.abs() die absolute Differenz in den X- und Y- Komponenten berechnen und mit dem Satz des Pythagoras den Abstand zum Ursprung.
Wenn du es einfach haben willst, nimmst du einfach die integrierten Funktionen in Java:
import java.awt.geom.Point2D;
public class Punkt {
Point2D.Double origin;
Point2D.Double position;
public Punkt(double x, double y) {
origin = new Point2D.Double(x, y);
position = new Point2D.Double(x, y);
}
public void verschiebenUm(double x, double y) {
position.x += x;
position.y += y;
}
public void verschiebenNach(double x, double y) {
position.setLocation(x, y);
}
public double abstandZuUrsprung() {
return position.distance(origin);
}
}
oder wenn du es selbst berechnen willst, sieht es so aus:
import static java.lang.Math.abs;
import static java.lang.Math.pow;
import static java.lang.Math.sqrt;
public class Punkt {
double originX;
double originY;
double positionX;
double positionY;
public Punkt(double x, double y) {
originX = x;
originY = y;
positionX = x;
positionY = y;
}
public void verschiebenUm(double x, double y) {
positionX += x;
positionY += y;
}
public void verschiebenNach(double x, double y) {
positionX = x;
positionY = y;
}
public double abstandZuUrsprung() {
double deltaX = abs(originX - positionX);
double deltaY = abs(originY - positionY);
return sqrt(pow(deltaX, 2) + pow(deltaY, 2));
}
}
Mit dem Pythagoras.
Tipps:
- Klassennamen nie komplett groß schreiben, nur den Anfangsbuchstaben
- Methodennamen mit Kleinbuchstaben beginnen
- Gleich lernen, alle Bezeichner auf Englisch zu schreiben
- Leerzeichen zwischen Operatoren verwenden
Damit du jetzt nicht noch Pythagoras suchen musst weil du Mathe wahrscheinlich nicht magst:
a² + b² = c²
d.h. wenn d = Abstand zum Mittelpunkt: d² = x² + y²
Also: d = Wurzel aus (x² + y²)
Geht das auch bei BlueJ? Hatte jetzt mehrmals das Problem, dass es dadurch, dass BlueJ so vereinfacht ist, nicht funktioniert...