| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <!-- NewPage --> |
| <html lang="en"> |
| <head> |
| <!-- Generated by javadoc (1.8.0_92) on Wed Jul 13 13:04:20 CEST 2016 --> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <title>org.apache.sis.referencing.operation.matrix (Apache SIS 0.7 API)</title> |
| <meta name="date" content="2016-07-13"> |
| <meta name="keywords" content="org.apache.sis.referencing.operation.matrix package"> |
| <link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style"> |
| <script type="text/javascript" src="../../../../../../script.js"></script> |
| </head> |
| <body> |
| <script type="text/javascript"><!-- |
| try { |
| if (location.href.indexOf('is-external=true') == -1) { |
| parent.document.title="org.apache.sis.referencing.operation.matrix (Apache SIS 0.7 API)"; |
| } |
| } |
| catch(err) { |
| } |
| //--> |
| </script> |
| <noscript> |
| <div>JavaScript is disabled on your browser.</div> |
| </noscript> |
| <!-- ========= START OF TOP NAVBAR ======= --> |
| <div class="topNav"><a name="navbar.top"> |
| <!-- --> |
| </a> |
| <div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div> |
| <a name="navbar.top.firstrow"> |
| <!-- --> |
| </a> |
| <ul class="navList" title="Navigation"> |
| <li><a href="../../../../../../overview-summary.html">Overview</a></li> |
| <li class="navBarCell1Rev">Package</li> |
| <li>Class</li> |
| <li><a href="package-use.html">Use</a></li> |
| <li><a href="package-tree.html">Tree</a></li> |
| <li><a href="../../../../../../deprecated-list.html">Deprecated</a></li> |
| <li><a href="../../../../../../index-all.html">Index</a></li> |
| <li><a href="../../../../../../help-doc.html">Help</a></li> |
| </ul> |
| </div> |
| <div class="subNav"> |
| <ul class="navList"> |
| <li><a href="../../../../../../org/apache/sis/referencing/operation/builder/package-summary.html">Prev Package</a></li> |
| <li><a href="../../../../../../org/apache/sis/referencing/operation/projection/package-summary.html">Next Package</a></li> |
| </ul> |
| <ul class="navList"> |
| <li><a href="../../../../../../index.html?org/apache/sis/referencing/operation/matrix/package-summary.html" target="_top">Frames</a></li> |
| <li><a href="package-summary.html" target="_top">No Frames</a></li> |
| </ul> |
| <ul class="navList" id="allclasses_navbar_top"> |
| <li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li> |
| </ul> |
| <div> |
| <script type="text/javascript"><!-- |
| allClassesLink = document.getElementById("allclasses_navbar_top"); |
| if(window==top) { |
| allClassesLink.style.display = "block"; |
| } |
| else { |
| allClassesLink.style.display = "none"; |
| } |
| //--> |
| </script> |
| </div> |
| <a name="skip.navbar.top"> |
| <!-- --> |
| </a></div> |
| <!-- ========= END OF TOP NAVBAR ========= --> |
| <div class="header"> |
| <h1 title="Package" class="title">Package org.apache.sis.referencing.operation.matrix</h1> |
| <div class="docSummary"> |
| <div class="block">Matrix implementations for spatio-temporal referencing.</div> |
| </div> |
| <p>See: <a href="#package.description">Description</a></p> |
| </div> |
| <div class="contentContainer"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation"> |
| <caption><span>Class Summary</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Class</th> |
| <th class="colLast" scope="col">Description</th> |
| </tr> |
| <tbody> |
| <tr class="altColor"> |
| <td class="colFirst"><a href="../../../../../../org/apache/sis/referencing/operation/matrix/AffineTransforms2D.html" title="class in org.apache.sis.referencing.operation.matrix">AffineTransforms2D</a></td> |
| <td class="colLast"> |
| <div class="block">Bridge between <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/Matrix.html?is-external=true" title="class or interface in org.opengis.referencing.operation"><code>Matrix</code></a> and Java2D <a href="http://docs.oracle.com/javase/6/docs/api/java/awt/geom/AffineTransform.html?is-external=true" title="class or interface in java.awt.geom"><code>AffineTransform</code></a> instances.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><a href="../../../../../../org/apache/sis/referencing/operation/matrix/Matrices.html" title="class in org.apache.sis.referencing.operation.matrix">Matrices</a></td> |
| <td class="colLast"> |
| <div class="block"><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/Matrix.html?is-external=true" title="class or interface in org.opengis.referencing.operation"><code>Matrix</code></a> factory methods and utilities.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><a href="../../../../../../org/apache/sis/referencing/operation/matrix/Matrix1.html" title="class in org.apache.sis.referencing.operation.matrix">Matrix1</a></td> |
| <td class="colLast"> |
| <div class="block">A matrix of fixed <a href="../../../../../../org/apache/sis/referencing/operation/matrix/Matrix1.html#SIZE">1</a>×<a href="../../../../../../org/apache/sis/referencing/operation/matrix/Matrix1.html#SIZE">1</a> size, |
| typically resulting from <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform1D.html?is-external=true" title="class or interface in org.opengis.referencing.operation"><code>MathTransform1D</code></a> derivative computation.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><a href="../../../../../../org/apache/sis/referencing/operation/matrix/Matrix2.html" title="class in org.apache.sis.referencing.operation.matrix">Matrix2</a></td> |
| <td class="colLast"> |
| <div class="block">A matrix of fixed <a href="../../../../../../org/apache/sis/referencing/operation/matrix/Matrix2.html#SIZE">2</a>×<a href="../../../../../../org/apache/sis/referencing/operation/matrix/Matrix2.html#SIZE">2</a> size, |
| typically resulting from <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform2D.html?is-external=true" title="class or interface in org.opengis.referencing.operation"><code>MathTransform2D</code></a> derivative computation.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><a href="../../../../../../org/apache/sis/referencing/operation/matrix/Matrix3.html" title="class in org.apache.sis.referencing.operation.matrix">Matrix3</a></td> |
| <td class="colLast"> |
| <div class="block">A matrix of fixed <a href="../../../../../../org/apache/sis/referencing/operation/matrix/Matrix3.html#SIZE">3</a>×<a href="../../../../../../org/apache/sis/referencing/operation/matrix/Matrix3.html#SIZE">3</a> size.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><a href="../../../../../../org/apache/sis/referencing/operation/matrix/Matrix4.html" title="class in org.apache.sis.referencing.operation.matrix">Matrix4</a></td> |
| <td class="colLast"> |
| <div class="block">A matrix of fixed <a href="../../../../../../org/apache/sis/referencing/operation/matrix/Matrix4.html#SIZE">4</a>×<a href="../../../../../../org/apache/sis/referencing/operation/matrix/Matrix4.html#SIZE">4</a> size, often used in datum shifts.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><a href="../../../../../../org/apache/sis/referencing/operation/matrix/MatrixSIS.html" title="class in org.apache.sis.referencing.operation.matrix">MatrixSIS</a></td> |
| <td class="colLast"> |
| <div class="block">A <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/Matrix.html?is-external=true" title="class or interface in org.opengis.referencing.operation"><code>Matrix</code></a> able to perform some operations of interest to Spatial Information Systems (SIS).</div> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li class="blockList"> |
| <table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Exception Summary table, listing exceptions, and an explanation"> |
| <caption><span>Exception Summary</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Exception</th> |
| <th class="colLast" scope="col">Description</th> |
| </tr> |
| <tbody> |
| <tr class="altColor"> |
| <td class="colFirst"><a href="../../../../../../org/apache/sis/referencing/operation/matrix/MismatchedMatrixSizeException.html" title="class in org.apache.sis.referencing.operation.matrix">MismatchedMatrixSizeException</a></td> |
| <td class="colLast"> |
| <div class="block">Thrown when two matrices can not be added or multiplied because the sizes do not match.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><a href="../../../../../../org/apache/sis/referencing/operation/matrix/NoninvertibleMatrixException.html" title="class in org.apache.sis.referencing.operation.matrix">NoninvertibleMatrixException</a></td> |
| <td class="colLast"> |
| <div class="block">Thrown when a matrix can not be inverted.</div> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| </ul> |
| <a name="package.description"> |
| <!-- --> |
| </a> |
| <h2 title="Package org.apache.sis.referencing.operation.matrix Description">Package org.apache.sis.referencing.operation.matrix Description</h2> |
| <div class="block">Matrix implementations for spatio-temporal referencing. |
| Matrices can be of arbitrary size, but the most common ones in the context of geospatial coordinate operations |
| are not greater than 5×5 (number of spatio-temporal dimensions + 1). |
| This package differs from other matrix packages by: |
| |
| <ul> |
| <li>The class specializations for such small matrices.</li> |
| <li>Methods specific to coordinate systems support like |
| <a href="../../../../../../org/apache/sis/referencing/operation/matrix/Matrices.html#createTransform-org.opengis.geometry.Envelope-org.opengis.referencing.cs.AxisDirection:A-org.opengis.geometry.Envelope-org.opengis.referencing.cs.AxisDirection:A-"><code>Matrices.createTransform(…)</code></a>.</li> |
| <li>Matrix inversions tolerant to <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html?is-external=true#NaN" title="class or interface in java.lang"><code>NaN</code></a> values and non-square matrix in some situations.</li> |
| </ul> |
| |
| <p>This package provides public implementations of small square matrices, with size ranging from 1×1 to 4×4. |
| Those implementations are made public because in many cases, the user know that (s)he is working with (for |
| example) three-dimensional Coordinate Reference Systems (CRS). If the number of CRS dimensions is fixed to 3, |
| then <cite>affine transforms</cite> between those CRS can be represented by 4×4 matrices, |
| and the <cite>derivatives</cite> of those transforms can be represented by 3×3 matrices. |
| Since the user know the matrices size, (s)he can use the specific implementation and read or write |
| directly the <var>m</var><sub><var>row</var> <var>column</var></sub> field.</p> |
| |
| <p><b>Example:</b> in the two dimensional case, an affine transform from a map projection (units in metres) |
| to the screen (units in pixels) can be performed by the following matrix multiplication:</p> |
| |
| <center> |
| <img src="doc-files/AffineTransform.png" alt="Matrix representation of an affine transform"> |
| </center> |
| |
| <div class="section">Extended floating point precision</div> |
| This package uses extended floating point precision for most arithmetic operations like matrix multiplications and |
| inversions. SIS needs extended precision because <cite>affine transforms</cite> concatenations like conversion from |
| degrees to radians, followed by some operations, followed by conversion back from radians to degrees, are very frequent. |
| Without extended precision, we often obtain values like 0.99999… where we would expect an identity transform. |
| The usual workaround - namely comparing the floating point values with a small <var>epsilon</var> tolerance value - |
| is dangerous in this particular case because <cite>datum shifts</cite>, when expressed as a matrix from their |
| <a href="../../../../../../org/apache/sis/referencing/datum/BursaWolfParameters.html" title="class in org.apache.sis.referencing.datum">Bursa-Wolf parameters</a>, are very close to the |
| identity transform. |
| |
| <p>The current implementation uses |
| <a href="http://en.wikipedia.org/wiki/Double-double_%28arithmetic%29#Double-double_arithmetic">double-double |
| arithmetic</a>. However this may change in any future SIS version.</p> |
| |
| <div class="section">Related projects</div> |
| This package is <strong>not</strong> designed for large matrices, and is rooted in |
| <code>org.apache.sis.referencing</code> for making clearer that this is not a general-purpose library. |
| For computational intensive calculations, better guarantees on numerical stability, sparse matrices support |
| and more, consider using an dedicated library like <a href="http://mikiobraun.github.io/jblas">jblas</a> instead. |
| |
| <p>The <a href="http://java.net/projects/vecmath">Vecmath</a> library shares similar goals than <code>MatrixSIS</code>. |
| Like SIS, Vecmath is optimized for small matrices of interest for 2D and 3D graphics.</p></div> |
| <dl> |
| <dt><span class="simpleTagLabel">Since:</span></dt> |
| <dd>0.4</dd> |
| |
| <p><font size="-1">Defined in the <code>sis-referencing</code> module</font></p> |
| </dl> |
| </div> |
| <!-- ======= START OF BOTTOM NAVBAR ====== --> |
| <div class="bottomNav"><a name="navbar.bottom"> |
| <!-- --> |
| </a> |
| <div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div> |
| <a name="navbar.bottom.firstrow"> |
| <!-- --> |
| </a> |
| <ul class="navList" title="Navigation"> |
| <li><a href="../../../../../../overview-summary.html">Overview</a></li> |
| <li class="navBarCell1Rev">Package</li> |
| <li>Class</li> |
| <li><a href="package-use.html">Use</a></li> |
| <li><a href="package-tree.html">Tree</a></li> |
| <li><a href="../../../../../../deprecated-list.html">Deprecated</a></li> |
| <li><a href="../../../../../../index-all.html">Index</a></li> |
| <li><a href="../../../../../../help-doc.html">Help</a></li> |
| </ul> |
| </div> |
| <div class="subNav"> |
| <ul class="navList"> |
| <li><a href="../../../../../../org/apache/sis/referencing/operation/builder/package-summary.html">Prev Package</a></li> |
| <li><a href="../../../../../../org/apache/sis/referencing/operation/projection/package-summary.html">Next Package</a></li> |
| </ul> |
| <ul class="navList"> |
| <li><a href="../../../../../../index.html?org/apache/sis/referencing/operation/matrix/package-summary.html" target="_top">Frames</a></li> |
| <li><a href="package-summary.html" target="_top">No Frames</a></li> |
| </ul> |
| <ul class="navList" id="allclasses_navbar_bottom"> |
| <li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li> |
| </ul> |
| <div> |
| <script type="text/javascript"><!-- |
| allClassesLink = document.getElementById("allclasses_navbar_bottom"); |
| if(window==top) { |
| allClassesLink.style.display = "block"; |
| } |
| else { |
| allClassesLink.style.display = "none"; |
| } |
| //--> |
| </script> |
| </div> |
| <a name="skip.navbar.bottom"> |
| <!-- --> |
| </a></div> |
| <!-- ======== END OF BOTTOM NAVBAR ======= --> |
| <p class="legalCopy"><small>Copyright © 2010–2016 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p> |
| </body> |
| </html> |