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

SilhouetteFate Class Reference

#include <SilhouetteFate.h>

Inheritance diagram for SilhouetteFate:

Inheritance graph
[legend]
Collaboration diagram for SilhouetteFate:

Collaboration graph
[legend]
List of all members.

Detailed Description

This is the class which governs particle birth and death as described by Witkin and Heckbert with modifications to now consider the silhouette.

Particles which are large and have low energy birth new particles and particles which are overcroweded are killed.

Definition at line 24 of file SilhouetteFate.h.

Public Member Functions

 MAKE_PARTICLESTUFF_NAME ()
int qlen ()
 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 void attachAttributes ()
 SilhouetteFate (Particles *ps=NULL, ParticleBoundingBox *b=NULL, SilhouetteAdhesion *sa=NULL, std::string name=std::string("SilhouetteFate"))
 Creates a SilhouetteFate object.

double setSurfaceDiameter (double d)
 Allows for an awareness of surface diameter.

bool fiftyPercent ()
void resetAge ()
void cleanup ()
 We determine particle fate during the cleanup step.


Public Attributes

AdaptiveRepulsionDatarep_data
 Witkin-Heckbert repulsion data.

ParticleOrientationp_orient
 Particle orientations.

ParticleAgep_age
 Age of the silhouette particles.

SilhouetteAdhesionsil_ad
ParticleBoundingBoxp_bounds
 Bounding box.

double surfaceDiameter
double gamma
 Equilibrium speed (multiple of repulsion radius).

double nu
 Fraction of E_hat, for fissioning.

double delta
 Fraction of sigma_hat, for death.

int population


Constructor & Destructor Documentation

SilhouetteFate::SilhouetteFate Particles ps = NULL,
ParticleBoundingBox b = NULL,
SilhouetteAdhesion sa = NULL,
std::string  name = std::string("SilhouetteFate")
 

Creates a SilhouetteFate object.

First it looks for the required attributes in the particle system, and then it sets default constants.

Definition at line 23 of file SilhouetteFate.cpp.

References delta, gamma, nu, p_bounds, population, sil_ad, surfaceDiameter, WH_DELTA, WH_GAMMA, and WH_NU.


Member Function Documentation

void SilhouetteFate::attachAttributes  )  [virtual]
 

Todo:
This behavior uses data from the SilhouetteAdhesion behavior. The shared data should be made into an Attribute.

Reimplemented from ParticleBehavior.

Definition at line 43 of file SilhouetteFate.cpp.

References ParticleStuff::attachAttribute(), ParticleBehavior::attachAttributes(), Particles::getBehavior(), p_age, p_bounds, p_orient, ParticleStuff::ps, rep_data, ParticleAge::reset(), setSurfaceDiameter(), sil_ad, and surfaceDiameter.

void SilhouetteFate::cleanup  )  [virtual]
 

We determine particle fate during the cleanup step.

Determine whether or not particle is to die: 1) Particle velocity is small compared to nominal repulsion radius 2) Repulsion radius is smaller than minimum repulsion radius 3) Biased random test succeds

Determine whether or not to split: (Condition 1: particle is near equilibrium) AND (Condition 2a: repulsion radius is huge OR Condition 2b: particle is adequately energized and repulsion radius is higher than nominal)

Reimplemented from ParticleBehavior.

Definition at line 92 of file SilhouetteFate.cpp.

References Particles::addParticle(), SilhouetteAdhesion::cameraMoved, delta, Particles::dt, gamma, ParticlePosition::getPosition(), ParticleBoundingBox::inBounds(), ParticleOrientation::n, p_age, p_bounds, p_orient, population, ParticleBehavior::position, ParticleStuff::ps, psRandom(), AdaptiveRepulsionData::r, randOrtho(), Particles::removeParticle(), rep_data, ParticleAge::reset(), ParticlePosition::setPosition(), setSurfaceDiameter(), AdaptiveRepulsionData::sigma_hat, AdaptiveRepulsionData::sigma_max, sil_ad, Particles::size(), surfaceDiameter, ParticleAge::t, ParticleVelocity::v, and ParticleBehavior::velocity.

