Work on crab feet

This commit is contained in:
2026-04-09 10:01:11 +01:00
parent 52d389f342
commit 0a8a2210c0
7 changed files with 42 additions and 21 deletions
+20 -7
View File
@@ -160,17 +160,30 @@ feet cr = case (cr ^? crType . strideAmount,cr ^? crType . footForward) of
crabFeet :: Creature -> Shape
{-# INLINE crabFeet #-}
crabFeet cr = case (cr ^? crType . strideAmount,cr ^? crType . footForward) of
(Just sa,Just LeftForward) -> sh (f sa)
(Just sa,Just RightForward) -> sh (-f sa)
_ -> sh 0
crabFeet cr =
uncurryV translateSHxy rpos afoot
<> uncurryV translateSHxy (f (V2 0 10) rpos) afoot
<> uncurryV translateSHxy lpos afoot
<> uncurryV translateSHxy (f (V2 0 (-10)) lpos) afoot
-- <> uncurryV translateSHxy (rotateV cdir $ cr ^?! crType . lFootPos - cxy) afoot
-- <> uncurryV translateSHxy (rotateV cdir $ cxy - cr ^?! crType . lFootPos) afoot
-- case (cr ^? crType . strideAmount,cr ^? crType . footForward) of
-- (Just sa,Just LeftForward) -> sh (f sa)
-- (Just sa,Just RightForward) -> sh (-f sa)
-- _ -> sh 0
where
sh x = translateSHxy x off aFoot <> translateSHxy (- x) (- off) aFoot
aFoot = upperPrismPolyST 10 $ polyCirc 3 2
rpos = rot ( cr ^?! crType . rFootPos - cxy)
rot = rotateV cdir
lpos = rot ( cr ^?! crType . lFootPos - cxy)
f p q = q + 2 *^ (p - q)
cdir = -cr ^. crDir
cxy = cr ^. crPos . _xy
-- sh x = translateSHxy x off aFoot <> translateSHxy (- x) (- off) aFoot
afoot = upperPrismPolyST 10 $ polyCirc 3 2
off = 10
sLen = strideLength cr
-- f i = 8 * (sLen - 2*i) / sLen
f i = 8 * oneSmooth ((sLen - 2*i) / sLen)
-- f i = 8 * oneSmooth ((sLen - 2*i) / sLen)
deadFeet :: Creature -> Shape
{-# INLINE deadFeet #-}