Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

ParticleRepulsion Class Reference

#include <ParticleRepulsion.h>

Inheritance diagram for ParticleRepulsion:

Inheritance graph
[legend]
Collaboration diagram for ParticleRepulsion:

Collaboration graph
[legend]
List of all members.

Detailed Description

This is the repulsion force described by Witkin and Heckbert S96 which evenly distributes particles across the zero-set of an implicit function.

The equations are derived assuming a single component of finite area.

Required Attributes: AdaptiveRepulsionData, ParticleLocality.

Holds two parameters. The parameter beta is a fudge added to the denominator in case it is zero. The parameter rho is a factor controlling the rate at which energy approaches a desired energy level.

Definition at line 33 of file ParticleRepulsion.h.

Public Member Functions

 MAKE_PARTICLESTUFF_NAME ()
int qlen ()
 Returns length of particle stuff parameters.

void getq (double *q)
 Get the parameters.

void setq (double *q)
 Set particle stuff parameters.

void qname (char **qn)
 Get the names of the parameters.

virtual char * tip ()
 Returns a tool-tip for the ParticleStuff.

virtual char * qtip (int i)
 Returns a tool-tip for the parameter i.

 ParticleRepulsion (Particles *ps=NULL)
 Creates a particle repulsion attribute for Particles p.

virtual void attachAttributes ()
 Attach all the attributes needed by the behavior.

AdaptiveRepulsionDatagetRepulsionData ()
 Returns the repulsion data.

void applyForce ()
 Applies a force that repels nearby particles.

void integrate ()
 Perform a time step.

void cleanup ()
 Need to update the grid in case particles have moved to different cells.


Public Attributes

AdaptiveRepulsionDatarep_data
 Reference to a repulsion data attribute.

ParticleLocalityp_locality
 Reference to a locality object.

double beta
 Constant to prevent divide-by-zero.

double rho
 Feedback coefficient.


Constructor & Destructor Documentation

ParticleRepulsion::ParticleRepulsion Particles ps = NULL  ) 
 

Creates a particle repulsion attribute for Particles p.

Parameters:
ps The owning particle system.

Definition at line 25 of file ParticleRepulsion.cpp.

References beta, rho, WH_BETA, and WH_RHO.


Member Function Documentation

void ParticleRepulsion::applyForce  )  [virtual]
 

Applies a force that repels nearby particles.

Reimplemented from ParticleBehavior.

Definition at line 68 of file ParticleRepulsion.cpp.

References AdaptiveRepulsionData::alpha, beta, AdaptiveRepulsionData::D, AdaptiveRepulsionData::dr, AdaptiveRepulsionData::Ehat, fastExp(), ParticleLocality::getNeighbors(), ParticlePosition::getPosition(), p_locality, ParticleBehavior::position, ParticleStuff::ps, AdaptiveRepulsionData::r, rep_data, rho, AdaptiveRepulsionData::sdmul, ParticleLocality::setQueryRadius(), AdaptiveRepulsionData::sigma_max, Particles::size(), ParticleVelocity::v, and ParticleBehavior::velocity.

void ParticleRepulsion::attachAttributes  )  [virtual]
 

Attach all the attributes needed by the behavior.

Defaults to a nop.

Reimplemented from ParticleBehavior.

Definition at line 32 of file ParticleRepulsion.cpp.

References ParticleStuff::attachAttribute(), ParticleBehavior::attachAttributes(), Particles::findAttribute(), Particles::getAttribute(), p_locality, ParticleStuff::ps, and rep_data.

void ParticleRepulsion::cleanup  )  [virtual]
 

Need to update the grid in case particles have moved to different cells.

Reimplemented from ParticleBehavior.

Definition at line 59 of file ParticleRepulsion.cpp.

References p_locality, and ParticleLocality::update().

void ParticleRepulsion::getq double *  q  )  [inline, virtual]
 

Get the parameters.

Defaults to no parameters.

Reimplemented from ParticleStuff.

Definition at line 55 of file ParticleRepulsion.h.

References beta, and rho.

AdaptiveRepulsionData* ParticleRepulsion::getRepulsionData  )  [inline]
 

Returns the repulsion data.

Definition at line 84 of file ParticleRepulsion.h.

References rep_data.

Referenced by ParticleRendererGL::render().

void ParticleRepulsion::integrate  )  [virtual]
 

Perform a time step.

Reimplemented from ParticleBehavior.

Definition at line 49 of file ParticleRepulsion.cpp.

References Particles::dt, AdaptiveRepulsionData::integrate(), ParticleStuff::ps, and rep_data.

ParticleRepulsion::MAKE_PARTICLESTUFF_NAME  ) 
 

int ParticleRepulsion::qlen  )  [inline, virtual]
 

Returns length of particle stuff parameters.

Defaults to no parameters.

Reimplemented from ParticleStuff.

Definition at line 53 of file ParticleRepulsion.h.

void ParticleRepulsion::qname char **  qn  )  [inline, virtual]
 

Get the names of the parameters.

Defaults to no parameters.

Reimplemented from ParticleStuff.

Definition at line 65 of file ParticleRepulsion.h.

virtual char* ParticleRepulsion::qtip int  i  )  [inline, virtual]
 

Returns a tool-tip for the parameter i.

Reimplemented from ParticleStuff.

Definition at line 72 of file ParticleRepulsion.h.

void ParticleRepulsion::setq double *  q  )  [inline, virtual]
 

Set particle stuff parameters.

Defaults to no parameters.

Reimplemented from ParticleStuff.

Definition at line 60 of file ParticleRepulsion.h.

References beta, and rho.

virtual char* ParticleRepulsion::tip  )  [inline, virtual]
 

Returns a tool-tip for the ParticleStuff.

Reimplemented from ParticleStuff.

Definition at line 70 of file ParticleRepulsion.h.


Member Data Documentation

double ParticleRepulsion::beta
 

Constant to prevent divide-by-zero.

Definition at line 50 of file ParticleRepulsion.h.

Referenced by applyForce(), getq(), ParticleRepulsion(), and setq().

ParticleLocality* ParticleRepulsion::p_locality
 

Reference to a locality object.

Definition at line 48 of file ParticleRepulsion.h.

Referenced by applyForce(), attachAttributes(), and cleanup().

AdaptiveRepulsionData* ParticleRepulsion::rep_data
 

Reference to a repulsion data attribute.

Definition at line 41 of file ParticleRepulsion.h.

Referenced by applyForce(), attachAttributes(), getRepulsionData(), integrate(), and SingularityRepulsion::repelTarget().

double ParticleRepulsion::rho
 

Feedback coefficient.

Definition at line 51 of file ParticleRepulsion.h.

Referenced by applyForce(), getq(), ParticleRepulsion(), and setq().


The documentation for this class was generated from the following files:
Generated on Mon Jun 28 15:02:48 2004 for Advanced Surface Library by doxygen 1.3.4