Esempio n. 1
0
void SharedProgramState::setOrthoProjectionMatrix(const AABB& volume)
{
  float minX, minY, minZ, maxX, maxY, maxZ;
  volume.bounds(minX, minY, minZ, maxX, maxY, maxZ);

  setProjectionMatrix(ortho(minX, maxX, minY, maxY, minZ, maxZ));
}
Esempio n. 2
0
bool Frustum::contains(const AABB& box) const
{
  float minX, minY, minZ, maxX, maxY, maxZ;
  box.bounds(minX, minY, minZ, maxX, maxY, maxZ);

  for (size_t i = 0;  i < 6;  i++)
  {
    const vec3 positive((planes[i].normal.x < 0.f) ? minX : maxX,
                        (planes[i].normal.y < 0.f) ? minY : maxY,
                        (planes[i].normal.z < 0.f) ? minZ : maxZ);

    if (!planes[i].contains(positive))
      return false;
  }

  return true;
}
Esempio n. 3
0
bool Frustum::intersects(const AABB& box) const
{
  float minX, minY, minZ, maxX, maxY, maxZ;
  box.bounds(minX, minY, minZ, maxX, maxY, maxZ);

  for (size_t i = 0;  i < 6;  i++)
  {
    const vec3 negative(planes[i].normal.x < 0.f ? maxX : minX,
                        planes[i].normal.y < 0.f ? maxY : minY,
                        planes[i].normal.z < 0.f ? maxZ : minZ);

    if (!planes[i].contains(negative))
      return false;
  }

  return true;
}
Esempio n. 4
0
void Frustum::setOrtho(const AABB& volume)
{
  float minX, minY, minZ, maxX, maxY, maxZ;
  volume.bounds(minX, minY, minZ, maxX, maxY, maxZ);
  setOrtho(minX, minY, minZ, maxX, maxY, maxZ);
}