2D Circle 3D Plot.

243 visualizzazioni (ultimi 30 giorni)
reza
reza il 31 Dic 2013
Hello, How can i draw a circle in a 3d plot? thanks,

Risposta accettata

Azzi Abdelmalek
Azzi Abdelmalek il 31 Dic 2013
Modificato: Azzi Abdelmalek il 31 Dic 2013
r=1
teta=-pi:0.01:pi
x=r*cos(teta);
y=r*sin(teta)
plot3(x,y,zeros(1,numel(x)))
  6 Commenti
Priodyuti Pradhan
Priodyuti Pradhan il 2 Nov 2020
Thanks for sharing!
Tong Zhao
Tong Zhao il 13 Set 2021
Modificato: Tong Zhao il 13 Set 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.

Accedi per commentare.

Più risposte (2)

Image Analyst
Image Analyst il 13 Set 2021
Try this:
ellipsoid(0,-0.5,0.5,6,3.25,0.01)
zlim([0,1]);

Aaron T. Becker's Robot Swarm Lab
%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

Categorie

Scopri di più su Graphics Object Programming in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by