WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

abstände punkte zu geraden/ebenen

 

roddi
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2011, 15:20     Titel: abstände punkte zu geraden/ebenen
  Antworten mit Zitat      
hi zusammen,

ich weiß, dass das thema schon öfters hier angesprochen wurde, aber bisher habe ich noch keinen hinweis auf mein problem entdecken können.

also wie ich den abstand prinzipiell ausrechne und in matlab implementiere ist mir klar und das funktioniert auch soweit ganz gut.
ich würd aber gleichzeitig auch gerne wissen, ob der abstand wirklich zu der "richtigen" gerade gehört und nicht die gerade künstlich verlängert wurde um orthogonalität zu erhalten.
ich bin mir gerade nicht sicher, ob man das verstehen kann was ich meine Wink

also das würde mich interessieren:(1)

__________+

+----------------------+

und das wiederum interessiert mich nicht: (2)

_______________________+

+----------------------+

also ich hätte gerne nur abstandswerte wie in situation (1). weiß jemand da eine effiziente methode?
im moment rechne den schnittpunkt aus und schau dann ob der auf meiner geraden liegt. dabei muss ich aber den umweg über eine symbolische rechnung gehen und das würde ich gerne vermeiden (ist bestimmt nicht der beste weg, aber mir fällt im moment nix anderes ein).

bin für alles dankbar!

gruß
tim
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.12.2011, 18:12     Titel: Re: abstände punkte zu geraden/ebenen
  Antworten mit Zitat      
Hallo roddi,

Wenn Du Deinen Code posten würdest, könnte ich gleich mit den von Dir gewählten Variablen-Namen antworten.

Geometrisch läßt sich das Problem schnell lösen: Wenn Du das Dreieck aus den zwei Punkten der Strecke und dem weiteren Punkt betrachtest, ist einer der Winkel an der Strecke größer als 90 Grad.

Noch etwas Theorie:
Code:
% P1 to P2 build the line, Q is the additional point:
P1 = rand(1, 3);
P2 = rand(1, 3);
Q = rand(1, 3);

N = (P2 - P1) / norm(P2 - P1);  % Normal vector along the line
P1Q = Q - P1;  % Line from one point to Q
S = P1 + (N * P1Q') * N;  % S is intersection point on the (enlarged) line

Dist = norm(Q - S);

% Now the shortest connection is line from Q to S.
% Check if S is inside the limits. Then the angle between P1-S and P2-S ist large:
inside = dot(P1-S, P2-S) < 0;

Wie immer bei Code zu 3D-Berechnungen, den man irgendwoher kopiert: Ausgiebig testen! Auch mit Punkten S, die wegen Rundungsfehlern nicht genau auf der Linie liegen. Oder mit Q = 1000000 * rand(1, 3). Und dann nochmal testen. Bugs in 3D-Berechnungen sind hinterrücksig und teufeltückisch.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
roddi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.12.2011, 08:37     Titel:
  Antworten mit Zitat      
Super, schon mal vielen Dank! Das hilft mir schon sehr.

So wie es in deinem Code implementiert ist, ist es ja so, dass wenn der Schnittpunkt zwischen den beiden Geradenpunkten liegt, die jeweiligen Vektoren zum Schnittpunkt "gegenläufig" sind und daher der cos -1 wird. Wenn der Punkt außerhalb liegt, sind die Vektoren parallel und der cos wird 1. Nur damit ich das auch wirklich verinnerlicht hab?!
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 16.12.2011, 10:54     Titel:
  Antworten mit Zitat      
Hallo roddi,

Genau. So sollte es sein.
Ob es auch wirklich so funktioniert, musst Du unbedingt an ein paar Beispielen Testen: mit Punkten auf beiden Seiten der Strecke, bei waagrechter, senkrechter und schräger Strecke, wenn die Länge der Strecke Null ist, wenn der Schnittpunkt auf einem Randpunkt liegt, und natürlich noch in allen Fällen, die ich vergessen habe.
Solche geometrischen Aufgaben sind fehleranfällig.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.