computeSplitAxis method

Vector3 computeSplitAxis()

Computes the split axis. Right now, only the cardinal axes are potential split axes.

Implementation

Vector3 computeSplitAxis() {
	double maxX, maxY, maxZ = maxY = maxX = - double.infinity;
	double minX, minY, minZ = minY = minX = double.infinity;

	final centroids = this.centroids;

	for ( int i = 0, l = centroids.length; i < l; i += 3 ) {
		final x = centroids[ i ];
		final y = centroids[ i + 1 ];
		final z = centroids[ i + 2 ];

		if ( x > maxX ) {
			maxX = x;
		}

		if ( y > maxY ) {
			maxY = y;
		}

		if ( z > maxZ ) {
			maxZ = z;
		}

		if ( x < minX ) {
			minX = x;
		}

		if ( y < minY ) {
			minY = y;
		}

		if ( z < minZ ) {
			minZ = z;
		}
	}

	final rangeX = maxX - minX;
	final rangeY = maxY - minY;
	final rangeZ = maxZ - minZ;

	if ( rangeX > rangeY && rangeX > rangeZ ) {
		return _xAxis;
	}
    else if ( rangeY > rangeZ ) {
		return _yAxis;
	}
    else {
		return _zAxis;
	}
}