bool SilhouetteFate::fiftyPercent  ) 
 

Definition at line 76 of file SilhouetteFate.cpp.

References SilhouetteAdhesion::camera, dot(), ParticlePosition::getPosition(), ParticleOrientation::n, p_orient, ParticleBehavior::position, ParticleStuff::ps, sil_ad, and Particles::size().

void SilhouetteFate::getq double *  q  )  [virtual]
 

Get the parameters.

Defaults to no parameters.

Reimplemented from ParticleStuff.

Definition at line 191 of file SilhouetteFate.cpp.

References population, and surfaceDiameter.

SilhouetteFate::MAKE_PARTICLESTUFF_NAME  ) 
 

int SilhouetteFate::qlen  )  [virtual]
 

parameters

Reimplemented from ParticleStuff.

Definition at line 187 of file SilhouetteFate.cpp.

void SilhouetteFate::qname char **  qn  )  [virtual]
 

Get the names of the parameters.

Defaults to no parameters.

Reimplemented from ParticleStuff.

Definition at line 201 of file SilhouetteFate.cpp.

void SilhouetteFate::resetAge  )  [inline]
 

Definition at line 66 of file SilhouetteFate.h.

References p_age, and ParticleAge::reset().

void SilhouetteFate::setq double *  q  )  [virtual]
 

Set particle stuff parameters.

Defaults to no parameters.

Reimplemented from ParticleStuff.

Definition at line 196 of file SilhouetteFate.cpp.

References population, and surfaceDiameter.

double SilhouetteFate::setSurfaceDiameter double  d  ) 
 

Allows for an awareness of surface diameter.

Parameters:
d New surface rep_data->diameter.
Returns:
New desired readius.

Definition at line 65 of file SilhouetteFate.cpp.

References AdaptiveRepulsionData::diameter, rep_data, AdaptiveRepulsionData::sigma_hat, and AdaptiveRepulsionData::sigma_max.

Referenced by attachAttributes(), and cleanup().


Member Data Documentation

double SilhouetteFate::delta
 

Fraction of sigma_hat, for death.

Definition at line 49 of file SilhouetteFate.h.

Referenced by cleanup(), and SilhouetteFate().

double SilhouetteFate::gamma
 

Equilibrium speed (multiple of repulsion radius).

Definition at line 47 of file SilhouetteFate.h.

Referenced by cleanup(), and SilhouetteFate().

double SilhouetteFate::nu
 

Fraction of E_hat, for fissioning.

Definition at line 48 of file SilhouetteFate.h.

Referenced by SilhouetteFate().

ParticleAge* SilhouetteFate::p_age
 

Age of the silhouette particles.

Definition at line 31 of file SilhouetteFate.h.

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

ParticleBoundingBox* SilhouetteFate::p_bounds
 

Bounding box.

Definition at line 35 of file SilhouetteFate.h.

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

ParticleOrientation* SilhouetteFate::p_orient
 

Particle orientations.

Definition at line 30 of file SilhouetteFate.h.

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

int SilhouetteFate::population
 

Definition at line 50 of file SilhouetteFate.h.

Referenced by cleanup(), getq(), setq(), and SilhouetteFate().

AdaptiveRepulsionData* SilhouetteFate::rep_data
 

Witkin-Heckbert repulsion data.

Definition at line 29 of file SilhouetteFate.h.

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

SilhouetteAdhesion* SilhouetteFate::sil_ad
 

Definition at line 32 of file SilhouetteFate.h.

Referenced by attachAttributes(), cleanup(), fiftyPercent(), and SilhouetteFate().

double SilhouetteFate::surfaceDiameter
 

Definition at line 45 of file SilhouetteFate.h.

Referenced by attachAttributes(), cleanup(), getq(), setq(), and SilhouetteFate().


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