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

4 Punkte in einer Ebene überprüfen

 

HaggeL
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 06.10.08
Wohnort: Erlangen
Version: 7.5.0 (R2007b)
     Beitrag Verfasst am: 25.10.2008, 11:45     Titel: 4 Punkte in einer Ebene überprüfen
  Antworten mit Zitat      
Hallo Leute,

ich habe einen Datensatz mit nummerierten Koordinaten
Knoten=
KoordinatenNummer x y z
KoordinatenNummer x y z
...

und einen Datensatz mit (eigentlich) rechteckigen Flächen, in dem einfach 4 Nummer angegeben sind, die sich auf den ersten Datensatz beziehen

FlaecheQ=
Flaechennummer KoordinatenNummer KoordinatenNummer KoordinatenNummer
Flaechennummer KoordinatenNummer KoordinatenNummer KoordinatenNummer
Flaechennummer KoordinatenNummer KoordinatenNummer KoordinatenNummer
...

Nun habe ich aber den Verdacht, dass die 4 Koordinaten nicht in einer Ebene liegen.
Um das zu checken, hab ich mir folgendes geschrieben


Code:

inEbene=0;
nichtInEbene=0;
for i=1:length(FlaecheQ)
    P1=FlaecheQ(i,1);
    P2=FlaecheQ(i,2);
    P3=FlaecheQ(i,3);
    P4=FlaecheQ(i,4);
   
    for i=1:length(Knoten)
        if Knoten(i,1)==P1
            K1=Knoten(i, 2:4);
        end
        if Knoten(i,1)==P2
            K2=Knoten(i, 2:4);
        end
        if Knoten(i,1)==P3
            K3=Knoten(i, 2:4);
        end
        if Knoten(i,1)==P4
            K4=Knoten(i, 2:4);
        end
    end
    normal1 = cross(K1-K2, K1-K3);
    normal2 = cross(K1-K4, K1-K3);
    teiler1 = normal1(1)/normal2(1);
    teiler2 = normal1(2)/normal2(2);
    teiler3 = normal1(3)/normal2(3);
    if isequal(teiler1, teiler2, teiler3)==1
        inEbene=inEbene+1;
    else
        nichtInEbene=nichtInEbene+1;
    end
end
inEbene
nichtInEbene


Er sucht sich die richtigen Koordinaten raus. Allerdings gibt er mir aus, das alle 4 Punkte, die eigentlich eine Fläche definieren sollten, nicht in einer Ebene liegen. Das finde ich ziemlich Shocked.
Kann es sein, dass ich mich bei dem zweiten Teil des Skripts (Überprüfen, ob 4 Punkte in einer Ebene liegen) vertan habe?

Ich glaube nicht, dass es an einem Rundungsfehler liegt.

Die Daten für den ersten Durchgang der Schleife sind:
Code:

FlaecheQ(1,:)= 9053       9441      14297      14299      14298

Knoten=

9441 0.363870E+01 0.362249E+02 0.138950E+02
...
14297 0.272817E+01 0.362262E+02 0.138952E+02
14298 0.355740E+01 0.349904E+02 0.138830E+02
14299 0.266681E+01 0.349876E+02 0.138825E+02
...
 


Wobei er
Code:

teiler1 =  0.3961


teiler2 =  -1.0873


teiler3 =  -1.0261
 

als Teiler auswirft. Kann doch also keine Rundungsfehler oder so sein?

Ich hoffe ihr könnt einen Fehler entdecken, oder mir zumindest sagen, dass ich recht habe und die Punkte nicht auf einer Ebene liegen.

Gruß HaggeL
_________________

Nimm das Leben nicht zu ernst, du kommst niemals lebend raus!
Private Nachricht senden Benutzer-Profile anzeigen


Schrank
Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 10.07.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 25.10.2008, 12:07     Titel:
  Antworten mit Zitat      
Hallo HaggeL,
sehe ich das gerade richtig das du keine Lust hast händisch zu prüfen ob deine Punkte in einer Ebene liegen und wir daher deinen Code prophylaktisch debuggen sollen?
Gruß Schrank
Private Nachricht senden Benutzer-Profile anzeigen
 
HaggeL
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 06.10.08
Wohnort: Erlangen
Version: 7.5.0 (R2007b)
     Beitrag Verfasst am: 27.10.2008, 10:21     Titel:
  Antworten mit Zitat      
Nein!

Ob der Code grundsätzlich funktioniert, habe ich mit einfachen Zahlen schon getestet.

Ich habe auch schon eine Ebene in Gleichungsform dargestellt und wollte den 4. Punkt einzusetzen (händisch). Allerdings sind die Terme, die da rauskommen, nicht gerade taschenrechnerfreundlich. Shocked

Ich wollte bloss wissen, ob jemand Erfahrung mit deartigen Datensätzen hat. Vielleicht hab ich ja irgendein Detail aus unwissenheit übersehen. Z.B. das bei solchen Zahlenwerten der Rundungsfehler viel ausmacht (was ich mir jetzt nicht gerade vorstellen kann).

Gruß HaggeL
_________________

Nimm das Leben nicht zu ernst, du kommst niemals lebend raus!
Private Nachricht senden Benutzer-Profile anzeigen
 
HaggeL
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 06.10.08
Wohnort: Erlangen
Version: 7.5.0 (R2007b)
     Beitrag Verfasst am: 27.10.2008, 10:25     Titel:
  Antworten mit Zitat      
Hab die Lage der Punkte gerade nochmal mit einer Determinante getestet und es kommen Werte mit e-4 raus.

Gibts einen groben Richtwert, ab wann man Näherungsweise von 0 ausgehen kann?

Gruß HaggeL

PS: Mein Problem hat sich gelöst. Hatte im Export-Skript eine } zu viel geschrieben. D.h. das Zielprogramm erkennt die Flächen jetzt als Ebenen und alles ist wunderbar Very Happy
_________________

Nimm das Leben nicht zu ernst, du kommst niemals lebend raus!
Private Nachricht senden Benutzer-Profile anzeigen
 
Schrank
Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 10.07.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 27.10.2008, 12:25     Titel:
  Antworten mit Zitat      
Hallo HaggeL,
dann tut mir mein Beitrag von oben leid! Schön das sich Dein Problem gelöst hat.
Gruß Schrank
Private Nachricht senden Benutzer-Profile anzeigen
 
HaggeL
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 06.10.08
Wohnort: Erlangen
Version: 7.5.0 (R2007b)
     Beitrag Verfasst am: 27.10.2008, 14:21     Titel:
  Antworten mit Zitat      
Macht nichts. Very Happy
_________________

Nimm das Leben nicht zu ernst, du kommst niemals lebend raus!
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 - 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.