home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 5_2007-2008.ISO / data / Zips / A_200_segm204037122007.psc / modMisc.bas < prev    next >
BASIC Source File  |  2007-01-02  |  2KB  |  65 lines

  1. Attribute VB_Name = "modMisc"
  2. Option Explicit
  3. Option Base 0
  4.  
  5. Public Const PI As Single = 3.14285714285714
  6. Public Const PI2 As Single = 6.28571428571429
  7.  
  8.  
  9. ' StepAngle: Steps (step amount) closer towards a desired angle by the quickest direction
  10. Public Function StepAngle(current As Single, desired As Single, step As Single) As Single
  11.     Dim diff As Single
  12.     diff = desired - current
  13.     If Abs(diff) < PI Then
  14.         If diff > 0# Then
  15.             StepAngle = current + step
  16.         Else
  17.             StepAngle = current - step
  18.         End If
  19.     Else
  20.         If diff > 0# Then
  21.             StepAngle = BoundDirection(current - step)
  22.         Else
  23.             StepAngle = BoundDirection(current + step)
  24.         End If
  25.     End If
  26. End Function
  27.  
  28. ' BoundDirection: Keeps the angle value within the circle
  29. Public Function BoundDirection(angle As Single) As Single
  30.     If angle > PI Then
  31.         angle = angle - PI2
  32.     End If
  33.     If angle < -PI Then
  34.         angle = angle + PI2
  35.     End If
  36.     BoundDirection = angle
  37. End Function
  38.  
  39.  
  40.  
  41. Public Function Atan2(ByVal y As Double, ByVal x As Double) As Double
  42.     Dim theta As Double
  43.  
  44.     If (Abs(x) < 0.0000001) Then
  45.         If (Abs(y) < 0.0000001) Then
  46.             theta = 0#
  47.         ElseIf (y > 0#) Then
  48.             theta = 1.5707963267949
  49.         Else
  50.             theta = -1.5707963267949
  51.         End If
  52.     Else
  53.         theta = Atn(y / x)
  54.         If (x < 0) Then
  55.             If (y >= 0#) Then
  56.                 theta = PI + theta
  57.             Else
  58.                 theta = theta - PI
  59.             End If
  60.         End If
  61.     End If
  62.     Atan2 = theta
  63. End Function
  64.  
  65.