Projekt

Obecné

Profil

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