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

convhull Verständnisproblem

 

Ines
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 02.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.09.2011, 13:56     Titel: convhull Verständnisproblem
  Antworten mit Zitat      
Hallo liebe Leute Very Happy

Ich arbeite gerade an meiner Bakk-Arbeit, bei der ich in der 3D-Modellingsoftware Maya 14 Kugeln im 3D Raum gezeichnet habe. Nun brauche ich eine konvexe Hülle, die diese Kugeln umschliesst und stehe vor dem Problem dass ich nicht genau weiß wie das geht.
Ich hab vorher in Matlab noch nichts gemacht und komme mit den Beschreibungen von convhull bzw. qhull nicht wirklich voran.

Ich hab 14 Punkte, die ich so anlege:
p1 = [-1 20 -10.5]
p2 = [-3.5 21 -10.5]
p3 = [11 11 -4.5]
p4 = [4.5 6.5 6]
p5 = [12 8 -8]
p6 = [-3.5 18 -8]
p7 = [-2.5 7.5 3.5]
p8 = [11 7.5 16]
p9 = [5 16 8]
p10 = [9.5 6.5 4]
p11 = [4 13 0]
p12 = [6 7 12]
p13 = [-1 2 6]
p14 = [0 7 11]

Dann bin ich mir nicht sicher wie ich weitermachen soll? Hab probiert die Punkte auf x speichern:
x = [p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14]

und dann mit convhull berechnen:

k = convhull(x)

bekomme aber immer wieder den Fehler:

??? Error using ==> convhull at 27
Needs at least 2 inputs.

Hmm jetzt weiss ich nicht genau was ich da als 2. Input nehmen soll? Oder muss ich jeden Punkt als Input für convhull nehmen? Question

Vielen Dank für etwaige Hilfe!

lg Ines
Private Nachricht senden Benutzer-Profile anzeigen


lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 02.09.2011, 14:12     Titel:
  Antworten mit Zitat      
hi,

du musst diene punkte in x und y Komponenten auf teilen. Hier ist ein beispiel:

Code:


px = rand(10,1);
py = rand(10,1);
ind = convhull(px,py);
plot(px,py,'.')
hold on
plot(px(ind),py(ind),'-r')

 


Gruß,

lilov
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 02.09.2011, 14:14     Titel:
  Antworten mit Zitat      
Steht doch in der Hilfe

Zitat:
K = convhulln(X) returns the indices K of the points in X that comprise the facets of the convex hull of X. X is an m-by-n array representing m points in N-dimensional space. If the convex hull has p facets then K is p-by-n.


Dein Vektor [p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14] hat aber nur eine Zeile (siehe Variablenfenster im Workspace).
Du kannst die einzelnen Punkte mit ; (anstatt ,) vertical anordnen, dann klappt das auch mit convhulln().

Code:
x = [p1;p2;p3;p4;p5;p6;p7;p8;p9;p10;p11;p12;p13;p14]
Private Nachricht senden Benutzer-Profile anzeigen
 
lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 02.09.2011, 14:32     Titel:
  Antworten mit Zitat      
genau,

hatte nicht gesehen dass du es in 3D brauchst. dann kannst du das Ganze so plotten:
Code:


trisurf(K,x(:,1),x(:,2),x(:,3))

 


gruß,

lilov
Private Nachricht senden Benutzer-Profile anzeigen
 
Ines
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 02.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.09.2011, 09:55     Titel:
  Antworten mit Zitat      
Vielen Dank jetzt hat es geklappt! Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Ines
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 02.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2011, 10:06     Titel:
  Antworten mit Zitat      
Noch eine Frage zum Ergebnis:

Das kommt raus:

k =

14 8 13
6 5 2
6 13 5
14 6 2
9 14 2
14 9 8
13 10 5
10 8 5
8 10 13
7 14 13
6 7 13
7 6 14
5 1 2
1 9 2
8 3 5
9 3 8
3 1 5
1 3 9

Das kann aber nicht stimmen, weil es meine Punkte ja gar nicht umfasst. Allein mein y-Wert von Punkt 1 ist schon 20. Da müsste doch auch in der Hülle irgendwo 20 vorkommen, oder sehe ich das falsch?
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 05.09.2011, 10:12     Titel:
  Antworten mit Zitat      
Wer lesn kann ist eindeutig im Vorteil:

Zitat:
K = convexHull(DT) returns the indices into the array of points DT.X that correspond to the vertices of the convex hull.


.. siehe auch den Beitrag von lilov.
Private Nachricht senden Benutzer-Profile anzeigen
 
Ines
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 02.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2011, 10:15     Titel:
  Antworten mit Zitat      
Ähm danke, heisst jetzt auf Deutsch genau was?
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 05.09.2011, 10:28     Titel:
  Antworten mit Zitat      
.. Indices ist die Mehrzahl von Index, entsprechend stehen in k nicht deine Werte, sondern nur Zuordnungen zu deinem Polygonzug.
Private Nachricht senden Benutzer-Profile anzeigen
 
Ines
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 02.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2011, 10:36     Titel:
  Antworten mit Zitat      
Danke! Smile

Ich hab jetzt nur noch eine Frage: Wie bekomme ich meine Werte, damit ich diese im Raum eintragen kann?
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 05.09.2011, 10:39     Titel:
  Antworten mit Zitat      
Code:


müsste klappen..
Private Nachricht senden Benutzer-Profile anzeigen
 
Ines
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 02.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2011, 10:43     Titel:
  Antworten mit Zitat      
Dankeschön, jetzt bin ich glücklich Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 05.09.2011, 10:51     Titel:
  Antworten mit Zitat      
Code:
[x(k(:,1),1),x(k(:,2),2),x(k(:,3),3)]


.. das müssten die reinen Eckpunkte sein!
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.