# Java  kartesischen Koordiatensystem Abstand berechnen



## thehasso (5. Oktober 2009)

Hallo,



Ich hab ne Aufgabe , bei der Ich nicht so genau weiß wie die geht, ...
Es sollen 2 Attributen gesetzt werden also x und y .. als tipp steht noch Pythgoros.

Den tipp vertsh ich aber nicht weil ich die Aufgabe nicht sor echt verstehe, wie man den Pytahgoros berechnet weiß ich.. a*a + b*b = c also der flächeninhalt von a und der Flächeninhalt von b ist der Flächeninhalt von c Also der Hypothese.

Wär nett, wenn jemand mir erkärt was man mit Abstand gemeitn wird bzw. dem P mit der fortlaufenden Nummer.

die so lautet:


Die Klasse Punkt soll Punkte im kartesischen Koordiatensystem beschreiben.
1. Attribute x- und y-Koordinaten, passender Konstruktor
2. Attribut name hat die Forme “P” plus eindeutige, fortlaufende Nummer.
3. Methode double abstandZu(Punkt ander) berechnet den Abstand zu einem
anderen Punkt (Tipp: Pythagoras).



liebe grüße
thehasso


----------



## ByeBye 154279 (5. Oktober 2009)

Hey,

also über Satz des Pythagoras berechnet man ja die Flächen bzw die Längen beim Dreieck (rechtwinkliges) aber wie willst du mit 2 Punkten ein Dreieck definieren?


bo

edit:

c² = a² + b²


----------



## CPoly (5. Oktober 2009)

1.Deine Klasse Punkt, soll einen Konstruktor haben, welchem die X- und Y-Koordinate übergeben wird. Der Aufruf würde dann z.b. so aussehen: Punkt p = new Punkt(5,3);
2.Deine Klasse soll ein Attribut namens "name" haben. Also wenn du in deinem Programm einen Punkt erstellst, soll dieser "P1" heißen. Beim nächsten Punkt dann "P2".
3.Die Klasse soll eine öffentliche Methode haben, um den Abstand zu einem anderen Punkt zu berechnen.


----------



## ByeBye 154279 (5. Oktober 2009)

Hi,


jetzt habe ich es verstanden xD

Also das mit der fortlaufenden Nummer sollte über bzw mit static ( ? ) Variablen möglich sein.

Die Berehcnung von Punkt zu Punkt wäre

( |x1-x2| )² + ( |y1-y2| )² = c²


bo


----------



## CPoly (5. Oktober 2009)

bergonline hat gesagt.:


> ( |x1-x2| )² + ( |y1-y2| )² = c²



Die Betragsstriche sind dank des Quadrats unnötig und für den Abstand muss noch die Wurzel gezogen werden.


----------



## thehasso (6. Oktober 2009)

hmm ne frage, ich hab aber nur ein x1 woher kommt denn x2 ? genau so hab ich nur ein y1 und kein zweites y2


----------



## Clash (6. Oktober 2009)

thehasso hat gesagt.:


> hmm ne frage, ich hab aber nur ein x1 woher kommt denn x2 ? genau so hab ich nur ein y1 und kein zweites y2



2 Punkte = 2 Koordinatenpaare X,Y...


----------



## thehasso (6. Oktober 2009)

ja dann versteh ich das mit den fortlaufenden nummern nicht genau....
der andere hatte es ja schon angesprochen irgendwie mit Static. 

das ist meine main:


```
package punkt;

public class Main {

         public static void main(String[] args) {

             Punkt p = new Punkt(5,4);
                    
        }

}
```


```
package punkt;

public class Punkt {

   

    Punkt (int x, int y){

     
    //( |x1-x2| )² + ( |y1-y2| )² = c²
    // zuletzt noch wuzrel ziehen!


    }

}
```


lg


----------



## ByeBye 154279 (6. Oktober 2009)

Guten Morgen,


mit static Variablen kannst du Objekt-unabhängige Variablen erzeugen und nutzen.
static int name_int= 0;

Und beim Konstruktor vom Punkt 
name_int++;
this.name = "P" + name_int;

bo


----------



## Clash (7. Oktober 2009)

Moin,
der code den du da gepostet hast, ist ja von der sache her schon richtig, im Konstruktor musst du nur noch das mit dem namen einbauen, wie bo schon geschrieben hat. 
Für die Berechnung des Abstands musst du in der Methode einen zweiten Punkt übergeben, wie es auch schon in der Beschreibung steht:

```
double abstandZu(Punkt andererPunkt)
{
x1 = this.x;
y1 = this.y;
x2 = andererPunkt.x;
y2 = andererPunkt.y;
....
}
```

um auf x und y zuzugreifen, musst du diese natürlich als public in der klasse definieren und im Konstruktur übergeben

```
package punkt;

public class Punkt {
    public double x,y;
 
    Punkt(double x, double y){
    this.x = x;
    this.y = y;
    }
}
```


----------



## Buschiii (7. Oktober 2009)

Jetzt musst du lediglich zwei Punkte instanzieren und der Methode übergeben...
z.B:


```
Punkt p1 = new Punkt(8,9);
Punkt p2 = new Punkt(3,2);
...
...
.
.
.
double abstandZu(p1, p2){
...
..
.
.
}
```


----------



## Thomas Darimont (13. Oktober 2009)

Hallo,

um zu überprüfen, ob deun Code richtig rechnet kannst du das hier verwenden:

```
package de.tutorials;

import java.awt.Point;

public class Points {
    public static void main(String[] args) {
        System.out.println(new Point(100, 100).distance(new Point(200,200)));
    }
}
```

Gruß Tom


----------

