function voxel(i,d,c,alpha);

%VOXEL function to draw a 3-D voxel in a 3-D plot
%
%Usage
%   voxel(start,size,color,alpha);
%
%   will draw a voxel at 'start' of size 'size' of color 'color' and
%   transparency alpha (1 for opaque, 0 for transparent)
%   Default size is 1
%   Default color is blue
%   Default alpha value is 1
%
%   start is a three element vector [x,y,z]
%   size the a three element vector [dx,dy,dz]
%   color is a character string to specify color 
%       (type 'help plot' to see list of valid colors)
%   
%
%   voxel([2 3 4],[1 2 3],'r',0.7);
%   axis([0 10 0 10 0 10]);
%

%   Suresh Joel Apr 15,2003
%           Updated Feb 25, 2004


switch(nargin),
case 0
    disp('Too few arguements for voxel');
    return;
case 1
    l=1;    %default length of side of voxel is 1
    c='b';  %default color of voxel is blue
case 2,
    c='b';
case 3,
    alpha=1;
case 4,
    %do nothing
otherwise
    disp('Too many arguements for voxel');
end;

d=d/2;

x=[i(1)+[-d(1) -d(1) -d(1) -d(1) d(1) d(1) d(1) d(1)]; ...
        i(2)+[-d(2) -d(2) d(2) d(2) -d(2) -d(2) d(2) d(2)]; ...
        i(3)+[-d(3) d(3) -d(3) d(3) -d(3) d(3) -d(3) d(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); %,c
    set(h,'FaceAlpha',alpha);
    %h=patch(x(1:4,1),x(1:4,2),x(1:4,3),c); %,c
    %set(h,'facecolor','none','EdgeColor', 'b');
    
    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); %,c
    %set(h,'facecolor','none','EdgeColor', 'b');
    set(h,'FaceAlpha',alpha);
    
end;
