Changeset 3517 in orxonox.OLD for orxonox/branches
- Timestamp:
- Mar 12, 2005, 12:34:15 PM (20 years ago)
- Location:
- orxonox/branches/trackManager/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
orxonox/branches/trackManager/src/lib/math/curve.cc
r3498 r3517 46 46 } 47 47 48 /** 49 \brief adds a new Node to the bezier Curve ath Position insertPosition 50 \param insertPosition The Position on the Path to insert the node. 51 \param newNode a Vector to the position of the new node 52 */ 48 53 void Curve::addNode(const Vector& newNode, unsigned int insertPosition) 49 54 { … … 253 258 /** 254 259 \brief Calulates the direction of the Curve at time t. 255 \param The time at which to evaluate the curve.256 \returns The vvaluatedVector.260 \param t The time at which to evaluate the curve. 261 \returns The Directional Vector. 257 262 */ 258 263 Vector BezierCurve::calcDir (float t) … … 261 266 } 262 267 268 /** 269 \brief Calulates the acceleration of the Curve at time t. 270 \param t The time at which to evaluate the curve. 271 \returns The acceleration-Vector. 272 */ 263 273 Vector BezierCurve::calcAcc (float t) 264 274 { … … 416 426 /** 417 427 \brief Calulates the direction of the Curve at time t. 418 \param The time at which to evaluate the curve.428 \param t The time at which to evaluate the curve. 419 429 \returns The vvaluated Vector. 420 430 */ -
orxonox/branches/trackManager/src/lib/math/curve.h
r3498 r3517 17 17 18 18 //! An abstract class to handle curves. Needed for the Tracking system in orxonox. 19 /** 20 A Curve is a smooth line which tries to approximate a path through the nodes given to it. 21 <br> 22 23 <b>Usage of Curves:</b><br> 24 \li Creation: Curve* newCurve = new BezierCurve(); 25 \li Adding some Points: newCurve->addNode([Vector to the point to add]); 26 \li Get Point on Curve: newCurve->calcPos(timeIndex); // where timeindex is in the interval [0,1] 27 <br> 28 More Fuctionality is: 29 \li debug(): outputs some info about this curve. 30 \li getNode(i): returns a Vector to the n'th node of the Curve. 31 \li getNodeCount(): returns the count of nodes. 32 <br> 33 General Info: 34 \li Curves take rather much power to be created/altered, but are fast calculated at runtime. 35 */ 19 36 class Curve 20 37 { … … 39 56 40 57 private: 58 //! rebuilds the Curve with the right algorithm 41 59 virtual void rebuild(void) = 0; 42 60 public: … … 45 63 void addNode(const Vector& newNode, unsigned int insertPosition); 46 64 Vector getNode(unsigned int nodeToFind); 65 /** \returns the Count of nodes of this Curve */ 47 66 inline int getNodeCount(void) { return this->nodeCount;} 48 67 49 virtual Vector calcPos(float t) = 0; 68 /** 69 \brief A virtual function to calculate the Position on the Curve 70 \returns positionVector 71 \param t the timeindex on this curve [0,1]f 72 */ 73 virtual Vector calcPos(float t) = 0; 74 /** 75 \brief A virtual function to calculate the Direction of the Curve 76 \returns directionVector 77 \param t the timeindex on this curve [0,1]f 78 */ 50 79 virtual Vector calcDir(float t) = 0; 80 /** 81 \brief A virtual function to calculate the acceleration on the Curve 82 \returns accelerationVector 83 \param t the timeindex on this curve [0,1]f 84 */ 51 85 virtual Vector calcAcc(float t) = 0; 86 /** 87 \brief A virtual function to calculate the Quaternion on the Curve 88 \returns directional Quaternion 89 \param t the timeindex on this curve [0,1]f 90 */ 52 91 virtual Quaternion calcQuat(float t) = 0; 53 92 -
orxonox/branches/trackManager/src/track_manager.cc
r3516 r3517 35 35 this->isJoined = false; 36 36 this->mainJoin = false; 37 this->cond; //!< todo think!!38 37 this->ID = -1; 39 38 this->startingTime = 0; //!< \todo eventually set this to the max time of TrackManager. … … 111 110 } 112 111 112 /** 113 \brief CONDITION that chooses the first child for the decision (static) 114 \param nothing Nothing in this function 115 \returns the chosen child 116 */ 113 117 int TrackElement::lowest(void* nothing) 114 118 { … … 116 120 } 117 121 122 /** 123 \brief CONDITION that chooses the last child for the decision (static) 124 \param nothing Nothing in this function 125 \returns the chosen child 126 */ 118 127 int TrackElement::highest(void* nothing) 119 128 { … … 121 130 } 122 131 132 /** 133 \brief CONDITION that chooses a random child for the decision (static) 134 \param nothing Nothing in this function 135 \returns the chosen child 136 */ 123 137 int TrackElement::random(void* nothing) 124 138 { … … 130 144 } 131 145 132 146 /** 147 \brief CONDITION that chooses child 0, if the node(probably Player) 148 is left of its parent (z<0)) and 1/right otherwise. 149 \param node The node to act upon. 150 \returns the chosen child 151 */ 133 152 int TrackElement::leftRight(void* node) 134 153 { … … 142 161 143 162 144 // todo 163 /** 164 \brief CONDITION that chooses the child, that has the nearest distance to the node (probably player). 165 \param node The node to act upon. 166 \returns the chosen child 167 168 This is rather dangerous, because one must carefully set the points on the curve. 169 The best Way is to set the nodes as wide away of each other as possible, 170 but take into consideration, that if the nodes are to far from a center node, the center will be chosen. 171 (play with this!!). 172 */ 145 173 int TrackElement::nearest(void* node) 146 174 { … … 264 292 /** 265 293 \brief Sets the Type of the Curve 266 \brief curveType The Type to set 294 \param curveType The Type to set 295 \param trackElem the TrackElement that should get a new Curve. 267 296 */ 268 297 void TrackManager::setCurveType(CurveType curveType, TrackElement* trackElem) -
orxonox/branches/trackManager/src/track_manager.h
r3515 r3517 16 16 17 17 class PNode; 18 19 //! condition for choosing a certain Path. \todo implement a useful way.20 struct PathCondition21 {22 23 };24 25 18 26 19 //! A Graph-Element, that holds the curve-structure of a Level. … … 44 37 bool isJoined; //!< If the End of the Curve is joined. 45 38 bool mainJoin; //!< If the End of the Curve is joined, and this is the one Curve the others join to. 46 PathCondition cond; //!< The Split Condition;47 39 int ID; //!< The ID of this TrackElement 48 40 float startingTime; //!< The time at which this Track begins. … … 67 59 int leftRight(void* node); 68 60 int nearest(void* node); 69 int enemyKilled(void* entity);61 // todo int enemyKilled(void* entity); 70 62 }; 71 63 64 //! the Condition to choose between the different ways of the game. 72 65 enum CONDITION {LOWEST, HIGHEST, RANDOM, LEFTRIGHT, NEAREST, ENEMYKILLED}; 73 66 … … 118 111 float maxTime; //!< The maximal time the track has. 119 112 int trackElemCount; //!< The count of TrackElements that exist. 120 PNode* bindSlave; 113 PNode* bindSlave; //!< The node that is slave to the TrackManager. This node will be moved while update the TrackManager, and must NOT move itself. 121 114 122 115 void initChildren(unsigned int childCount); … … 130 123 // Methods to change the Path (initialisation) 131 124 void workOn(unsigned int trackID); 132 inline void setCurveType(CurveType curveType) { this->setCurveType (curveType, this->currentTrackElem);} 125 /** \see setCurveType(CurveType curveType, TrackElement* trackElem); \param curveType the type of the Curve */ 126 inline void setCurveType(CurveType curveType) { this->setCurveType (curveType, this->currentTrackElem);}; 133 127 void setCurveType(CurveType curveType, TrackElement* trackElem); 134 128 void setDuration(float time); … … 140 134 void forkV(unsigned int count, int* trackIDs); 141 135 void condition(CONDITION cond, void* subject); 142 void condition(unsigned int groupID, CONDITION cond, void* subject); //!< \todo really do this!!136 void condition(unsigned int groupID, CONDITION cond, void* subject); 143 137 void join(unsigned int count, ...); 144 138 void joinV(unsigned int count, int* trackIDs);
Note: See TracChangeset
for help on using the changeset viewer.