# Schnittpunkt von 2 Strecken ermitteln



## Lundner (3. Apr 2007)

Hallo!

Ich habe 2 *Strecken* gegeben p1 und p2. Ich möchte jetzt nicht nur prüfen, ob sie sich schneiden, sondern auch, ob *wo* sie sich schneiden, also die X und Y Koordinate. 
Hat jemand ne gute idee? Mit Line2D kann ich leider nur feststellen, ob sie sich schneiden.

edit: um das ganze zu veranschaulichen:







die Mittelpunkte der Fenster (definiert durch x = window.getX()+window.getWidth()/2, y analog) sind durch die Linie dort miteinander verbunden. 

Die Fenster lassen sich durch Drag and Drop verschieben. Die Linie+Pfeil wird dabei immer aktualisiert. Der Pfeil soll aber immer auf dem Fensterrahmen "langspazieren" (der Schnittpunkt der window-kante und der Pfeilline definieren die Position des Pfeils).

Hoffe ihr könnt mir helfen ;-)


----------



## Wildcard (3. Apr 2007)

Der Trick heißt Mathe.
Zweipunkteform noch geläufig?  :wink:
http://www.java-forum.org/de/topic7220_einiges-zur-geometrie-punkte-vektoren-geraden.html


----------



## Wildcard (3. Apr 2007)

Ahh, ok... jetzt sehe ich wozu du das brauchst.
Dafür ist das ein denkbar schlechter Ansatz.
Was sollen deine Linien alles können und wie kommen sie an ihren Platz?
Da lässt sich was besseres finden.


----------



## Lundner (3. Apr 2007)

och man!! ;-)
ich dachte java bietet mir da schon ein komfortables mittel! 
der mathematische weg ist mir schon bekannt!... nja muss ich mich wohl oder übel da morgen mal durchfriemeln...

es sei den jemand hier hat nochn tipp?! *hoff*


----------



## Wildcard (3. Apr 2007)

Mein Vorschlag wie man das bei Graphen sinnvoll lösen kann:
Mach ein Interface zB Connectable das jede 'Seite' implementiert.
Darin definierst du eine Methode

```
Anchor getAnchor(Connection c)
```
Der Anchor ist ein Punkt an den sich die Connection andockt (dadurch kann sie mitlaufen wenn sich der Anchor bewegt).
Übergeben wird die Connection die sich andocken will.
Abhängig von deren Winkel kann jede Node im Graph den richtigen Andockpunkt zurückliefern.
Wie die Klasse Connection aussehen muss hängt stark von deinen Anforderungen ab.
Im einfachsten Punkt wird einfach eine Linie von Source Anchor zu Target Anchor gezeichnet und an den Linienenden Decorator für zB die Pfeilspitze.
Für Graphen gibt's aber auch fertige Bibliotheken wenn dir das zu stressig ist  :wink:


----------

