Überprüfen Sie diese Formel mit Bourke .
Auch ich musste dieses Problem kürzlich lösen. Eine andere Möglichkeit besteht darin, die Gleichung der Geraden zu verwenden ( y = mx + c
), aber es gibt einige Randfälle, mit denen Sie sich befassen müssen, ebenso wie mit der Überprüfung, ob der Schnittpunkt innerhalb des Liniensegments liegt. Die Formel im obigen Link funktioniert, obwohl ich nicht wirklich kommentieren kann, wie die Gleichung umgestellt wird, ich kann nur sagen, dass es funktioniert ;)
Editer :
Wie von AndiDog erwähnt, habe ich auch diese Website verwendet (das Beispiel ist ebenfalls ausgezeichnet) tutorial . Da es sich um XNA handelt, ist der zweite Link genau das Richtige für Sie.
Bearbeiten (Inhalt von defektem Link) :
Die Gleichungen der Linien lauten Pa = P1 + ua ( P2 - P1 )
y Pb = P3 + ub ( P4 - P3 )
Die Lösung für den Punkt, an dem Pa = Pb
ergibt die folgenden zwei Gleichungen mit zwei Unbekannten (ua und ub) x1 + ua (x2 - x1) = x3 + ub (x4 - x3)
y y1 + ua (y2 - y1) = y3 + ub (y4 - y3)
Die Lösung ergibt die folgenden Ausdrücke für ua und ub
Setzt man eine dieser beiden Gleichungen in die entsprechende Geradengleichung ein, erhält man den Schnittpunkt. Zum Beispiel ist der Schnittpunkt (x,y) x = x1 + ua (x2 - x1)
y = y1 + ua (y2 - y1)
Anmerkungen: Die Nenner der Gleichungen für ua und ub sind identisch. Wenn der Nenner der Gleichungen für ua und ub gleich 0 ist, sind die beiden Geraden parallel. Wenn der Nenner und der Zähler der Gleichungen für ua und ub gleich 0 sind, dann fallen die beiden Geraden zusammen. Die Gleichungen gelten für Geraden, wenn der Schnittpunkt von Geradensegmenten benötigt wird, muss nur geprüft werden, ob ua und ub zwischen 0 und 1 liegen. Je nachdem, welches von beiden innerhalb dieses Bereichs liegt, enthält das entsprechende Geradensegment den Schnittpunkt. Liegen beide im Bereich von 0 bis 1, dann liegt der Schnittpunkt in beiden Liniensegmenten.