PolyVector3.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /*
  2. * PolyVector3.h
  3. * Poly
  4. *
  5. * Created by Ivan Safrin on 3/14/08.
  6. * Copyright 2008 __MyCompanyName__. All rights reserved.
  7. *
  8. */
  9. // @package Math
  10. #pragma once
  11. #include "PolyString.h"
  12. #include "PolyGlobals.h"
  13. #include <math.h>
  14. //#ifdef _WINDOWS
  15. #include <assert.h>
  16. //#endif
  17. namespace Polycode {
  18. class _PolyExport Vector3 {
  19. public:
  20. Vector3();
  21. Vector3(Number x,Number y,Number z);
  22. virtual ~Vector3();
  23. void set(Number x, Number y, Number z);
  24. inline Vector3 operator - ( const Vector3& v2 ) const {
  25. return Vector3(x - v2.x, y - v2.y, z - v2.z);
  26. }
  27. inline Number distance(const Vector3& rhs) const {
  28. return (*this - rhs).length();
  29. }
  30. inline Vector3& operator * (const Number val) {
  31. x *= val;
  32. y *= val;
  33. z *= val;
  34. return *this;
  35. }
  36. inline Vector3& operator / (const Number val) {
  37. assert( val != 0.0 );
  38. x /= val;
  39. y /= val;
  40. z /= val;
  41. return *this;
  42. }
  43. inline Vector3& operator = ( const Vector3& v2) {
  44. x = v2.x;
  45. y = v2.y;
  46. z = v2.z;
  47. return *this;
  48. }
  49. inline Vector3& operator += ( const Vector3& v2) {
  50. x += v2.x;
  51. y += v2.y;
  52. z += v2.z;
  53. return *this;
  54. }
  55. inline Vector3& operator -= ( const Vector3& v2) {
  56. x -= v2.x;
  57. y -= v2.y;
  58. z -= v2.z;
  59. return *this;
  60. }
  61. inline Vector3 operator + ( const Vector3& v2 ) const {
  62. return Vector3(x + v2.x, y + v2.y, z + v2.z);
  63. }
  64. inline Number length () const {
  65. return sqrtf( x * x + y * y + z * z );
  66. }
  67. inline Number dot(Vector3 &u) {
  68. return x * u.x + y * u.y + z * u.z;
  69. }
  70. inline Vector3 crossProduct( const Vector3& rkVector ) const {
  71. return Vector3(
  72. y * rkVector.z - z * rkVector.y,
  73. z * rkVector.x - x * rkVector.z,
  74. x * rkVector.y - y * rkVector.x);
  75. }
  76. void Normalize();
  77. Number x;
  78. Number y;
  79. Number z;
  80. private:
  81. };
  82. }