Files
loop/src/Dodge/ShiftPoint.hs
T

22 lines
658 B
Haskell

{-# LANGUAGE BangPatterns #-}
module Dodge.ShiftPoint where
import Geometry
import Linear
shiftPointBy :: Point2A -> Point2 -> Point2
shiftPointBy (pos, rot) !p = pos +.+ rotateV rot p
compP2A :: Point2A -> Point2A -> Point2A
compP2A (p1,r1) (p2,r2) = (p1 +.+ rotateV r1 p2, r1 + r2)
lerpP2A :: Point2A -> Point2A -> Float -> Point2A
lerpP2A (p1,a1) (p2,a2) x = (p1 + x *^ (p2 - p1), a1 + x * diffAngles a2 a1)
invShiftPointBy :: (Point2, Float) -> Point2 -> Point2
invShiftPointBy (p1, r) p2 = rotateV (- r) $ p2 -.- p1
shiftPoint3By :: (Point2, Float) -> Point3 -> Point3
shiftPoint3By (pos, rot) (V3 x y z) = addZ z $ pos +.+ rotateV rot (V2 x y)