# Länge der Strecke zwischen zwei Punkten



## Mikrowelle (4. Jul 2012)

Hallo

Ich zechne mit drawLine(...); Eine Strecke von Punkt A nach B.  Wie finde ich raus wie lang sie ist?

Danke


----------



## HimBromBeere (4. Jul 2012)

Schonmal was von Pythagoras gehört?


----------



## Bile Demon (4. Jul 2012)

Die Klasse Point2D hat z.B. die Methode distance

Damit würde ich es mal versuchen.


----------



## Ikaron (4. Jul 2012)

Ungetestet aber versuch mal [c]double dist = Math.sqrt(Math.pow(Math.abs(x1 - x0), 2) + Math.pow(Math.abs(y1 - y0), 2));[/c]


----------



## Int42 (4. Jul 2012)

Den Abstand zwischen zwei Punkten findet man mithilfe einfacher Vektorrechnung heraus:
Der Vektor v von A nach B:

v = B - A

Die Länge dieses Vektors:

√ ( v.x² + v.y² )

ist im Grunde das, was Ikaron schon gepostet hat, vielleicht etwas einfacher.

Ich hoffe, ich konnte dir weiterhelfen


----------



## Marco13 (4. Jul 2012)

Ikaron hat gesagt.:


> Ungetestet aber versuch mal [c]double dist = Math.sqrt(Math.pow(Math.abs(x1 - x0), 2) + Math.pow(Math.abs(y1 - y0), 2));[/c]



Im Kampf gegen die Windmühle des Vorurteils, Java sei langsam: http://www.java-forum.org/spiele-multimedia-programmierung/138139-algorithmus.html#post912977 (und den etwas weiter unten folgenden Teil)


----------



## njans (4. Jul 2012)

Marco, wenn du nicht mal weißt, wozu er das braucht, musst du nicht versuchen da etwas zu optimieren


----------



## Marco13 (4. Jul 2012)

"Premature optimization" oder was? Die Distanz auf die beschriebene Art auszurechnen ist nicht nur in bezug auf die Performance schlecht - das sollte man einfach nicht so machen. Wenn jemand zum sortieren eines Arrays sowas vorschlagen würde wie

```
for (int i=0; i<x.length; i++) {
      boolean unsorted=true;
      while (unsorted){
         unsorted= false;
         for (int i=0; i < x.length-1; i++) 
            if (x[i] > x[i+1]) {                      
               int temp       = x[i];
               x[i]       = x[i+1];
               x[i+1]     = temp;
               unsorted= true;
            }          
      } 
}
```
würde man ja auch sagen: WTF? :autsch:


----------



## njans (4. Jul 2012)

Naja BubbleSort ist ja auch eher etwas, was man als naives Sortieren bezeichnen würde. Trotzdem, wenn er da aber wirklich die die Euklidische Distanz braucht, dann braucht er die eben


----------



## HimBromBeere (4. Jul 2012)

> Im Kampf gegen die Windmühle des Vorurteils, Java sei langsam: A* Algorithmus (und den etwas weiter unten folgenden Teil)


Also ich muss dir mal was vorwerfen: als du mit A* anfingst, dacht Ich nämlich v.a. eins: WTF!! Erst gefühlte 10 Stunden nach erstmaligem Lesen des Beitrages hab ich mich mal dazu durchgerungen, dem Link zu folgen und dabei festgestellt, dass dein jetziger Beitrag mit A* ja mal gar nix zu tun hat. Darum hättest du zu dem Thema lieber mit einer anderen Überschrift verlinken sollen: etwa so z.B. Das hätte zu weniger Verwirrung geführt. 

Btw.: Ob man nun mit pow arbeitet oder dem Produkt ist glaub ich auch erstmal Latte, es ging lediglich ums Prinzip, behaupte ich jetzt mal.


----------



## Marco13 (5. Jul 2012)

Naja, es war auf den Beitrag verlinkt, in dem genau die Euklidische Distanz (auf genau die beschriebene Weise) berechnet wurde, und der Hinweis, dass der nachfolgende Teil (mit dem pow) das relevanteste war, auch wenn DORT wiederum auch erwähnt wurde, dass das in 99% der Fälle egal ist (zur Rechtfertigung sollte ich vielleicht noch sagen, dass das nach einem 8-stündigen Meeting und einer 5-stündigen Zugfahrt geschrieben wurde, und ich schon zu Beginn des Meetings übermüdet war :autsch:  )

Wie relevant das im speziellen ist, ist schwer zu sagen. Aber wenn die Frage so allgemein gestellt wurde, und das ganze im Zusammenhang mit "drawLine" gefragt wird, dann MUSS man davon ausgehen, dass es zeitkritisch ist, weil Zeichnen IMMER zeitkritisch ist  Vielleicht ist es aber auch nur eine Ausprägung des "Pfadfinder-Prinzips": Wenn man Code liest, bei dem es einem kalt den Rücken runterläuft, sollte man überlegen, ob man ihn nicht leicht besser machen könnte.


----------

