Draw a 3D circle.

   Possible calls for the function:
   drawCircle3d([XC YC ZC R THETA PHI])
   drawCircle3d([XC YC ZC R], [THETA PHI])

   where XC, YC, ZY are coordinates of circle center, R is the circle
   radius, PHI and THETA are 3D angles in degrees of the normal to the
   plane containing the circle:
   * THETA between 0 and 180 degrees, corresponding to the colatitude
       (angle with Oz axis).
   * PHI between 0 and 360 degrees corresponding to the longitude (angle
       with Ox axis)
   
   drawCircle3d([XC YC ZC R THETA PHI PSI])
   drawCircle3d([XC YC ZC R], [THETA PHI PSI])
   drawCircle3d([XC YC ZC R], THETA, PHI)
   drawCircle3d([XC YC ZC], R, THETA, PHI)
   drawCircle3d([XC YC ZC R], THETA, PHI, PSI)
   drawCircle3d([XC YC ZC], R, THETA, PHI, PSI)
   drawCircle3d(XC, YC, ZC, R, THETA, PHI)
   drawCircle3d(XC, YC, ZC, R, THETA, PHI, PSI)
   Are other possible syntaxes for this function.
   
   H = drawCircle3d(...)
   return handle on the created LINE object

   Example
     % display 3 mutually orthogonal 3D circles
     figure; hold on; 
     drawCircle3d([10 20 30 50  0  0], 'LineWidth', 2, 'Color', 'b');
     drawCircle3d([10 20 30 50 90  0], 'LineWidth', 2, 'Color', 'r');
     drawCircle3d([10 20 30 50 90 90], 'LineWidth', 2, 'Color', 'g');
     axis equal;
     axis([-50 100 -50 100 -50 100]);
     view([-10 20])
 
     % Draw several circles at once
     center = [10 20 30];
     circ1 = [center 50  0  0];
     circ2 = [center 50 90  0];
     circ3 = [center 50 90 90];
     figure; hold on;
     drawCircle3d([circ1 ; circ2 ; circ3]);
     axis equal;

   See also:
     circles3d, drawCircleArc3d, drawEllipse3d, drawSphere

Package: matgeom