Changeset 4992 in orxonox.OLD for orxonox/trunk/src/lib
- Timestamp:
- Aug 13, 2005, 10:02:40 AM (19 years ago)
- Location:
- orxonox/trunk/src/lib
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
orxonox/trunk/src/lib/coord/p_node.cc
r4991 r4992 114 114 this->toPosition = NULL; 115 115 this->toDirection = NULL; 116 this->bias = 1.0; 116 117 } 117 118 … … 182 183 } 183 184 184 void PNode::setRelCoorSoft(const Vector& relCoordSoft) 185 /** 186 * sets a new relative position smoothely 187 * @param relCoordSoft the new Position to iterate to 188 * @param bias how fast to iterate to this position 189 */ 190 void PNode::setRelCoorSoft(const Vector& relCoordSoft, float bias) 185 191 { 186 192 if (likely(this->toPosition == NULL)) … … 188 194 189 195 *this->toPosition = relCoordSoft; 190 } 191 192 193 /** 194 * set relative coordinates 196 this->bias = bias; 197 } 198 199 200 /** 201 * set relative coordinates smoothely 195 202 * @param x x-relative coordinates to its parent 196 203 * @param y y-relative coordinates to its parent 197 204 * @param z z-relative coordinates to its parent 198 \see void PNode::setRelCoor (const Vector& relCoord)199 */ 200 void PNode::setRelCoorSoft (float x, float y, float z )201 { 202 this->setRelCoorSoft(Vector(x, y, z) );205 \see void PNode::setRelCoorSoft (const Vector&, float) 206 */ 207 void PNode::setRelCoorSoft (float x, float y, float z, float bias) 208 { 209 this->setRelCoorSoft(Vector(x, y, z), bias); 203 210 } 204 211 … … 295 302 * sets the Relative Direction of this node to its parent in a Smoothed way 296 303 * @param relDirSoft the direction to iterate to smoothely. 297 */ 298 void PNode::setRelDirSoft(const Quaternion& relDirSoft) 304 * @param bias how fast to iterate to the new Direction 305 */ 306 void PNode::setRelDirSoft(const Quaternion& relDirSoft, float bias) 299 307 { 300 308 if (likely(this->toDirection == NULL)) … … 302 310 303 311 *this->toDirection = relDirSoft; 312 this->bias = bias; 304 313 } 305 314 … … 312 321 * main difference is, that here you give a directional vector, that will be translated into a Quaternion 313 322 */ 314 void PNode::setRelDirSoft(float x, float y, float z )315 { 316 this->setRelDirSoft(Quaternion(Vector(x,y,z), Vector(0,1,0)) );323 void PNode::setRelDirSoft(float x, float y, float z, float bias) 324 { 325 this->setRelDirSoft(Quaternion(Vector(x,y,z), Vector(0,1,0)), bias); 317 326 } 318 327 … … 383 392 if( likely(pNode->parent != NULL)) 384 393 { 385 PRINTF( 3)("PNode::addChild() - reparenting node: removing it and adding it again\n");394 PRINTF(4)("PNode::addChild() - reparenting node: removing it and adding it again\n"); 386 395 pNode->parent->children->remove(pNode); 387 396 } … … 463 472 * @param parentNode the new Node to connect this node to. 464 473 */ 465 void PNode::softReparent(PNode* parentNode) 466 { 474 void PNode::softReparent(PNode* parentNode, float bias) 475 { 476 if (this->parent == parentNode) 477 return; 478 467 479 //this->setRelCoorSoft(this->getRelCoor()); 468 480 if (likely(this->toPosition == NULL)) … … 476 488 *this->toDirection = this->getRelDir(); 477 489 } 490 this->bias = bias; 478 491 479 492 … … 491 504 } 492 505 493 void PNode::softReparent(const char* parentName )506 void PNode::softReparent(const char* parentName, float bias) 494 507 { 495 508 PNode* parentNode = dynamic_cast<PNode*>(ClassList::getObject(parentName, CL_PARENT_NODE)); 496 509 if (parentNode != NULL) 497 this->softReparent(parentNode );510 this->softReparent(parentNode, bias); 498 511 } 499 512 … … 555 568 if (unlikely(this->toPosition != NULL)) 556 569 { 557 Vector moveVect = (*this->toPosition - this->getRelCoor()) *dt ;570 Vector moveVect = (*this->toPosition - this->getRelCoor()) *dt*bias; 558 571 559 572 if (likely(moveVect.len() >= .001)) … … 570 583 if (unlikely(this->toDirection != NULL)) 571 584 { 572 Quaternion rotQuat = (*this->toDirection - this->getRelDir()) *dt ;585 Quaternion rotQuat = (*this->toDirection - this->getRelDir()) *dt*bias; 573 586 574 587 // if (likely(rotQuat.len() >= .001)) -
orxonox/trunk/src/lib/coord/p_node.h
r4991 r4992 62 62 void setRelCoor (const Vector& relCoord); 63 63 void setRelCoor (float x, float y, float z); 64 void setRelCoorSoft(const Vector& relCoordSoft );65 void setRelCoorSoft(float x, float y, float z );64 void setRelCoorSoft(const Vector& relCoordSoft, float bias = 1.0); 65 void setRelCoorSoft(float x, float y, float z, float bias = 1.0); 66 66 /** @returns the relative position */ 67 67 inline const Vector& getRelCoor () const { return this->relCoordinate; }; … … 74 74 void setRelDir (const Quaternion& relDir); 75 75 void setRelDir (float x, float y, float z); 76 void setRelDirSoft(const Quaternion& relDirSoft );77 void setRelDirSoft(float x, float y, float z );76 void setRelDirSoft(const Quaternion& relDirSoft, float bias = 1.0); 77 void setRelDirSoft(float x, float y, float z, float bias = 1.0); 78 78 /** @returns the relative Direction */ 79 79 inline const Quaternion& getRelDir () const { return this->relDirection; }; … … 104 104 PNode* getParent () const { return this->parent; }; 105 105 106 void softReparent(PNode* parentNode );107 void softReparent(const char* parentName );106 void softReparent(PNode* parentNode, float bias = 1.0); 107 void softReparent(const char* parentName, float bias = 1.0); 108 108 109 109 void setParentMode (PARENT_MODE parentMode); … … 144 144 Vector* toPosition; //!< a position to which to iterate. (This is used in conjunction with softReparent.and set*CoorSoft) 145 145 Quaternion* toDirection; //!< a direction to which to iterate. (This is used in conjunction with softReparent and set*DirSoft) 146 float bias; //!< how fast to iterate to the given position (default is 1) 146 147 147 148 PNode* parent; //!< a pointer to the parent node -
orxonox/trunk/src/lib/math/vector.h
r4966 r4992 29 29 /** @param index The index of the "array" @returns the x/y/z coordinate */ 30 30 inline float operator[] (float index) const {if( index == 0) return this->x; if( index == 1) return this->y; if( index == 2) return this->z; } 31 /** *@param v The vector to add @returns the addition between two vectors (this + v) */31 /** @param v The vector to add @returns the addition between two vectors (this + v) */ 32 32 inline Vector operator+ (const Vector& v) const { return Vector(x + v.x, y + v.y, z + v.z); }; 33 /** *@param v The vector to add @returns the addition between two vectors (this + v) */33 /** @param v The vector to add @returns the addition between two vectors (this + v) */ 34 34 inline Vector operator+ (const sVec3D& v) const { return Vector(x + v[0], y + v[1], z + v[2]); }; 35 35 /** @param v The vector to add @returns the addition between two vectors (this += v) */ … … 57 57 /** @param f a factor to divide the vector with @returns the vector divided by f (this /= f) */ 58 58 inline const Vector& operator/= (float f) {if (unlikely(f == 0.0)) {this->x=0;this->y=0;this->z=0;} else {this->x /= f; this->y /= f; this->z /= f;} return *this; }; 59 /** \briefcopy constructor @todo (i do not know it this is faster) @param v the vector to assign to this vector. @returns the vector v */59 /** copy constructor @todo (i do not know it this is faster) @param v the vector to assign to this vector. @returns the vector v */ 60 60 inline const Vector& operator= (const Vector& v) { this->x = v.x; this->y = v.y; this->z = v.z; return *this; }; 61 /** \briefcopy constructor* @param v the sVec3D to assign to this vector. @returns the vector v */61 /** copy constructor* @param v the sVec3D to assign to this vector. @returns the vector v */ 62 62 inline const Vector& operator= (const sVec3D& v) { this->x = v[0]; this->y = v[1]; this->z = v[2]; } 63 63 /** @param v: the other vector \return the dot product of the vectors */ … … 65 65 /** @param v: the corss-product partner @returns the cross-product between this and v (this (x) v) */ 66 66 inline Vector cross (const Vector& v) const { return Vector(y * v.z - z * v.y, z * v.x - x * v.z, x * v.y - y * v.x ); } 67 /** \briefscales the this vector with v* @param v the vector to scale this with */67 /** scales the this vector with v* @param v the vector to scale this with */ 68 68 void scale(const Vector& v) { x *= v.x; y *= v.y; z *= v.z; }; 69 69 /** @returns the length of the vector */ 70 70 inline float len() const { return sqrt (x*x+y*y+z*z); } 71 /** \briefnormalizes the vector */71 /** normalizes the vector */ 72 72 inline void normalize() { 73 73 float l = len();
Note: See TracChangeset
for help on using the changeset viewer.