# How to do a 3D circle in matlab

88 Ansichten (letzte 30 Tage)
john pag am 17 Jun. 2013
Hello,
I need a code for a 3D circle. I have the code but i can not to do 3D.
Thank you
##### 1 Kommentar-1 ältere Kommentare anzeigen-1 ältere Kommentare ausblenden
Kye Taylor am 17 Jun. 2013
Do you know the parametric equation for the circle in 3D?

Melden Sie sich an, um zu kommentieren.

### Akzeptierte Antwort

Sean de Wolski am 17 Jun. 2013
##### 0 Kommentare-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Weitere Antworten (1)

Kye Taylor am 17 Jun. 2013
Bearbeitet: Kye Taylor am 17 Jun. 2013
I assume you do not have a parametric form for the circle in 3D, but you do have the equation for the plane where the circle lives in 3D. In that case, i would solve this problem by creating the data in the xy-plane
% Original points, original plane
t = linspace(0,2*pi);
x = cos(t);
y = sin(t);
z = 0*t;
pnts = [x;y;z];
% unit normal for original plane
n0 = [0;0;1];
n0 = n0/norm(n0);
Then, I would rotate the circle data into a new plane
% unit normal for plane to rotate into
% plane is orthogonal to n1... given by equation
% n1(1)*x + n1(2)*y + n1(3)*z = 0
n1 = [1;1;1];
n1 = n1/norm(n1);
% theta is the angle between normals
c = dot(n0,n1) / ( norm(n0)*norm(n1) ); % cos(theta)
s = sqrt(1-c*c); % sin(theta)
u = cross(n0,n1) / ( norm(n0)*norm(n1) ); % rotation axis...
u = u/norm(u); % ... as unit vector
C = 1-c;
% the rotation matrix
R = [u(1)^2*C+c, u(1)*u(2)*C-u(3)*s, u(1)*u(3)*C+u(2)*s
u(2)*u(1)*C+u(3)*s, u(2)^2*C+c, u(2)*u(3)*C-u(1)*s
u(3)*u(1)*C-u(2)*s, u(3)*u(2)*C+u(1)*s, u(3)^2*C+c];
% Rotated points
newPnts = R*pnts;
Visualize:
plot3(newPnts(1,:),newPnts(2,:),newPnts(3,:),'ko')
##### 3 Kommentare1 älteren Kommentar anzeigen1 älteren Kommentar ausblenden
Vince am 13 Jan. 2018
Fantastic answer for creating a circle located in arbitrary 3D space!
Rudranarayan Kandi am 12 Sep. 2018
very nice approach for plotting in a different plane with normal specified.!!!! Cheers!!!

Melden Sie sich an, um zu kommentieren.

### Kategorien

Mehr zu 2-D and 3-D Plots finden Sie in Help Center und File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by