/* * (non-Javadoc) * @see rajawali.scenegraph.A_nAABBTree#setChildRegion(int, rajawali.math.Number3D) */ @Override protected void setChildRegion(int octant, Vector3 side_lengths) { mChildRegion = octant; Vector3 min = mParent.getMin(); Vector3 max = mParent.getMax(); switch (mChildRegion) { case 0: // +X/+Y/+Z mMax.setAllFrom(mParent.getMax()); mMin.setAllFrom(Vector3.subtract(mMax, side_lengths)); break; case 1: // -X/+Y/+Z mMax.x = min.x + side_lengths.x; mMax.y = max.y; mMax.z = max.z; mMin.x = min.x; mMin.y = max.y - side_lengths.y; mMin.z = max.z - side_lengths.z; break; case 2: // -X/-Y/+Z mMax.x = min.x + side_lengths.x; mMax.y = min.y + side_lengths.y; mMax.z = max.z; mMin.x = min.x; mMin.y = min.y; mMin.z = max.z - side_lengths.z; break; case 3: // +X/-Y/+Z mMax.x = max.x; mMax.y = min.y + side_lengths.y; mMax.z = max.z; mMin.x = max.x - side_lengths.x; mMin.y = min.y; mMin.z = max.z - side_lengths.z; break; case 4: // +X/+Y/-Z mMax.x = max.x; mMax.y = max.y; mMax.z = min.z + side_lengths.z; mMin.x = max.x - side_lengths.x; mMin.y = max.y - side_lengths.y; mMin.z = min.z; break; case 5: // -X/+Y/-Z mMax.x = min.x + side_lengths.x; mMax.y = max.y; mMax.z = min.z + side_lengths.z; mMin.x = min.x; mMin.y = max.y - side_lengths.y; mMin.z = min.z; break; case 6: // -X/-Y/-Z mMin.setAllFrom(min); mMax.setAllFrom(Vector3.add(mMin, side_lengths)); break; case 7: // +X/-Y/-Z mMax.x = max.x; mMax.y = min.y + side_lengths.y; mMax.z = min.z + side_lengths.z; mMin.x = max.x - side_lengths.x; mMin.y = min.y; mMin.z = min.z; break; default: return; } super.setChildRegion(octant, side_lengths); }