Length of an arc between two angles: Difference between revisions

From Rosetta Code
Content added Content deleted
(→‎{{header|REXX}}: added the REXX computer programming language for this task.)
Line 36: Line 36:
end function
end function
?arclength(10, 10, 120) -- 43.6332313</lang>
?arclength(10, 10, 120) -- 43.6332313</lang>

=={{header|REXX}}==
{{trans|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>
{{out|output|text=&nbsp; when using the default inputs:}}
<pre>
circle radius = 10
angle 1 = 10º
angle 2 = 120º

arc length = 43.6332313
</pre>

Revision as of 22:35, 15 March 2020

Task

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


https://imgur.com/a/aYgDLxr

It is important in video game programming

implement a method that takes parameters like:

  • xpos of the circle
  • ypos of the circle
  • radius
  • 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>

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