Get coordinates points inside a 3-D circle in MATLAB
Show older comments
Hi there,
I am trying to generate a 3-D circle to get the points inside it and the border. I already have a function to draw and get border points (Christian Reinbacher (2022). Plot Circle in 3D (https://www.mathworks.com/matlabcentral/fileexchange/26588-plot-circle-in-3d), MATLAB Central File Exchange. Retrieved July 31, 2022.) but not sure how to get points inside it. Will be appreciated if someone could help.
normal=[-3.5556 -0.2222 1.0000];
center=[138 146 219];
radius=3;
function plotCircle3D(center,normal,radius)
%Inputs:
% center ---> Centre point of circle
% normal ---> normal vector
% radius ---> Radius of circle
theta =0:0.01:2*pi;
v=null(normal);
points=repmat(center',1,size(theta,2))+radius*(v(:,1)*cos(theta)+v(:,2)*sin(theta));
p = fill3(points(1,:),points(2,:),points(3,:),'r-');
view(3);
end
With this function, I can get border points but not inside points. I know there are infinite points inside, but if I can get many of them, it would be great.
Thanks in advance,
Ali
Answers (1)
normal=[-3.5556 -0.2222 1.0000];
center=[138 146 219];
radius=3;
plotCircle3D(center,normal,radius);
hold on
point = plotPointOnCircle3D(center,normal,2,pi/3)
plot3(point(1), point(2), point(3), 'bo')
function plotCircle3D(center,normal,radius)
%Inputs:
% center ---> Centre point of circle
% normal ---> normal vector
% radius ---> Radius of circle
theta =0:0.01:2*pi;
v=null(normal);
points=repmat(center',1,size(theta,2))+radius*(v(:,1)*cos(theta)+v(:,2)*sin(theta));
p = fill3(points(1,:),points(2,:),points(3,:),'r-', 'FaceAlpha', 0.5);
view(3);
end
function point = plotPointOnCircle3D(center,normal,radius,theta)
%Inputs:
% center ---> Centre point of circle
% normal ---> normal vector
% radius ---> Radius of circle
v=null(normal);
point=repmat(center',1,size(theta,2))+radius*(v(:,1)*cos(theta)+v(:,2)*sin(theta));
end
Categories
Find more on Image Arithmetic in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!