19 template <
typename Real>
53 std::set<EdgeKey<false>>
const&
GetOverlap()
const;
67 void InsertionSort(std::vector<Endpoint>& endPoint, std::vector<int>& lookup);
69 std::vector<AlignedBox3<Real>>&
mBoxes;
85 template <
typename Real>
93 template <
typename Real>
97 int intrSize =
static_cast<int>(
mBoxes.size()), endpSize = 2 * intrSize;
101 for (
int i = 0, j = 0; i < intrSize; ++i)
135 for (
int j = 0; j < endpSize; ++j)
143 std::set<int> active;
149 for (
int i = 0; i < endpSize; ++i)
153 if (endpoint.
type == 0)
158 for (
auto activeIndex : active)
168 if (activeIndex < index)
178 active.insert(index);
187 template <
typename Real>
199 template <
typename Real>
205 template <
typename Real>
213 int endpSize =
static_cast<int>(endpoint.size());
214 for (
int j = 1; j < endpSize; ++j)
218 while (i >= 0 && key < endpoint[i])
258 endpoint[i + 1] = e0;
263 endpoint[i + 1] = key;
264 lookup[2 * key.
index + key.
type] = i + 1;
268 template <
typename Real>
276 template <
typename Real>
282 template <
typename Real>
std::vector< Endpoint > mXEndpoints
void SetBox(int i, AlignedBox3< Real > const &box)
std::set< EdgeKey< false > > mOverlap
std::vector< Endpoint > mZEndpoints
std::set< EdgeKey< false > > const & GetOverlap() const
std::vector< int > mZLookup
GLsizei const GLfloat * value
bool operator<(Endpoint const &endpoint) const
void InsertionSort(std::vector< Endpoint > &endPoint, std::vector< int > &lookup)
std::vector< Endpoint > mYEndpoints
std::vector< int > mXLookup
void GetBox(int i, AlignedBox3< Real > &box) const
std::vector< int > mYLookup
BoxManager & operator=(BoxManager const &)=delete
GLint GLint GLsizei GLint GLenum GLenum type
std::vector< AlignedBox3< Real > > & mBoxes