Kürzesten abstand zu einer Geraden ermitteln



  • Hi,

    ich habe zwei Koordinaten x1,y1 und x2,y2, welche eine Gerade beschreiben. Weiterhin habe ich einen Punkt dx,dy, welcher irgend wo im Koordinatensystem und im Extremfall sogar auf dieser Geraden liegen kann.

    Ich suche jetzt eine Formel, mit der ich den geringsten Abstand von diesem Punkt zur Geraden ermitteln kann. Wie geht sowas?



  • Ich würde Vektorrechnung nutzen.
    Theoretisch erstellst du einfach eine Hilfebene aus dem gegebenen Punkt und dem Einheitsrichtungsvektors der Gerade (sodass die Ebene senkrecht zur Gerade steht). Anschließend berrechnest du den Schnittpunkt der Gerade mit der Ebene (einfaches LGS) und hast anschließend einen Punkt auf der Gerade und auf der Ebene zugleich. Jetzt kannst du einfach die Abstandsformel zweier Punkte nutzen und du hast AFAIK den kürzesten Abstand.



  • Jodocus schrieb:

    Ich würde Vektorrechnung nutzen.
    Theoretisch erstellst du einfach eine Hilfebene aus dem gegebenen Punkt und dem Einheitsrichtungsvektors der Gerade (sodass die Ebene senkrecht zur Gerade steht). Anschließend berrechnest du den Schnittpunkt der Gerade mit der Ebene (einfaches LGS) und hast anschließend einen Punkt auf der Gerade und auf der Ebene zugleich. Jetzt kannst du einfach die Abstandsformel zweier Punkte nutzen und du hast AFAIK den kürzesten Abstand.

    Ja, so gehts, aber sein Fall ist nur zweidimenional, da gehts noch einfacher.
    Die Gerade in Normalenform aufstellen und die Abstandsformel von der Hesseschen Normalenform benutzen.



  • Hoppla, ist ja nur 2D. 😃
    Dann ist volkards Weg natürlich der sinnvollere.



  • Jodocus schrieb:

    Theoretisch erstellst du einfach eine Hilfebene aus dem gegebenen Punkt und dem Einheitsrichtungsvektors der Gerade (sodass die Ebene senkrecht zur Gerade steht).

    Ähm ja...und wie geht das?

    Ach ja, wenn sich das auch in einer 3D-Welt machen lässt wäre das natürlich noch besser!



  • 3D würde ich noch einen Schritt weiter gehen als Jodocus.
    Die Gerade sei
    g: x=sg+s*rg
    Der Punkt sei
    p
    Die Hilfsebene kriege ich, wenn ich schreibe
    h: x=sg+s*rg+t*rh
    mit rh muß senkrecht zu rg und zu (p-sg) sein.
    also
    rh:=rg (kreuzprodukt) (p-sg)
    und dann eine normaleform von h aufstellen.
    der normalenvektor ist
    n:=rg (kreuzprodukt) rh
    also
    h: (x-sg)*n=d
    damit d ausrechnen.
    dann als hessesche normalenform(Abstandsformel) schreiben.
    (x-sg)*n-d
    h: ---------- = 0(abstand zu x)
    [n]
    und p für x einsetzen und ausrechnen.

    Wenn das Kreuzprodukt leicht von der Hand geht, spart das Arbeit.



  • Hesse'sche Normalform: Normalenform, bei der der Normalenvektor durch seinen Betrag geteilt wird.

    lg, freakC++



  • die hesse'sche normalenform geht doch auch im 3 dimensionalen ?!? 😕

    - wobei n0 der normierte normalenvektor der ebene(oder halt der gerade) ist -> normiert heisst dass die länge 1 ist, sprich du teilst jede komponente einfach durch den betrag
    - x ist der stütz punkt der gerade
    - p ist der punkt zu dem der abstand errechnet werden soll
    und d kist der letztendliche abstand
    \[ d = \left| ( \vec{x} - \vec{p} ) * \vec{n_{0}} \right| \]


Anmelden zum Antworten