Achim Winkelacker: GD: Schnittpunkte ermitteln

Beitrag lesen

Hallo

Hmm, wenn Du mit der Mathematik dort nicht so viel anfangen kannst und an Beispielen besser lernst, zeig ich Dir, was ich mir (in Matlab) ausgeknobelt habe:

Das ist extrem nett. Ich spiel mal mit und versuche dein Theorem so nachzuvollziehen als würde ich laut reden:

Eine Gerade a, die durch die Punkte A1 und A2 geht.

z.b. von links oben nach rechts unten. A1 wäre startwert, wobei A2 der Endwert wäre.

Eine Gerade b, die durch die Punkte B1 und B2 geht.

Jeder Punkt wird jeweils durch Koordinaten x (horizontal) und y (vertikal) beschrieben.

Also hiesse der Satz aufgelöst mit beispielzahlen:
Eine Gerade a, die durch die Punkte 10|10 und 90|90 geht

Eine Hilfsfunktion cr(), die zwei Punkte A und B übergeben bekommt.

function cr (A, B) {
    return A.x * B.y - A.y * B.x;
}

Wie muss ich diese Synatx verstehen? Auf PHP gemünzt hiesse der . zwichen A.x eine verbindung und ergäbe z.B: "40x" als string. Oder dient es mir nur als hinweis darauf welchen A-Schlüssel ich brauche?

Ich übergebe also A und B. A und B sind jeweils x|y Werte... Dies müssten dann z.B. Arrays sein. Ich übergebe also A=Array(10,10); und B=Array(90,90);

Dann hiesse der Return:
return A[0] * B[1] - A[1] * B[0];

Mhh...

Den Schnittpunkt der Geraden a und b kann man nun so berechnen:

((A2-A1)*cr(B1, B2) - (B2-B1)*cr(A1, A2)) / cr(A2-A1, B2-B1)

Also ist das erste Fragment eine art:
(A2-A1) = (Array(x,y) - Array(x,y))
Aber das kann doch nicht so erreicht werden...

Damit mußt Du nur aufpassen, wenn beide Gerade parallel verlaufen, sich also nicht schneiden. Dann gibt es nämlich eine Division durch Null. Diesen Fall also vorher abfangen, sonst geht Dein Programm krachen!

Dies kann erreicht werden indem ich dies nur anwende bei Geraden von denen ich weiss dass sie einen Schnittpunkt generieren müssen.

Kannst du mir noch etwas meine Gedankengänge zurechtrücken? Du siehst ja selber dass ich mehr stolper als zielstrebig durchgehe was soetwas angeht und es immer gleich auf praxis münzen möchte...

Liebe grüsse aus Düsseldorf