private List < Double > getAngles ( ) { int n = subunits . getSubunitCount ( ) ; // for spherical symmetric cases, n cannot be higher than 60 if ( n % 60 == 0 && isSpherical ( ) ) { n = 60 ; } List < Integer > folds = subunits . getFolds ( ) ; List < Double > angles = new ArrayList < Double > ( folds . size ( ) - 1 ) ; // note this loop starts at 1, we do ignore 1-fold symmetry, which is the first entry for ( int fold : folds ) { if ( fold > 0 && fold <= n ) { angles . add ( 2 * Math . PI / fold ) ; } } return angles ; }
Get valid rotation angles given the number of subunits