-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfigure.h
More file actions
100 lines (81 loc) · 3.43 KB
/
figure.h
File metadata and controls
100 lines (81 loc) · 3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#ifndef FIGURE_H
#define FIGURE_H
#include <QObject>
#include <QVector>
#include <QPoint>
#include <QLine>
#include <cmath>
class Figure : public QObject
{
Q_OBJECT
public:
explicit Figure(QVector<QPoint> _points, QPoint _beginPoint,
float _lFi, float _rFi, float _deltaFi,
float _deltaResizeCoeffX, float _deltaResizeCoeffY,
float _deltaHeight, float _Ax, float _By,
float _parentHeight, QObject *parent = 0);
// Линии, которые необходимо отрисовать
QVector<QLine> lines;
// Поддержка динамической установки значений
void setHeight(int _height);
void setLeftAngle(float _lFi);
void setRightAngle(float _rFi);
void setDeltaAngle(float _deltaFi);
void setDeltaResizeCoeffX(float _deltaResizeCoeffX);
void setDeltaResizeCoeffY(float _deltaResizeCoeffY);
void setDeltaHeight(float _deltaHeight);
// Считывание значений
float getLeftAngle();
float getRightAngle();
float getDeltaAngle();
float getDeltaResizeCoeffX();
float getDeltaResizeCoeffY();
float getDeltaHeight();
// Проверка: удалена-ли линия?
bool isDeleted();
private:
// Точки, с которыми работает класс
QVector<QPoint> m_points;
// Начальная точка, относительно которой производится вращение
QPoint m_beginPoint;
// Угол левого(l) и правого(r) отклонения от центра
float m_lFi, m_rFi;
// Изменение угла в каждый момент времени
float m_deltaFi;
// Изменение размера по X и Y в каждый момент времени
float m_deltaResizeCoeffX, m_deltaResizeCoeffY;
// Изменение высоты в каждый момент времени (падение)
float m_deltaHeight;
// Величины смещения осей координат
float m_Ax, m_By;
// Высота родительсой области (области окна в котором
// производится падение фигуры)
float m_parentHeight;
// Текущий угол отклонения
float m_Fi;
// Первичная высота
float m_fHeight;
// Текущие величины увеличения
float m_resizeCoeffX, m_resizeCoeffY;
// Рабочий флаг
bool m_flag;
// Переменная для установки значения того, что фигура уничтожена
bool m_isDeleted;
// Матрицы вращения, изменения размера и трансляции
float RotationMatrix[2][2];
float ResizeMatrix[2][2];
float TranslationMatrix[3][3];
// Установка рабочих матриц
void setRotationMatrix(float angle);
void setResizeMatrix(float Rx, float Ry);
void setTranslationMatrix(float Tx, float Ty);
// Функции изменения координат точки по матрицам
QPoint rotatePoint(const QPoint point);
QPoint resizePoint(const QPoint point);
QPoint translatePoint(const QPoint point);
signals:
public slots:
// Слот изменения координат точек
void update();
};
#endif // FIGURE_H