# Home    # nevrax.com   
Nevrax
Nevrax.org
#News
#Mailing-list
#Documentation
#CVS
#Bugs
#License
Docs
 
Documentation  
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Search  

NL3D::CPSForce Class Reference

All forces in the system derive from this class It has a list with all located on which the force can apply. More...

#include <ps_force.h>

Inheritance diagram for NL3D::CPSForce:

NL3D::CPSTargetLocatedBindable NL3D::CPSLocatedBindable NLMISC::IStreamable NLMISC::IClassable NL3D::CIsotropicForceT NL3D::CIsotropicForceT< CPSFluidFrictionFunctor > NL3D::CIsotropicForceT< CPSTurbulForceFunc > NL3D::CPSForceIntensityHelper NL3D::CPSFluidFriction NL3D::CPSTurbul NL3D::CPSBrownianForce NL3D::CPSCentralGravity NL3D::CPSCylindricVortex NL3D::CPSDirectionnalForce NL3D::CPSGravity NL3D::CPSSpring List of all members.

Public Methods

 CPSForce ()
 Constructor. More...

uint32 getType (void) const
 return this bindable type. More...

virtual uint32 getPriority (void) const
 return priority for forces. More...

virtual bool doesProduceBBox (void) const
 Override of CPSLocatedBindable::doesProduceBBox. forces usually are not part of the bbox. More...

virtual void step (TPSProcessPass pass, TAnimationTime ellapsedTime, TAnimationTime realEllapsedTime)
 process one pass for the force. More...

virtual void performDynamic (TAnimationTime ellapsedTime)=0
 Compute the force on the targets. More...

virtual void show (TAnimationTime ellapsedTime)=0
 Show the force (edition mode). More...

virtual void serial (NLMISC::IStream &f) throw (NLMISC::EStream)
 Serial the force definition. MUST be called by deriver during their serialisation. More...

virtual bool isIntegrable (void) const
 check wether this force is integrable over time. The default is false. More...

virtual void attachTarget (CPSLocated *ptr)
 inherited from CPSLocatedBindableTarget, we use that to tell wether this force is integrable or not. More...

void releaseTargetRsc (CPSLocated *target)
 inherited from CPSLocatedBindableTarget. More...

virtual void integrate (float date, CPSLocated *src, uint32 startIndex, uint32 numObjects, NLMISC::CVector *destPos=NULL, NLMISC::CVector *destSpeed=NULL, bool accumulate=false, uint posStride=sizeof(NLMISC::CVector), uint speedStride=sizeof(NLMISC::CVector))
 Integrate this force on the given located. More...

virtual void integrateSingle (float startDate, float deltaT, uint numStep, CPSLocated *src, uint32 indexInLocated, NLMISC::CVector *destPos, bool accumulate=false, uint posStride=sizeof(NLMISC::CVector))
 Compute a trajectory on several steps for a single object, rather than a step for several object. More...


Protected Methods

void registerToTargets (void)
 register integrable and non-integrable forces to the targets. More...

void cancelIntegrable (void)
 if this force is not integrable anymore, it tells that to its targets. More...

void renewIntegrable (void)
 if this force has become integrable again, this method tells it to the target. More...

virtual void basisChanged (bool systemBasis)
 inherited from CPSLocatedBindable. More...

virtual void newElement (CPSLocated *emitterLocated, uint32 emitterIndex)=0
 Generate a new element for this bindable. More...

virtual void deleteElement (uint32 index)=0
 Delete an element given its index Attributes of the located that hold this bindable are still accessible for of the index given index out of range -> nl_assert. More...

virtual void resize (uint32 size)=0
 Resize the bindable attributes containers DERIVERS SHOULD CALL THEIR PARENT VERSION should not be called directly. More...


Friends

class CPSLocated
class CPSForceIntensity

Detailed Description

All forces in the system derive from this class It has a list with all located on which the force can apply.

Only the motion and toolRender passes are supported for a force. Not sharable accross systems.

Author:
Nicolas Vizerie , Nevrax France
Date:
2001

Definition at line 51 of file ps_force.h.


