Get coordinates points inside a 3-D circle in MATLAB
조회 수: 3 (최근 30일)
이전 댓글 표시
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
댓글 수: 0
답변 (1개)
Chunru
2022년 8월 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
댓글 수: 0
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!