+1 Daumen
2,3k Aufrufe

Wie kann man in Python Schnittpunkte in einer Matrix berechnen, also zum Beispiel

1 2 3

4 5 6

7 8 9

Schnittpunkt der Gerade durch 4 und 6 und der Gerade durch 8 und 2.

Mit Mathe komme ich hier nicht weiter, weil die Linie durch 2 8 keine Gerade im Koordinatensystem ist. Ich muss das in Python programmieren. VIelen Dank für eure Hifle!

Avatar von

1 Antwort

+4 Daumen
 
Beste Antwort
wie kann man in Python Schnittpunkte in einer Matrix berechnen

Hierzu ist zunächst einmal eine Transformation in ein Koordinatensystem nötig. Als Funktion zur Berechnung biete ich Dir folgendes Python-Skript an:

def intersect(l1, l2):
    dx = (l1[0][0] - l1[1][0], l2[0][0] - l2[1][0])
    dy = (l1[0][1] - l1[1][1], l2[0][1] - l2[1][1])

    def det(a, b):
        return a[0] * b[1] - a[1] * b[0]

    div = det(dx, dy)
    if div == 0:
      return (42,42) # error case

    d = (det(*l1), det(*l2))
    x = det(d, dx)/div
    y = det(d, dy)/div
    return x, y

Stelle gerne Rückfragen, wenn etwas unklar sein sollte.

Avatar von

Nur so aus Neugier. Braucht man nur diese Funktion oder muss die noch ins Hauptprogramm einbinden?(wie man es z.B. in C++ oder Java macht?

oder muss die noch ins Hauptprogramm einbinden?

Die Funktion muss natürlich noch aufgerufen werden. Das machst Du bspw. durch:

intersect(((1,0),(1,2)),((0,1),(2,1)))

was Dir den Punkt \((1,1)\) liefert.

Und die Matrix? Muss die nicht das Programm auch kennen bzw. man die eingeben?

Muss die nicht das Programm auch kennen bzw. man die eingeben?

Wieso? Es geht um die Funktion. Diese benötigt lediglich zwei Linien-Segmente und berechnet daraus den Schnittpunkt.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community