2D Circle 3D Plot.

Hello, How can i draw a circle in a 3d plot? thanks,

 Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 31 Dec 2013
Edited: Azzi Abdelmalek on 31 Dec 2013
r=1
teta=-pi:0.01:pi
x=r*cos(teta);
y=r*sin(teta)
plot3(x,y,zeros(1,numel(x)))

6 Comments

reza
reza on 1 Jan 2014
thanks a lot. know i can create a 3d cone using 2d circles.
thanks :)
Anand S
Anand S on 31 Jul 2020
how can i vary the location of circle in the z axis
% Define circle parameters:
radius = 1;
xCenter = 1.5;
yCenter = 4;
zCenter = 3;
% Make an array for all the angles:
theta = linspace(0, 2 * pi, 2000);
% Create the x and y locations at each angle:
x = radius * cos(theta) + xCenter;
y = radius * sin(theta) + yCenter;
% Need to make a z value for every (x,y) pair:
z = zeros(1, numel(x)) + zCenter;
% Do the plot:
% First plot the center:
plot3(xCenter, yCenter, zCenter, 'r*', 'LineWidth', 2, 'MarkerSize', 15);
hold on; % Don't let circle blow away our center.
% Next plot the circle:
plot3(x, y, z, 'b-', 'LineWidth', 2);
grid on;
axis('square');
xlabel('x', 'FontSize', 20);
ylabel('y', 'FontSize', 20);
zlabel('z', 'FontSize', 20);
Thanks for sharing!
Tong Zhao
Tong Zhao on 13 Sep 2021
Edited: Tong Zhao on 13 Sep 2021
The next question would be, how to draw a filled circle in 3D, parallel to say, x-y plane.
OK. I found an answer using patch at this thread.

Sign in to comment.

More Answers (2)

Try this:
ellipsoid(0,-0.5,0.5,6,3.25,0.01)
zlim([0,1]);
%A circle in 3D is parameterized by six numbers: two for the orientation of its unit normal vector, one for the radius, and three for the circle center.
function drawCircle(rad,pos,n,color)
%https://demonstrations.wolfram.com/ParametricEquationOfACircleIn3D/
%draws a 3D circle at position pos with radius rad, normal to the
%circle n, and color color.
phi = atan2(n(2),n(1)); %azimuth angle, in [-pi, pi]
theta = atan2(sqrt(n(1)^2 + n(2)^2) ,n(3));% zenith angle, in [0,pi]
t = 0:pi/32:2*pi;
x = pos(1)- rad*( cos(t)*sin(phi) + sin(t)*cos(theta)*cos(phi) );
y = pos(2)+ rad*( cos(t)*cos(phi) - sin(t)*cos(theta)*sin(phi) );
z = pos(3)+ rad*sin(t)*sin(theta);
plot3(x,y,z,color)
% then call the function as
pos = rand(3,1);rad = 1;R = eye(3);
drawCircle(rad,pos,R(:,1),'r')
hold on
drawCircle(rad,pos,R(:,2),'g')
drawCircle(rad,pos,R(:,3),'b')
axis equal

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!