SOFA API  df6198ac
Open source framework for multi-physics simuation
sofa::simulation::mechanicalvisitor::MechanicalPickParticlesWithTagsVisitor Class Reference

#include <MechanicalPickParticlesWithTagsVisitor.h>

Inheritance diagram for sofa::simulation::mechanicalvisitor::MechanicalPickParticlesWithTagsVisitor:

Detailed Description

Find mechanical particles hit by the given ray on dof containing one tag or all provided by a tag list

A mechanical particle is defined as a 2D or 3D, position or rigid DOF which is linked to the free mechanical DOFs by mechanical mappings

Public Attributes

type::Vec3d rayOrigin
 
type::Vec3d rayDirection
 
double radius0
 
double dRadius
 
std::list< sofa::core::objectmodel::Tagtags
 
bool mustContainAllTags
 
Particles particles
 
- Public Attributes inherited from sofa::simulation::Visitor
TagSet subsetsToManage
 list of the subsets More...
 
bool canAccessSleepingNode
 Can the visitor access sleeping nodes? More...
 

Public Member Functions

 MechanicalPickParticlesWithTagsVisitor (const sofa::core::ExecParams *mparams, const type::Vec3d &origin, const type::Vec3d &direction, double r0=0.001, double dr=0.0, std::list< sofa::core::objectmodel::Tag > _tags=std::list< sofa::core::objectmodel::Tag >(), bool _mustContainAllTags=false)
 
Result fwdMechanicalState (simulation::Node *, sofa::core::behavior::BaseMechanicalState *mm) override
 Process the BaseMechanicalState if it is not mapped from the parent level. More...
 
Result fwdMechanicalMapping (simulation::Node *, sofa::core::BaseMapping *map) override
 Process the BaseMechanicalMapping. More...
 
Result fwdMappedMechanicalState (simulation::Node *, sofa::core::behavior::BaseMechanicalState *mm) override
 Process the BaseMechanicalState if it is mapped from the parent level. More...
 
const chargetClassName () const override
 
void getClosestParticle (sofa::core::behavior::BaseMechanicalState *&mstate, unsigned int &indexCollisionElement, type::Vec3 &point, SReal &rayLength)
 get the closest pickable particle More...
 
- Public Member Functions inherited from sofa::simulation::BaseMechanicalVisitor
 BaseMechanicalVisitor (const sofa::core::ExecParams *params)
 
virtual bool readNodeData () const =delete
 
virtual bool writeNodeData () const =delete
 
virtual void setNodeData (simulation::Node *, SReal *, const SReal *)=delete
 
virtual void addNodeData (simulation::Node *, SReal *, const SReal *)=delete
 
const chargetCategoryName () const override
 
virtual bool stopAtMechanicalMapping (simulation::Node *, sofa::core::BaseMapping *map)
 
Result processNodeTopDown (simulation::Node *node) override
 This method calls the fwd* methods during the forward traversal. You typically do not overload it. More...
 
virtual Result processNodeTopDown (simulation::Node *node, LocalStorage *stack) override=delete
 
virtual Result fwdOdeSolver (simulation::Node *, sofa::core::behavior::OdeSolver *)
 Process the OdeSolver. More...
 
virtual Result fwdOdeSolver (VisitorContext *ctx, sofa::core::behavior::OdeSolver *solver)
 Process the OdeSolver. More...
 
virtual Result fwdConstraintSolver (simulation::Node *, sofa::core::behavior::ConstraintSolver *)
 Process the ConstraintSolver. More...
 
virtual Result fwdConstraintSolver (VisitorContext *ctx, sofa::core::behavior::ConstraintSolver *solver)
 Process the ConstraintSolver. More...
 
virtual Result fwdMechanicalMapping (VisitorContext *ctx, sofa::core::BaseMapping *map)
 Process the BaseMechanicalMapping. More...
 
virtual Result fwdMappedMechanicalState (VisitorContext *ctx, sofa::core::behavior::BaseMechanicalState *mm)
 Process the BaseMechanicalState if it is mapped from the parent level. More...
 
virtual Result fwdMechanicalState (VisitorContext *ctx, sofa::core::behavior::BaseMechanicalState *mm)
 Process the BaseMechanicalState if it is not mapped from the parent level. More...
 