Constructor & Destructor Documentation

NL3D::CPSForce::CPSForce  
 

Constructor.

Definition at line 46 of file ps_force.cpp.


Member Function Documentation

void NL3D::CPSForce::attachTarget CPSLocated   ptr [virtual]
 

inherited from CPSLocatedBindableTarget, we use that to tell wether this force is integrable or not.

Reimplemented from NL3D::CPSTargetLocatedBindable.

Definition at line 94 of file ps_force.cpp.

References NL3D::CPSLocatedBindable::_Owner, isIntegrable, and nlassert.

void NL3D::CPSForce::basisChanged bool    systemBasis [protected, virtual]
 

inherited from CPSLocatedBindable.

When we deal with integrable forces, they must be in the same basis than their target. If this change, we must notify the target of it.

Reimplemented from NL3D::CPSLocatedBindable.

Definition at line 123 of file ps_force.cpp.

References NL3D::CPSTargetLocatedBindable::_Targets, and isIntegrable.

void NL3D::CPSForce::cancelIntegrable void    [protected]
 

if this force is not integrable anymore, it tells that to its targets.

Definition at line 133 of file ps_force.cpp.

References NL3D::CPSLocatedBindable::_Owner, NL3D::CPSTargetLocatedBindable::_Targets, and nlassert.

Referenced by NL3D::CPSBrownianForce::setIntensityScheme, and NL3D::CPSGravity::setIntensityScheme.

virtual void NL3D::CPSForce::deleteElement uint32    index [protected, pure virtual]
 

Delete an element given its index Attributes of the located that hold this bindable are still accessible for of the index given index out of range -> nl_assert.

Implements NL3D::CPSLocatedBindable.

Implemented in NL3D::CPSForceIntensityHelper.

virtual bool NL3D::CPSForce::doesProduceBBox void    const [inline, virtual]
 

Override of CPSLocatedBindable::doesProduceBBox. forces usually are not part of the bbox.

Reimplemented from NL3D::CPSLocatedBindable.

Definition at line 67 of file ps_force.h.

virtual uint32 NL3D::CPSForce::getPriority void    const [inline, virtual]
 

return priority for forces.

Implements NL3D::CPSLocatedBindable.

Definition at line 64 of file ps_force.h.

uint32 NL3D::CPSForce::getType void    const [inline, virtual]
 

return this bindable type.

Implements NL3D::CPSLocatedBindable.

Definition at line 59 of file ps_force.h.

References NL3D::PSForce.

virtual void NL3D::CPSForce::integrate float    date,
CPSLocated   src,
uint32    startIndex,
uint32    numObjects,
NLMISC::CVector   destPos = NULL,
NLMISC::CVector   destSpeed = NULL,
bool    accumulate = false,
uint    posStride = sizeof(NLMISC::CVector),
uint    speedStride = sizeof(NLMISC::CVector)
[inline, virtual]
 

Integrate this force on the given located.

If 'accumulate' is set to true, it just add the effect of this force on position otherwise, it must also integrate from the initial speed, and add this force effect. The first call to this must be done with 'accumulate' set to false. NB : works only with integrable forces

Reimplemented in NL3D::CPSGravity.

Definition at line 99 of file ps_force.h.

References CPSLocated, nlassert, and src.

virtual void NL3D::CPSForce::integrateSingle float    startDate,
float    deltaT,
uint    numStep,
CPSLocated   src,
uint32    indexInLocated,
NLMISC::CVector   destPos,
bool    accumulate = false,
uint    posStride = sizeof(NLMISC::CVector)
[inline, virtual]
 

Compute a trajectory on several steps for a single object, rather than a step for several object.

If the start date is lower than the creation date, the initial position is used NB : works only with integrable forces

Reimplemented in NL3D::CPSGravity.

Definition at line 112 of file ps_force.h.

References CPSLocated, nlassert, and src.

virtual bool NL3D::CPSForce::isIntegrable void    const [inline, virtual]
 

check wether this force is integrable over time. The default is false.

Reimplemented in NL3D::CPSGravity.

Definition at line 85 of file ps_force.h.

