Add quaternions to body positions
This commit is contained in:
@@ -160,28 +160,54 @@ translateToLeftWrist cr = overPosSP
|
|||||||
-- f i = negate 2 + negate 6 * (sLen - i) / sLen
|
-- f i = negate 2 + negate 6 * (sLen - i) / sLen
|
||||||
-- g i = negate 2 + negate 6 * (i) / sLen
|
-- g i = negate 2 + negate 6 * (i) / sLen
|
||||||
|
|
||||||
translateToLeftLeg :: Creature -> SPic -> SPic
|
leftLegPQ :: Creature -> Point3Q
|
||||||
translateToLeftLeg cr =
|
leftLegPQ cr = Q.comp (0,Q.qz (_crMvDir cr - _crDir cr))
|
||||||
rotateSP (_crMvDir cr - _crDir cr) . case cr ^? crStance . carriage of
|
(V3 x off 0,Q.qID)
|
||||||
Just (Walking sa LeftForward) -> translateSPxy (f sa) off
|
|
||||||
Just (Walking sa RightForward) -> translateSPxy (- f sa) off
|
|
||||||
_ -> translateSPxy 0 off
|
|
||||||
where
|
where
|
||||||
|
x = case cr ^? crStance . carriage of
|
||||||
|
Just (Walking sa LeftForward) -> f sa
|
||||||
|
Just (Walking sa RightForward) -> - f sa
|
||||||
|
_ -> 0
|
||||||
off = 5
|
off = 5
|
||||||
sLen = _strideLength $ _crStance cr
|
sLen = _strideLength $ _crStance cr
|
||||||
f i = 8 * (sLen - i) / sLen
|
f i = 8 * (sLen - i) / sLen
|
||||||
|
|
||||||
translateToRightLeg :: Creature -> SPic -> SPic
|
|
||||||
translateToRightLeg cr =
|
translateToLeftLeg :: Creature -> SPic -> SPic
|
||||||
rotateSP (_crMvDir cr - _crDir cr) . case cr ^? crStance . carriage of
|
translateToLeftLeg cr = overPosSP (\p -> fst (leftLegPQ cr `Q.comp` (p,Q.qID)))
|
||||||
Just (Walking sa LeftForward) -> translateSPxy (- f sa) (- off)
|
-- rotateSP (_crMvDir cr - _crDir cr) . case cr ^? crStance . carriage of
|
||||||
Just (Walking sa RightForward) -> translateSPxy (f sa) (- off)
|
-- Just (Walking sa LeftForward) -> translateSPxy (f sa) off
|
||||||
_ -> translateSPxy 0 (- off)
|
-- Just (Walking sa RightForward) -> translateSPxy (- f sa) off
|
||||||
|
-- _ -> translateSPxy 0 off
|
||||||
|
-- where
|
||||||
|
-- off = 5
|
||||||
|
-- sLen = _strideLength $ _crStance cr
|
||||||
|
-- f i = 8 * (sLen - i) / sLen
|
||||||
|
|
||||||
|
rightLegPQ :: Creature -> Point3Q
|
||||||
|
rightLegPQ cr = Q.comp (0,Q.qz (_crMvDir cr - _crDir cr))
|
||||||
|
(V3 x off 0,Q.qID)
|
||||||
where
|
where
|
||||||
off = 5
|
x = case cr ^? crStance . carriage of
|
||||||
|
Just (Walking sa LeftForward) -> -f sa
|
||||||
|
Just (Walking sa RightForward) -> f sa
|
||||||
|
_ -> 0
|
||||||
|
off = -5
|
||||||
sLen = _strideLength $ _crStance cr
|
sLen = _strideLength $ _crStance cr
|
||||||
f i = 8 * (sLen - i) / sLen
|
f i = 8 * (sLen - i) / sLen
|
||||||
|
|
||||||
|
translateToRightLeg :: Creature -> SPic -> SPic
|
||||||
|
translateToRightLeg cr = overPosSP (\p -> fst (rightLegPQ cr `Q.comp` (p,Q.qID)))
|
||||||
|
--translateToRightLeg cr =
|
||||||
|
-- rotateSP (_crMvDir cr - _crDir cr) . case cr ^? crStance . carriage of
|
||||||
|
-- Just (Walking sa LeftForward) -> translateSPxy (- f sa) (- off)
|
||||||
|
-- Just (Walking sa RightForward) -> translateSPxy (f sa) (- off)
|
||||||
|
-- _ -> translateSPxy 0 (- off)
|
||||||
|
-- where
|
||||||
|
-- off = 5
|
||||||
|
-- sLen = _strideLength $ _crStance cr
|
||||||
|
-- f i = 8 * (sLen - i) / sLen
|
||||||
|
|
||||||
translateToHead :: Creature -> SPic -> SPic
|
translateToHead :: Creature -> SPic -> SPic
|
||||||
translateToHead cr = overPosSP (\p -> fst $ (headPQ cr `Q.comp` (p,Q.qID)))
|
translateToHead cr = overPosSP (\p -> fst $ (headPQ cr `Q.comp` (p,Q.qID)))
|
||||||
-- | twists cr =
|
-- | twists cr =
|
||||||
@@ -208,12 +234,15 @@ translatePointToHead cr p = fst (headPQ cr `Q.comp` (p,Q.qID))
|
|||||||
-- . rotate3 (negate 0.5)
|
-- . rotate3 (negate 0.5)
|
||||||
-- | otherwise = (+.+.+ V3 2.5 0 20)
|
-- | otherwise = (+.+.+ V3 2.5 0 20)
|
||||||
|
|
||||||
|
chestPQ :: Creature -> Point3Q
|
||||||
|
chestPQ cr = backPQ cr `Q.comp` (0,Q.qz pi)
|
||||||
|
|
||||||
translateToChest :: Creature -> SPic -> SPic
|
translateToChest :: Creature -> SPic -> SPic
|
||||||
translateToChest cr
|
translateToChest cr = overPosSP (\p -> fst $ chestPQ cr `Q.comp` (p,Q.qID))
|
||||||
| oneH cr = rotateSP 0.5
|
-- | oneH cr = rotateSP 0.5
|
||||||
-- | twists cr = translateSPxy 0 5 . rotateSP (-1)
|
-- -- | twists cr = translateSPxy 0 5 . rotateSP (-1)
|
||||||
| twists cr = rotateSP (-1)
|
-- | twists cr = rotateSP (-1)
|
||||||
| otherwise = id
|
-- | otherwise = id
|
||||||
|
|
||||||
backPQ :: Creature -> Point3Q
|
backPQ :: Creature -> Point3Q
|
||||||
backPQ cr
|
backPQ cr
|
||||||
|
|||||||
Reference in New Issue
Block a user