Skip to content
Snippets Groups Projects
Commit 82082a68 authored by bobarna's avatar bobarna
Browse files

added pbd simulaton class and restructured classes

parent 8645aca0
Branches
No related tags found
No related merge requests found
#include "sph_particle.h" #include "particle.h"
namespace sph { namespace sph {
......
#ifndef MADID_SPH_PARTICLE #ifndef MADID_PARTICLE
#define MADID_SPH_PARTICLE #define MADID_PARTICLE
#include <glm/glm.hpp> #include <glm/glm.hpp>
namespace sph {
class Particle { class Particle {
public: public:
typedef glm::vec3 vector; typedef glm::vec3 vector;
...@@ -136,6 +135,5 @@ class Particle { ...@@ -136,6 +135,5 @@ class Particle {
// const float &radius() const; // const float &radius() const;
}; };
}
#endif #endif
#include "pbd_system.h"
#ifndef MADID_PBD_SYSTEM_H
#define MADID_PBD_SYSTEM_H
#include <cstddef>
#include <vector>
#include <glm/glm.hpp>
#include "../particle.h"
typedef glm::vec3 vec3;
class pbd_system {
void solve_distance_constraint(Particle *p1, Particle *p2, float dist);
void solve_bending_constraint(Particle *p1, Particle *p2, float dist);
void solve_collision_constraint(Particle *p, vec3 &q1, vec3 &q2, vec3 &q3);
public:
//// mid-point of the head
HeadObject *head;
//// number of hair strands to be placed on the head
size_t nrStrands;
//// how many segments a strand will be sub-divided into
size_t nrSegments;
//// length of a segment
float lSeg;
////
std::vector<std::vector<Particle *>> strands;
////
vec3 externalForces;
////
std::vector<vec3> collisionTriangles;
void addForce(vec3 force);
PBDSimulation(HeadObject *_head, size_t _nr_sims, size_t _nr_segments, float _l_seg);
void propagateHead();
void update(float dt);
void Draw();
vec3 getExternalForces() const;
void resetExternalForces();
std::vector<Particle *> CreateStrand(size_t segments, float l, vec3 startPos, vec3 color);
};
#endif //MADID_PBD_SYSTEM_H
...@@ -77,7 +77,7 @@ namespace sph { ...@@ -77,7 +77,7 @@ namespace sph {
glm::vec3 f_gravity = G * p_i->rho; glm::vec3 f_gravity = G * p_i->rho;
// p_i->f = f_pressure + f_viscosity + f_gravity; p_i->f = f_pressure + f_viscosity + f_gravity;
p_i->f = f_gravity + f_pressure;// * 0.001f; p_i->f = f_gravity + f_pressure;// * 0.001f;
} }
} }
......
File moved
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment