Merge branch 'smail' into lbaumberger

This commit is contained in:
lbaumberger
2026-04-27 14:25:29 +02:00
5 changed files with 174 additions and 227 deletions
+40 -11
View File
@@ -2,23 +2,52 @@
#include "random"
#include "vector2d.hpp"
// For visual simulation
enum Color { BLACK, WHITE };
struct Pedestrian {
Color color;
Vector2d curr_vel; // v_alpha (actual, ≤ v_max)
Vector2d w; // w_alpha (preferred, integrates force)
// TODO: Update initial values
Pedestrian() : curr_vel(), curr_pos(), e(), v_max(1.34 * 1.3), desired_v0(1.34), destination(), F_i(), next_pos(), next_vel(), w_alpha() {}
Pedestrian(Vector2d c_v, Vector2d c_p, Vector2d e, Vector2d d, Vector2d f, Vector2d n_p, Vector2d n_v, Vector2d w_alpha) : curr_vel(c_v), curr_pos(c_p), e(e), v_max(), desired_v0(), destination(d), F_i(f), next_pos(n_p), next_vel(n_v), w_alpha(w_alpha) {}
// $\vec{v}_{\alpha}(t)$
Vector2d curr_vel;
// $\vec{r}_\alpha(t)$
Vector2d curr_pos;
// $\vec{e}_{\alpha}(t)$
Vector2d e;
// $v_{\alpha}^{max} = 1.3 v^{0}_{\alpha}$
double v_max;
// $v_\alpha^0$
double desired_v0;
// # =============================================================
// $\vec{r}^0_\alpha$
Vector2d destination;
Vector2d f_i;
Pedestrian() : color(WHITE), curr_vel(0.0, 0.0), w(0.0, 0.0), curr_pos(0.0, 0.0), e(0.0, 0.0), v_max(0.0), desired_v0(0.0), destination(0.0, 0.0), f_i(0.0, 0.0) {}
// social force
Vector2d F_i;
Pedestrian(Color clr, Vector2d c_v, Vector2d c_p, Vector2d e, double v_max, double desired_v0, Vector2d d, Vector2d f)
: color(clr), curr_vel(c_v), w(c_v), // initialize w = v at t=0
curr_pos(c_p), e(e), v_max(v_max), desired_v0(desired_v0), destination(d), f_i(f) {}
// # =============================================================
// $\vec{r}_\alpha(t+1)$
Vector2d next_pos;
// $\vec{v}_{\alpha}(t + 1)$
Vector2d next_vel;
// $\vec{w}_{\alpha}$
Vector2d w_alpha;
// # =============================================================
void update() {
curr_pos = next_pos;
curr_vel = next_vel;
e = (destination - curr_pos) / (destination - curr_pos).norm();
}
};