From 0786c15aa982d37d12ff9fdc40c02c8b0a65c917 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Tue, 29 Apr 2025 17:36:16 +0200 Subject: wip dangling changes --- c++/particle/particle.hpp | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'c++/particle/particle.hpp') diff --git a/c++/particle/particle.hpp b/c++/particle/particle.hpp index f893b9b..d253e64 100644 --- a/c++/particle/particle.hpp +++ b/c++/particle/particle.hpp @@ -10,10 +10,12 @@ using namespace saw::schema; template using ParticleRigidBody = Struct< Member, "position">, - Member, "velocity">, + Member, "position_old">, + Member, "rotation">, + Member, "rotation_old">, + Member, "acceleration">, - Member, "rotate_velocity">, - Member, "rotate_acceleration"> + Member, "rotational_acceleration"> >; template @@ -32,6 +34,27 @@ template class particle_system { private: saw::data> particles_; + + void verlet_step(saw::data& particle, saw::data time_step_delta){ + auto& body = particle.template get<"rigid_body">(); + + auto& pos = body.template get<"position">(); + auto& pos_old = body.template get<"position_old">(); + + auto& rot = body.template get<"rotation">(); + auto& acc = body.template get<"acceleration">(); + + auto tsd_squared = time_step_delta * time_step_delta; + + saw::data> pos_new; + // Actual step + for(uint64_t i = 0u; i < D; ++i){ + pos_new.at({i}) = saw::data{2.0} * pos.at({i}) - pos_old.at({i}) + acc.at({i}) * tsd_squared; + } + + pos_old = pos; + pos = pos_new; + } public: void step(T time_step_delta){ @@ -41,9 +64,8 @@ public: } template - void update_mask(saw::data& latt){ + void update_particle_border(saw::data& latt){ for(auto& iter : particles_){ - } } }; -- cgit v1.2.3