PhysicsBasedAnimationToolkit 0.0.10
Cross-platform C++20 library of algorithms and data structures commonly used in computer graphics research on physically-based simulation.
Loading...
Searching...
No Matches
pbat::sim::contact::Environment< TScalar > Class Template Reference

Static environment geometry for contact simulation. More...

#include <Environment.h>

Public Types

using ScalarType = TScalar
 Scalar type.
 
using SdfType = pbat::geometry::sdf::Forest<ScalarType>
 

Public Member Functions

 Environment ()=default
 Construct a new Environment object.
 
 Environment (SdfType sdf, Eigen::Index nPrimitives=0)
 Construct a new Environment object.
 
void SetSdf (SdfType sdf)
 Set the signed distance field representing the environment.
 
void Reserve (Eigen::Index nPrimitives)
 Reserve space for contact primitives.
 
template<common::CIndex TIndex = Index>
void DetectContactCandidates (MultibodyTetrahedralMeshSystem< TIndex, ScalarType > const &meshes)
 
Eigen::Index NumContactCandidates () const
 Get the number of contact candidates.
 
bool IsContactCandidate (Eigen::Index i) const
 Check if a primitive is a contact candidate.
 
auto ContactCandidates () const
 Get the contact candidates.
 
void Serialize (io::Archive &archive) const
 Serialize the environment to an archive.
 
void Deserialize (io::Archive const &archive)
 Deserialize the environment from an archive.
 

Public Attributes

Eigen::Vector< bool, Eigen::Dynamic > mIsCandidate
 |# primitives| whether each point is in contact
 
Eigen::Vector< Eigen::Index, Eigen::Dynamic > mCandidates
 |# primitives| indices of active primitives in [0, nCandidates)
 
Eigen::Index nCandidates
 Number of active primitives.
 
Eigen::Vector< ScalarType, Eigen::Dynamic > mPhi
 
Eigen::Matrix< ScalarType, 3, Eigen::Dynamic > mPoint
 
Eigen::Matrix< ScalarType, 3 *3, Eigen::Dynamic > mBasis
 
pbat::geometry::sdf::Forest< ScalarTypemSdf
 Signed distance field representing the environment.
 

Detailed Description

template<common::CFloatingPoint TScalar = Scalar>
class pbat::sim::contact::Environment< TScalar >

Static environment geometry for contact simulation.

Template Parameters
TScalarScalar type

Constructor & Destructor Documentation

◆ Environment()

template<common::CFloatingPoint TScalar = Scalar>
pbat::sim::contact::Environment< TScalar >::Environment ( SdfType sdf,
Eigen::Index nPrimitives = 0 )

Construct a new Environment object.

Parameters
sdfSigned distance field representing the environment
nPrimitivesNumber of primitives to reserve space for

Member Function Documentation

◆ ContactCandidates()

template<common::CFloatingPoint TScalar = Scalar>
auto pbat::sim::contact::Environment< TScalar >::ContactCandidates ( ) const
inline

Get the contact candidates.

Returns
|# candidates| x 1 indices of contact candidate primitives in [0, |# primitives|)

◆ Deserialize()

template<common::CFloatingPoint TScalar = Scalar>
void pbat::sim::contact::Environment< TScalar >::Deserialize ( io::Archive const & archive)

Deserialize the environment from an archive.

Parameters
archiveArchive to deserialize from

◆ DetectContactCandidates()

template<common::CFloatingPoint TScalar = Scalar>
template<common::CIndex TIndex = Index>
void pbat::sim::contact::Environment< TScalar >::DetectContactCandidates ( MultibodyTetrahedralMeshSystem< TIndex, ScalarType > const & meshes)
Returns

◆ IsContactCandidate()

template<common::CFloatingPoint TScalar = Scalar>
bool pbat::sim::contact::Environment< TScalar >::IsContactCandidate ( Eigen::Index i) const
inline

Check if a primitive is a contact candidate.

Parameters
iIndex of the primitive in [0, |# primitives|)
Returns
True if the primitive is a contact candidate

◆ NumContactCandidates()

template<common::CFloatingPoint TScalar = Scalar>
Eigen::Index pbat::sim::contact::Environment< TScalar >::NumContactCandidates ( ) const
inline

Get the number of contact candidates.

Returns
The number of contact candidates

◆ Reserve()

template<common::CFloatingPoint TScalar = Scalar>
void pbat::sim::contact::Environment< TScalar >::Reserve ( Eigen::Index nPrimitives)

Reserve space for contact primitives.

Parameters
nPrimitivesNumber of primitives to reserve space for

◆ Serialize()

template<common::CFloatingPoint TScalar = Scalar>
void pbat::sim::contact::Environment< TScalar >::Serialize ( io::Archive & archive) const

Serialize the environment to an archive.

Parameters
archiveArchive to serialize to

◆ SetSdf()

template<common::CFloatingPoint TScalar = Scalar>
void pbat::sim::contact::Environment< TScalar >::SetSdf ( SdfType sdf)

Set the signed distance field representing the environment.

Parameters
sdfSigned distance field representing the environment

Member Data Documentation

◆ mBasis

template<common::CFloatingPoint TScalar = Scalar>
Eigen::Matrix<ScalarType, 3 * 3, Eigen::Dynamic> pbat::sim::contact::Environment< TScalar >::mBasis

3*3 x |# primitives| contact basis \( \begin{bmatrix} \mathbf{n} & < \mathbf{t} & \mathbf{b} \end{bmatrix} \) at each contact point (undefined if phi > 0), such that mBasis.col(i).reshaped<3,3>() is the basis for primitive i

◆ mPhi

template<common::CFloatingPoint TScalar = Scalar>
Eigen::Vector<ScalarType, Eigen::Dynamic> pbat::sim::contact::Environment< TScalar >::mPhi

|# primitives| signed distance values at each contact point (negative inside, positive outside)

◆ mPoint

template<common::CFloatingPoint TScalar = Scalar>
Eigen::Matrix<ScalarType, 3, Eigen::Dynamic> pbat::sim::contact::Environment< TScalar >::mPoint

3 x |# primitives| contact point on the surface of each primitive (undefined if phi > 0)


The documentation for this class was generated from the following file: