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::PointAsAngles Struct Reference

Математическая точка на ед. окружности, выраженная в градусах More...

#include <point.h>

Public Member Functions

 PointAsAngles (double positive_angle=0, double negative_angle=0)
 Инициализирует новый экземпляр Point As Angles:: Point As Angles.
 
std::pair< double, double > ToPair ()
 Переводит lib::PointAsAngles в std::pair.
 

Static Public Member Functions

static PointAsAngles FromPoint (const lib::Point &point, const lib::Point &center)
 Переводит мат. точку в мат. точку на ед. окружности
 
static const PointAsAngles InfPoint ()
 

Public Attributes

double negative_angle
 Угол на промежутке [-360°; 0°].
 
double positive_angle
 Угол на промежутке [0°; 360°].
 

Detailed Description

Математическая точка на ед. окружности, выраженная в градусах

Имеет два поля, представляющие собой углы на промежутках [0°; 360°] и [-360°; 0°]

Constructor & Destructor Documentation

◆ PointAsAngles()

lib::PointAsAngles::PointAsAngles ( double positive_angle = 0,
double negative_angle = 0 )

Инициализирует новый экземпляр Point As Angles:: Point As Angles.

Parameters
positive_angle
negative_angle
79 if (positive_angle < -lib::precision || negative_angle > lib::precision) {
80 throw std::runtime_error("dev: error signed angles in PointAsAngles");
81 }
82}
constexpr double precision
Definition point.h:11
double negative_angle
Угол на промежутке [-360°; 0°].
Definition point.h:63
double positive_angle
Угол на промежутке [0°; 360°].
Definition point.h:60

Member Function Documentation

◆ FromPoint()

PointAsAngles lib::PointAsAngles::FromPoint ( const lib::Point & point,
const lib::Point & center )
static

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

Parameters
pointизначальная мат. точка
centerцентр окружности, относительно которого считать
Returns
PointAsAngles: мат. точка на ед. окружности
91 {
92 auto rad = DistanceBetweenPoints(point, center);
93 double cos = (point - center).x / rad, sin = (point - center).y / rad;
94
95 auto quarter = QuadrantOccupiedByPoint(point, center);
96 double angle = std::abs(std::atan2(sin, cos) * 180.0 / M_PI);
97
98 switch (quarter) {
101 return {angle, angle - 360};
102 }
105 return {360 - angle, -angle};
106 }
107 }
108
109 // impossible case
110 return InfPoint();
111}
double DistanceBetweenPoints(const Point &first_point, const Point &second_point)
Находит расстояние между двумя мат. точками
Definition point.cpp:27
CircleQuadrant QuadrantOccupiedByPoint(const lib::Point &point, const lib::Point &center)
Находит, в какой части окружности лежит мат. точка
Definition point.cpp:39
static const PointAsAngles InfPoint()
Definition point.h:78
Here is the call graph for this function:
Here is the caller graph for this function:

◆ InfPoint()

static const PointAsAngles lib::PointAsAngles::InfPoint ( )
inlinestatic
78{ return {inf, inf}; }
constexpr double inf
Infinity.
Definition infinity.h:9
Here is the caller graph for this function:

◆ ToPair()

std::pair< double, double > lib::PointAsAngles::ToPair ( )
inline

Переводит lib::PointAsAngles в std::pair.

Returns
std::pair<double, double>: пара углов
71 {
72 return std::make_pair(positive_angle, negative_angle);
73 }

Member Data Documentation

◆ negative_angle

double lib::PointAsAngles::negative_angle

Угол на промежутке [-360°; 0°].

◆ positive_angle

double lib::PointAsAngles::positive_angle

Угол на промежутке [0°; 360°].


The documentation for this struct was generated from the following files: