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 |