virtual Result fwdMass (simulation::Node *, sofa::core::behavior::BaseMass *)
 Process the BaseMass. More...
 
virtual Result fwdMass (VisitorContext *ctx, sofa::core::behavior::BaseMass *mass)
 Process the BaseMass. More...
 
virtual Result fwdForceField (simulation::Node *, sofa::core::behavior::BaseForceField *)
 Process all the BaseForceField. More...
 
virtual Result fwdForceField (VisitorContext *ctx, sofa::core::behavior::BaseForceField *ff)
 Process all the BaseForceField. More...
 
virtual Result fwdInteractionForceField (simulation::Node *node, sofa::core::behavior::BaseInteractionForceField *ff)
 Process all the InteractionForceField. More...
 
virtual Result fwdInteractionForceField (VisitorContext *ctx, sofa::core::behavior::BaseInteractionForceField *ff)
 Process all the InteractionForceField. More...
 
virtual Result fwdProjectiveConstraintSet (simulation::Node *, sofa::core::behavior::BaseProjectiveConstraintSet *)
 Process all the BaseProjectiveConstraintSet. More...
 
virtual Result fwdConstraintSet (simulation::Node *, sofa::core::behavior::BaseConstraintSet *)
 Process all the BaseConstraintSet. More...
 
virtual Result fwdProjectiveConstraintSet (VisitorContext *ctx, sofa::core::behavior::BaseProjectiveConstraintSet *c)
 Process all the BaseProjectiveConstraintSet. More...
 
virtual Result fwdConstraintSet (VisitorContext *ctx, sofa::core::behavior::BaseConstraintSet *c)
 Process all the BaseConstraintSet. More...
 
virtual Result fwdInteractionProjectiveConstraintSet (simulation::Node *, sofa::core::behavior::BaseInteractionProjectiveConstraintSet *)
 Process all the InteractionConstraint. More...
 
virtual Result fwdInteractionConstraint (simulation::Node *, sofa::core::behavior::BaseInteractionConstraint *)
 Process all the InteractionConstraint. More...
 
virtual Result fwdInteractionProjectiveConstraintSet (VisitorContext *ctx, sofa::core::behavior::BaseInteractionProjectiveConstraintSet *c)
 Process all the InteractionConstraint. More...
 
virtual Result fwdInteractionConstraint (VisitorContext *ctx, sofa::core::behavior::BaseInteractionConstraint *c)
 Process all the InteractionConstraint. More...
 
void processNodeBottomUp (simulation::Node *node) override
 This method calls the bwd* methods during the backward traversal. You typically do not overload it. More...
 
virtual void processNodeBottomUp (simulation::Node *node, LocalStorage *stack) override=delete
 
virtual void bwdMechanicalState (simulation::Node *, sofa::core::behavior::BaseMechanicalState *)
 Process the BaseMechanicalState when it is not mapped from parent level. More...
 
virtual void bwdMechanicalState (VisitorContext *ctx, sofa::core::behavior::BaseMechanicalState *mm)
 Process the BaseMechanicalState when it is not mapped from parent level. More...
 
virtual void bwdMappedMechanicalState (simulation::Node *, sofa::core::behavior::BaseMechanicalState *)
 Process the BaseMechanicalState when it is mapped from parent level. More...
 
virtual void bwdMappedMechanicalState (VisitorContext *ctx, sofa::core::behavior::BaseMechanicalState *mm)
 Process the BaseMechanicalState when it is mapped from parent level. More...
 
virtual void bwdMechanicalMapping (simulation::Node *, sofa::core::BaseMapping *)
 Process the BaseMechanicalMapping. More...
 
virtual void bwdMechanicalMapping (VisitorContext *ctx, sofa::core::BaseMapping *map)
 Process the BaseMechanicalMapping. More...
 
virtual void bwdOdeSolver (simulation::Node *, sofa::core::behavior::OdeSolver *)
 Process the OdeSolver. More...
 
virtual void bwdOdeSolver (VisitorContext *ctx, sofa::core::behavior::OdeSolver *solver)
 Process the OdeSolver. More...
 
virtual void bwdConstraintSolver (simulation::Node *, sofa::core::behavior::ConstraintSolver *)
 Process the ConstraintSolver. More...
 
