/* SINE Wave text mode plot. */ /* $VER Sinewave_Anim_CC0_Licence_2017_B.Walker_G0LCU. */ SAY 'c'x ESC='1B'x HORIZ=9 DO THETA=0.0 TO 360.0 BY 6.0 ANGLE=THETA CALL SIN VERT=(11-(10*y)%1) SAY ESC"["VERT";"HORIZ"f"ESC"[32m*"ESC"[0m" HORIZ=HORIZ+1 END SAY ESC"[22;1fPlotted text mode sinewave DEMO in pure ARexx, by B.Walker, 2017." STOP /* SIN subroutine, '_Function_'. */ SIN: /* Greater than 360.0 degrees NOT catered for but easily cured. */ IF ANGLE>=360.0 THEN ANGLE=0.0 IF ANGLE>270.0 THEN ANGLE=ANGLE-360.0 IF ANGLE>180.0 THEN ANGLE=-(ANGLE-180.0) IF ANGLE>90.0 THEN ANGLE=180.0-ANGLE /* Convert to radians. */ PI=3.14159265 x=((ANGLE*PI)/180) y=x-((x**3)/6)+((x**5)/120)-((x**7)/5040)+((x**9)/362880)-((x**11)/39916800) IF ANGLE=0.0 THEN y=0.0 IF ANGLE=90.0 THEN y=1.0 IF ANGLE=-90.0 THEN y=-1.0 /* 'y' is the floating point value returned. */ RETURN