Projekt

Obecné

Profil

Stáhnout (2.15 KB) Statistiky
| Větev: | Tag: | Revize:
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
(8-8/10)