2013-04-14 8 views
5

Ich versuche, 2 Würfel in einer M-Datei zu zeichnen. Das ist mein Code:Wie kann ich mehrere 3d Würfel in Matlab zeichnen

 
    format compact 
    h(1) = axes('Position',[0.2 0.2 0.6 0.6]); 
    vert = [1 1 1; 1 2 1; 2 2 1; 2 1 1 ; ... 
      1 1 2;1 2 2; 2 2 2;2 1 2]; 
    fac = [1 2 3 4; ... 
     2 6 7 3; ... 
     4 3 7 8; ... 
     1 5 8 4; ... 
     1 2 6 5; ... 
     5 6 7 8]; 
    patch('Faces',fac,'Vertices',vert,'FaceColor','r'); % patch function 
    material shiny; 
    alpha('color'); 
    alphamap('rampdown'); 
    view(30,30); 

Jetzt möchte ich zweiten Würfel zeichnen und im ersten ersetzen. Weiß jemand, wie ich das machen kann ?

Antwort

2

Verwenden hold on Befehl ...

format compact 
h(1) = axes('Position',[0.2 0.2 0.6 0.6]); 
%----first cube------ 
vert = [1 1 1; 1 2 1; 2 2 1; 2 1 1 ; ... 
     1 1 2;1 2 2; 2 2 2;2 1 2]; 
fac = [1 2 3 4; ... 
    2 6 7 3; ... 
    4 3 7 8; ... 
    1 5 8 4; ... 
    1 2 6 5; ... 
    5 6 7 8]; 
patch('Faces',fac,'Vertices',vert,'FaceColor','r'); % patch function 
material shiny; 
alpha('color'); 
alphamap('rampdown'); 
view(30,30); 

%------second cube----- 
hold on; 
vert2 = [1 1 1; 1 2 1; 2 2 1; 2 1 1 ; ... 
      1 1 2;1 2 2; 2 2 2;2 1 2]/5; 
    fac2 = [1 2 3 4; ... 
     2 6 7 3; ... 
     4 3 7 8; ... 
     1 5 8 4; ... 
     1 2 6 5; ... 
     5 6 7 8]; 
    patch('Faces',fac2,'Vertices',vert2,'FaceColor','b'); % patch function 
+0

danke für deine antworten .. aber ich will ersetzen zweiten würfel in der ersten .. –

+0

meinst du "platz" der zweite würfel in der ersten? Dann müssen Sie die Koordinate von vert2 ändern und den ersten Würfel durchsichtig machen, damit Sie den zweiten Würfel sehen können. – Cici

7

Vielleicht möchten Sie etwas wie folgt aus: enter image description here

Sie nur etwas brauchen, um Ihren ursprünglichen Code zu ändern: 1. einen neuen Cube definieren, die platziert werden soll in der ersten. 2. Bitte denken Sie daran, 'Halten' nach 'Patch' hinzufügen.

clf; 
figure(1); 
format compact 
h(1) = axes('Position',[0.2 0.2 0.6 0.6]); 
vert = [1 1 -1; 
     -1 1 -1; 
     -1 1 1; 
     1 1 1; 
     -1 -1 1; 
     1 -1 1; 
     1 -1 -1; 
     -1 -1 -1]; 

fac = [1 2 3 4; 
     4 3 5 6; 
     6 7 8 5; 
     1 2 8 7; 
     6 7 1 4; 
     2 3 5 8]; 

% I defined a new cube whose length is 1 and centers at the origin. 
vert2 = vert * 0.5; 
fac2 = fac; 

patch('Faces',fac,'Vertices',vert,'FaceColor','b'); % patch function 
axis([-1, 1, -1, 1, -1, 1]); 
axis equal; 

hold on; 

patch('Faces', fac2, 'Vertices', vert2, 'FaceColor', 'r'); 
material metal; 
alpha('color'); 
alphamap('rampdown'); 
view(3); 
Verwandte Themen