2
0

TriangleSplitterLongestAxis.cpp 899 B

123456789101112131415161718192021222324252627282930
  1. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  2. // SPDX-License-Identifier: MIT
  3. #include <Jolt/Jolt.h>
  4. #include <Jolt/TriangleSplitter/TriangleSplitterLongestAxis.h>
  5. #include <Jolt/Geometry/AABox.h>
  6. JPH_NAMESPACE_BEGIN
  7. TriangleSplitterLongestAxis::TriangleSplitterLongestAxis(const VertexList &inVertices, const IndexedTriangleList &inTriangles) :
  8. TriangleSplitter(inVertices, inTriangles)
  9. {
  10. }
  11. bool TriangleSplitterLongestAxis::Split(const Range &inTriangles, Range &outLeft, Range &outRight)
  12. {
  13. // Calculate bounding box for triangles
  14. AABox bounds;
  15. for (uint t = inTriangles.mBegin; t < inTriangles.mEnd; ++t)
  16. bounds.Encapsulate(mVertices, GetTriangle(t));
  17. // Calculate split plane
  18. uint dimension = bounds.GetExtent().GetHighestComponentIndex();
  19. float split = bounds.GetCenter()[dimension];
  20. return SplitInternal(inTriangles, dimension, split, outLeft, outRight);
  21. }
  22. JPH_NAMESPACE_END