54 lines
1.3 KiB
C++
54 lines
1.3 KiB
C++
#pragma once
|
|
#include "random"
|
|
#include "vector2d.hpp"
|
|
|
|
struct Pedestrian {
|
|
|
|
// 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;
|
|
|
|
// social force
|
|
Vector2d F_i;
|
|
|
|
// # =============================================================
|
|
|
|
// $\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();
|
|
}
|
|
};
|