Abstand Punkt zu Gerade

MiMi

Erfahrenes Mitglied
Hi,
da ich nichtt weiss wohin ich es sonst packen soll, schreib ich es mal hier rein, da ich auch in Java programmiere (falls es woanders hingehoert bitte verschieben).

Also ich Zeichne eine Gerade in Java durch 2 klicks, der dritte Klick gibt die Position an. Dafuer muss ich aber den Abstand berechnen von der Geraden zu dem Punkt.

Also ich habe einen Vektor Punkt A und einen Vektor Punkt B (diese erzeugen die Gerade) und einen Punkt P dieser gibt den Abstand an.
Ich errechne den Abstand momentan wie folgt:
Vektor u = B-A
Vektor v = P-a
Vektor uv = u x v (kreuzprodukt)

distanz = |uv| / |u|

Die Berechnung stimmt auch.
Wie weiss ich aber jetzt ob der Punkt oberhalb oder unterhalb der Geraden ist?
 
Naja, halt irgendwas wo ich weiss auf welcher Seite der Punkt ist.
Aussen oder Innenseite meinetwegen. Wobei das defniert wird von dem wie es gezeichnet wurde. Links nach Rechts, dann ist oben die Aussenseite und unten die Innenseite. Von unten nach oben ist rechts die Aussenseite und links die Innenseite. etc
 
Eine Möglichkeit:
Bestimme den Schnittpunkt der Gerade durch A und B mit dem Normalvektor durch P. Dann kannst Du den Vektor vom Schnittpunkt zu P berechnen und somit die Richtung rausfinden, in der P von der Gerade aus gesehen liegt.
 
Hm, warum einfach wenns auch kompliziet geht? :D

Hab jetzt einfach nach dem Berechnen von uv geschaut ob der z Wert positiv ist, dann muss ich die distanz umdrehen sonst bleibt sie so. Bis jetzt scheint es zu funktionieren.

Java:
			final Vector3D u = pointB.minus( pointA );
			final Vector3D v = pointP.minus( pointA );

			final Vector3D uv = Vector3D.cross( u, v );

			final double uvL = uv.length();
			final double uLength = u.length();

			double distance = uvL / uLength;
			if ( uv.z > 0.0 )
			{
				distance = -distance;
			}
 
Zurück