1 |
c137512e
|
Oto Šťáva
|
#ifndef _TRAJECTORY_HPP
|
2 |
|
|
#define _TRAJECTORY_HPP
|
3 |
|
|
|
4 |
57bf5c97
|
Jakub Hejman
|
#define _USE_MATH_DEFINES
|
5 |
c137512e
|
Oto Šťáva
|
#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
|