Ich hab einen Code wo mit ich einen voxel darstellen kann. nun möchte ich diesen code so ändern, dass ich 2 voxel darstelle. Kann mir bitte dabbei helfen???
Die positionen sollen [1 1 1] und [5 5 5] sein.
Hallo,
i bitte nicht nutzen, damit überschreibst du die imaginäre Einheit.
Für mehrere Voxel müsste man grundsätzlich nur die Werte für jeden Voxel übergeben und dann eben mehrfach berechnen und zeichnen.
Entweder, jeden Übergabewert (i,d,c,alpha) in eine Matrix umwandeln - also für jeden darzustellenden Voxel eine Zeile anfügen und dann über die Menge der Zeilen laufen lassen.
Oder ein Struct erstellen für jeden Voxel. Wobei ich Variante 1 nehmen würde.
Code:
function voxel() switch(nargin),
case0
iV = [555;111; 444];
d = [111; 222; 1.21.21.2];
c = ['r';'b';'y'];
alpha = [0.7; 0.8;0.9];
case1 [...] %an dere Fälle entsprechend case0 erweitern, so ist es mMn nicht lauffähig
otherwise disp('Too many arguements for voxel');
return %sonst läuft er weiter!
end;
for iVoxel = 1:size(iV)
x =[iV(iVoxel,1)+[0000 d(iVoxel,1) d(iVoxel,1) d(iVoxel,1) d(iVoxel,1)]; ...
iV(iVoxel,2)+[00 d(iVoxel,2) d(iVoxel,2)00 d(iVoxel,2) d(iVoxel,2)]; ...
iV(iVoxel,3)+[0 d(iVoxel,3)0 d(iVoxel,3)0 d(iVoxel,3)0 d(iVoxel,3)]]';
for n=1:3,
if n==3,
x=sortrows(x,[n,1]);
else
x=sortrows(x,[n n+1]);
end;
temp=x(3,:);
x(3,:)=x(4,:);
x(4,:)=temp;
h=patch(x(1:4,1),x(1:4,2),x(1:4,3),c(iVoxel));
set(h,'FaceAlpha',alpha(iVoxel));
temp=x(7,:);
x(7,:)=x(8,:);
x(8,:)=temp;
h=patch(x(5:8,1),x(5:8,2),x(5:8,3),c(iVoxel));
set(h,'FaceAlpha',alpha(iVoxel));
axis([010010010]);
end;
end
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
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.