Laden...

Bestimmung des Abstandes zweier paralleler Strecken

Erstellt von zeh-scharb vor 9 Jahren Letzter Beitrag vor 9 Jahren 3.176 Views
Z
zeh-scharb Themenstarter:in
32 Beiträge seit 2015
vor 9 Jahren
Bestimmung des Abstandes zweier paralleler Strecken

Mir liegen parallele Vektoren vor, deren minimalen Abstand ich berechnen möchte.
Über die Geradengleichung mit mx+n möchte ich nicht gehen, um die Sonderfälle (parallel zu den Koordinaten-Achsen) auszuschließen und weil durch Rundungsfehler die Vectoren in einem Winkel von 179.9xxxx Grad zueinander liegen und sich somit irgentwo treffen würden.

Auf meiner Suche nach einer geeigneten Bibliothek bin ich auf die Klasse Vector2 aus dem XNA-Framework gestoßen. link zur api
Ich habe aber gelesen, dass XNA "tot" sei, bei VS2013 ist es nicht in den Standartbibliotheken enthalten und meine Versuche das Framework nachzuinstallieren waren bisher auch nicht erfolgreich.

Ist euch eine Bibliothek bekannt, die mein Problem löst, ohne das ich selbst (fehlerbehafteten ^^) Code erzeugen muss? 😉

189 Beiträge seit 2014
vor 9 Jahren

Zwei Vektoren sind parallel, wenn sie linear abhängig sind. Wieso dann die Geradengleichung?
XNA ist zwar tot, aber es gibt ja entsprechende Opensource-Projekte, wie MonoGame, die angeblich sehr ähnlich zu XNA sein sollen.

EDIT: Sorry habe schief gelesen. Es geht ja nicht darum ob die Vektoren parallel sind, sondern um die Entfernung ... .

C
2.121 Beiträge seit 2010
vor 9 Jahren

Ich hab die Formeln jetzt nicht im Kopf, die findest du sehr schnell im Internet. Extra dazu eine separate DLL einzusetzen halte ich für völlig überzogen. Da suchst du doch länger nach der DLL als nach der Formel.

37 Beiträge seit 2014
vor 9 Jahren

Hi,

schau dir SharpDX an:
http://sharpdx.org/

Da ist sicher was dabei und SDX steht auch unter MIT-Lizenz.

Gruß
Roland

5.658 Beiträge seit 2006
vor 9 Jahren

Hi zeh-scharb,

Mir liegen parallele Vektoren vor, deren minimalen Abstand ich berechnen möchte.

Kannst du deine Anforderung mal etwas genauer Beschreiben? Was meinst du mit Abstand zweier Vektoren? Punkte können einen Abstand haben, aber Vektoren entsprechen keinen Positionen sondern Richtungen.

Christian

Weeks of programming can save you hours of planning

Z
zeh-scharb Themenstarter:in
32 Beiträge seit 2015
vor 9 Jahren

Vielen Dank schonmal für den Tipp mit SharpDX. Ließ sich ohne Probleme automatisch in der IDE installieren.

Ja ich habe mich unklar ausgedrückt. Ich habe mal ein Bild angehängt.

P
1.090 Beiträge seit 2011
vor 9 Jahren

Wenn du beide Geraden als unendlich Lang betrachtest. Und den kürzesten Abstand als die Zwei Punkte auf einer Graden betrachtest, die im Rechtewinkel die Parallelen Schneidet.

Kannst den Abstand n1 n2 als Hypotenuse nehmen. (Sollte Parallele zur Y-Achse liegen).
Da m = tan(@) und es der gleicher Winkel wie Zwischen n1n2 und und der im Rechtwinkel auf der Parallelen steht. Kannst du den Sinussatz anwenden umgeformt folgt.
sin(@) * Hypotenuse = Ankathete ( dein gesuchter Wert).

Bitte noch mal Prüfen, nicht das ich auf die Schnelle, das was verwechselt habe.
Rundungsfehler wirst du aber immer drin haben.

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

Z
zeh-scharb Themenstarter:in
32 Beiträge seit 2015
vor 9 Jahren

Wenn du beide Geraden als unendlich Lang betrachtest.

Dann scheinden sie sich auf Grund von Rundungsfehlern irgendwann.

Rundungsfehler wirst du aber immer drin haben.

Das ist mir klar 😉
Die Punkte können aber sonstwo liegen, deswegen kann ich daraus keine Geraden machen und hoffen, "dass es schon gutgehen wird" 8)

P
1.090 Beiträge seit 2011
vor 9 Jahren

Du geht doch einfach davon aus das sie die gleiche Steigung haben und somit Parallele sind. Dich interessiert dann nur noch der der Abstand in Y-Richtung (n). Und ja der sonder Fall das sie Parallele zur Y-Achse sind.

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

P
1.090 Beiträge seit 2011
vor 9 Jahren

Ergänzend dazu, was soll den dein kleinster Abstand sein wenn in deiner Skizze P2 in X-Richtung vor P3 liegt.

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

C
2.121 Beiträge seit 2010
vor 9 Jahren

Deine Beschreibung "minimaler Abstand" sagt mir dass es hier nicht um unendlich lange Geraden geht denn die hätten immer den gleichen Abstand. Es geht also um den Abstand zweier Punkte die auf einem Teilstück der Geraden liegen?

Suche nach "Vektor Abstand Punkt Gerade". Damit kannst du evtl. schon was anfangen.

P
1.090 Beiträge seit 2011
vor 9 Jahren

Deine Beschreibung "minimaler Abstand" sagt mir dass es hier nicht um unendlich lange Geraden geht denn die hätten immer den gleichen Abstand. Es geht also um den Abstand zweier Punkte die auf einem Teilstück der Geraden liegen?

Je nach dem welche beiden Punkte du auf den Graden miteinander Vergleichst bekommst du unterschiedlicher Abstände. Grundlegen wird hier dann eine Grade gesucht die die anderen Beiden im Rechten Winkel Schneidet und der Abstand der Schnittpunkte als minimaler Abstand genommen.
(Gilt aber nur für die Euklidische Geometrie, bei z.B. Gekrümmten Räumen ist die "Grade" nicht unbedingt die kürzeste Verbindung zwischen 2 Punkten.)

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

Z
zeh-scharb Themenstarter:in
32 Beiträge seit 2015
vor 9 Jahren

Vielen Dank für eure Antworten.
Da es noch weitere Sonderfälle in der Anordnung gibt, werde ich das Problem nicht automatisch lösen. Der Anwender wird zwei Punkte wählen und bekommt dann über Pythagoras die Entfernung ausgegeben 😉