Simulation de base

This commit is contained in:
FyloZ 2024-03-01 17:27:37 -05:00
parent cceb38c7ee
commit 65b6524520
Signed by: william
GPG Key ID: 835378AE9AF4AE97
4 changed files with 8 additions and 4 deletions

View File

@ -23,7 +23,7 @@ namespace gti320
class MatrixBase class MatrixBase
{ {
protected: protected:
DenseStorage<_Scalar, _Rows* _Cols> m_storage; DenseStorage<_Scalar, _Rows * _Cols> m_storage;
public: public:

View File

@ -68,6 +68,7 @@ namespace gti320 {
*/ */
Vector &operator=(const Vector &other) { Vector &operator=(const Vector &other) {
this->m_storage = other.m_storage; this->m_storage = other.m_storage;
this->m_rows = other.rows();
return *this; return *this;
} }

View File

@ -553,7 +553,7 @@ void ParticleSimApplication::step(float dt)
// implicite. Les nouvelles position sont calculées à partir des position // implicite. Les nouvelles position sont calculées à partir des position
// actuelles m_x et des nouvelles vitesses v_plus. Les nouvelles positions // actuelles m_x et des nouvelles vitesses v_plus. Les nouvelles positions
// sont stockées directement dans le vecteur m_x. // sont stockées directement dans le vecteur m_x.
m_x = m_x + dt * v_plus;
// Affecte les valeurs calculées dans le vecteurs d'états aux particules du // Affecte les valeurs calculées dans le vecteurs d'états aux particules du
// système // système

View File

@ -28,8 +28,11 @@ void ParticleSystem::computeForces() {
Particle &p0 = m_particles[s.index0]; Particle &p0 = m_particles[s.index0];
Particle &p1 = m_particles[s.index1]; Particle &p1 = m_particles[s.index1];
p0.f = p0.f + (s.k * p0.x); Vector<float, 2> distance = p1.x - p0.x;
p1.f = p1.f + (-s.k * p1.x); Vector<float, 2> force = (s.k * (1 - s.l0 / distance.norm())) * distance;
p0.f = p0.f + force;
p1.f = p1.f - force;
} }
} }