virtual void bwdConstraintSolver (VisitorContext *ctx, sofa::core::behavior::ConstraintSolver *solver)
 Process the ConstraintSolver. More...
 
virtual void bwdProjectiveConstraintSet (simulation::Node *, sofa::core::behavior::BaseProjectiveConstraintSet *)
 Process all the BaseProjectiveConstraintSet. More...
 
virtual void bwdConstraintSet (simulation::Node *, sofa::core::behavior::BaseConstraintSet *)
 Process all the BaseConstraintSet. More...
 
virtual void bwdProjectiveConstraintSet (VisitorContext *ctx, sofa::core::behavior::BaseProjectiveConstraintSet *c)
 Process all the BaseProjectiveConstraintSet. More...
 
virtual void bwdConstraintSet (VisitorContext *ctx, sofa::core::behavior::BaseConstraintSet *c)
 Process all the BaseConstraintSet. More...
 
- Public Member Functions inherited from sofa::simulation::Visitor
 Visitor (const sofa::core::ExecParams *params)
 
virtual ~Visitor ()
 
const sofa::core::ExecParamsexecParams () const
 
virtual bool childOrderReversed (simulation::Node *)
 Return true to reverse the order of traversal of child nodes. More...
 
virtual bool treeTraversal (TreeTraversalRepetition &repeat)
 
virtual std::string getInfos () const
 
bool testTags (sofa::core::objectmodel::BaseObject *obj)
 
virtual void execute (sofa::core::objectmodel::BaseContext *node, bool precomputedOrder=false)
 Alias for context->executeVisitor(this) More...
 
virtual ctime_t begin (simulation::Node *node, sofa::core::objectmodel::BaseObject *obj, const std::string &typeInfo=std::string("type"))
 
virtual void end (simulation::Node *node, sofa::core::objectmodel::BaseObject *obj, ctime_t t0)
 
virtual ctime_t begin (simulation::Visitor::VisitorContext *node, sofa::core::objectmodel::BaseObject *obj, const std::string &typeInfo=std::string("type"))
 
virtual void end (simulation::Visitor::VisitorContext *node, sofa::core::objectmodel::BaseObject *obj, ctime_t t0)
 
virtual bool isThreadSafe () const
 Specify whether this visitor can be parallelized. More...
 
VisitorsetTags (const TagSet &t)
 
VisitoraddTag (Tag t)
 
VisitorremoveTag (Tag t)
 
template<class VisitorType , class VContext , class Container , typename PointedType >
void for_each (VisitorType *visitor, VContext *ctx, const Container &list, void(VisitorType::*task)(VContext *, PointedType *), const std::string &typeInfo)
 
template<class VisitorType , class VContext , class Container , typename PointedType >
Visitor::Result for_each (VisitorType *visitor, VContext *ctx, const Container &list, Visitor::Result(VisitorType::*task)(VContext *, PointedType *), const std::string &typeInfo)
 

Additional Inherited Members

- Protected Attributes inherited from sofa::simulation::BaseMechanicalVisitor
simulation::Noderoot
 root node from which the visitor was executed More...
 
SReal * rootData { nullptr }
 data for root node More...
 
- Protected Attributes inherited from sofa::simulation::Visitor
const sofa::core::ExecParamsparams
 
- Protected Member Functions inherited from sofa::simulation::BaseMechanicalVisitor
virtual Result processNodeTopDown (simulation::Node *node, VisitorContext *ctx)
 
virtual void processNodeBottomUp (simulation::Node *node, VisitorContext *ctx)
 
- Protected Member Functions inherited from sofa::simulation::Visitor
void debug_write_state_before (sofa::core::objectmodel::BaseObject *obj)
 
void debug_write_state_after (sofa::core::objectmodel::BaseObject *obj)
 
template<class VisitorType , class VContext , class ObjectType >
void runVisitorTask (VisitorType *visitor, VContext *ctx, void(VisitorType::*task)(VContext *, ObjectType *), ObjectType *ptr, const std::string &typeInfo=std::string("type"))
 
