Length of an arc between two angles

Calculate the length of the arc (green) between two angles;

It is important in video game programming

implement a method that takes parameters like:

• xpos of the circle
• ypos of the circle
• ang1
• ang2

return green arc_lenght

example method:

arc_lenght (xpos, ypos, radius, ang1, ang2) { return arc_lenght; }

Julia

The task seems to be to find the distance along the circumference of the circle which is NOT swept out between the two angles. <lang julia> arclength(r, angle1, angle2) = (360 - abs(angle2 - angle1)) * π/180 * r @show arclength(10, 10, 120) # --> arclength(10, 10, 120) = 43.63323129985823 </lang>

Phix

Translation of: Julia

<lang Phix>function arclength(atom r, angle1, angle2)

```   return (360 - abs(angle2 - angle1)) * PI/180 * r
```

end function ?arclength(10, 10, 120) -- 43.6332313</lang>

Raku

Works with: Rakudo version 2020.02

<lang perl6>sub arc ( \r, \a1, \a2 ) { r × (τ - abs(a2 - a1)) } sub postfix:<°> (\d) { d × τ / 360 }

say arc(10, 10°, 120°), ' engineering units';</lang>

Output:
`43.63323129985824 engineering units`

REXX

Translation of: Julia

<lang rexx>/*REXX program calculates the length of an arc between two angles (stated in degrees).*/ parse arg radius angle1 angle2 . /*obtain optional arguments from the CL*/ if radius== | radius=="," then radius= 10 /*Not specified? Then use the default.*/ if angle1== | angle1=="," then angle1= 10 /* " " " " " " */ if angle2== | angle2=="," then angle2= 120 /* " " " " " " */

say ' circle radius = ' radius say ' angle 1 = ' angle1"º" say ' angle 2 = ' angle2"º" say say ' arc length = ' arcLength(radius, angle1, angle2) exit /*stick a fork in it, we're all done. */ /*──────────────────────────────────────────────────────────────────────────────────────*/ arcLength: procedure; parse arg r,a1,a2; return (360-abs(a1-a2)) * pi()/180 * r /*──────────────────────────────────────────────────────────────────────────────────────*/ pi: pi= 3.1415926535897932384626433832795; return pi /*use 32 digs (overkill).*/</lang>

output   when using the default inputs:
```     circle radius =  10
angle 1 =  10º
angle 2 =  120º

arc length =  43.6332313
```