summaryrefslogtreecommitdiff
path: root/src/particlesystem.cpp
diff options
context:
space:
mode:
authorjjesswan <jessica_wan@brown.edu>2024-05-10 03:41:20 -0400
committerjjesswan <jessica_wan@brown.edu>2024-05-10 03:41:20 -0400
commit7c0cd109b098b24279fb17b9a05ab846405d169b (patch)
tree3c7dcc4f098a83c5c14f5c4f42357a9ab6e1256e /src/particlesystem.cpp
parentc5ff8ed6e95b7de0876dc5e97a9cb606fd84be85 (diff)
particlesss
Diffstat (limited to 'src/particlesystem.cpp')
-rw-r--r--src/particlesystem.cpp29
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