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

Reply via email to