Ich habe eine relativ einfache Frage, ich kenne die Antwort, aber ich kann nicht scheinen, die richtige Implementierung mit Python und Numpy zu finden. Die Idee ist, ich habe zwei Zeilen und muss den virtuellen Schnittpunkt finden (ich habe das Beispiel aus https://www.youtube.com/watch?v=kCyoaidiXAU&t=313s verwendet).Line-Line Schnittpunkt in Python mit numpy
Beide Linien haben die Form von r = r0 + t * V, mit r0 als Positionsvektor (ein Punkt, den die Linie durchläuft), t eine Variable und V, der Richtungsvektor. Der Richtungsvektor V kann einfach durch Auffinden des Vektors durch beide Punkte der Linie, z. V = A - B.
Damit ist es möglich, die Leitung zu formulieren:
L1 = r0 (bekannten Punkt) + t (unbekannte Variable) * V (Richtungsvektor)
Jetzt kann ich, leicht zu finden t manuell, aber ich habe keine Ahnung, wie ich Python sagen .. Ich versuchte numpy.linalg.solve, aber das gibt mir eine Matrix, während ich einen einzelnen Wert brauche.
Zum Beispiel:
# Line A and Line B that intersect somewhere
A = LineString([(4., 0.), (4., -3.)])
B = LineString([(6., 2.), (10., 2.)])
# direction vectors for line A and B
v1 = (A[0].x - A[1].x, A[0].y, A[1].y) # --> [0,3]
v2 = (B[0].x - B[1].x, B[0].y, B[1].y) # --> [-4,0]
L1 = A[1] + x * v1
L2 = B[1] + y * v2
Nun, ich dies manuell L1 lösen würde für x durch Lösung:
L1 = [4, 0] + x * [0, 3] = [4, 3x]
L2 = [6, 2] + y * [-4, 0] = [6-4y, 2]
# finding intersection point by solving L1 = L2
4 = 6-4y & 3x = 2
y = 1/2 & x = 2/3
Aber ich habe keine Ahnung, wie numpy/Python zu sagen, wie für x zu lösen Andy.
Jede Hilfe oder Anleitung in die richtige Richtung würde sehr geschätzt werden.
verwandt: https://Stackoverflow.com/q/41797953/67579 –
Sie sagen "mit numpy", aber ich sehe keine numpy hier. Willst du eine nüchterne Lösung? Oder ist das nicht nötig? –
Wenn möglich ohne, gut, aber ich habe versucht Numpy.linalg.solve, so dachte ich, numpy hätte Funktionen, um so etwas zu tun .. – Matthie456