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

Patch, verschiedene Flächen in anderer Farbe

 

reto
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 20.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2015, 14:23     Titel: Patch, verschiedene Flächen in anderer Farbe
  Antworten mit Zitat      
Hallo,

ich habe ein großes array v (29130x3), welches sozusagen 29130 Punkte beinhaltet wobei die erste Spalte die x-Koordinate darstellt, die 2. Spalte die y-Koordinate und die 3. Spalte die z-Koordinate. Immer 3 aufeinanderfolgende Punkte ergeben ein Dreieck. Alle Dreiecke zusammen ergeben eine Figur, welche ich darstellen möchte.

Dies gelingt mir bereits ganz gut in einer Farbe mit folgendem Code:

Code:

nmbr = size(v, 1);
faces = reshape(1:nmbr, 3, nmbr/3)';
figure();
patch('Faces', faces , 'Vertices', v, 'facecolor', 'red')
axis([-max(v(:)) max(v(:)) -max(v(:)) max(v(:)) -max(v(:)) max(v(:))]);
view(3)
 


Nun möchte ich aber, dass jede Facette (Fläche die 3 Punkte ergeben) in einer anderen Farbe angezeigt wird. Und zwar muss ich für jede Facette einen bestimmten Wert berechnen der zwischen 0 und 100 liegt. Die Fläche soll dann die Farbe annehmen, die dem Wert auf auf einer Farbskala entspricht. Hierfür brauche ich eine Farbskala die von Rot nach Hellgelb und von 0 nach 100 in 5er Schritten verläuft.

Ich hoffe mein Problem ist einigermaßen verständlich formuliert.
Vielen Dank schon mal im Vorraus

mfg reto
Private Nachricht senden Benutzer-Profile anzeigen


cvanommer
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 02.03.15
Wohnort: Garching bei München
Version: R2015a
     Beitrag Verfasst am: 04.03.2015, 14:39     Titel:
  Antworten mit Zitat      
Hallo,

Wenn ich es richtig verstehe möchten Sie dieses haben:

Code:
clc;clear all;close all;

% Gebe hier dein Array v ein
Array = rand(9,3);

% Der Rest sollte automatisch korrekt verlaufen
AnzahlDreiecken = length(Array)/3;
figure
for i=1:AnzahlDreiecken
    p1 = Array(3*i-2,:);
    p2 = Array(3*i-1,:);
    p3 = Array(3*i,:);
    fill3(p1,p2,p3,rand(1,3));
    hold on
end
xlabel('x'); ylabel('y'); zlabel('z');
grid on;


Viel Erfolg!
Vg Christiaan
Private Nachricht senden Benutzer-Profile anzeigen
 
reto
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 20.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.03.2015, 15:13     Titel:
  Antworten mit Zitat      
Dankschön für die Antwort Christian,

leider funktioniert es noch nicht so ganz.
Der fill3 befehl scheint schon das richtige zu sein aber die figur wird leider nicht richtig dargestellt.

Muss ich vll mein array "v" noch irgendwie umstellen?

Ich habe deinen code so übernommen und anstatt "array" habe ich "v" eingesetzt

mfg reto
Private Nachricht senden Benutzer-Profile anzeigen
 
reto
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 20.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.03.2015, 15:27     Titel:
  Antworten mit Zitat      
Habe es nun selbst hinbekommen!
Nochmals vielen Dank Christian, du hast mir sehr geholfen =)


Code:

AnzahlDreiecken = length(v)/3;
figure
for i=1:AnzahlDreiecken
    p1 = v(3*i-2:3*i,1);
    p2 = v(3*i-2:3*i,2);
    p3 = v(3*i-2:3*i,3);
    fill3(p1,p2,p3,rand(1,3));
    hold on
end
axis([-max(v(:)) max(v(:)) -max(v(:)) max(v(:)) -max(v(:)) max(v(:))]);
xlabel('x'); ylabel('y'); zlabel('z');
grid on;
 
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.