Go to the documentation of this file.
7 #ifndef INCLUDE_JET_PARTICLE_SYSTEM_SOLVER3_H_
8 #define INCLUDE_JET_PARTICLE_SYSTEM_SOLVER3_H_
146 double _dragCoefficient = 1e-4;
147 double _restitutionCoefficient = 0.0;
157 void beginAdvanceTimeStep(
double timeStepInSeconds);
159 void endAdvanceTimeStep(
double timeStepInSeconds);
161 void accumulateExternalForces();
163 void timeIntegration(
double timeStepInSeconds);
165 void updateCollider(
double timeStepInSeconds);
167 void updateEmitter(
double timeStepInSeconds);
177 template <
typename DerivedBuilder>
191 template <
typename T>
194 return static_cast<T&
>(*this);
197 template <
typename T>
200 return static_cast<T&
>(*this);
218 #endif // INCLUDE_JET_PARTICLE_SYSTEM_SOLVER3_H_
1-D array class.
Definition: array1.h:31
const VectorField3Ptr & wind() const
Returns the wind field.
const ParticleEmitter3Ptr & emitter() const
Returns the emitter.
void resolveCollision()
Resolves any collisions occured by the particles.
void setParticleSystemData(const ParticleSystemData3Ptr &newParticles)
Assign a new particle system data.
ParticleSystemSolver3(double radius, double mass)
Constructs a solver with particle parameters.
virtual ~ParticleSystemSolver3()
Destructor.
std::shared_ptr< ParticleSystemData3 > ParticleSystemData3Ptr
Shared pointer type of ParticleSystemData3.
Definition: particle_system_data3.h:250
Abstract base class for physics-based animation.
Definition: physics_animation.h:20
std::shared_ptr< ParticleEmitter3 > ParticleEmitter3Ptr
Shared pointer for the ParticleEmitter3 type.
Definition: particle_emitter3.h:79
virtual void onEndAdvanceTimeStep(double timeStepInSeconds)
Called after a time-step is completed.
virtual void onBeginAdvanceTimeStep(double timeStepInSeconds)
Called when a time-step is about to begin.
void setRestitutionCoefficient(double newRestitutionCoefficient)
Sets the restitution coefficient.
Front-end to create ParticleSystemSolver3 objects step by step.
Definition: particle_system_solver3.h:207
void setWind(const VectorField3Ptr &newWind)
Sets the wind.
void onAdvanceTimeStep(double timeStepInSeconds) override
Called to advane a single time-step.
ParticleSystemSolver3()
Constructs an empty solver.
double restitutionCoefficient() const
Sets the restitution coefficient.
virtual void accumulateForces(double timeStepInSeconds)
Accumulates forces applied to the particles.
Definition: advection_solver2.h:18
static Builder builder()
Returns builder fox ParticleSystemSolver3.
DerivedBuilder & withMass(double mass)
Returns builder with mass per particle.
Definition: particle_system_solver3.h:198
DerivedBuilder & withRadius(double radius)
Returns builder with particle radius.
Definition: particle_system_solver3.h:192
const ParticleSystemData3Ptr & particleSystemData() const
Returns the particle system data.
double _mass
Definition: particle_system_solver3.h:188
ParticleSystemSolver3 build() const
Builds ParticleSystemSolver3.
Basic 3-D particle system solver.
Definition: particle_system_solver3.h:31
void setCollider(const Collider3Ptr &newCollider)
Sets the collider.
double dragCoefficient() const
Returns the drag coefficient.
void onInitialize() override
Initializes the simulator.
double _radius
Definition: particle_system_solver3.h:187
constexpr double kGravity
Gravity.
Definition: constants.h:301
void resolveCollision(ArrayAccessor1< Vector3D > newPositions, ArrayAccessor1< Vector3D > newVelocities)
Vector3< double > Vector3D
Double-type 3D vector.
Definition: vector3.h:349
void setEmitter(const ParticleEmitter3Ptr &newEmitter)
Sets the emitter.
3-D vector class.
Definition: vector3.h:25
std::shared_ptr< ParticleSystemSolver3 > ParticleSystemSolver3Ptr
Shared pointer type for the ParticleSystemSolver3.
Definition: particle_system_solver3.h:171
std::shared_ptr< Collider3 > Collider3Ptr
Shared pointer type for the Collider2.
Definition: collider3.h:118
ParticleSystemSolver3Ptr makeShared() const
Builds shared pointer of ParticleSystemSolver3 instance.
const Collider3Ptr & collider() const
Returns the collider.
void setGravity(const Vector3D &newGravity)
Sets the gravity.
const Vector3D & gravity() const
Returns the gravity.
Base class for particle-based solver builder.
Definition: particle_system_solver3.h:178
1-D array accessor class.
Definition: array_accessor1.h:27
std::shared_ptr< VectorField3 > VectorField3Ptr
Shared pointer for the VectorField3 type.
Definition: vector_field3.h:40
void setDragCoefficient(double newDragCoefficient)
Sets the drag coefficient.