template<class VisitorType , class VContext , class ObjectType >
Result runVisitorTask (VisitorType *visitor, VContext *ctx, Result(VisitorType::*task)(VContext *, ObjectType *), ObjectType *ptr, const std::string &typeInfo=std::string("type"))
 
template<class Visit , class VContext , class Container , typename PointedType = typename Container::pointed_type>
void for_each (Visit *visitor, VContext *ctx, const Container &list, void(Visit::*task)(VContext *, PointedType *), const std::string &typeInfo=std::string("type"))
 
template<class Visit , class VContext , class Container , typename PointedType = typename Container::pointed_type>
Visitor::Result for_each (Visit *visitor, VContext *ctx, const Container &list, Visitor::Result(Visit::*task)(VContext *, PointedType *), const std::string &typeInfo=std::string("type"))
 

Attribute details

◆ dRadius

double sofa::simulation::mechanicalvisitor::MechanicalPickParticlesWithTagsVisitor::dRadius

◆ mustContainAllTags

bool sofa::simulation::mechanicalvisitor::MechanicalPickParticlesWithTagsVisitor::mustContainAllTags

◆ particles

Particles sofa::simulation::mechanicalvisitor::MechanicalPickParticlesWithTagsVisitor::particles

◆ radius0

double sofa::simulation::mechanicalvisitor::MechanicalPickParticlesWithTagsVisitor::radius0

◆ rayDirection

type::Vec3d sofa::simulation::mechanicalvisitor::MechanicalPickParticlesWithTagsVisitor::rayDirection

◆ rayOrigin

type::Vec3d sofa::simulation::mechanicalvisitor::MechanicalPickParticlesWithTagsVisitor::rayOrigin

◆ tags

std::list<sofa::core::objectmodel::Tag> sofa::simulation::mechanicalvisitor::MechanicalPickParticlesWithTagsVisitor::tags

Constructor details

◆ MechanicalPickParticlesWithTagsVisitor()

sofa::simulation::mechanicalvisitor::MechanicalPickParticlesWithTagsVisitor::MechanicalPickParticlesWithTagsVisitor ( const sofa::core::ExecParams mparams,
const type::Vec3d origin,
const type::Vec3d direction,
double  r0 = 0.001,
double  dr = 0.0,
std::list< sofa::core::objectmodel::Tag _tags = std::list<sofa::core::objectmodel::Tag>(),
bool  _mustContainAllTags = false 
)
inline

Function details

◆ fwdMappedMechanicalState()

Visitor::Result sofa::simulation::mechanicalvisitor::MechanicalPickParticlesWithTagsVisitor::fwdMappedMechanicalState ( simulation::Node ,
sofa::core::behavior::BaseMechanicalState  
)
overridevirtual

Process the BaseMechanicalState if it is mapped from the parent level.

Reimplemented from sofa::simulation::BaseMechanicalVisitor.

◆ fwdMechanicalMapping()

Visitor::Result sofa::simulation::mechanicalvisitor::MechanicalPickParticlesWithTagsVisitor::fwdMechanicalMapping ( simulation::Node ,
sofa::core::BaseMapping  
)
overridevirtual

Process the BaseMechanicalMapping.

Reimplemented from sofa::simulation::BaseMechanicalVisitor.

◆ fwdMechanicalState()

Visitor::Result sofa::simulation::mechanicalvisitor::MechanicalPickParticlesWithTagsVisitor::fwdMechanicalState ( simulation::Node ,
sofa::core::behavior::BaseMechanicalState  
)
overridevirtual

Process the BaseMechanicalState if it is not mapped from the parent level.

Reimplemented from sofa::simulation::BaseMechanicalVisitor.

◆ getClassName()

const char* sofa::simulation::mechanicalvisitor::MechanicalPickParticlesWithTagsVisitor::getClassName ( ) const
inlineoverridevirtual

Return a class name for this visitor Only used for debugging / profiling purposes

Reimplemented from sofa::simulation::BaseMechanicalVisitor.

◆ getClosestParticle()

void sofa::simulation::mechanicalvisitor::MechanicalPickParticlesWithTagsVisitor::getClosestParticle ( sofa::core::behavior::BaseMechanicalState *&  mstate,
unsigned int &  indexCollisionElement,
type::Vec3 point,
SReal &  rayLength 
)

get the closest pickable particle