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

Zellen erstellen und bearbeiten

 

Rasheed
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 09.08.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.08.2007, 10:20     Titel: Zellen erstellen und bearbeiten
  Antworten mit Zitat      
hallo,

bin mir nicht sicher ob das in Matlab möglich ist, aber frage einfach trotzdem mal.

Ich generiere mir 8 Punkte im 3D Raum mit den Eigenschaften Punkt i (xi,yi,zi).

Problem 1:
Jetzt möchte ich mir aus diesen Punkten eine Zelle in Form von einem unregelmäßigen Hexaeder (Flächen können nicht gleich groß,nicht parallel zueinander sein) erstellen.

Problem 2:
Anschließend möchte ich dieser gebildeteten Zelle in in Abhängigkeit einer bestimmten Eigenschaft eine Farbe zuweisen.

Ich hoffe ich konnte mein Problem erklären und hoffe dass mir jmd. helfen kann.
Vielen Dank im Voraus.
Private Nachricht senden Benutzer-Profile anzeigen


Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 16.08.2007, 12:27     Titel: patch
  Antworten mit Zitat      
Hallo,

was Du suchst ist der patch-Befehl. Man kann es zum Beispiel so machen:

Code:

% Koordinaten festlegen
x=[0 0 1 2 2 1];
y=[0 1 2 1 0 -1];
z = [0 1 2 2 1 0];

%Flächen festlegen
vert = [x',y',z'];   % Ecken
fac = [1 2 3 4 5 6]; % Flächen, hier nur eine. Reihenfolge der begrenzenden Ecken eingeben

% Fläche konstruieren
p = patch('Faces',fac,'Vertices',vert);

% Fläche einfärben je nach Eigenschaft
if x(1) == 0
    set(p,'FaceVertexCData',[.5 1 .5],'FaceColor','flat');
else
    set(p,'FaceVertexCData',[.75 .75 .75],'FaceColor','flat');
end
 


Bei dieser Variante muss man die Farben als RGB-Tripel angeben. patch bietet aber auch andere Möglichkeiten, z. B.

Code:

 patch(x,y,z,'r')
 


wenn man eine rote Fläche mit den angegebenen Ecken haben will. Dann müsste man die Eigenschaft vorher abfragen.

Hilft das weiter?

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Rasheed
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 09.08.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2007, 10:16     Titel:
  Antworten mit Zitat      
Hallo Bijck,

vielen Dank der Patch-Befehl hat mir deutlich weitergeholfen. Nun schaffe ich den verschiedenen Flächen des 'ausgearteten' Würfels Farben zuzuweisen.

jetzt stehe ich bereits vor dem nächsten Problem.

1. kann man den Würfel durch den patch Befehel auch in 3D Ansicht anzeigen lassen?

2. die Farben zuweisung in Abhängigkeit einer Kenngröße für jede Fläche klappt noch nicht. Am liebsten hätte ich es so z.B.

wenn 'Kenngröße' zw. 0.75 und 1, dann Fläche i rot
wenn 'Kenngröße' zw. 0.5 und 0.75, dann Fläche i blau
wenn 'Kenngröße' zw. 0.25 und 0.5, dann Fläche i grün
wenn 'Kenngröße' zw. 0.0 und 0.25, dann Fläche i gelb.

Ich hoffe du verstehst meine Frage.

Vielen Dank im voraus.
Private Nachricht senden Benutzer-Profile anzeigen
 
Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 18.08.2007, 09:42     Titel:
  Antworten mit Zitat      
Hallo Rashid,


das Einfärben sollte sich mit einem eigens erstellten colormap mit nur 4 Einträgen lösen, wenn Du dazu noch mit caxis([0 1]) den Farbbereich entsprechend skalierst.
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 20.08.2007, 10:18     Titel:
  Antworten mit Zitat      
Hallo Rasheed,

schön, dass es klappt. Zu Deinen Fragen:

1. Das geht einfach, indem Du auf die "Rotate 3D"-Schaltfläche der figure klickst (Würfel mit Pfeil drumrum). Oder von einer Funktion aus mit dem "view"-Befehl, z.B.
Code:
view([0.5 0.3 0.3])


2. Hm, Du hast also verschiedene Flächen mit dem patch-Befehl erstellt, z.B. so:

Code:

vert = [...];
fac = [...];

for index = 1:AnzahlDerFlaechen
    Flaeche = fac(index,:);
    p(index) = patch('Faces',Flaeche,'Vertices',vert);
end
 


Und Du hast einen Vektor mit den Kenngrößen jeder Fläche. Dann kannst Du setzen:

Code:

set(p(Kenngroesse<=1 && Kenngroesse>=0.75),'FaceVertexCData',[1 0 0],'FaceColor','flat');  % rot
set(p(Kenngroesse<0.75 && Kenngroesse>=0.5),'FaceVertexCData',[0 0 0],'FaceColor','flat');  % blau
set(p(Kenngroesse<0.5 && Kenngroesse>=0.25),'FaceVertexCData',[.5 .0 .0],'FaceColor','flat'); % grün
set(p(Kenngroesse<0.25 && Kenngroesse>=0),'FaceVertexCData',[.6 0 0],'FaceColor','flat');  % gelb
 


Hilft das? Sonst gerne weiterfragen! Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
aziz
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 25.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.05.2012, 10:16     Titel:
  Antworten mit Zitat      
kann mir jemend wie ich eine schleife schreiben kann,die Differenz zwischen zwei zellen(und zwar zwischen werte von gleichen Stelle) in 3D form berechnet.
x=111
y=17
z=unterschiedlisch
beispiel für eine bestimmte zelle:

LKS3{1,1}(1,4).ha=LKS2{1,1}(1,4).ha-LKS1{1,1}(1,4).ha

ich brauche jetzt eine Forschleife denke ich mal für alle zellen also allgemein
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.