RosettaCodeData/Task/Averages-Mean-angle/BBC-BASIC/averages-mean-angle.basic

21 lines
582 B
Plaintext

*FLOAT 64
DIM angles(3)
angles() = 350,10
PRINT FNmeanangle(angles(), 2)
angles() = 90,180,270,360
PRINT FNmeanangle(angles(), 4)
angles() = 10,20,30
PRINT FNmeanangle(angles(), 3)
END
DEF FNmeanangle(angles(), N%)
LOCAL I%, sumsin, sumcos
FOR I% = 0 TO N%-1
sumsin += SINRADangles(I%)
sumcos += COSRADangles(I%)
NEXT
= DEGFNatan2(sumsin, sumcos)
DEF FNatan2(y,x) : ON ERROR LOCAL = SGN(y)*PI/2
IF x>0 THEN = ATN(y/x) ELSE IF y>0 THEN = ATN(y/x)+PI ELSE = ATN(y/x)-PI