diff options
author | jjesswan <jessica_wan@brown.edu> | 2024-05-10 03:41:20 -0400 |
---|---|---|
committer | jjesswan <jessica_wan@brown.edu> | 2024-05-10 03:41:20 -0400 |
commit | 7c0cd109b098b24279fb17b9a05ab846405d169b (patch) | |
tree | 3c7dcc4f098a83c5c14f5c4f42357a9ab6e1256e /src/particlesystem.cpp | |
parent | c5ff8ed6e95b7de0876dc5e97a9cb606fd84be85 (diff) |
particlesss
Diffstat (limited to 'src/particlesystem.cpp')
-rw-r--r-- | src/particlesystem.cpp | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/particlesystem.cpp b/src/particlesystem.cpp index b645929..566667f 100644 --- a/src/particlesystem.cpp +++ b/src/particlesystem.cpp @@ -35,6 +35,8 @@ float getRandomInRange(float max, float min){ float getRandomY(){ return getRandomInRange(.001,.2); } + + Eigen::Vector3f particlesystem::getRandomInitialVel(){ @@ -42,6 +44,16 @@ Eigen::Vector3f particlesystem::getRandomInitialVel(){ return factor*Eigen::Vector3f(r.first, getRandomY(), r.second); } +Eigen::Vector3f getInitVel(OceanSpray s){ + float x = getRandomInRange(0,1); + float y = getRandomInRange(0.1, .9); + Eigen::Vector3f v = Eigen::Vector3f(s.slope_vector[0], y, s.slope_vector[1]) + Eigen::Vector3f(x,0,0); + return v*10.f; + //p.vel[1] = 0.1; + + +} + void particlesystem::init(std::vector<OceanSpray> verts){ // make sure to set m_verts setVerts(verts); @@ -51,10 +63,10 @@ void particlesystem::init(std::vector<OceanSpray> verts){ for (auto v : m_verts){ Particle p; p.pos = Eigen::Vector3f(v.height); - p.vel = v.slope*factor; + p.life = getRandomInRange(.1,1); + // p.vel = v.slope*factor; //p.vel = getRandomInitialVel(); - p.vel = getRandomInitialVel().asDiagonal() * v.slope; - p.vel[1] = 0.1; + p.vel = getInitVel(v); m_particles.push_back(p); @@ -95,7 +107,7 @@ void particlesystem::update(double deltaTime){ // if particle is still alive, update pos if (p.life >= 0.f){ - float r = getRandomInRange(.5, 1.f); + float r = getRandomInRange(.5, 1.6f); p.vel += gravity*dt*r; p.pos += p.vel * dt * 10.f; // p.vel[1] -= (p.vel.dot(p.vel) / 2 + gravity[0]) * dt; @@ -134,13 +146,10 @@ int particlesystem::getUnusedParticleIndex(){ return -1; } -void particlesystem::respawn_particle(Particle &p, OceanSpray new_pos){ +void particlesystem::respawn_particle(Particle &p, OceanSpray s){ - p.pos = Eigen::Vector3f(new_pos.height); - p.vel = new_pos.slope*factor; - //p.vel = getRandomInitialVel(); - p.vel = getRandomInitialVel().asDiagonal() * new_pos.slope; - p.vel[1] = .01; + p.pos = Eigen::Vector3f(s.height); + p.vel = getInitVel(s); // reset life |