#ifndef _TRAJECTORY_HPP #define _TRAJECTORY_HPP #include #include #include "element.hpp" #define MAX_CURVE_SIZE 2500 /// Třída Trajectory představuje vykreslovanou dráhu umístěnou středem do počátku /// soustavy souřadnic. Dráha je v podobě tubusu. Tubus se zmenšuje a zvětšuje /// podle souřadnice na ose Z. class Trajectory: public Element { public: /// Maximální poloměr tubusu (poloměr na nejvetší souřadnici Z). static const float MAX_RADIUS; /// Konstruktor pouze nastavuje atribut SET na false. Trajectory(); /// Funkce pro vytvoření nového tubusu pro danou křivku. /// @param QList data - body představující křivku v prostoru. /// @param const float minimumZ - minimální souřadnice na ose Z. /// @param const float maximumZ - maximální souřadnice na ose Z. void setNewCurve(QList data, const float minimumZ, const float maximumZ); /// Funkce pro přidání nového bodu do tubusu pro danou křivku. /// @param QVector3D point - nový bod křivky v prostoru. /// @param const bool start - nový bod je na počátku křivky. /// @param const bool finish - nový bod je na konci křivky. void addNewPointToCurve(QVector3D point, const bool start, const bool finish); /// @return jestli byly nastaveny potřebné informace pro vykreslení dráhy. bool isSet(); private: /// Minimální poloměr tubusu (poloměr na nejmenší souřadnici Z). static const float MIN_RADIUS; /// Jak moc má být tubus hladký (hodnoty od 3 do 50). Hladkost je určena /// počtem obdélníků po obvodu tubusu mezi dvěma vrcholy křivky. static const int SMOOTHING; /// Jestli byly nastaveny všechny informace potřebné pro vykresleni křivky. bool set; /// Aktuální křivka, do které jsou bodu přidávány QList curve; /// Aktuální počet bodu křivky, do které se body přidávají int newCurvePointCount; }; #endif