1
|
#ifndef _TRAJECTORY_HPP
|
2
|
#define _TRAJECTORY_HPP
|
3
|
|
4
|
#define _USE_MATH_DEFINES
|
5
|
#include <cmath>
|
6
|
#include <QList>
|
7
|
#include "element.hpp"
|
8
|
|
9
|
#define MAX_CURVE_SIZE 2500
|
10
|
/// Třída Trajectory představuje vykreslovanou dráhu umístěnou středem do počátku
|
11
|
/// soustavy souřadnic. Dráha je v podobě tubusu. Tubus se zmenšuje a zvětšuje
|
12
|
/// podle souřadnice na ose Z.
|
13
|
class Trajectory: public Element
|
14
|
{
|
15
|
public:
|
16
|
/// Maximální poloměr tubusu (poloměr na nejvetší souřadnici Z).
|
17
|
static const float MAX_RADIUS;
|
18
|
|
19
|
/// Konstruktor pouze nastavuje atribut SET na false.
|
20
|
Trajectory();
|
21
|
|
22
|
/// Funkce pro vytvoření nového tubusu pro danou křivku.
|
23
|
/// @param QList<QVector3D> data - body představující křivku v prostoru.
|
24
|
/// @param const float minimumZ - minimální souřadnice na ose Z.
|
25
|
/// @param const float maximumZ - maximální souřadnice na ose Z.
|
26
|
void setNewCurve(QList<QVector3D> data, const float minimumZ, const float maximumZ);
|
27
|
|
28
|
/// Funkce pro přidání nového bodu do tubusu pro danou křivku.
|
29
|
/// @param QVector3D point - nový bod křivky v prostoru.
|
30
|
/// @param const bool start - nový bod je na počátku křivky.
|
31
|
/// @param const bool finish - nový bod je na konci křivky.
|
32
|
void addNewPointToCurve(QVector3D point, const bool start, const bool finish);
|
33
|
|
34
|
/// @return jestli byly nastaveny potřebné informace pro vykreslení dráhy.
|
35
|
bool isSet();
|
36
|
|
37
|
private:
|
38
|
/// Minimální poloměr tubusu (poloměr na nejmenší souřadnici Z).
|
39
|
static const float MIN_RADIUS;
|
40
|
|
41
|
/// Jak moc má být tubus hladký (hodnoty od 3 do 50). Hladkost je určena
|
42
|
/// počtem obdélníků po obvodu tubusu mezi dvěma vrcholy křivky.
|
43
|
static const int SMOOTHING;
|
44
|
|
45
|
/// Jestli byly nastaveny všechny informace potřebné pro vykresleni křivky.
|
46
|
bool set;
|
47
|
|
48
|
/// Aktuální křivka, do které jsou bodu přidávány
|
49
|
QList<QVector3D> curve;
|
50
|
|
51
|
/// Aktuální počet bodu křivky, do které se body přidávají
|
52
|
int newCurvePointCount;
|
53
|
};
|
54
|
|
55
|
#endif
|