-void Aabb::getOctant(Aabb& octant, int num) const
-{
- Vector3 mid = getCenter();
-
- switch (num)
- {
- case 0:
- octant.init(Vector3(min[0], min[1], mid[2]),
- Vector3(mid[0], mid[1], max[2]));
- break;
- case 1:
- octant.init(Vector3(mid[0], min[1], mid[2]),
- Vector3(max[0], mid[1], max[2]));
- break;
- case 2:
- octant.init(mid, max);
- break;
- case 3:
- octant.init(Vector3(min[0], mid[1], mid[2]),
- Vector3(mid[0], max[1], max[2]));
- break;
- case 4:
- octant.init(min, mid);
- break;
- case 5:
- octant.init(Vector3(mid[0], min[1], min[2]),
- Vector3(max[0], mid[1], mid[2]));
- break;
- case 6:
- octant.init(Vector3(mid[0], mid[1], min[2]),
- Vector3(max[0], max[1], mid[2]));
- break;
- case 7:
- octant.init(Vector3(min[0], mid[1], min[2]),
- Vector3(mid[0], max[1], mid[2]));
- break;
- }
-}
-
-
-void Aabb::getCorners(Vector3 corners[8]) const
-{
- corners[0][0] = min[0]; corners[0][1] = min[1]; corners[0][2] = max[2];
- corners[1][0] = max[0]; corners[1][1] = min[1]; corners[1][2] = max[2];
- corners[2][0] = max[0]; corners[2][1] = max[1]; corners[2][2] = max[2];
- corners[3][0] = min[0]; corners[3][1] = max[1]; corners[3][2] = max[2];
- corners[4][0] = min[0]; corners[4][1] = min[1]; corners[4][2] = min[2];
- corners[5][0] = max[0]; corners[5][1] = min[1]; corners[5][2] = min[2];
- corners[6][0] = max[0]; corners[6][1] = max[1]; corners[6][2] = min[2];
- corners[7][0] = min[0]; corners[7][1] = max[1]; corners[7][2] = min[2];
-}
-
-
-void Aabb::encloseVertices(const Vector3 vertices[], unsigned count)
-{
- min = vertices[0];
- max = vertices[0];
-
- for (unsigned i = 1; i < count; ++i)
- {
- if (vertices[i][0] < min[0]) min[0] = vertices[i][0];
- if (vertices[i][0] > max[0]) max[0] = vertices[i][0];
- if (vertices[i][1] < min[1]) min[1] = vertices[i][1];
- if (vertices[i][1] > max[1]) max[1] = vertices[i][1];
- if (vertices[i][2] < min[2]) min[2] = vertices[i][2];
- if (vertices[i][2] > max[2]) max[2] = vertices[i][2];
- }
-}
-
-
-void Aabb::draw(Scalar alpha) const