BlueJ?


06.10.2021, 22:28

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

Vom Beitragsersteller als hilfreich ausgezeichnet

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));
	}
}

NAFIS1 
Beitragsersteller
 07.10.2021, 13:44

Geht das auch bei BlueJ? Hatte jetzt mehrmals das Problem, dass es dadurch, dass BlueJ so vereinfacht ist, nicht funktioniert...

0
daCypher  07.10.2021, 14:11
@NAFIS1

Musst du ausprobieren. Ich hab kein BlueJ. Die Funktionen gehören aber zur Standardbibliothek von Java.

0

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
Woher ich das weiß:Studium / Ausbildung – Informatik studiert und mit PCs & Technik beschäftigt

Dampfnudel730  06.10.2021, 22:09

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²)

0