VIPRA Documentation
Loading...
Searching...
No Matches
modules
model
Calm
calm_collision.hpp
1
#pragma once
2
3
#include <vector>
4
5
#include "model/Calm/calm_model_types.hpp"
6
7
#include "vipra/geometry/f3d.hpp"
8
#include "vipra/geometry/rectangle.hpp"
9
#include "vipra/modules/goals.hpp"
10
#include "vipra/modules/pedestrians.hpp"
11
#include "vipra/types/float.hpp"
12
#include "vipra/types/idx.hpp"
13
14
namespace
CALM {
15
16
struct
Data
{
17
std::vector<float> betas;
18
std::vector<float> masses;
19
std::vector<float> desiredSpeeds;
20
std::vector<float> shoulders;
21
std::vector<VIPRA::f_pnt> nearestNeighborDists;
22
};
23
24
class
CollisionDetection
{
25
public
:
26
enum class
Status { WON, LOST };
27
28
void
initialize(VIPRA::f_pnt range,
VIPRA::Modules::Pedestrians
const
& pedset);
29
void
race_detection(
VIPRA::Modules::Pedestrians
const
& pedset,
30
VIPRA::Modules::Goals
const
& goals,
CALM::ModelData
const
& data);
31
32
[[nodiscard]]
auto
status(VIPRA::idx pedIdx) -> Status;
33
34
private
:
35
VIPRA::f_pnt _range;
36
std::vector<Status> _statuses;
37
std::vector<VIPRA::Geometry::Rectangle> _collisionRects;
38
39
void
calc_collision_shapes(
VIPRA::Modules::Pedestrians
const
&
/*pedset*/
,
40
CALM::ModelData
const
&
/*data*/
);
41
void
calc_races(
VIPRA::Modules::Pedestrians
const
&
/*pedset*/
,
42
VIPRA::Modules::Goals
const
&
/*goals*/
);
43
auto
calc_collisions(VIPRA::idx
/*pedIdx*/
,
44
VIPRA::Modules::Pedestrians
const
&
/*pedset*/
,
45
VIPRA::Modules::Goals
const
&
/*goals*/
) -> bool;
46
auto
calc_intersection_midpoint(VIPRA::idx
/*index1*/
,
47
VIPRA::idx
/*index2*/
) ->
VIPRA::f3d
;
48
};
49
}
// namespace CALM
CALM::CollisionDetection
Definition
calm_collision.hpp:24
VIPRA::Modules::Goals
Goals module mixin.
Definition
goals.hpp:26
VIPRA::Modules::Pedestrians
Base Pedestrians module.
Definition
pedestrians.hpp:35
CALM::Data
Definition
calm_collision.hpp:16
CALM::ModelData
Definition
calm_model_types.hpp:24
VIPRA::f3d
Definition
f3d.hpp:27
Generated by
1.13.2