Locus No Pilotus
Project of four first grade MIPT DAFE/RSE students (for engineering practical work in the second semester) in Qt C++
Loading...
Searching...
No Matches
helpers_functions.h
Go to the documentation of this file.
1#pragma once
2
3// our code libs:
4#include "obstacles.h"
5
6namespace math {
7
8double DistanceBetweenPointsOnCircle(const CircleObstacle& circle,
9 const Point& p1, const Point& p2);
10
11double DistanceBetweenPointsOnPolygon(const PolygonObstacle& polygon,
12 const Point& p1, const Point& p2);
13
14/**
15 * @brief Находит точки касания кругов с их общей касательной
16 * @param tangent: касательная
17 * @param circle1: круг 1
18 * @param circle2: круг 2
19 * @return std::pair<Point, Point>: точки касательной
20 */
21std::pair<Point, Point> TangentPoints(const LinearFunction& tangent,
22 const CircleObstacle& circle1,
23 const CircleObstacle& circle2);
24
25/**
26 * @brief Находит точки касания двух многоугольников с их общей
27 * касательной
28 * @param tangent: касательная
29 * @param polygon1: многоугольник 1
30 * @param polygon2: многоугольник 2
31 * @return std::pair<Point, Point>: точки касательной
32 */
33std::pair<Point, Point> TangentPoints(const LinearFunction& tangent,
34 const PolygonObstacle& polygon1,
35 const PolygonObstacle& polygon2);
36
37/**
38 * @brief Находит точки касания многоугольника и круга с их общей
39 * касательной
40 * @param tangent: касательная
41 * @param polygon: многоугольник
42 * @param circle: круг
43 * @return std::pair<Point, Point>: точки касательной
44 */
45std::pair<Point, Point> TangentPoints(const LinearFunction& tangent,
46 const PolygonObstacle& polygon,
47 const CircleObstacle& circle);
48
49/**
50 * @brief Находит точки касания круга c касательной,
51 * проведенной из контрольной точки
52 * @param cr_obst: круг
53 * @param point: контрольная точка
54 * @return std::pair<Point, Point>: точки касательной
55 */
56std::pair<Point, Point> TangentPoints(const CircleObstacle& cr_obst,
57 const Point& point);
58
59/**
60 * @brief Находит точки касания многоугольника c касательной,
61 * проведенной из контрольной точки
62 * @param poly_obst: многоугольник
63 * @param point: контрольная точка
64 * @return std::pair<Point, Point>: точки касательной
65 */
66std::pair<Point, Point> TangentPoints(const PolygonObstacle& poly_obst,
67 const Point& point);
68
69/**
70 * @brief Находит уравнения общих касательных двух кругов
71 * @param circle1: круг 1
72 * @param circle2: круг 2
73 * @return std::vector<LinearFunction>: уравнения касательных
74 */
75std::vector<LinearFunction> TangentsBetween(const CircleObstacle& circle1,
76 const CircleObstacle& circle2);
77
78/**
79 * @brief Находит уравнения общих касательных многоугольника и другого
80 * препятствия
81 * @param polygon: многоугольник
82 * @param obstacle: препятствие
83 * @return уравнения касательных
84 */
85template <typename T>
86std::vector<LinearFunction> TangentsBetween(const PolygonObstacle& polygon,
87 const T& obstacle);
88
89/**
90 * @brief Проверяет, пересекает ли отрезок,
91 * проведенный через две точки, окружность
92 * @param cr_obst: круг
93 * @param pnt1: точка 1
94 * @param pnt2: точка 2
95 * @return bool: результат проверки
96 */
97bool AreThereIntersections(const CircleObstacle& cr_obst, const Point& pnt1,
98 const Point& pnt2);
99
100/**
101 * @brief Проверяет, пересекает ли прямая многоугольник
102 * @param cr_obst: круг
103 * @param line: прямая
104 * @return bool: результат проверки
105 */
106bool AreThereIntersections(const CircleObstacle& cr_obst,
107 const LinearFunction& line);
108
109/**
110 * @brief Проверяет, пересекает ли отрезок,
111 * проведенный через две точки, многоугольник
112 * @param poly_obst: многоугольник
113 * @param pnt1: точка 1
114 * @param pnt2: точка 2
115 * @return bool: результат проверки
116 */
117bool AreThereIntersections(const PolygonObstacle& poly_obst, const Point& pnt1,
118 const Point& pnt2);
119
120/**
121 * @brief Проверяет, пересекает ли прямая многоугольник
122 * @param poly_obst: многоугольник
123 * @param line: прямая
124 * @return bool: результат проверки
125 */
126bool AreThereIntersections(const PolygonObstacle& poly_obst,
127 const LinearFunction& line);
128
129/**
130 * @brief Проверяет, находится ли точка внутри окружности
131 * @param point: точка
132 * @param circle: окружность
133 * @return bool: результат проверки
134 */
135bool IsPointInsideCircle(const Point& point, const CircleObstacle& circle);
136
137} // namespace math
Definition adjacency_matrix.cpp:7
std::pair< Point, Point > TangentPoints(const LinearFunction &tangent, const CircleObstacle &circle1, const CircleObstacle &circle2)
Находит точки касания кругов с их общей касательной
Definition helpers_functions.cpp:43
bool IsPointInsideCircle(const Point &point, const CircleObstacle &circle)
Проверяет, находится ли точка внутри окружности
Definition helpers_functions.cpp:306
double DistanceBetweenPointsOnCircle(const CircleObstacle &circle, const Point &p1, const Point &p2)
Definition helpers_functions.cpp:9
bool AreThereIntersections(const CircleObstacle &cr_obst, const Point &point1, const Point &point2)
Проверяет, пересекает ли отрезок, проведенный через две точки, окружность
Definition helpers_functions.cpp:224
double DistanceBetweenPointsOnPolygon(const PolygonObstacle &polygon, const Point &p1, const Point &p2)
Definition helpers_functions.cpp:19
std::vector< LinearFunction > TangentsBetween(const CircleObstacle &circle1, const CircleObstacle &circle2)
Находит уравнения общих касательных двух кругов
Definition helpers_functions.cpp:158