hkVector2.h
上传用户:yisoukefu
上传日期:2020-08-09
资源大小:39506k
文件大小:4k
源码类别:

其他游戏

开发平台:

Visual C++

  1. /* 
  2.  * 
  3.  * Confidential Information of Telekinesys Research Limited (t/a Havok). Not for disclosure or distribution without Havok's
  4.  * prior written consent. This software contains code, techniques and know-how which is confidential and proprietary to Havok.
  5.  * Level 2 and Level 3 source code contains trade secrets of Havok. Havok Software (C) Copyright 1999-2009 Telekinesys Research Limited t/a Havok. All Rights Reserved. Use of this software is subject to the terms of an end user license agreement.
  6.  * 
  7.  */
  8. #ifndef HKMATH_MATH2D_H
  9. #define HKMATH_MATH2D_H
  10. /// Two dimensional vector.
  11. class hkVector2
  12. {
  13. public:
  14. /// Return value indicates on which side of the infinite line this point lies.
  15. /// Note that this is not the Euclidean distance unless [p0,p1] is normalized.
  16. /// Greater than zero, zero, less than zero indicate left of, on the line
  17. /// and right of the line respectively. Mnemonic - if the line segment is the
  18. /// positive x-axis, then distance signedness matches the y-axis.
  19. inline hkReal signedDistanceToLine( const hkVector2& p0, const hkVector2& p1 ) const;
  20. /// Return true if this is strictly right of the infinite line p0,p1
  21. inline hkBool32 rightOfLine( const hkVector2& p0, const hkVector2& p1 ) const;
  22. /// Return true if this is strictly left of the infinite line p0,p1
  23. inline hkBool32 leftOfLine( const hkVector2& p0, const hkVector2& p1 ) const;
  24. /// Returns true if the point is inside the circumcircle of the triangle p0, p1, p2 (wound CCW)
  25. inline hkBool32 inCircumcircle( const hkVector2& p0, const hkVector2& p1, const hkVector2& p2, hkReal tolerance = .01f ) const;
  26. /// Return the dot product of this and p.
  27. inline hkReal dot( const hkVector2& p ) const;
  28. /// Elementwise maximum.
  29. inline void setMax( const hkVector2& a, const hkVector2& b );
  30. /// Elementwise minimum.
  31. inline void setMin( const hkVector2& a, const hkVector2& b );
  32. /// Set both elements.
  33. inline void setAll( hkReal a );
  34. /// Set both elements.
  35. inline void set( hkReal a, hkReal b );
  36. /// Set this to the perp of a (90 degree anticlockwise rotation)
  37. inline void setPerp( const hkVector2& a );
  38. /// Set this to the elementwise sum of a and b.
  39. inline void setAdd( const hkVector2& a, const hkVector2& b );
  40. /// Set this to the elementwise product of v and r.
  41. inline void setMul( const hkVector2& v, hkReal r );
  42. /// Set this to the elementwise product of a and b.
  43. inline void setMul( const hkVector2& a, const hkVector2& b );
  44. /// Multiply each element by r.
  45. inline void mul( hkReal r );
  46. /// Set this to a+b*r.
  47. inline void setAddMul( const hkVector2& a, const hkVector2& b, hkReal r );
  48. /// Set this to the elementwise subtraction of a and b.
  49. inline void setSub( const hkVector2& a, const hkVector2& b );
  50. /// Set this to be the vector (1-t)*a + t*b
  51. inline void setInterpolate( const hkVector2& a, const hkVector2& b, hkReal t);
  52. /// Return the distance between this and p.
  53. inline hkReal distanceTo( const hkVector2& p ) const;
  54. /// Set this to be the point on the segment end0,end1 which is closest to p.
  55. void setClosestPointOnSegmentToPoint( const hkVector2& end0, const hkVector2& end1, const hkVector2& p );
  56. /// Set this to { p.dot3(ax), p.dot3(ay) }
  57. inline void setProject( hkVector4Parameter p, hkVector4Parameter ax, hkVector4Parameter ay );
  58. /// Normalize this vector.
  59. inline void normalize();
  60. /// Normalize and return the original length.
  61. inline hkReal normalizeWithLength();
  62. /// Set both elements to zero.
  63. inline void setZero();
  64. public:
  65. /// Public access
  66. float x;
  67. /// Public access
  68. float y;
  69. };
  70. #include <Common/Base/Math/Vector/hkVector2.inl>
  71. #endif //HKMATH_MATH2D_H
  72. /*
  73. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  74. * Confidential Information of Havok.  (C) Copyright 1999-2009
  75. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  76. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  77. * rights, and intellectual property rights in the Havok software remain in
  78. * Havok and/or its suppliers.
  79. * Use of this software for evaluation purposes is subject to and indicates
  80. * acceptance of the End User licence Agreement for this product. A copy of
  81. * the license is included with this software and is also available at www.havok.com/tryhavok.
  82. */