# Abstand 2er Punkte (Klassen)



## MayYes (17. Nov 2009)

Hallo miteinander,

ich habe ein kleines Problem mit meinem Programm wo mir die Lösung fehlt.
Ich habe eine Main-Klasse und eine Klasse Punkt wo eine x-y Koordinate erzeugt wird.

Nun will ich in der Main 2 Punkte erstellen und den Abstand der beiden Punkte berechnen.
Die Formel dafür lautet:







Wie muss ich das in meiner Klasse Punkt programmieren das er mir die 2 verschiednen Werte nimmt?
Zum Beispiel sieht das so aus:


```
Punkt A = new Punkt(5.5, 2.5);
		Punkt B = new Punkt(6.5, 1.5);
```

Jetzt gibt es in der Punkt-Klasse folgende Methode:


```
double abstand()
	{
		return Math.sqrt((x-x)*(x-x)+(y-y)*(y-y));
	
	}
```

Wie muss ich das nun machn, damit er die verschiedene Punkt in diese Methode einsetzt?
Freue mich riesig über jede Hilfe.

MFG


----------



## Quaxli (17. Nov 2009)

Poste doch mal die Klasse Punkt, dann kann man einen Vorschlag machen.

Deine Funktion ist übrigens falsch:
(x-x)*(x-x) ist nicht das Gleiche wie (x1-x2)²! Stichwort binomische Formeln!
Die Klasse Math hat im übrigen eine Funktion für "eine Zahl hoch eine andere Zahl" -> Math.pow(..).


----------



## SlaterB (17. Nov 2009)

double abstand()

-> 

double abstand(Punkt other) {
other im Code verwenden!
}


----------



## MayYes (17. Nov 2009)

ok, hier ist die Klasse Punkt:


```
public class Punkt2D
{
	double x;
	double y;
	
	Punkt2D(double x_new, double y_new)
	{
		x = x_new;
		y = y_new;
	}
	
	double abstand()
	{
		return Math.sqrt((x-x)*(x-x)+(y-y)*(y-y));
	
	}	
}
```

Und hier ist die Mainklasse:


```
public class Testklasse
{
	public static void main(String[] args)
	{
		Punkt2D B = new Punkt2D(5.5, 2.5);
		Punkt2D C = new Punkt2D(6.5, 1.5);
		double abstand = B.abstand(C);
		System.out.println(abstand);
```

	}
}


----------



## Schumi (17. Nov 2009)

In der Abstandsformel berechnest Du doch so nur den Abstand des Punktes zu sich selber. Da bräuchtest Du schon noch einen 2. Punkt auf dessen Koordinaten Du dann zugreifen können musst.


----------



## MayYes (17. Nov 2009)

Genau das ist gerade mein Problem...wie kann in der Methode Abstand für die x/y - Werte die Werte für die 2 Punkte einsetzen?


----------



## SlaterB (17. Nov 2009)

hier


SlaterB hat gesagt.:


> double abstand()
> 
> ->
> 
> ...


z.B. this.x - other.x


----------



## Schumi (17. Nov 2009)

Dafür solltest Du Deiner Punktklasse eine (bzw. eher zwei) Methoden schenken, die die Koordinaten ausgeben. So etwas wie getX() und getY().
Eta: oder halt direkt auf die Koordinaten zugreifen solange sie sichtbar sind.


----------



## ARadauer (17. Nov 2009)

```
double abstand(Punkd2D other)
   {
       return Math.sqrt((other.x-x)*(other.x-x)+(other.y-y)*(other.y-y));
   
   }
```
ungetestet...

Alleine beim tippen muss dir ja schon aufgefallen sein, dass das nix is return Math.sqrt((x-x)*(x-x)+(y-y)*(y-y));
wie viel ist die wurzel aus 0*0+0*0 ?


----------



## ARadauer (17. Nov 2009)

Schumi hat gesagt.:


> Dafür solltest Du Deiner Punktklasse eine (bzw. eher zwei) Methoden schenken, die die Koordinaten ausgeben. So etwas wie getX() und getY().
> Eta: oder halt direkt auf die Koordinaten zugreifen solange sie sichtbar sind.




schon mal den Source von java.awt.Point angesehen? 

Aber grundsätzlich hast du recht...


----------



## Schumi (17. Nov 2009)

ARadauer hat gesagt.:


> schon mal den Source von java.awt.Point angesehen?



 aber getters hats auch... ;-)


----------



## MayYes (17. Nov 2009)

Super 
Es geht, dank euch allen


----------

