private void calculateDiagonalsAndBounds() {
		super.modelHeight = 0;
		diagonal2DAboveOrigin = 0;
		maxY = 0;
		minX = 0xf423f;
		maxX = 0xfff0bdc1;
		maxZ = 0xfffe7961;
		minZ = 0x1869f;
		for (int vertex = 0; vertex < vertexCount; vertex++) {
			int x = verticesX[vertex];
			int y = verticesY[vertex];
			int z = verticesZ[vertex];
			if (x < minX)
				minX = x;
			if (x > maxX)
				maxX = x;
			if (z < minZ)
				minZ = z;
			if (z > maxZ)
				maxZ = z;
			if (-y > super.modelHeight)
				super.modelHeight = -y;
			if (y > maxY)
				maxY = y;
			int bounds = x * x + z * z;
			if (bounds > diagonal2DAboveOrigin)
				diagonal2DAboveOrigin = bounds;
		}

		diagonal2DAboveOrigin = (int) Math.sqrt(diagonal2DAboveOrigin);
		diagonal3DAboveOrigin = (int) Math
				.sqrt(diagonal2DAboveOrigin * diagonal2DAboveOrigin
						+ super.modelHeight * super.modelHeight);
		diagonal3D = diagonal3DAboveOrigin
				+ (int) Math.sqrt(diagonal2DAboveOrigin * diagonal2DAboveOrigin
						+ maxY * maxY);
	}