shapes-0.1.0.0: physics engine and other tools for 2D shapes

Safe HaskellNone
LanguageHaskell2010

Physics.Constraints.Types

Description

Types used in generating and solving contact constraints.

Synopsis

Documentation

data Processed a Source #

Used by "solution processors", which take a cached solution and a new solution and decide what the new incremental solution should be.

Constructors

Processed 

Fields

Instances

Functor Processed Source # 

Methods

fmap :: (a -> b) -> Processed a -> Processed b #

(<$) :: a -> Processed b -> Processed a #

Applicative Processed Source # 

Methods

pure :: a -> Processed a #

(<*>) :: Processed (a -> b) -> Processed a -> Processed b #

liftA2 :: (a -> b -> c) -> Processed a -> Processed b -> Processed c #

(*>) :: Processed a -> Processed b -> Processed b #

(<*) :: Processed a -> Processed b -> Processed a #

type SolutionProcessor a b = a -> b -> b -> Processed b Source #

Some SolutionProcessors use contextual information. e.g. The SolutionProcessor for friction needs to know the coefficient of friction and the normal force. (Normal force is the solution to the non-penetration constraint.)

data ContactResult a Source #

Used in the constraint solver to cache solutions ('ContactResult Lagrangian') and constraints ('ContactResult Constraint') in unboxed vectors.

Constraints are calculated from contacts, and Lagrangians are calculated from these constraints, which makes both types "results" of a contact.

Constructors

ContactResult 

Fields

  • _crNonPen :: a

    "result" related to the non-penetration constraint

  • _crFriction :: a

    "result" related to the friction constraint

Instances

Functor ContactResult Source # 

Methods

fmap :: (a -> b) -> ContactResult a -> ContactResult b #

(<$) :: a -> ContactResult b -> ContactResult a #

Applicative ContactResult Source # 
Foldable ContactResult Source # 

Methods

fold :: Monoid m => ContactResult m -> m #

foldMap :: Monoid m => (a -> m) -> ContactResult a -> m #

foldr :: (a -> b -> b) -> b -> ContactResult a -> b #

foldr' :: (a -> b -> b) -> b -> ContactResult a -> b #

foldl :: (b -> a -> b) -> b -> ContactResult a -> b #

foldl' :: (b -> a -> b) -> b -> ContactResult a -> b #

foldr1 :: (a -> a -> a) -> ContactResult a -> a #

foldl1 :: (a -> a -> a) -> ContactResult a -> a #

toList :: ContactResult a -> [a] #

null :: ContactResult a -> Bool #

length :: ContactResult a -> Int #

elem :: Eq a => a -> ContactResult a -> Bool #

maximum :: Ord a => ContactResult a -> a #

minimum :: Ord a => ContactResult a -> a #

sum :: Num a => ContactResult a -> a #

product :: Num a => ContactResult a -> a #

Unbox a => Vector Vector (ContactResult a) Source # 
Unbox a => MVector MVector (ContactResult a) Source # 
Unbox a => Unbox (ContactResult a) Source # 
data MVector s (ContactResult a) Source # 
data Vector (ContactResult a) Source # 

crNonPen :: forall a. Lens' (ContactResult a) a Source #