Skip to content

Instantly share code, notes, and snippets.

@vittorioromeo
Created February 17, 2013 12:59
Show Gist options
  • Save vittorioromeo/4971391 to your computer and use it in GitHub Desktop.
Save vittorioromeo/4971391 to your computer and use it in GitHub Desktop.
vector<AABB> getMergedAABBSLeft(vector<AABB> mSource)
{
vector<AABB> result;
while(!mSource.empty())
{
bool merged{false}; AABB a{mSource.back()}; mSource.pop_back();
for(auto& b : mSource)
if(a.getRight() == b.getRight())
{
result.push_back(getMergedAABBVertically(a, b));
eraseRemove(mSource, b); merged = true; break;
}
if(!merged) result.push_back(a);
}
return result;
}
vector<AABB> getMergedAABBSRight(vector<AABB> mSource)
{
vector<AABB> result;
while(!mSource.empty())
{
bool merged{false}; AABB a{mSource.back()}; mSource.pop_back();
for(auto& b : mSource)
if(a.getLeft() == b.getLeft())
{
result.push_back(getMergedAABBVertically(a, b));
eraseRemove(mSource, b); merged = true; break;
}
if(!merged) result.push_back(a);
}
return result;
}
vector<AABB> getMergedAABBSTop(vector<AABB> mSource)
{
vector<AABB> result;
while(!mSource.empty())
{
bool merged{false}; AABB a{mSource.back()}; mSource.pop_back();
for(auto& b : mSource)
if(a.getBottom() == b.getBottom())
{
result.push_back(getMergedAABBHorizontally(a, b));
eraseRemove(mSource, b); merged = true; break;
}
if(!merged) result.push_back(a);
}
return result;
}
vector<AABB> getMergedAABBSBottom(vector<AABB> mSource)
{
vector<AABB> result;
while(!mSource.empty())
{
bool merged{false}; AABB a{mSource.back()}; mSource.pop_back();
for(auto& b : mSource)
if(a.getTop() == b.getTop())
{
result.push_back(getMergedAABBHorizontally(a, b));
eraseRemove(mSource, b); merged = true; break;
}
if(!merged) result.push_back(a);
}
return result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment