|
|
| Autor |
Nachricht |
derdasallesprogrammiert Junior Member

 Anmeldungsdatum: 23.01.2005 Beiträge: 26 Wohnort: Heilbronn
|
Verfasst am: 11 Feb 2005 - 12:17:55 Titel: Abstand eines Punktes von einer Geraden im 2D Raum |
|
|
Servus Leute,
steh grade wieder mächtig auf der Leitung, vielleicht kann mir hier jemand runterhelfen.
Ich habe zwei Punkte, aus der mach ich ne Gerade und einen weiteren Punkt von dem ich den Abstand zur Geraden erfahren möchte. Ok, wie es im dreidimensionalen Raum geht (d=|n*(rq-r1)|/|n|) weiß ich, aber wie bei zwei 2D? - Ich fürchte es ist so etwa nicht mehr wie ein Zweizeiler, aber ich will nicht drauf kommen bzw. finde es nicht in Papula oder Inet.
Danke schon mal für Eure Antworten!
Ciao,
Timo |
|
 |
xaggi Senior Member

Anmeldungsdatum: 15.03.2004 Beiträge: 1190
|
Verfasst am: 11 Feb 2005 - 12:46:31 Titel: |
|
|
gegeben: A(a1,a2), B(b1,b2), C(c1,c2)
Gerade durch AB:
y = mx + r
Steigung: m = (a2-b2)/(a1-b1)
Einsetzen von A:
a2 = (a2-b2)/(a1-b1) a1 + r
r = a2 - a1 (a2-b2)/(a1-b1) = (a1 b2 - a2 b1) / (a1 - b1)
y = ((a2-b2) x + a1 b2 - a2 b1)/(a1-b1)
Senkrechte Gerade durch C:
Steigung: m' = - 1/m = (a1-b1)/(b2-a2)
Einsetzen von C liefert:
c2 = (a1-b1)/(b2-a2) c1 + r
r = (b2 c2 - a2 c2 - a1 c1 + b1 c1)/(b2-a2)
y = ((a1 - b1) x + b2 c2 - a2 c2 - a1 c1 + b1 c1)/(b2-a2)
Schnittpunkt bestimmen. => x und y wert
Abstand zu C (= Abstand gerade Punkt): wurzel((c1-x)² + (c2-y)²) |
|
 |
aldebaran Senior Member

Anmeldungsdatum: 30.09.2004 Beiträge: 1673
|
Verfasst am: 11 Feb 2005 - 12:48:14 Titel: |
|
|
Hi
ich habe dazu folgende Vorgehensweisen parat:
erste Möglichkeit: minimaler Abstand eines Punktes P(a,b) von einem Graphen einer (beliebigen; geht auch für Parabeln, Wurzelfunktion , e-Funktionen, usw.) Funktion (Berührstelle B(x|y)): d = sqrt[(a-x)²+(b-f(x))²]
dies ergibt eine Funktion d(x), die man ableitet und dadurch die x-Koordinate des Berührpunktes des Lotes von P auf f(x) erhält, danach ist f(x) zu berechnen und wiederum in d = sqrt(...) einzusetzen;
es gibt weiter die Möglichkeit:
eine Normale auf der Geraden zu erstellen, die Geradengleichung der Normalen durch den P zu erstellen, diese Normale mit der Gerade zu schneiden (= Lotfusspunkt) ; dann mittels Phytagoras den Abstand d = Fusspunkt zu Punkt P zu berechnen |
|
 |
3li7är Senior Member

Anmeldungsdatum: 04.02.2005 Beiträge: 357
|
Verfasst am: 11 Feb 2005 - 13:15:18 Titel: |
|
|
hallo
es ist wirklich einfach:
1. du berechnest den verbindungsvektor der beiden punkte, die auf der geraden liegen ...= (v1|v2)
2. Dann berechnest du einen Normalenvektor zur geraden:
n = (-v2|v1)
3. Der wird noch auf Länge 1 gebracht und dann kannst du die Gerade (genauso wie die Ebene im 3D-Fall) in der Hesse-normalenform hinschreiben.
4. Punkt einsetzen liefert Abstand (mit Vorzeichen)
gruß
otto |
|
 |
derdasallesprogrammiert Junior Member

 Anmeldungsdatum: 23.01.2005 Beiträge: 26 Wohnort: Heilbronn
|
Verfasst am: 13 Feb 2005 - 12:27:40 Titel: |
|
|
Ahh, vielen Dank! Hab jetzt im übrigen auch die richtige Seite im Papula gefunden, dort stehts auch wunderbar drin. Trotzdem Danke!
Ciao,
Timo |
|
 |
Cicaro Junior Member

 Anmeldungsdatum: 16.08.2006 Beiträge: 12
