Safe Haskell | None |
---|---|
Language | Haskell2010 |
Types used in generating and solving contact constraints.
- type ContactConstraintGen a = Flipping Contact' -> (a, a) -> Constraint
- data Processed a = Processed {
- _processedToCache :: !a
- _processedToApply :: !a
- type SolutionProcessor a b = a -> b -> b -> Processed b
- data ContactResult a = ContactResult {
- _crNonPen :: a
- _crFriction :: a
- crNonPen :: forall a. Lens' (ContactResult a) a
- crFriction :: forall a. Lens' (ContactResult a) a
Documentation
type ContactConstraintGen a = Flipping Contact' -> (a, a) -> Constraint Source #
Used by "solution processors", which take a cached solution and a new solution and decide what the new incremental solution should be.
Processed | |
|
type SolutionProcessor a b = a -> b -> b -> Processed b Source #
Some SolutionProcessor
s 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.
ContactResult | |
|
Functor ContactResult Source # | |
Applicative ContactResult Source # | |
Foldable ContactResult Source # | |
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 #
crFriction :: forall a. Lens' (ContactResult a) a Source #