function varargout = voxel(i,d,c,alpha) % VOXEL Draw a 3-D voxel. % VOXEL(S) Draws a voxel centered at the specified point S. S is a % coordinate point in the form [ x y z ]. % VOXEL(S,EDGE) Draws a voxel using the specified EDGE size. If no % EDGE is provided, it is set by default to 1. EDGE is a three % element vector [dx,dy,dz]. % VOXEL(S,EDGE,C) Uses the specified colour C to draw the faces of the % voxel. C is a character string to specify color (type 'help plot' % to see list of valid colors). If no C is provided, it is set by % default to blue. % VOXEL(S,EDGE,C,ALPHA) Uses the given ALPHA to define the transparency % level (1 for opaque, 0 for transparent). If no ALPHA is given, it % is set to 1. % H = VOXEL(...) Return a vector of handles for the voxel drawn. % % % See also PLOT, PATCH % Suresh Joel Apr 15,2003 % Updated Feb 25, 2004 switch(nargin), case 0 disp('Too few arguements for voxel'); return; case 1 d=[ 1 1 1 ]; %default length of side of voxel is 1 c='b'; %default color of voxel is blue alpha=1; case 2 c='b'; alpha=1; case 3 alpha=1; end; x=[i(1)+[0 0 0 0 d(1) d(1) d(1) d(1)]; ... i(2)+[0 0 d(2) d(2) 0 0 d(2) d(2)]; ... i(3)+[0 d(3) 0 d(3) 0 d(3) 0 d(3)]]'; h = []; 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; h1=patch(x(1:4,1),x(1:4,2),x(1:4,3),c); set(h1,'FaceAlpha',alpha); h = vertcat(h1,h); temp=x(7,:); x(7,:)=x(8,:); x(8,:)=temp; h1=patch(x(5:8,1),x(5:8,2),x(5:8,3),c); set(h1,'FaceAlpha',alpha); h = vertcat(h1,h); end; if nargout>0 varargout{1} = h; end