Vector3.pkg 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. $#include "Math/Vector3.h"
  2. class Vector3
  3. {
  4. Vector3();
  5. Vector3(const Vector3& vector);
  6. Vector3(const Vector2& vector, float z);
  7. Vector3(const Vector2& vector);
  8. Vector3(const IntVector3& vector);
  9. Vector3(float x, float y, float z);
  10. Vector3(float x, float y);
  11. ~Vector3();
  12. bool operator ==(const Vector3& rhs) const;
  13. Vector3 operator + (const Vector3& rhs) const;
  14. Vector3 operator - () const;
  15. Vector3 operator - (const Vector3& rhs) const;
  16. Vector3 operator * (float rhs) const;
  17. Vector3 operator * (const Vector3& rhs) const;
  18. Vector3 operator / (float rhs) const;
  19. Vector3 operator / (const Vector3& rhs) const;
  20. void Normalize();
  21. float Length() const;
  22. float LengthSquared() const;
  23. float DotProduct(const Vector3& rhs) const;
  24. float AbsDotProduct(const Vector3& rhs) const;
  25. float ProjectOntoAxis(const Vector3& axis) const;
  26. Vector3 ProjectOntoPlane(const Vector3& origin, const Vector3& normal);
  27. Vector3 ProjectOntoLine(const Vector3& from, const Vector3& to, bool clamped = false);
  28. float DistanceToPoint(const Vector3& point) const;
  29. float DistanceToPlane(const Vector3& origin, const Vector3& normal) const;
  30. Vector3 Orthogonalize(const Vector3& axis) const;
  31. Vector3 CrossProduct(const Vector3& rhs) const;
  32. Vector3 Abs() const;
  33. Vector3 Lerp(const Vector3& rhs, float t) const;
  34. bool Equals(const Vector3& rhs) const;
  35. bool IsNaN() const;
  36. float Angle(const Vector3& rhs) const;
  37. Vector3 Normalized() const;
  38. String ToString() const;
  39. float x_ @ x;
  40. float y_ @ y;
  41. float z_ @ z;
  42. static const Vector3 ZERO;
  43. static const Vector3 LEFT;
  44. static const Vector3 RIGHT;
  45. static const Vector3 UP;
  46. static const Vector3 DOWN;
  47. static const Vector3 FORWARD;
  48. static const Vector3 BACK;
  49. static const Vector3 ONE;
  50. };
  51. class IntVector3
  52. {
  53. IntVector3();
  54. IntVector3(int x, int y, int z);
  55. IntVector3(const IntVector3& rhs);
  56. ~IntVector3();
  57. bool operator ==(const IntVector3& rhs) const;
  58. IntVector3 operator + (const IntVector3& rhs) const;
  59. IntVector3 operator - () const;
  60. IntVector3 operator - (const IntVector3& rhs) const;
  61. IntVector3 operator * (int rhs) const;
  62. IntVector3 operator * (const IntVector3& rhs) const;
  63. IntVector3 operator / (int rhs) const;
  64. IntVector3 operator / (const IntVector3& rhs) const;
  65. String ToString() const;
  66. unsigned ToHash() const;
  67. float Length() const;
  68. int x_ @ x;
  69. int y_ @ y;
  70. int z_ @ z;
  71. static const IntVector3 ZERO;
  72. static const IntVector3 LEFT;
  73. static const IntVector3 RIGHT;
  74. static const IntVector3 UP;
  75. static const IntVector3 DOWN;
  76. static const IntVector3 FORWARD;
  77. static const IntVector3 BACK;
  78. static const IntVector3 ONE;
  79. };
  80. Vector3 VectorLerp(const Vector3& lhs, const Vector3& rhs, const Vector3& t);
  81. Vector3 VectorMin(const Vector3& lhs, const Vector3& rhs);
  82. Vector3 VectorMax(const Vector3& lhs, const Vector3& rhs);
  83. Vector3 VectorFloor(const Vector3& vec);
  84. Vector3 VectorRound(const Vector3& vec);
  85. Vector3 VectorCeil(const Vector3& vec);
  86. IntVector3 VectorFloorToInt(const Vector3& vec);
  87. IntVector3 VectorRoundToInt(const Vector3& vec);
  88. IntVector3 VectorCeilToInt(const Vector3& vec);
  89. IntVector3 VectorMin(const IntVector3& lhs, const IntVector3& rhs);
  90. IntVector3 VectorMax(const IntVector3& lhs, const IntVector3& rhs);
  91. float StableRandom(const Vector3& seed);