26 lines
		
	
	
		
			739 B
		
	
	
	
		
			Matlab
		
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			739 B
		
	
	
	
		
			Matlab
		
	
	
function [cylinder] = cylinderSampling(baseCentroid, radius, height, density)
 | 
						|
% 
 | 
						|
% @author: Zhaoyang Lv
 | 
						|
    import gtsam.*
 | 
						|
    % calculate the cylinder area
 | 
						|
    area = 2 * pi * radius * height;
 | 
						|
    
 | 
						|
    pointsNum = round(area * density);
 | 
						|
    
 | 
						|
    points3 = cell(pointsNum, 1);
 | 
						|
    
 | 
						|
    % sample the points
 | 
						|
    for i = 1:pointsNum
 | 
						|
        theta = 2 * pi * rand;
 | 
						|
        x = radius * cos(theta) + baseCentroid(1);
 | 
						|
        y = radius * sin(theta) + baseCentroid(2);
 | 
						|
        z = height * rand;
 | 
						|
        points3{i,1} = Point3([x,y,z]');
 | 
						|
    end
 | 
						|
   
 | 
						|
    cylinder.area = area;
 | 
						|
    cylinder.radius = radius;
 | 
						|
    cylinder.height = height;
 | 
						|
    cylinder.Points = points3;
 | 
						|
    cylinder.centroid = Point3(baseCentroid(1), baseCentroid(2), height/2);
 | 
						|
end |