Changeset 1564 for code/trunk/src/util
- Timestamp:
- Jun 8, 2008, 5:46:52 AM (17 years ago)
- Location:
- code/trunk/src/util
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk/src/util/Math.cc
r1505 r1564 26 26 * 27 27 */ 28 29 #include <OgrePlane.h> 28 30 29 31 #include "Math.h" … … 68 70 return in; 69 71 } 72 73 74 float getAngle(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& otherposition) 75 { 76 orxonox::Vector3 distance = otherposition - myposition; 77 return acos(mydirection.dotProduct(distance) / distance.length()); 78 } 79 80 orxonox::Vector2 get2DViewdirection(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition) 81 { 82 orxonox::Vector3 distance = otherposition - myposition; 83 84 // project difference vector on our plane 85 orxonox::Vector3 projection = Ogre::Plane(mydirection, myposition).projectVector(distance); 86 float angle = acos(myorthonormal.dotProduct(projection) / projection.length()); 87 88 if ((mydirection.crossProduct(myorthonormal)).dotProduct(distance) > 0) 89 return orxonox::Vector2(sin(angle), cos(angle)); 90 else 91 return orxonox::Vector2(-sin(angle), cos(angle)); 92 } 93 94 orxonox::Vector2 get2DViewcoordinates(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition) 95 { 96 orxonox::Vector3 distance = otherposition - myposition; 97 98 // project difference vector on our plane 99 orxonox::Vector3 projection = Ogre::Plane(mydirection, myposition).projectVector(distance); 100 float angle = acos(myorthonormal.dotProduct(projection) / projection.length()); 101 float radius = acos(mydirection.dotProduct(distance) / distance.length()) / Ogre::Math::PI; 102 103 if ((mydirection.crossProduct(myorthonormal)).dotProduct(distance) > 0) 104 return orxonox::Vector2(sin(angle) * radius, cos(angle) * radius); 105 else 106 return orxonox::Vector2(-sin(angle) * radius, cos(angle) * radius); 107 } -
code/trunk/src/util/Math.h
r1505 r1564 58 58 _UtilExport std::ostream& operator<<(std::ostream& out, const orxonox::Degree& degree); 59 59 _UtilExport std::istream& operator>>(std::istream& in, orxonox::Degree& degree); 60 61 _UtilExport float getAngle(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& otherposition); 62 _UtilExport orxonox::Vector2 get2DViewdirection(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition); 63 _UtilExport orxonox::Vector2 get2DViewcoordinates(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition); 60 64 61 65 template <typename T>
Note: See TracChangeset
for help on using the changeset viewer.