Go to the documentation of this file.
7 #ifndef INCLUDE_JET_PARTICLE_SYSTEM_SOLVER2_H_
8 #define INCLUDE_JET_PARTICLE_SYSTEM_SOLVER2_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_SOLVER2_H_
1-D array class.
Definition: array1.h:31
const ParticleEmitter2Ptr & emitter() const
Returns the emitter.
DerivedBuilder & withRadius(double radius)
Returns builder with particle radius.
Definition: particle_system_solver2.h:192
virtual ~ParticleSystemSolver2()
Destructor.
ParticleSystemSolver2(double radius, double mass)
Constructs a solver with particle parameters.
double _radius
Definition: particle_system_solver2.h:187
Base class for particle-based solver builder.
Definition: particle_system_solver2.h:178
Vector2< double > Vector2D
Double-type 2D vector.
Definition: vector2.h:340
Abstract base class for physics-based animation.
Definition: physics_animation.h:20
double _mass
Definition: particle_system_solver2.h:188
void setRestitutionCoefficient(double newRestitutionCoefficient)
Sets the restitution coefficient.
void onInitialize() override
Initializes the simulator.
std::shared_ptr< ParticleSystemSolver2 > ParticleSystemSolver2Ptr
Shared pointer type for the ParticleSystemSolver2.
Definition: particle_system_solver2.h:171
const VectorField2Ptr & wind() const
Returns the wind field.
ParticleSystemSolver2Ptr makeShared() const
Builds shared pointer of ParticleSystemSolver2 instance.
virtual void onBeginAdvanceTimeStep(double timeStepInSeconds)
Called when a time-step is about to begin.
double dragCoefficient() const
Returns the drag coefficient.
const Vector2D & gravity() const
Returns the gravity.
Definition: advection_solver2.h:18
Front-end to create ParticleSystemSolver2 objects step by step.
Definition: particle_system_solver2.h:207
void resolveCollision()
Resolves any collisions occured by the particles.
const Collider2Ptr & collider() const
Returns the collider.
2-D vector class.
Definition: vector2.h:24
void resolveCollision(ArrayAccessor1< Vector2D > newPositions, ArrayAccessor1< Vector2D > newVelocities)
virtual void onEndAdvanceTimeStep(double timeStepInSeconds)
Called after a time-step is completed.
void setWind(const VectorField2Ptr &newWind)
Sets the wind.
std::shared_ptr< Collider2 > Collider2Ptr
Shared pointer type for the Collider2.
Definition: collider2.h:118
void setParticleSystemData(const ParticleSystemData2Ptr &newParticles)
Assign a new particle system data.
double restitutionCoefficient() const
Sets the restitution coefficient.
void setCollider(const Collider2Ptr &newCollider)
Sets the collider.
void onAdvanceTimeStep(double timeStepInSeconds) override
Called to advane a single time-step.
constexpr double kGravity
Gravity.
Definition: constants.h:301
virtual void accumulateForces(double timeStepInSeconds)
Accumulates forces applied to the particles.
void setGravity(const Vector2D &newGravity)
Sets the gravity.
std::shared_ptr< ParticleEmitter2 > ParticleEmitter2Ptr
Shared pointer for the ParticleEmitter2 type.
Definition: particle_emitter2.h:79
std::shared_ptr< VectorField2 > VectorField2Ptr
Shared pointer for the VectorField2 type.
Definition: vector_field2.h:40
static Builder builder()
Returns builder fox ParticleSystemSolver2.
DerivedBuilder & withMass(double mass)
Returns builder with mass per particle.
Definition: particle_system_solver2.h:198
std::shared_ptr< ParticleSystemData2 > ParticleSystemData2Ptr
Shared pointer type of ParticleSystemData2.
Definition: particle_system_data2.h:250
ParticleSystemSolver2()
Constructs an empty solver.
void setEmitter(const ParticleEmitter2Ptr &newEmitter)
Sets the emitter.
Basic 2-D particle system solver.
Definition: particle_system_solver2.h:31
void setDragCoefficient(double newDragCoefficient)
Sets the drag coefficient.
const ParticleSystemData2Ptr & particleSystemData() const
Returns the particle system data.
1-D array accessor class.
Definition: array_accessor1.h:27
ParticleSystemSolver2 build() const
Builds ParticleSystemSolver2.