computeSplitAxis method
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;
}
}