DRAWPOINT3D Draw 3D point on the current axis. drawPoint3d(X, Y, Z) will draw points defined by coordinates X, Y and Z. X, Y and Z are N*1 array, with N being number of points to be drawn. drawPoint3d(COORD) packs coordinates in a single [N*3] array. drawPoint3d(..., OPT) will draw each point with given option. OPT is a string compatible with 'plot' model. drawPoint3d(AX,...) plots into AX instead of GCA. H = drawPoint3d(...) returns a handle H to the line object Example % generate points on a 3D circle pts = circleToPolygon([40 30 20], 120); mat = eulerAnglesToRotation3d([30 20 10]); pts3d = transformPoint3d([pts zeros(120,1)],mat); figure; drawPoint3d(pts3d, 'b.'); view(3); axis equal; See also points3d, clipPoints3d, drawPoint
0001 function h = drawPoint3d(varargin) 0002 %DRAWPOINT3D Draw 3D point on the current axis. 0003 % 0004 % drawPoint3d(X, Y, Z) 0005 % will draw points defined by coordinates X, Y and Z. 0006 % X, Y and Z are N*1 array, with N being number of points to be drawn. 0007 % 0008 % drawPoint3d(COORD) packs coordinates in a single [N*3] array. 0009 % 0010 % drawPoint3d(..., OPT) will draw each point with given option. OPT is a 0011 % string compatible with 'plot' model. 0012 % 0013 % drawPoint3d(AX,...) plots into AX instead of GCA. 0014 % 0015 % H = drawPoint3d(...) returns a handle H to the line object 0016 % 0017 % Example 0018 % % generate points on a 3D circle 0019 % pts = circleToPolygon([40 30 20], 120); 0020 % mat = eulerAnglesToRotation3d([30 20 10]); 0021 % pts3d = transformPoint3d([pts zeros(120,1)],mat); 0022 % figure; drawPoint3d(pts3d, 'b.'); 0023 % view(3); axis equal; 0024 % 0025 % See also 0026 % points3d, clipPoints3d, drawPoint 0027 % 0028 0029 % --------- 0030 % Author : David Legland 0031 % INRA - TPV URPOI - BIA IMASTE 0032 % created the 18/02/2005. 0033 % 0034 % HISTORY 0035 % 04/01/2007: remove unused variables, and enhance support for plot 0036 % options 0037 % 12/02/2010 does not clip points anymore 0038 % 12/01/2018 added axes handle input 0039 % 0040 0041 if isAxisHandle(varargin{1}) 0042 hAx = varargin{1}; 0043 varargin(1)=[]; 0044 else 0045 hAx = gca; 0046 end 0047 0048 if length(varargin) == 1 && size(varargin{1}, 2) == 3 0049 % points are given as one single array with 3 columns 0050 px = varargin{1}(:,1); 0051 py = varargin{1}(:,2); 0052 pz = varargin{1}(:,3); 0053 varargin = {}; 0054 elseif length(varargin) == 2 && size(varargin{1}, 2) == 3 0055 % points are given as one single array with 3 columns 0056 px = varargin{1}(:,1); 0057 py = varargin{1}(:,2); 0058 pz = varargin{1}(:,3); 0059 varargin = varargin(2); 0060 elseif length(varargin) >= 3 && size(varargin{1}, 2) == 3 0061 % points are given as one single array with 3 columns 0062 px = varargin{1}(:,1); 0063 py = varargin{1}(:,2); 0064 pz = varargin{1}(:,3); 0065 varargin = varargin(2:end); 0066 elseif length(varargin) == 3 && numel(varargin{1})==numel(varargin{2}) && numel(varargin{1})==numel(varargin{3}) 0067 % points are given as 3 columns with equal lengths 0068 px = varargin{1}; 0069 py = varargin{2}; 0070 pz = varargin{3}; 0071 varargin = {}; 0072 elseif length(varargin) > 3 0073 % points are given as 3 columns with equal lengths 0074 px = varargin{1}; 0075 py = varargin{2}; 0076 pz = varargin{3}; 0077 varargin = varargin(4:end); 0078 else 0079 error('wrong number of arguments in drawPoint3d'); 0080 end 0081 0082 % default draw style: no line, marker is 'o' 0083 if length(varargin) ~= 1 0084 varargin = ['linestyle', 'none', 'marker', 'o', varargin]; 0085 end 0086 0087 % plot only points inside the axis. 0088 hh = plot3(hAx, px, py, pz, varargin{:}); 0089 0090 if nargout > 0 0091 h = hh; 0092 end