split method

void split(
  1. List<double> breaks,
  2. List<CSMFrustum> target
)

Implementation

void split(List<double> breaks, List<CSMFrustum> target ) {
	while ( breaks.length > target.length ) {
		target.add( CSMFrustum() );
	}

	target.length = breaks.length;

	for ( int i = 0; i < breaks.length; i ++ ) {
		final cascade = target[ i ];
		if ( i == 0 ) {
			for ( int j = 0; j < 4; j ++ ) {
				cascade.vertices.near[ j ].setFrom( vertices.near[ j ] );
			}
		} else {
			for ( int j = 0; j < 4; j ++ ) {
				cascade.vertices.near[ j ].lerpVectors( vertices.near[ j ], vertices.far[ j ], breaks[ i - 1 ] );
			}
		}

		if ( i == breaks.length - 1 ) {
			for ( int j = 0; j < 4; j ++ ) {
				cascade.vertices.far[ j ].setFrom( vertices.far[ j ] );
			}

		} else {
			for ( int j = 0; j < 4; j ++ ) {
				cascade.vertices.far[ j ].lerpVectors( vertices.near[ j ], vertices.far[ j ], breaks[ i ] );
			}
		}
	}
}