26 lines
		
	
	
		
			735 B
		
	
	
	
		
			Matlab
		
	
	
		
		
			
		
	
	
			26 lines
		
	
	
		
			735 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.x; | ||
|  |         y = radius * sin(theta) + baseCentroid.y; | ||
|  |         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.x, baseCentroid.y, height/2); | ||
|  | end |