Hello all
The javadoc package documentation below tries to explain the rational
behind the SIS matrix package (still work in progress):
https://builds.apache.org/job/sis-jdk7/site/apidocs/org/apache/sis/referencing/operation/matrix/package-summary.html
The idea is strongly inspired by "vecmath", which was part of Java3D.
"Vecmath" is actually hard to replace by other matrix package (JBLAS,
JAMA or other) because the design goals are not the same. There is
thousands of possible operations for matrix, and the operations of
interest are not the same for resolving linear equations than for
performing coordinate transformations. Because "vecmath" was designed
for coordinate conversions in 3D spaces, it was a pretty good fit to
geospatial needs.
There is a few methods in org.apache.sis.referencing.operation.matrix
that are more closely related to coordinate transformations rather than
general matrix operations: isAffine(), toAffineTransform(),
normalizeColumns() - more will come soon. I have not yet connected the
SIS package to JAMA. But I came to think that the connection (if any)
should not be visible in the public API. For example when inverting a
non-square matrix, JAMA uses a least squares approach. This is probably
a good choice for resolving linear equations, but sis-referencing needs
a more conservative approach. For this reason, I don't think that we
should expose the JAMA Matrix.inverse() method directly.
I will post more when the package will be closer to completion, unless
someone would like clarifications or changes?
Martin