Ich habe einen 3D-Punkt P und ein Liniensegment, definiert durch A und B (A ist der Startpunkt des Liniensegments, B das Ende).
Ich möchte den kürzesten Abstand zwischen P und der Linie AB berechnen.
Die Entfernung eines Punktes zu einer unendlichen Linie zu berechnen war einfach, da es sich um eine Lösung auf Wolfram Mathworld , und ich habe das implementiert, aber ich muss dies für eine Zeile mit endlicher Länge tun.
Ich habe es nicht geschafft, eine zuverlässige Lösung dafür in 3D zu finden, nachdem ich mich viel umgesehen habe.
Ich habe Algorithmen implementiert, um das Skalarprodukt, das Kreuzprodukt, die Magnitude usw. in C ++ mit einer Struktur zu berechnen, die die Floats x, y und z enthält.
Pseudocode, Links oder Code in so ziemlich jeder Sprache dafür wäre großartig.
softSurfer hat ein nettes Tutorial, das zeigt, wie man berechne den Abstand von einem Punkt zu einer Linie, einem Strahl oder einem Segment in 2D und 3D .
Das ist ziemlich einfach. Behandeln Sie Ihr Liniensegment zunächst so, als wäre es ein Unendliches und suchen Sie den Punkt R auf der Linie, wo ein senkrechter Strahl von der Linie bei R durch Ihren Punkt P verläuft. Wenn R zwischen A und B auf der Linie liegt, dann die kürzeste Entfernung ist PR. Ansonsten ist die Küstenentfernungsentfernung kleiner als die von PA und PB.
Ich weiß, diese Frage ist wenig alt, aber um anderen zu helfen:
Hier haben Sie einen Link zum Pseudocode (sehen Sie unter Entfernung eines Punktes zu einem Ray oder Segment ):
Pseudocode und C ++ - Implementierung
Links zu mehrsprachigen Implementierungen (Schauen Sie unter Implementierte Implementierungen nach):