Vanetza
Loading...
Searching...
No Matches
geometry.hpp
1#pragma once
2#include <vanetza/security/v3/asn1_types.hpp>
3
4namespace vanetza
5{
6
7// forward declaration
8struct PositionFix;
9
10namespace security
11{
12namespace v3
13{
14
15/**
16 * Check if a TwoDLocation is valid
17 *
18 * \param location TwoDLocation to be checked
19 * \return true if latitude and longitude are within valid range
20 */
21bool is_valid(const asn1::TwoDLocation& location);
22
23/**
24 * Check if position is inside a circular region
25 *
26 * \param pos position to be checked
27 * \param region circular region
28 * \return true if position is inside region
29 */
30bool is_inside(const PositionFix& pos, const asn1::CircularRegion& region);
31
32/**
33 * Check if position is inside at least one of the given regions
34 *
35 * \param pos position to be checked
36 * \param regions sequence of rectangular regions
37 * \return true if position is inside at least one region
38 */
39bool is_inside(const PositionFix& pos, const asn1::SequenceOfRectangularRegion& region);
40
41/**
42 * Check if position is inside a rectangular region
43 *
44 * \param pos position to be checked
45 * \param region rectangular region
46 * \return true if position is inside region
47 */
48bool is_inside(const PositionFix& pos, const asn1::RectangularRegion& region);
49
50/**
51 * \brief Check if a location is inside a polygonal region.
52 *
53 * \param location The location to check.
54 * \param region The polygonal region to check against.
55 * \return true if the location is inside the region, false otherwise.
56 */
57bool is_inside(const PositionFix& location, const asn1::PolygonalRegion& region);
58bool is_inside(const asn1::TwoDLocation* location, const asn1::PolygonalRegion* region);
59
60} // namespace v3
61} // namespace security
62} // namespace vanetza
63