for (int i=0; i<transforms.length; i++) {
final int dimSource = transforms[i].getSourceDimensions();
final int dimTarget = transforms[i].getTargetDimensions();
if (dimSource > maxDimSource) maxDimSource = dimSource;
if (dimTarget > maxDimTarget) maxDimTarget = dimTarget;
sources[i] = new GeneralDirectPosition(dimSource);
targets[i] = new GeneralDirectPosition(dimTarget);
}
/*
* Test with an arbitrary number of randoms points.
*/
for (int pass=0; pass<200; pass++) {
for (int j=0; j<maxDimSource; j++) {
final double ord = 100*random.nextDouble();
for (int i=0; i<sources.length; i++) {
final GeneralDirectPosition source = sources[i];
if (j < source.ordinates.length) {
source.ordinates[j] = ord;
}
}
}
for (int j=0; j<transforms.length; j++) {
assertSame(transforms[j].transform(sources[j], targets[j]), targets[j]);
}
/*
* Compare all target points.
*/
final StringBuilder buffer = new StringBuilder(name);
buffer.append(": Compare transform[");
final int lengthJ = buffer.length();
for (int j=0; j<targets.length; j++) {
buffer.setLength(lengthJ);
buffer.append(j).append("] with [");
final int lengthI = buffer.length();
final GeneralDirectPosition targetJ = targets[j];
for (int i=j+1; i<targets.length; i++) {
buffer.setLength(lengthI);
buffer.append(i).append(']');
final String label = buffer.toString();
final GeneralDirectPosition targetI = targets[i];
assertTrue(targetJ.ordinates != targetI.ordinates);
for (int k=Math.min(targetJ.ordinates.length, targetI.ordinates.length); --k>=0;) {
assertEquals(label, targetJ.ordinates[k], targetI.ordinates[k], 1E-6);
}
}