ATN2

Syntax ATN2 (x,y)
Location Math Package

ATN2 calculates ATAN(x/y) but expands the result from 0…PI to -PI…PI which allows you to convert cartesian and polar co-ordinates in both directions without loss of information.

Example

Run this graphics demonstration and you will understand the advantage of ATN2 and the difference from ATAN:

100 WTV 4: SCALE 4,-3,-2: INK 7
110 PAPER 0: OVER -1: CLS
120 radius=1.5: reso=128
130 FOR angle0=PI/reso TO 2*PI STEP PI/reso
140   x0=radius*COS(angle0): y0=radius*SIN(angle0)
150   angle1 = ATAN(y0/x0)
160   x1=radius*COS(angle1): y1=radius*SIN(angle1)
170   angle2 = ATN2(x0,y0)
180   x2=radius*COS(angle2): y2=radius*SIN(angle2)
190   ARRAYS: PAUSE 2: ARRAYS
200 END FOR angle0
210 :
220 DEFine PROCedure ARRAYS
230  INK 3
240  FILL 1: CIRCLE 1.25*x0,1.25*y0,5E-2: FILL 0
250  IF x1==x2 AND y1==y2 THEN
260    INK 7: LINE x1/5,y1/5 TO x1,y1: INK 5
270    CURSOR x1,y1,0,0: PRINT "ATAN/ATN2"
280  ELSE
290    INK 7: LINE x1/5,y1/5 TO x1,y1: INK 5
300    CURSOR x1,y1,0,0: PRINT "ATAN"
310    INK 7: LINE x2/5,y2/5 TO x2,y2: INK 5
320    CURSOR x2,y2,0,0: PRINT "ATN2"
330  END IF
340  angle=INT(DEG(angle0))
350  CURSOR 0,0,-3*LEN(angle),-5: PRINT angle
360 END DEFine ARRAYS

CROSS-REFERENCE

ATAN which is the same on Minerva and SMS.