PeriDyno 0.9.2
Loading...
Searching...
No Matches
ParticleEmitter.h
Go to the documentation of this file.
1
16#pragma once
18
19namespace dyno
20{
25 template<typename TDataType>
26 class ParticleEmitter : public ParametricModel<TDataType>
27 {
28 public:
29 typedef typename TDataType::Real Real;
30 typedef typename TDataType::Coord Coord;
31
33 virtual ~ParticleEmitter();
34
35 uint sizeOfParticles() { return mPosition.size(); }
36
39
40 std::string getNodeType() override;
41
42 public:
43 DEF_VAR(Real, VelocityMagnitude, 1, "Emitter Velocity");
44 DEF_VAR(Real, SamplingDistance, 0.005, "Emitter Sampling Distance");
45 //DEF_VAR(Coord, InitialVelocity, Coord(0, -1, 0), "Initial velocity");
46
47 protected:
48 void updateStates() final;
49
51
53 {
54 auto center = this->varLocation()->getData();
55 auto rot_vec = this->varRotation()->getData();
56
58 float x_rad = rot_vec[0] / 180.0f * M_PI;
59 float y_rad = rot_vec[1] / 180.0f * M_PI;
60 float z_rad = rot_vec[2] / 180.0f * M_PI;
61
62 quat = quat * Quat<Real>(x_rad, Coord(1, 0, 0));
63 quat = quat * Quat<Real>(y_rad, Coord(0, 1, 0));
64 quat = quat * Quat<Real>(z_rad, Coord(0, 0, 1));
65
66 return quat.toMatrix3x3();
67 }
68
69 protected:
72 };
73}
#define M_PI
Definition Typedef.inl:35
DEF_VAR(Real, VelocityMagnitude, 1, "Emitter Velocity")
DArray< Coord > mVelocity
std::string getNodeType() override
virtual void generateParticles()
SquareMatrix< Real, 3 > rotationMatrix()
DArray< Coord > mPosition
DArray< Coord > & getPositions()
DEF_VAR(Real, SamplingDistance, 0.005, "Emitter Sampling Distance")
DArray< Coord > & getVelocities()
TDataType::Coord Coord
static DYN_FUNC Quat< Real > identity()
Definition Quat.h:103
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:24
ArrayMap< T, DeviceType::GPU > DArrayMap
Definition ArrayMap.inl:80