Tweak shell spin
This commit is contained in:
+11
-18
@@ -1,33 +1,26 @@
|
||||
module Dodge.Movement.Turn where
|
||||
module Dodge.Movement.Turn (
|
||||
turnTo,
|
||||
vecTurnTo,
|
||||
) where
|
||||
|
||||
import Geometry
|
||||
|
||||
turnTo :: Float -> Point2 -> Point2 -> Float -> Float
|
||||
turnTo turnSpeed sp tp a
|
||||
| vToTarg == V2 0 0 = a
|
||||
| angleVV vToTarg vdir <= turnSpeed
|
||||
= argV vToTarg
|
||||
| angleVV vToTarg vdir <= turnSpeed =
|
||||
argV vToTarg
|
||||
| isLHS (sp +.+ vdir) sp tp = a - turnSpeed
|
||||
| otherwise = a + turnSpeed
|
||||
where
|
||||
vdir = unitVectorAtAngle a
|
||||
vToTarg = tp -.- sp
|
||||
|
||||
turnToAmount :: Float -> Point2 -> Point2 -> Float -> Float
|
||||
turnToAmount turnSpeed sp tp a
|
||||
| vToTarg == V2 0 0 = 0
|
||||
| angleVV vToTarg vdir <= turnSpeed
|
||||
= diffAngles a (argV vToTarg) -- TODO check correctness
|
||||
| isLHS (sp +.+ vdir) sp tp = negate turnSpeed
|
||||
| otherwise = turnSpeed
|
||||
| otherwise = a + turnSpeed
|
||||
where
|
||||
vdir = unitVectorAtAngle a
|
||||
vToTarg = tp -.- sp
|
||||
|
||||
vecTurnTo :: Float -> Point2 -> Point2 -> Point2 -> Point2
|
||||
vecTurnTo turnSpeed sp tp vdir
|
||||
| angleVV vToTarg vdir <= turnSpeed
|
||||
= magV vdir *.* normalizeV vToTarg
|
||||
| angleVV vToTarg vdir <= turnSpeed =
|
||||
magV vdir *.* normalizeV vToTarg
|
||||
| isLHS (sp +.+ vdir) sp tp = rotateV (negate turnSpeed) vdir
|
||||
| otherwise = rotateV turnSpeed vdir
|
||||
| otherwise = rotateV turnSpeed vdir
|
||||
where
|
||||
vToTarg = tp -.- sp
|
||||
|
||||
Reference in New Issue
Block a user