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
lib Namespace Reference

Classes

class  Hill
 Рельеф с высотой More...
 
class  JSONable
 Объект, возможный к считыванию по .json файлу [абстрактный класс]. More...
 
struct  Point
 Математическая точка More...
 
struct  PointAsAngles
 Математическая точка на ед. окружности, выраженная в градусах More...
 
class  Segment
 Сегмент математический траектории More...
 
class  Target
 Контрольная точка More...
 
class  TrappyCircle
 Опасная зона More...
 
class  TrappyLine
 Линия опасного перелета More...
 

Enumerations

enum class  CircleQuadrant { First , Second , Third , Fourth }
 Четверть мат. окружности More...
 

Functions

double DistanceBetweenPoints (const Point &first_point, const Point &second_point)
 Находит расстояние между двумя мат. точками
 
bool operator!= (Point a, Point b)
 
Point operator+ (Point a, Point b)
 
Point operator- (Point a, Point b)
 
bool operator== (Point a, Point b)
 Оператор сравнения двух точек
 
CircleQuadrant QuadrantOccupiedByPoint (const lib::Point &point, const lib::Point &center)
 Находит, в какой части окружности лежит мат. точка
 

Variables

constexpr double inf = std::numeric_limits<double>::infinity()
 Infinity.
 
constexpr double max_coord = 1000000
 
constexpr double precision = 1.0E-6
 

Enumeration Type Documentation

◆ CircleQuadrant

enum class lib::CircleQuadrant
strong

Четверть мат. окружности

Enumerator
First 
Second 
Third 
Fourth 

Function Documentation

◆ DistanceBetweenPoints()

double lib::DistanceBetweenPoints ( const Point & first_point,
const Point & second_point )

Находит расстояние между двумя мат. точками

Parameters
first_pointпервая точка
second_pointвторая точка
Returns
double: искомое расстояние
28 {
29 return sqrt(pow(second_point.x - first_point.x, 2) +
30 pow(second_point.y - first_point.y, 2));
31}
double y
Definition point.h:18
double x
Definition point.h:17
Here is the caller graph for this function:

◆ operator!=()

bool lib::operator!= ( Point a,
Point b )
inline
46{ return !(a == b); }

◆ operator+()

Point lib::operator+ ( Point a,
Point b )
inline
41{ return a += b; }

◆ operator-()

Point lib::operator- ( Point a,
Point b )
inline
42{ return a -= b; }

◆ operator==()

bool lib::operator== ( Point a,
Point b )

Оператор сравнения двух точек

Работает как примерно равно (с точностью precision = 1.0E-6)

Parameters
aпервая точка
bвторая точка
Returns
true: если точки примерно равны
false: если точки не равны даже примерно
17 {
18 return std::abs(a.x - b.x) < precision && std::abs(a.y - b.y) < precision;
19}

◆ QuadrantOccupiedByPoint()

CircleQuadrant lib::QuadrantOccupiedByPoint ( const lib::Point & point,
const lib::Point & center )

Находит, в какой части окружности лежит мат. точка

Parameters
pointмат. точка
centerцентр окружности (тоже мат. точка)
Returns
CircleQuadrant: конкретная четверть окружности
40 {
41 auto rad = DistanceBetweenPoints(point, center);
42 double cos = (point - center).x / rad, sin = (point - center).y / rad;
43
44 // да, здесь везде стоят нестрогие условия, это корректно
45 // таким образом нужный случай попадёт просто в наименьшую четверть
46
47 // I четверть
48 if ((cos >= 0 && cos <= 1) /* cos: [0;1] */ &&
49 (sin >= 0 && sin <= 1) /* sin: [0;1] */)
50 return CircleQuadrant::First;
51
52 // II четверть
53 else if ((cos >= -1 && cos <= 0) /* cos: [-1;0] */ &&
54 (sin >= 0 && sin <= 1) /* sin: [0;1] */)
55 return CircleQuadrant::Second;
56
57 // III четверть
58 else if ((cos >= -1 && cos <= 0) /* cos: [-1;0] */ &&
59 (sin >= -1 && sin <= 0) /* sin: [-1;0] */)
60 return CircleQuadrant::Third;
61
62 // IV четверть
63 else if ((cos >= 0 && cos <= 1) /* cos: [0;1] */ &&
64 (sin >= -1 && sin <= 0) /* sin: [-1;0] */)
65 return CircleQuadrant::Fourth;
66
67 // impossible case
68 return CircleQuadrant::First;
69}
double DistanceBetweenPoints(const Point &first_point, const Point &second_point)
Находит расстояние между двумя мат. точками
Definition point.cpp:27
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ inf

constexpr double lib::inf = std::numeric_limits<double>::infinity()
constexpr

Infinity.

◆ max_coord

constexpr double lib::max_coord = 1000000
constexpr

◆ precision

constexpr double lib::precision = 1.0E-6
constexpr