a cylinder MATLAB object
							parent
							
								
									b6a7dc0530
								
							
						
					
					
						commit
						6732beb1b4
					
				|  | @ -0,0 +1,28 @@ | |||
| clear all; | ||||
| clc; | ||||
| import gtsam.* | ||||
| 
 | ||||
| cylinder_num = 10; | ||||
| cylinders = cell(cylinder_num, 1); | ||||
| 
 | ||||
| % generate a set of cylinders | ||||
| for i = 1:cylinder_num | ||||
|     cylinder_center = Point2([10, 5 * i]'); | ||||
|     cylinders{i,1} = cylinderSampling(cylinder_center, 1, 5, 30); | ||||
| end | ||||
| 
 | ||||
| % visibility validation | ||||
| %camera_transform = Pose3(Rot3.RzRyRx(-pi/2, 0, -pi/2),y_shift); | ||||
| 
 | ||||
| K = Cal3_S2(525,525,0,320,240); | ||||
| cam_pose = Pose3(); | ||||
| cam = SimpleCamera(cam_pose, K); | ||||
| 
 | ||||
| % the projections of all visible 3D points | ||||
| visiblePoints3 = cylinderSampleProjection(cam, cam_pose, cylinders); | ||||
| 
 | ||||
| %  | ||||
| 
 | ||||
| %  | ||||
| 
 | ||||
| 
 | ||||
|  | @ -0,0 +1,18 @@ | |||
| function [] = cylinderSampleProjection(Cam, Pose3, cylinders) | ||||
|      | ||||
|     cylinder_num = size(cylinders, 1); | ||||
|     for i = 1:cylinder_num | ||||
|         cylinder = cylinders{i}; | ||||
|          | ||||
|         point_num = size(cylinder.Points, 1); | ||||
|         % to be finished | ||||
|          | ||||
|         %         for j = 1:point_num | ||||
| %              | ||||
| %             cylinderPoints =  | ||||
| %              | ||||
| %         end | ||||
|          | ||||
|     end | ||||
|      | ||||
| end | ||||
|  | @ -0,0 +1,22 @@ | |||
| function [cylinder] = cylinderSampling(Point2, radius, height, density) | ||||
| % | ||||
|     import gtsam.* | ||||
|     % calculate the cylinder area | ||||
|     A = 2 * pi * radius * height; | ||||
|      | ||||
|     PointsNum = round(A * density); | ||||
|      | ||||
|     Points3 = cell(PointsNum, 1); | ||||
|      | ||||
|     % sample the points | ||||
|     for i = 1:PointsNum | ||||
|         theta = 2 * pi * rand; | ||||
|         x = radius * cos(theta) + Point2.x; | ||||
|         y = radius * sin(theta) + Point2.y; | ||||
|         z = height * rand; | ||||
|         Points3{i,1} = Point3([x,y,z]'); | ||||
|     end | ||||
|     | ||||
|     cylinder.area = A; | ||||
|     cylinder.Points = Points3; | ||||
| end | ||||
		Loading…
	
		Reference in New Issue