AGX Dynamics 2.42.3.0
Loading...
Searching...
No Matches
agxSDK::WireMergeSplitThresholds Class Reference

Specific thresholds used to split and merge objects given wires. More...

#include <WireMergeSplitThresholds.h>

+ Inheritance diagram for agxSDK::WireMergeSplitThresholds:

Public Types

enum  MergeThresholds : agx::UInt { NUM_MERGE_THRESHOLDS }
 
enum  SplitThresholds : agx::UInt { MERGE_TENSION_SCALE = NUM_MERGE_THRESHOLDS , FORCE_PROPAGATION_DECAY_SCALE , NUM_THRESHOLDS }
 
- Public Types inherited from agxSDK::MergeSplitThresholds
using MixFunction = std::function< agx::Real(agx::Real, agx::Real)>
 Mixing two values function signature given two values and the return value is the mix.
 

Public Member Functions

 WireMergeSplitThresholds ()
 Default constructor, all thresholds will be set to default.
 
 AGXSTREAM_DECLARE_SERIALIZABLE_BASE (agxSDK::WireMergeSplitThresholds)
 
virtual agx::ICloneableRef clone (agx::ICloneable *child=nullptr) override
 Creates and returns a clone of this object.
 
agx::Real getForcePropagationDecayScale () const
 
agx::Real getMergeTensionScale () const
 
virtual void resetToDefault () override
 Resets all values to default.
 
virtual void restoreLightData (agxStream::StorageStream &str) override
 Restoring data from stream.
 
void setForcePropagationDecayScale (agx::Real forcePropagationDecayScale)
 When external forces are acting on a partially merged wire, the force will propagate and split several nodes at once.
 
void setMergeTensionScale (agx::Real mergeTensionScale)
 When a node is merged the tension is stored and monitored to perform split.
 
virtual void storeLightData (agxStream::StorageStream &str) const override
 Storing data to stream.
 
- Public Member Functions inherited from agxSDK::MergeSplitThresholds
agx::Real get (const agx::UInt index) const
 
agx::Real get (const agx::UInt index, const MergeSplitThresholds *other, MergeSplitThresholds::MixFunction mixFunc) const
 Find and mix values of two instances.
 
agx::UInt getNumValues () const
 
agx::Bool isGlobal () const
 
virtual void resetToDefault ()=0
 Restore all thresholds to default.
 
void set (const agx::UInt index, agx::Real value)
 Assign value given index and value.
 
virtual agx::ICloneableRef clone (agx::ICloneable *child=nullptr)=0
 Creates a clone of this object.
 
- Public Member Functions inherited from agx::Referenced
 Referenced ()
 Default constructor.
 
 Referenced (const Referenced &)
 
template<typename T >
T * as ()
 Subclass casting.
 
template<typename T >
const T * as () const
 
template<typename T >
T * asSafe ()
 Safe subclass casting, return nullptr if template type does not match.
 
template<typename T >
const T * asSafe () const
 
int getReferenceCount () const
 
template<typename T >
bool is () const
 Subclass test.
 
Referenced & operator= (const Referenced &)
 Assignment operator. Will increment the number of references to the referenced object.
 
void reference (void *ptr=nullptr) const
 Explicitly increment the reference count by one, indicating that this object has another pointer which is referencing it.
 
void unreference (void *ptr=nullptr) const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
void unreference_nodelete () const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
- Public Member Functions inherited from agxStream::Serializable
virtual ~Serializable ()
 Destructor for normal C++ use but hidden from SWIG bindings.
 
virtual const char * getClassName () const
 
bool getEnableSerialization () const
 
bool getEnableUuidGeneration ()
 
agx::UInt32 getIndex () const
 This index is given at creation of this object.
 
virtual StorageAgent * getStorageAgent () const =0
 
agx::Uuid getUuid () const
 
bool isFinished () const
 
void setEnableSerialization (bool flag)
 Set to false to disable serialization of this object.
 
void setFinished ()
 Tells this class that it is restored correctly and should not be deleted during destruction of an Archive.
 
void setUuid (const agx::Uuid &uuid)
 Explicitly set a Uuid on a serializable object.
 

Static Public Member Functions

static agxStream::Serializable * create (agxStream::InputArchive &)
 
- Static Public Member Functions inherited from agx::Referenced
template<typename T >
static bool ValidateCast (const Referenced *object)
 
- Static Public Member Functions inherited from agxStream::Serializable
static void setEnableUuidGeneration (bool flag)
 Specify if there should be UUID:s generated for each new Serializable object. By default it is enabled.
 

Protected Member Functions

virtual ~WireMergeSplitThresholds ()
 Reference counted object - protected destructor.
 
- Protected Member Functions inherited from agxSDK::MergeSplitThresholds
 MergeSplitThresholds (const agx::UInt numValues)
 Construct given number of thresholds.
 
virtual ~MergeSplitThresholds ()
 Reference counted object, protected destructor.
 
void cloneValuesTo (MergeSplitThresholds &target) const
 Resizes and copies values to target.
 
- Protected Member Functions inherited from agx::Referenced
virtual ~Referenced ()
 Destructor.
 
