33 lines
1.0 KiB
C++
33 lines
1.0 KiB
C++
#pragma once
|
|
#include "random"
|
|
#include "vector2d.hpp"
|
|
|
|
// For visual simulation
|
|
enum Color { BLACK, WHITE };
|
|
|
|
struct Pedestrian {
|
|
Color color;
|
|
// $\vec{v}_{\alpha}(t)$
|
|
Vector2d curr_vel; // v_alpha (actual, ≤ v_max)
|
|
// $\vec{w}_{\alpha}$
|
|
Vector2d w; // w_alpha (preferred, integrates force)
|
|
// $\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;
|
|
// social force
|
|
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) {}
|
|
|
|
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) {}
|
|
};
|