How to draw an Arc in the direction you want? (with known radius, centre and angle)

59 views (last 30 days)
I'm trying to draw an arc between 350º and 0º angles, but the point is that I would like to draw it in counter-clock wise. What is the general method of drawing an arc in matlab in the direction you want?
The code I have written is the following:
hold on
grid
axis equal
angini=350; %initial angle of the arc in degrees
angfin=0; %final angle of the arc in degrees
rangini=deg2rad(angini); %initial angle of the arc in radians
rangfin=deg2rad(angfin); %final angle of the arc in radians
centre=[0;0]; %centre of the arc
radius=10; %radius of the arc
teta = linspace(rangini,rangfin);
xco = centre(1)+radius*cos(teta); %x coordinates
yco = centre(2)+radius*sin(teta); % y coordinates
plot(xco,yco,'g') %plot the arc
And the result, as you can see, is the following:
It drew the arc in a clockwise direction, not in a counterclock one. What is the general method of drawing an arc in matlab in the direction that you like?

Answers (1)

Steven Lord
Steven Lord on 9 Nov 2020
Use an ending angle of 360 degrees rather than an angle of 0 degrees. You can skip the deg2rad calls by using the degree-based trig functions cosd and sind. I also chose to change some of the variable names to make them a bit more descriptive. With those names you could argue the comments are unnecessary.
hold on
grid
axis equal
angleInitial=350; %initial angle of the arc in degrees
angleFinal=360; %final angle of the arc in degrees
centre=[0;0]; %centre of the arc
radius=10; %radius of the arc
theta = linspace(angleInitial,angleFinal);
xcoords = centre(1)+radius*cosd(theta); %x coordinates
ycoords = centre(2)+radius*sind(theta); % y coordinates
plot(xcoords,ycoords,'g') %plot the arc
  1 Comment
ErikJon Pérez Mardaras
ErikJon Pérez Mardaras on 9 Nov 2020
Edited: ErikJon Pérez Mardaras on 9 Nov 2020
Thanks for the repply, but I am looking for a general answer for a general issue. Imagine that, instead of wanting to draw an arc from 350º to 0º(or 360º) I would like to draw an arc from 170º to 220º but in a clockwise direction instead of a counterclock one (which is what Matlab would do in this case).
As you can see in the following image, Matlab draws me that arc in a counterclock wise direction.
Is the same case as before. How I could draw arcs in the directions I want? Is there any way?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by