# Colisionserkennung Punkt -> Linie || Linie -> Linie



## Developer_X (19. Apr 2010)

Hi.
Ich wollte euch mal fragen wie man folgendes realisieren könnte:

Wie kann man eine Kollision erkennen, ob ein Punkt eine Linie durchtrifft, oder Linie und Linie.
Wie könnte man soetwas realisieren?


```
Point A = new Point(0,0); // Punkt

Point Line_A = new Point(0,2); // Linien Beginn
Point Line_B = new Point(2,2); // Linien Ende
```

Danke für eure Antworten,
Developer_X


----------



## Sanix (19. Apr 2010)

Versuch es mit Line2D
Line2D.Double (Java 2 Platform SE v1.4.2)

Sonst kannst du die Linie als Vektor darstellen und nachher mit einer Gleichung prüfen, ob der Punkt auf der Linie liegt.


----------



## Nardian (19. Apr 2010)

ich würde das versuchen rein mathematisch zu lösen...

also einfach eine line als eine geradengleichung ansehen, womit das in deinem bsp bedeuten würde:

(allgemein: y = k*x+d
k = (y1-y2)/(x1-x2)
d = achsenabschnitt)

k = (2-2) / (2-0) = 0

y = (0*x) + d

achsenabschnitt berechnen: 
(einen der beiden punkte einsetzten)
2 = (0*2) + d
das heißt:
d = k*x - y (k,x und y kennen wir zu dieser zeit bereits).

somit haben wir die gesamte geradengleichung

dann einfach nur noch den punkt einsetzten und ein if drum und fertig 

if(y == k * x + d)

wobei x und y in diesem fall die koordinaten vom punkt sind, da k und d ja die gerade beschreiben, und x und y eben "getestet" werden. 


hoffe dass ich dir damit helfen konnte

/edit:
auf den sonderfall musst du natürlich extra eingehen, falls x1 und x2 gleich sind.. dann hätten wir ja ne steigung von unendlich, womit java nicht umgehen kann, und eine divide by zero -exception wirft


----------



## Marco13 (20. Apr 2010)

Und ganz speziell: Line2D (Java 2 Platform SE v1.4.2)


----------



## Developer_X (20. Apr 2010)

Danke Lösung:
Line2D.contains(Point2D);#


----------



## Marco13 (20. Apr 2010)

"... _in the case of Line2D objects it always returns false since a line contains no area. _" ...


----------

