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
flying_robot.h
Go to the documentation of this file.
1#pragma once
2#include "trajectory.h"
3
4enum class SpeedOfRobot { Low, Medium, High };
5
6namespace gui {
7
8/**
9 * @brief Класс, который позволяет анимировать движение робота
10 * @details Представляет из себя png картинку,
11 * которая движется по траектории
12 */
13class FlyingRobot : public Drawable {
14 public:
15 FlyingRobot() = default;
16
17 /**
18 * @brief Инициализирует новый экземпляр FlyingRobot
19 * @param gui::Trajectory: траектория
20 */
22 : trajectory_{trj}, curr_point_{trj->Segments()[0].Start()} {
23 // Сразу задаем нужные приватные поля при инициализации экземпляра класса, в
24 // зависимости от того, lib::Segment является аркой или прямой линией
25 if (trajectory_->Segments()[0].IsArc())
27 else
29 }
30
31 /**
32 * @brief Отрисовывает png картинку
33 * @param plot: указатель на полотно
34 */
35 void Draw(QCustomPlot* plot) override;
36
37 /**
38 * @brief Эта функция нужна для того, чтобы обновлять позицию картинки на
39 * полотне
40 * @param plot: указатель на полотно
41 */
42 void ReDraw(QCustomPlot* plot);
43
45
47
48 void SetSpeed(SpeedOfRobot speed) { speed_ = speed; }
49
50 private:
52 QCPGraph* graph_{nullptr};
54
57
58 // Количество отрезков, на которые будет делиться lib::Segment
60
61 // Поля для положения на линии
65
66 // Поля для положения на окружности
67
69 // Величина смещения угла
71 // Если true, что двигаемся по часовой
73
74 /**
75 * @brief Обновляет поля cos_of_line_ и sin_of_line_
76 */
77 void UpdateLineFields();
78
79 /**
80 * @brief Обновляет поля curr_angle_on_circle_, clockwise_ и
81 * distribution_of_angle_
82 */
83 void UpdateCircleFields();
84
85 /**
86 * @brief Берет следующий Segment, обновляя приватные поля
87 */
88 void UpdateSegment();
89
90 /**
91 * @brief Обновляет текущее положение точки на линии
92 */
94
95 /**
96 * @brief Обновляет текущее положение точки на окружности
97 */
99};
100
101} // namespace gui
Некоторая возможная к рисованию фигура [абстрактный класс].
Definition base.h:9
Класс, который позволяет анимировать движение робота
Definition flying_robot.h:13
void UpdateSegment()
Берет следующий Segment, обновляя приватные поля
Definition flying_robot.cpp:52
void SetNewPositionOnCircle()
Обновляет текущее положение точки на окружности
Definition flying_robot.cpp:32
FlyingRobot(gui::Trajectory *trj)
Инициализирует новый экземпляр FlyingRobot.
Definition flying_robot.h:21
double curr_angle_on_circle_
Definition flying_robot.h:68
gui::Trajectory * GetTrajectory() const
Definition flying_robot.h:46
void SetSpeed(SpeedOfRobot speed)
Definition flying_robot.h:48
int count_of_partitions_
Definition flying_robot.h:59
void UpdateCircleFields()
Обновляет поля curr_angle_on_circle_, clockwise_ и distribution_of_angle_.
Definition flying_robot.cpp:95
bool clockwise_
Definition flying_robot.h:72
double cos_of_line_
Definition flying_robot.h:63
gui::Trajectory * trajectory_
Definition flying_robot.h:51
FlyingRobot()=default
lib::Point curr_point_
Definition flying_robot.h:56
SpeedOfRobot speed_
Definition flying_robot.h:53
void SetTrajectory(gui::Trajectory *trj)
Definition flying_robot.cpp:6
size_t index_of_segment_
Definition flying_robot.h:55
double line_const_
Definition flying_robot.h:62
double distribution_of_angle_
Definition flying_robot.h:70
double sin_of_line_
Definition flying_robot.h:64
QCPGraph * graph_
Definition flying_robot.h:52
void UpdateLineFields()
Обновляет поля cos_of_line_ и sin_of_line_.
Definition flying_robot.cpp:66
void ReDraw(QCustomPlot *plot)
Эта функция нужна для того, чтобы обновлять позицию картинки на полотне
Definition flying_robot.cpp:138
void SetNewPositionOnLine()
Обновляет текущее положение точки на линии
Definition flying_robot.cpp:19
void Draw(QCustomPlot *plot) override
Отрисовывает png картинку
Definition flying_robot.cpp:126
Фигура траектории облёта объектов на полотне
Definition trajectory.h:14
std::vector< gui::Segment > & Segments()
Возвращает вектор сегментов
Definition trajectory.h:42
SpeedOfRobot
Definition flying_robot.h:4
Definition airport.h:6
Математическая точка
Definition point.h:16