Finden Sie den nächstgelegenen Konvergenzpunkt einer Gruppe von VektorenPython

Python-Programme
Anonymous
 Finden Sie den nächstgelegenen Konvergenzpunkt einer Gruppe von Vektoren

Post by Anonymous »

Ich versuche den Punkt zu finden, der einer Gruppe von Vektoren am nächsten liegt.
Für den Kontext sind die Vektoren umgekehrte optische Pfade, die von demselben Punkt ausgesandt werden, nachdem sie eine Linse verlassen haben. Ihre Rückprojektionen konvergieren zwar aufgrund der sphärischen Aberration nicht in einem einzigen Punkt, sind aber einer Konvergenz in Richtung eines Punktes ziemlich nahe, wie in der Abbildung unten dargestellt.
Image

(Zur einfacheren Simulation zeigt das positive Z nach unten)
Ich glaube das Wenn ich den nächstgelegenen Punkt finde, würde ich einen Punkt finden, der den kürzesten Abstand zu all diesen Linien hat. Und schrieb die Methode wie folgt:

Code: Select all

def FindConvergingPoint(position, direction):

A = np.eye(3) * len(direction) - np.dot(direction.T, direction)
b = np.sum(position - np.dot(direction, np.dot(direction.T, position)), axis=0)

return np.linalg.pinv(A).dot(b)
Für die obige Abbildung und die visuelle Beurteilung hätte ich erwartet, dass der Punkt bei etwa [0, 0, 20] liegt
Dies ist jedoch nicht der Fall. Die Methode ergab ein Ergebnis von [ 0., 188.60107764, 241.13690715], was weit von dem erwarteten Konvergenzpunkt entfernt ist.
Ist mein Algorithmus fehlerhaft oder habe ich etwas übersehen? zur Umsetzung?

Anbei die Daten für die Vektoren:

Code: Select all

position = np.array([
[0, 0, 0],
[0, -1.62, 0.0314],
[0, -3.24, 0.1262],
[0, -4.88, 0.2859],
[0, -6.53, 0.5136],
[0, -8.21, 0.8135],
[0, -9.91, 1.1913],
[0, -11.64, 1.6551],
[0, -13.43, 2.2166],
[0, -15.28, 2.8944],
[0, -17.26, 3.7289]
])

direction = np.array([
[0, 0, 1],
[0, 0.0754, 0.9972],
[0, 0.1507, 0.9886],
[0, 0.2258, 0.9742],
[0, 0.3006, 0.9537],
[0, 0.3752, 0.9269],
[0, 0.4494, 0.8933],
[0, 0.5233, 0.8521],
[0, 0.5969, 0.8023],
[0, 0.6707, 0.7417],
[0, 0.7459, 0.6661]
])

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post