30 lines
752 B
Plaintext
30 lines
752 B
Plaintext
NewList angle.d()
|
|
|
|
Macro AE(x)
|
|
AddElement(angle()) : angle()=x
|
|
EndMacro
|
|
|
|
Procedure.d atan3(y.d,x.d)
|
|
If x<=0.0 : ProcedureReturn Sign(y)*#PI/2 : EndIf
|
|
If x>0.0 : ProcedureReturn ATan(y/x) : EndIf
|
|
If y>0.0 : ProcedureReturn ATan(y/x)+#PI : EndIf
|
|
ProcedureReturn ATan(y/x)-#PI
|
|
EndProcedure
|
|
|
|
Procedure.d mAngle(List angle.d())
|
|
Define.d sumS,sumC
|
|
ForEach angle()
|
|
sumS+Sin(Radian(angle())) : sumC+Cos(Radian(angle()))
|
|
Next
|
|
ProcedureReturn Degree(atan3(sumS,sumC))
|
|
EndProcedure
|
|
|
|
AE(350.0) : AE(10.0)
|
|
Debug StrD(mAngle(angle()),6) : ClearList(angle())
|
|
|
|
AE(90.0) : AE(180.0) : AE(270.0) : AE(360.0)
|
|
Debug StrD(mAngle(angle()),6) : ClearList(angle())
|
|
|
|
AE(10.0) : AE(20.0) : AE(30.0)
|
|
Debug StrD(mAngle(angle()),6) : ClearList(angle())
|