Length of an arc between two angles: Difference between revisions
(→{{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= 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;
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
<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
<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