[FONT=Courier New][COLOR=darkblue]Option[/COLOR] [COLOR=darkblue]Explicit[/COLOR]
Global [COLOR=darkblue]Const[/COLOR] pi [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Double[/COLOR] = 3.1415926536
Global [COLOR=darkblue]Const[/COLOR] rad [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Double[/COLOR] = (pi / 180#)
Global [COLOR=darkblue]Const[/COLOR] deg [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Double[/COLOR] = (180# / pi)
[COLOR=darkblue]Public[/COLOR] [COLOR=darkblue]Function[/COLOR] arcos([COLOR=darkblue]ByVal[/COLOR] ar [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Double[/COLOR])
[COLOR=green]' if ar is between -1 AND 1, return the corresponding arccos[/COLOR]
[COLOR=green]' in radians[/COLOR]
Application.Volatile
[COLOR=darkblue]If[/COLOR] ar >= 1 [COLOR=darkblue]Then[/COLOR] arcos = 0: Return
[COLOR=darkblue]If[/COLOR] ar <= -1 [COLOR=darkblue]Then[/COLOR] arcos = pi: Return
arcos = atan2(ar, Sqr(1 - ar ^ 2))
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]Function[/COLOR]
[COLOR=darkblue]Public[/COLOR] [COLOR=darkblue]Function[/COLOR] atan2([COLOR=darkblue]ByVal[/COLOR] xC [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Double[/COLOR], [COLOR=darkblue]ByVal[/COLOR] yC [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Double[/COLOR]) [COLOR=darkblue]As[/COLOR] Double
Application.Volatile
[COLOR=green]' Returns the angle from x clockwise to y, in radians.[/COLOR]
[COLOR=green]' "xc" is in the x direction, "yc" is in the y direction.[/COLOR]
[COLOR=darkblue]If[/COLOR] (xC = 0 And yC >= 0) [COLOR=darkblue]Then[/COLOR]
atan2 = pi / 2
[COLOR=darkblue]ElseIf[/COLOR] (xC = 0 And yC < 0) [COLOR=darkblue]Then[/COLOR]
atan2 = 3 * pi / 2
[COLOR=darkblue]Else[/COLOR]
atan2 = Atn(Abs(yC / xC))
[COLOR=darkblue]If[/COLOR] (yC >= 0 And xC > 0) [COLOR=darkblue]Then[/COLOR]
[COLOR=darkblue]ElseIf[/COLOR] (yC >= 0 And xC < 0) [COLOR=darkblue]Then[/COLOR]
atan2 = pi - atan2
[COLOR=darkblue]ElseIf[/COLOR] (yC <= 0 And xC < 0) [COLOR=darkblue]Then[/COLOR]
atan2 = pi + atan2
[COLOR=darkblue]ElseIf[/COLOR] (yC <= 0 And xC > 0) [COLOR=darkblue]Then[/COLOR]
atan2 = 2 * pi - atan2
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]If[/COLOR]
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]If[/COLOR]
End [COLOR=darkblue]Function[/COLOR]
[/FONT]