I'm defining an arc by calling a function like this: arc(x, y, radius*2, radius*2, start, end);

x: center x.
y: center y.
radius*2: width.
radius*2: height.
start: start angle in radians or degrees.
end: end angle in radians or degrees.

And now I need to "close" the arc by drawing two lines, both from the center of the arc, to the start and end point of the arc.

How do I find the start and end points?

  • $\begingroup$ You know the parametric equations for a circle? $\endgroup$ – J. M. is a poor mathematician Aug 20 '12 at 13:51
  • $\begingroup$ No I don't think so. $\endgroup$ – 01AutoMonkey Aug 20 '12 at 14:01
  • 2
    $\begingroup$ Well... you have some reading to do then!. If you get stuck come back with your sticking point. $\endgroup$ – rschwieb Aug 20 '12 at 14:27
  • $\begingroup$ If you have different values for width and height, you have an ellipse, not a circle. Why is radius*2 repeated in the argument list? $\endgroup$ – Ross Millikan Aug 20 '12 at 14:33
  • $\begingroup$ Are you working in GeoGebra? $\endgroup$ – Sigur Aug 20 '12 at 14:45

Given start angles and end angles you get

sX = offsetX + radius * cos(startAngle * PI/180)
sY = offsetY + radius * sin(startAngle * PI/180)
eX = offsetX + radius * cos(endAngle * PI/180)
eY = offsetY + radius * sin(endAngle * PI/180)

Multiplying an angle by PI/180 converts degrees to radians.


After reading http://en.wikipedia.org/wiki/Equation_of_a_circle#Equations as suggested by @rschwieb I came up with the following:

s_x = x+radius*Math.cos(startAngle*Math.PI);
s_y = y+radius*Math.sin(startAngle*Math.PI);
e_x = x+radius*Math.cos(endAngle*Math.PI);
e_y = y+radius*Math.sin(endAngle*Math.PI);
  • $\begingroup$ If your angles are in radians, you do not need the Math.PI factor. If your angles are in degrees, then you will need a factor of Math.PI/180 instead. $\endgroup$ – robjohn Aug 22 '12 at 19:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.