void allocateObserverVector () const
 
void deleteUsingDeleteHandler () const
 
- Protected Member Functions inherited from agxStream::Serializable
 Serializable ()
 Default constructor.
 
 Serializable (const Serializable &other)
 Copy constructor.
 
void generateUuid ()
 

Additional Inherited Members

- Static Protected Member Functions inherited from agx::Referenced
static DeleteHandler * getDeleteHandler ()
 
static void setDeleteHandler (DeleteHandler *handler)
 Internal: Set a DeleteHandler to which deletion of all referenced counted objects will be delegated to.
 
- Protected Attributes inherited from agx::Referenced
Mutex m_mutex
 
ObserverContainer m_observers
 
AtomicValue m_refCount
 

Detailed Description

Specific thresholds used to split and merge objects given wires.

Definition at line 28 of file WireMergeSplitThresholds.h.

Member Enumeration Documentation

◆ MergeThresholds

Enumerator
NUM_MERGE_THRESHOLDS 

Definition at line 31 of file WireMergeSplitThresholds.h.

◆ SplitThresholds

Enumerator
MERGE_TENSION_SCALE 

When a node is merged the tension is stored and monitored to perform split.

This threshold scales the merge tension making split more likely when < 1 and less likely > 1. When this scale is 0 the only force keeping the node merged is from the contact - which in most cases isn't enough.

FORCE_PROPAGATION_DECAY_SCALE 

When external forces are acting on a partially merged wire, the force will propagate and split several nodes at once.

This threshold controls the amout of force (of the total external force) that is used to split each node. If this value is high (> 1), the force will not propagate 'too' long, keeping the wire merged. Default: 1.0

NUM_THRESHOLDS 

Definition at line 36 of file WireMergeSplitThresholds.h.

Constructor & Destructor Documentation

◆ WireMergeSplitThresholds()

agxSDK::WireMergeSplitThresholds::WireMergeSplitThresholds ( )

Default constructor, all thresholds will be set to default.

◆ ~WireMergeSplitThresholds()

virtual agxSDK::WireMergeSplitThresholds::~WireMergeSplitThresholds ( )
protectedvirtual

Reference counted object - protected destructor.

Member Function Documentation

◆ AGXSTREAM_DECLARE_SERIALIZABLE_BASE()

agxSDK::WireMergeSplitThresholds::AGXSTREAM_DECLARE_SERIALIZABLE_BASE ( agxSDK::WireMergeSplitThresholds  )

◆ clone()

virtual agx::ICloneableRef agxSDK::WireMergeSplitThresholds::clone ( agx::ICloneable *  child = nullptr)
overridevirtual

Creates and returns a clone of this object.

Implements agx::ICloneable.

◆ create()

static agxStream::Serializable * agxSDK::WireMergeSplitThresholds::create ( agxStream::InputArchive &  )
inlinestatic

Definition at line 91 of file WireMergeSplitThresholds.h.

◆ getForcePropagationDecayScale()

agx::Real agxSDK::WireMergeSplitThresholds::getForcePropagationDecayScale ( ) const
inline
Returns
the current force propagation decay scale

Definition at line 125 of file WireMergeSplitThresholds.h.

References FORCE_PROPAGATION_DECAY_SCALE, and agxSDK::MergeSplitThresholds::get().

◆ getMergeTensionScale()

agx::Real agxSDK::WireMergeSplitThresholds::getMergeTensionScale ( ) const
inline
Returns
the current merge tension scale

Definition at line 120 of file WireMergeSplitThresholds.h.

References agxSDK::MergeSplitThresholds::get(), and MERGE_TENSION_SCALE.

◆ resetToDefault()

virtual void agxSDK::WireMergeSplitThresholds::resetToDefault ( )
overridevirtual

Resets all values to default.

Implements agxSDK::MergeSplitThresholds.

◆ restoreLightData()

virtual void agxSDK::WireMergeSplitThresholds::restoreLightData ( agxStream::StorageStream &  str)
overridevirtual

Restoring data from stream.

◆ setForcePropagationDecayScale()

void agxSDK::WireMergeSplitThresholds::setForcePropagationDecayScale ( agx::Real  forcePropagationDecayScale)

When external forces are acting on a partially merged wire, the force will propagate and split several nodes at once.

This threshold controls the amout of force (of the total external force) that is used to split each node. If this value is high (> 1), the force will not propagate 'too' long, keeping the wire merged. Default: 1.0.

Parameters
forcePropagationDecayScale- the force propagation decay scale

◆ setMergeTensionScale()

void agxSDK::WireMergeSplitThresholds::setMergeTensionScale ( agx::Real  mergeTensionScale)

When a node is merged the tension is stored and monitored to perform split.

This threshold scales the merge tension making split more likely when < 1 and less likely > 1. When this scale is 0 the only force keeping the node merged is from the contact - which in most cases isn't enough. Default: 1.0

Parameters
mergeTensionScale- the merge tension scale

◆ storeLightData()

virtual void agxSDK::WireMergeSplitThresholds::storeLightData ( agxStream::StorageStream &  str) const
overridevirtual

Storing data to stream.


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