Beef up minigun
This commit is contained in:
+18
-1
@@ -91,7 +91,9 @@ radToDeg r = r * 180 / pi
|
||||
-- | Normalize an angle to be between 0 and 2*pi radians
|
||||
normalizeAngle :: Float -> Float
|
||||
{-# INLINE normalizeAngle #-}
|
||||
normalizeAngle f = f - 2 * pi * floor' (f / (2 * pi))
|
||||
normalizeAngle f
|
||||
| f >= 0 && f < 2*pi = f
|
||||
| otherwise = f - 2 * pi * floor' (f / (2 * pi))
|
||||
where
|
||||
floor' :: Float -> Float
|
||||
floor' x = fromIntegral (floor x :: Int)
|
||||
@@ -126,3 +128,18 @@ projV fromv onv
|
||||
dist :: Point2 -> Point2 -> Float
|
||||
{-# INLINE dist #-}
|
||||
dist !p1 !p2 = magV (p2 -.- p1)
|
||||
-- | Finds a new angle a given fraction between two other angles
|
||||
tweenAngles
|
||||
:: Float
|
||||
-> Float
|
||||
-> Float
|
||||
-> Float
|
||||
{-# INLINE tweenAngles #-}
|
||||
tweenAngles frac a1 a2
|
||||
| abs (a1 - a2) < pi = frac * (a1 - a2) + a2
|
||||
| otherwise = normalizeAngle $ go frac a1 a2
|
||||
where
|
||||
go frac' a1' a2'
|
||||
| abs (a1' - a2') < pi = frac' * (a1' - a2') + a2'
|
||||
| a1' > a2' = go frac' (a1' - 2*pi) a2'
|
||||
| otherwise = go frac' a1' (a2' - 2*pi)
|
||||
|
||||
Reference in New Issue
Block a user