try {
swap1 = AbstractCS.swapAndScaleAxis(sourceCS, AbstractCS.standard(sourceCS));
swap3 = AbstractCS.swapAndScaleAxis(AbstractCS.standard(derivedCS), derivedCS);
} catch (IllegalArgumentException cause) {
// User-specified axis don't match.
throw new FactoryException(cause);
} catch (ConversionException cause) {
// A Unit conversion is non-linear.
throw new FactoryException(cause);
}
/*
* Prepares the concatenation of the matrix computed above and the projection.
* Note that at this stage, the dimensions between each step may not be compatible.
* For example the projection (step2) is usually two-dimensional while the source