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

65 views (last 30 days)
ErikJon Pérez Mardaras
ErikJon Pérez Mardaras on 9 Nov 2020
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
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!