Referenced by attachTarget, basisChanged, registerToTargets, and releaseTargetRsc.

virtual void NL3D::CPSForce::newElement CPSLocated   emitterLocated,
uint32    emitterIndex
[protected, pure virtual]
 

Generate a new element for this bindable.

They are generated according to the propertie of the class

Implements NL3D::CPSLocatedBindable.

Implemented in NL3D::CPSForceIntensityHelper.

virtual void NL3D::CPSForce::performDynamic TAnimationTime    ellapsedTime [pure virtual]
 

Compute the force on the targets.

Implemented in NL3D::CIsotropicForceT.

Referenced by step.

void NL3D::CPSForce::registerToTargets void    [protected]
 

register integrable and non-integrable forces to the targets.

Definition at line 62 of file ps_force.cpp.

References NL3D::CPSTargetLocatedBindable::_Targets, and isIntegrable.

Referenced by NL3D::CPSTurbul::serial, and NL3D::CPSFluidFriction::serial.

void NL3D::CPSForce::releaseTargetRsc CPSLocated   target [virtual]
 

inherited from CPSLocatedBindableTarget.

Reimplemented from NL3D::CPSTargetLocatedBindable.

Definition at line 109 of file ps_force.cpp.

References isIntegrable.

void NL3D::CPSForce::renewIntegrable void    [protected]
 

if this force has become integrable again, this method tells it to the target.

Definition at line 148 of file ps_force.cpp.

References NL3D::CPSLocatedBindable::_Owner, NL3D::CPSTargetLocatedBindable::_Targets, and nlassert.

Referenced by NL3D::CPSBrownianForce::setIntensity, and NL3D::CPSGravity::setIntensity.

virtual void NL3D::CPSForce::resize uint32    size [protected, pure virtual]
 

Resize the bindable attributes containers DERIVERS SHOULD CALL THEIR PARENT VERSION should not be called directly.

Call CPSLOcated::resize instead

Implements NL3D::CPSLocatedBindable.

Implemented in NL3D::CPSForceIntensityHelper.

void NL3D::CPSForce::serial NLMISC::IStream   f throw (NLMISC::EStream) [virtual]
 

Serial the force definition. MUST be called by deriver during their serialisation.

Reimplemented from NL3D::CPSTargetLocatedBindable.

Reimplemented in NL3D::CPSForceIntensityHelper.

Definition at line 52 of file ps_force.cpp.

virtual void NL3D::CPSForce::show TAnimationTime    ellapsedTime [pure virtual]
 

Show the force (edition mode).

Implemented in NL3D::CIsotropicForceT.

Referenced by step.

void NL3D::CPSForce::step TPSProcessPass    pass,
TAnimationTime    ellapsedTime,
TAnimationTime    realEllapsedTime
[virtual]
 

process one pass for the force.

Implements NL3D::CPSLocatedBindable.

Definition at line 78 of file ps_force.cpp.

References performDynamic, NL3D::PSMotion, NL3D::PSToolRender, show, NL3D::TAnimationTime, and NL3D::TPSProcessPass.


Friends And Related Function Documentation

friend class CPSForceIntensity [friend]
 

Definition at line 128 of file ps_force.h.

friend class CPSLocated [friend]
 

Reimplemented from NL3D::CPSLocatedBindable.

Definition at line 127 of file ps_force.h.

Referenced by NL3D::CPSCylindricVortex::getForceIntensityOwner, NL3D::CPSTurbul::getForceIntensityOwner, NL3D::CPSBrownianForce::getForceIntensityOwner, NL3D::CPSFluidFriction::getForceIntensityOwner, NL3D::CPSForceIntensityHelper::getForceIntensityOwner, integrate, integrateSingle, NL3D::CPSTurbul::newElement, NL3D::CPSBrownianForce::newElement, NL3D::CPSFluidFriction::newElement, NL3D::CIsotropicForceT< CPSFluidFrictionFunctor >::newElement, NL3D::CPSForceIntensityHelper::newElement, NL3D::CPSCylindricVortex::show, and NL3D::CPSDirectionnalForce::show.


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