Home > matGeom > geom3d > drawBox3d.m

drawBox3d

PURPOSE ^

Draw a 3D box defined by coordinate extents.

SYNOPSIS ^

function varargout = drawBox3d(box, varargin)

DESCRIPTION ^

 Draw a 3D box defined by coordinate extents.
   
   drawBox3d(BOX);
   Draw a box defined by its coordinate extents: 
   BOX = [XMIN XMAX YMIN YMAX ZMIN ZMAX].
   The function draws only the outline edges of the box.

   Example
     % Draw bounding box of a cubeoctehedron
     [v e f] = createCubeOctahedron;
     box3d = boundingBox3d(v);
     figure; hold on;
     drawMesh(v, f);
     drawBox3d(box3d);
     set(gcf, 'renderer', 'opengl')
     axis([-2 2 -2 2 -2 2]);
     view(3)

   See Also:
     boxes3d, boundingBox3d

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function varargout = drawBox3d(box, varargin)
0002 % Draw a 3D box defined by coordinate extents.
0003 %
0004 %   drawBox3d(BOX);
0005 %   Draw a box defined by its coordinate extents:
0006 %   BOX = [XMIN XMAX YMIN YMAX ZMIN ZMAX].
0007 %   The function draws only the outline edges of the box.
0008 %
0009 %   Example
0010 %     % Draw bounding box of a cubeoctehedron
0011 %     [v e f] = createCubeOctahedron;
0012 %     box3d = boundingBox3d(v);
0013 %     figure; hold on;
0014 %     drawMesh(v, f);
0015 %     drawBox3d(box3d);
0016 %     set(gcf, 'renderer', 'opengl')
0017 %     axis([-2 2 -2 2 -2 2]);
0018 %     view(3)
0019 %
0020 %   See Also:
0021 %     boxes3d, boundingBox3d
0022 %
0023 
0024 % ---------
0025 % Author: David Legland
0026 % e-mail: david.legland@inrae.fr
0027 % INRA - TPV URPOI - BIA IMASTE
0028 % created the 22/02/2010.
0029 %
0030 
0031 % Parse and check inputs
0032 isBox3d = @(x) validateattributes(x,{'numeric'},...
0033     {'nonempty','nonnan','real','finite','size',[nan,6]});
0034 defOpts.Color = 'b';
0035 [hAx, box, varargin] = ...
0036     parseDrawInput(box, isBox3d, 'line', defOpts, varargin{:});
0037 
0038 
0039 % box limits
0040 xmin = box(:,1);
0041 xmax = box(:,2);
0042 ymin = box(:,3);
0043 ymax = box(:,4);
0044 zmin = box(:,5);
0045 zmax = box(:,6);
0046 
0047 nBoxes = size(box, 1);
0048 
0049 gh=zeros(nBoxes,1);
0050 for i=1:nBoxes
0051     % lower face (z=zmin)
0052     sh(1)=drawEdge3d(hAx, [xmin(i) ymin(i) zmin(i)     xmax(i) ymin(i) zmin(i)], varargin{:});
0053     sh(2)=drawEdge3d(hAx, [xmin(i) ymin(i) zmin(i)     xmin(i) ymax(i) zmin(i)], varargin{:});
0054     sh(3)=drawEdge3d(hAx, [xmax(i) ymin(i) zmin(i)     xmax(i) ymax(i) zmin(i)], varargin{:});
0055     sh(4)=drawEdge3d(hAx, [xmin(i) ymax(i) zmin(i)     xmax(i) ymax(i) zmin(i)], varargin{:});
0056  
0057     % front face (y=ymin)
0058     sh(5)=drawEdge3d(hAx, [xmin(i) ymin(i) zmin(i)     xmin(i) ymin(i) zmax(i)], varargin{:});
0059     sh(6)=drawEdge3d(hAx, [xmax(i) ymin(i) zmin(i)     xmax(i) ymin(i) zmax(i)], varargin{:});
0060     sh(7)=drawEdge3d(hAx, [xmin(i) ymin(i) zmax(i)     xmax(i) ymin(i) zmax(i)], varargin{:});
0061 
0062     % left face (x=xmin)
0063     sh(8)=drawEdge3d(hAx, [xmin(i) ymax(i) zmin(i)     xmin(i) ymax(i) zmax(i)], varargin{:});
0064     sh(9)=drawEdge3d(hAx, [xmin(i) ymin(i) zmax(i)     xmin(i) ymax(i) zmax(i)], varargin{:});
0065 
0066     % the last 3 remaining edges
0067     sh(10)=drawEdge3d(hAx, [xmin(i) ymax(i) zmax(i)     xmax(i) ymax(i) zmax(i)], varargin{:});
0068     sh(11)=drawEdge3d(hAx, [xmax(i) ymax(i) zmin(i)     xmax(i) ymax(i) zmax(i)], varargin{:});
0069     sh(12)=drawEdge3d(hAx, [xmax(i) ymin(i) zmax(i)     xmax(i) ymax(i) zmax(i)], varargin{:});
0070     
0071     gh(i) = hggroup(hAx);
0072     set(sh,'Parent',gh(i))
0073 end
0074 
0075 if nargout > 0
0076     varargout = {gh};
0077 end

Generated on Wed 16-Feb-2022 15:10:47 by m2html © 2003-2019