classdef BinaryCylinder < BinaryVolume methods (Access = public) function obj = BinaryCylinder(radius,length,varargin) if nargin == 3 center = varargin{1}; else center = [0 0 0]; end obj@BinaryVolume([2*radius 2*radius length]); obj.translate(center); squaredDistanceToZAxis = obj.getSquaredDistanceToPointXY(center); cylinder = squaredDistanceToZAxis <= radius^2; cylinderStartPoint = obj.getIndicesOfPointInVolume(center - [0 0 length/2]); cylinderEndPoint = obj.getIndicesOfPointInVolume(center + [0 0 length/2]); cylinder(:,:,1:cylinderStartPoint(3)) = false; cylinder(:,:,cylinderEndPoint(3):end) = false; obj.volume = cylinder; obj.resize(obj.size + 2*obj.resolution); end end end