Vertices of convex hull of points lying on the surface of a sphere
Set the random number generator.
Set the points the convex hull of which is to be calculated. They form the surface of the unit sphere.
phi=(pi/5:pi/5:9*pi/5)'; theta=(pi/10:pi/10:9*pi/10)'; [a1,a2]=meshgrid(phi,theta); points=[sin(a2(:)).*cos(a1(:)),sin(a2(:)).*sin(a1(:)),cos(a2(:));0 0 1;0 0 -1];
Perform random permutation to points to avoid infinite loops in convhull_nd.
Plot the point set in blue circles.
figure('Name','Point set','NumberTitle','off') scatter3(points(:,1),points(:,2),points(:,3),... 'marker','o','MarkerEdgeColor',[0 0 1],'LineWidth',2) xlabel('x','FontSize',13); ylabel('y','FontSize',13); zlabel('z','FontSize',13); title('Point set','FontSize',13) axis equal
Find the point identities defining each facet of the convex hull of the point set with the new algorithm.
Error check: hull size
Find the initial number of points.
Find the number of points consisting the convex hull.
Check if the number of points consisting the convex hull is equal to the initial number of points. Since the configuration of the initial points is a boundary that is convex everywhere and does not have internal points, this point set will be the convex hull of itself. If this is not the case, throw an error.
if ipoints~=hpoints error('The number of points does not match the true solution.'); end
Find the coordinates of the vertices of the convex hull.
Plot the vertices of the convex hull of the point set in orange asterisks.
hold on scatter3(convhullvert(:,1),convhullvert(:,2),convhullvert(:,3),... 'marker','*','MarkerEdgeColor',[1 0.5 0],'LineWidth',2);
(c) 2014 by George Papazafeiropoulos First Lieutenant, Infrastructure Engineer, Hellenic Air Force Civil Engineer, M.Sc., Ph.D. candidate, NTUA