|
Verfasst am: 23 Sep 2010 - 20:21:23 Titel: |
|
|
Ich hab mal eine Frage dazu. Wie kann ich den Vektor der kürzesten Entfernung vom Punkt zur Geraden herausfinden (siehe mein Avatar) ? Ich möchte den roten Vektor als Ergebnis bekommen und am besten ohne direkte Vektorrechnung also nur mit Basisoperationen.
Ich fange mit Folgendem an (alles 2D):
Punkt A=(x1, y1)
Gerade mit B=(x2, y2) und C=(x3, y3):
x=x2+u*(x3-x2)
y=y2+u*(y3-y2)
Ich will bloß keinen neuen Thread erstellen. Von denen gibt es schon genug denke ich. Aber ich finde keinen mit Lösung dazu.
________________________________
Mein Lösungsversuch (Schmierzettel):
1) Irgendeinen senkrechten Vektor zur Geraden finden:
Richtungsvektor der Geraden = (x3-x2, y3-y2)
senkrechter Vektor zur Geraden = (y3-y2, x2-x3) = (dx, dy)
2) Schnittpunkt der Geraden mit deren Senkrechten durch den Punkt A finden:
Gerade:
x=x2+u*(x3-x2)
y=y2+u*(y3-y2)
Senkrechte:
x=x1+v*dx
y=y1+v*dy
=> x2+u*(x3-x2)=x1+v*dx | nach v auflösen
=> y2+u*(y3-y2)=y1+v*dy | nix tun
<=> v=[(x2-x1)+u*(x3-x2)]/dx
<=> y2+u*(y3-y2)=y1+v*dy | v einsetzen
<=> y2+u*(y3-y2)=y1+[(x2-x1)+u*(x3-x2)]/dx*dy | ausmultiplizieren
<=> y2+u*(y3-y2)=y1+(x2-x1)*dy/dx+u*(x3-x2)*dy/dx | -y2 | *dx
<=> u*(y3-y2)*dx=(y1-y2)*dx+(x2-x1)*dy+u*(x3-x2)*dy | -u*(x3-x2)*dy
<=> u*(y3-y2)*dx-u*(x3-x2)*dy=(y1-y2)*dx+(x2-x1)*dy | u ausklammern
<=> u*[(y3-y2)*dx-(x3-x2)*dy]=(y1-y2)*dx+(x2-x1)*dy | /[(y3-y2)*dx-(x3-x2)*dy]
<=> u=[(y1-y2)*dx+(x2-x1)*dy]/[(y3-y2)*dx-(x3-x2)*dy]
<=> u=[(y1-y2)*(y3-y2)+(x2-x1)*(x2-x3)]/[(y3-y2)*(y3-y2)-(x3-x2)*(x2-x3)]
Schnittpunkt D = (x2+u*(x3-x2), y2+u*(y3-y2)) = (x4, y4)
3) Vektor vom Punkt A zum Punkt D:
v = D-A = (x4-x1, y4-y1)
Zuletzt bearbeitet von Cicaro am 23 Sep 2010 - 21:21:47, insgesamt 5-mal bearbeitet |
|
 |
Annihilator Senior Member

 Anmeldungsdatum: 18.05.2007 Beiträge: 6395 Wohnort: (hier nicht mehr aktiv)
|
Verfasst am: 23 Sep 2010 - 20:50:11 Titel: |
|
|
Das Prinzip klingt gut aber dein konkretes Vorgehen ist etwas umständlich. Wenn die Gerade durch die Gleichung g(t) = o + t * r gegeben ist und du den Punkt x betrachtest, dann kannst du die Hilfsgerade h(u) = x + u * (-r2, r1) betrachten und den Schnittpunkt s von g und h ermitteln. Dein gesuchter Vektor ist dann s-x _________________ Schnauze voll von Error 500 und co?
bildungs-foren.de |
|
 |
Cicaro Junior Member

 Anmeldungsdatum: 16.08.2006 Beiträge: 12
|
Verfasst am: 23 Sep 2010 - 20:58:48 Titel: |
|
|
| Ja das ist der gleiche Lösungsweg. Wie gesagt ich brauche die gesamte Rechnung mit Basisoperationen der Mathematik. In meinem Anwendungsbereich habe ich keine Vektoroperationen zur Verfügung. Ich muss alles in +, -, *, / auseinanderdröseln ... |
|
 |
Annihilator Senior Member

 Anmeldungsdatum: 18.05.2007 Beiträge: 6395 Wohnort: (hier nicht mehr aktiv)
|
Verfasst am: 23 Sep 2010 - 21:13:46 Titel: |
|
|
(r2·(x1-o1) - r1·(x2-o2)) / (r1²+r2²) * (-r2, r1)
Gibt mehrere Möglichkeiten darauf zu kommen. Die eine wäre einfach die oben genannten Schritte auszuführen und eine andere mit einer Überlegung zum Thema "orthogonale Projektion":
Gegeben sei ein n-dimensionaler Skalarprodukt-Vektorraum V mit Basis (b_1, b_2, ..., b_n). Die Formel für die orthogonale Projektion nach V eines Vektors x aus einem Oberraum von V lautet:
proj(x) = [Summe über ((<b_k, x>/<b_k, b_k>) * b_k) für (k von 1 bis n)]
Wobei <., .> für das in V definierte Skalarprodukt steht. In deinem Fall hätten wir einen Raum mit Basis r, der quasi um den Vektor o verschoben ist. Darum translatieren wir x um -o und projezieren mal:
proj(x) = (<r, x-o>/<r, r>) * r
Damit haben wir quasi den oben angesprochenen Schnittpunkt s und müssen also nur noch mit dem verschobenen x subtrahieren:
(<r, x-o>/<r, r>) * r - (x-o)
Wenn du das ausrechnest, kommst du zwar auf eine etwas andere Formel, die aber auch das gesuchte Ergebnis liefert. _________________ Schnauze voll von Error 500 und co?
bildungs-foren.de |
|
 |
|