Changeset 1564 for code/trunk/src/util/Math.cc
- Timestamp:
- Jun 8, 2008, 5:46:52 AM (17 years ago)
- File:
-
- 1 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 }
Note: See TracChangeset
for help on using the changeset viewer.