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

Ebene Punkte

 

turnthepage

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.10.2009, 16:02     Titel: Ebene Punkte
  Antworten mit Zitat      
Hallo zusammen,

ich hätte da mal eine kleine Frage:
Und zwar habe ich gegeben eine Ebene (bestehend aus 4 Punkten) und (sehr) viele Punkte. Jetzt möchte ich auf möglichen einfachen Weg rausfinden welche Punkte sich auf der einen und welche Punkte sich auf der anderen Seite der Ebene befinden. In der Ebene liegen können sie nicht.
Ich möchte vermeiden eine Ebenengleichung aufzustellen (ist bei MATLAB sowieso Quatsch) und ich möchte wenn es sich vermeiden lässt das KOS nicht transformieren.
Wenn ich das machen würde wär die Lösung des Problems ganz leicht aber wahrscheinlich viel zu rechenaufwendig da ich dieses Prozedere oft wiederholen muss.
Mein Ansatz ist bis jetzt folgender 2 Vekoren bilden die in der Ebene liegen, Kreuzprodukt der beiden bringt mir den Normalenvektor der Ebene.
Soweit so gut aber wie kriege ich mit den 3 Vektoren die Lage eines Punktes in Bezug zur Ebene raus?
Leicht wäre es wenn ich jetzt diese 3 Vekoren als Ursprung meines Koordinatensystems wählen würde, dann müsst ich immer nur gucken welcher Eintrag des Normalenvektors ungleich null ist und meine Punkte daraufhin untersuchen ob dieser Eintrag größer oder kleiner null ist. Ich glaube aber dass das Transformieren der sehr vielen Punkte zu viel Rechenzeit beansprucht.
Fällt einem vielleicht eine allgemeingültig Lösung ohne Koordinatentransformation ein?
Danke schon mal im Voraus für eure Hilfe.

Grüße Max


Thomas84

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2009, 05:43     Titel:
  Antworten mit Zitat      
Hab nicht überprüft ob der code wirklich das richtige macht, aber ich würde so vorgehen.
Zuerst die Ebenengleichung berechnen (dazu reichen doch 3 Punkte, oder meinst du einen 4d Raum?) und dann die z-Koordinaten der Ebene und der Punkte vergleichen.

Code:

% Punkte Ebene
e1 = [2 5 4];
e2 = [1 6 2];
e3 = [1.2 5.4 2];

% Punkte ausserhalb  ( p(:,k) sind die Koordinaten des k-ten Punktes)
p = [ 2 4 8;  1 1 -1; 3 4 2; 5 9 1]';

%Ebenengleichung z = mx*x + my*y + az_0
z = [e1(3) e2(3) e3(3)]';
x = [e1(1) e1(1) 1;e2(1) e2(1) 1;e3(1) e3(2) 1];
a = x\z;

% z-Koordinate der Ebene ausrechnen
pez = a(1)*p(1,:) + a(2)*p(2,:) +a(3);

% Vergleich der z-Koordinaten zwischen Punkten und Ebene
e = (p(3,:)-pez > 0)
 
 
Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 14.10.2009, 07:03     Titel:
  Antworten mit Zitat      
Wieso willst du die Ebenengleichung denn nicht aufstellen?

Ich würde über die Hessesche Normalenform gehen:
Code:

% Punkte Ebene
e1 = [2;5;4];
e2 = [1;6;2];
e3 = [1.2;5.4;2];

% Punkte ausserhalb  ( p(:,k) sind die Koordinaten des k-ten Punktes)
p = [ 2 4 8;  1 1 -1; 3 4 2; 5 9 1]';

% normierter Normalenvektor
n = cross(e3-e2,e3-e1);
n = n/norm(n);

% Abstand der Ebene vom Ursprung
d = n'*e1;

% Hier gibt das Vorzeichen des Ergebnisses an, auf welcher Seite der Punkt liegt:
n'*p-d
 
Private Nachricht senden Benutzer-Profile anzeigen
 
turnthepage

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2009, 15:19     Titel:
  Antworten mit Zitat      
Hatte irgendwie ein Brett vorm Kopf. Jetzt wo ich auf eure Antworten schau, leuchtet mir das auch ein. Hätte man auch selbst drauf kommen können.
Tausend Dank!!!
Grüße Max
 
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 - 2024 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.