Vector3.h 774 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. struct Vector3f
  3. {
  4. float x, y, z;
  5. };
  6. inline float VecDotProduct(const Vector3f& v1, const Vector3f& v2)
  7. {
  8. return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z;
  9. }
  10. inline float VecMagnitude(const Vector3f& v)
  11. {
  12. return sqrtf(VecDotProduct(v, v));
  13. }
  14. inline Vector3f VecMake(float x, float y, float z)
  15. {
  16. Vector3f v = {x, y, z};
  17. return v;
  18. }
  19. inline Vector3f VecCrossProduct(const Vector3f& v1, const Vector3f& v2)
  20. {
  21. return VecMake(
  22. v1.y * v2.z - v1.z * v2.y,
  23. v1.z * v2.x - v1.x * v2.z,
  24. v1.x * v2.y - v1.y * v2.x);
  25. }
  26. inline Vector3f VecScale(float s, const Vector3f& v)
  27. {
  28. return VecMake(s * v.x, s * v.y, s * v.z);
  29. }
  30. inline Vector3f VecNormalize(const Vector3f& v)
  31. {
  32. return VecScale(1.0f / VecMagnitude(v), v);
  33. }