BsLine2.cpp 766 B

123456789101112131415161718192021222324
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Math/BsLine2.h"
  4. #include "Math/BsMath.h"
  5. namespace bs
  6. {
  7. std::pair<bool, float> Line2::intersects(const Line2& rhs) const
  8. {
  9. Vector2 diff = rhs.getOrigin() - getOrigin();
  10. Vector2 perpDir = rhs.getDirection();
  11. perpDir = Vector2(perpDir.y, -perpDir.x);
  12. float dot = getDirection().dot(perpDir);
  13. if (std::abs(dot) > 1.0e-4f) // Not parallel
  14. {
  15. float distance = diff.dot(perpDir) / dot;
  16. return std::make_pair(true, distance);
  17. }
  18. else // Parallel
  19. return std::make_pair(true, 0.0f);
  20. }
  21. }