blob: 9ebeff383305f58b1f5bb775d9a28d3f34f6ea12 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.4) on Fri Sep 20 12:10:30 CEST 2019 -->
<title>LinearTransform (Apache SIS 1.0 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2019-09-20">
<meta name="keywords" content="org.apache.sis.referencing.operation.transform.LinearTransform interface">
<meta name="keywords" content="isAffine()">
<meta name="keywords" content="getMatrix()">
<meta name="keywords" content="deltaTransform()">
<meta name="keywords" content="inverse()">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../sis.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="LinearTransform (Apache SIS 1.0 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":6,"i1":6,"i2":6,"i3":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/LinearTransform.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" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.sis.referencing.operation.transform</a></div>
<h2 title="Interface LinearTransform" class="title">Interface LinearTransform</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Math­Transform</a></code></dd>
</dl>
<hr>
<pre>public interface <span class="typeNameLabel">LinearTransform</span>
extends <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform</a></pre>
<div class="block">A usually affine, or otherwise a projective transform, which convert coordinates using only linear equations.
A projective transform is capable of mapping an arbitrary quadrilateral into another arbitrary quadrilateral,
while preserving the straightness of lines. In the special case where the transform is affine, the parallelism
of lines in the source is preserved in the output.
<p>Such a coordinate transformation can be represented by a matrix of arbitrary size, which is given by the
<a href="#getMatrix()"><code>get­Matrix()</code></a> method. The relationship between matrix size and transform dimensions is as below:</p>
<ul>
<li>The <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/Matrix.html?is-external=true#getNumCol()" title="class or interface in org.opengis.referencing.operation" class="externalLink">number of columns</a> in the matrix is equal to
the number of <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#getSourceDimensions()" title="class or interface in org.opengis.referencing.operation" class="externalLink">source dimensions</a> plus 1</li>
<li>The <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/Matrix.html?is-external=true#getNumRow()" title="class or interface in org.opengis.referencing.operation" class="externalLink">number of rows</a> in the matrix is equal to
the number of <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#getTargetDimensions()" title="class or interface in org.opengis.referencing.operation" class="externalLink">target dimensions</a> plus 1.</li>
</ul>
<div class="section">Affine transform</div>
In most cases the transform in affine. For such transforms, the last matrix row contains only zero values
except in the last column, which contains 1. For example a conversion from projected coordinates (metres)
to display coordinates (pixel) can be done as below:
<div style="text-align:center">
<img src="../matrix/doc-files/AffineTransform.png" alt="Matrix representation of an affine transform">
</div>
<div class="section">Projective transform</div>
If the last matrix row does not met the above constraints, then the transform is not affine.
A <cite>projective</cite> transform can be used as a generalization of affine transforms.
In such case the computation performed by SIS is similar to <code>Perspective­Transform</code>
in <cite>Java Advanced Imaging</cite>.
For example a square matrix of size 4×4 is used for transforming three-dimensional coordinates.
The transformed points <code>(x',y',z')</code> are computed as below:
<div style="text-align:center"> <div class="horizontal-flow">
<div>
<math display="block" alttext="MathML capable browser required">
<mfenced open="[" close="]">
<mtable>
<mtr><mtd><mi>x</mi><mo>'</mo></mtd></mtr>
<mtr><mtd><mi>y</mi><mo>'</mo></mtd></mtr>
<mtr><mtd><mi>z</mi><mo>'</mo></mtd></mtr>
</mtable>
</mfenced>
<mo>=</mo>
<mfenced open="[" close="]">
<mtable>
<mtr><mtd><mi>u</mi><mo>/</mo><mi>t</mi></mtd></mtr>
<mtr><mtd><mi>v</mi><mo>/</mo><mi>t</mi></mtd></mtr>
<mtr><mtd><mi>w</mi><mo>/</mo><mi>t</mi></mtd></mtr>
</mtable>
</mfenced>
</math>
</div><div style="vertical-align: middle" >
<blockquote>where <var>u</var>, <var>v</var>, <var>w</var> and <var>t</var> are obtained by</blockquote>
</div><div>
<math display="block" alttext="MathML capable browser required">
<mfenced open="[" close="]">
<mtable>
<mtr><mtd><mi>u</mi></mtd></mtr>
<mtr><mtd><mi>v</mi></mtd></mtr>
<mtr><mtd><mi>w</mi></mtd></mtr>
<mtr><mtd><mi>t</mi></mtd></mtr>
</mtable>
</mfenced>
<mo>=</mo>
<mfenced open="[" close="]">
<mtable>
<mtr>
<mtd><msub><mi>m</mi><mn>00</mn></msub></mtd>
<mtd><msub><mi>m</mi><mn>01</mn></msub></mtd>
<mtd><msub><mi>m</mi><mn>02</mn></msub></mtd>
<mtd><msub><mi>m</mi><mn>03</mn></msub></mtd>
</mtr>
<mtr>
<mtd><msub><mi>m</mi><mn>10</mn></msub></mtd>
<mtd><msub><mi>m</mi><mn>11</mn></msub></mtd>
<mtd><msub><mi>m</mi><mn>12</mn></msub></mtd>
<mtd><msub><mi>m</mi><mn>13</mn></msub></mtd>
</mtr>
<mtr>
<mtd><msub><mi>m</mi><mn>20</mn></msub></mtd>
<mtd><msub><mi>m</mi><mn>21</mn></msub></mtd>
<mtd><msub><mi>m</mi><mn>22</mn></msub></mtd>
<mtd><msub><mi>m</mi><mn>23</mn></msub></mtd>
</mtr>
<mtr>
<mtd><msub><mi>m</mi><mn>30</mn></msub></mtd>
<mtd><msub><mi>m</mi><mn>31</mn></msub></mtd>
<mtd><msub><mi>m</mi><mn>32</mn></msub></mtd>
<mtd><msub><mi>m</mi><mn>33</mn></msub></mtd>
</mtr>
</mtable>
</mfenced>
<mo>×</mo>
<mfenced open="[" close="]">
<mtable>
<mtr><mtd><mi>x</mi></mtd></mtr>
<mtr><mtd><mi>y</mi></mtd></mtr>
<mtr><mtd><mi>z</mi></mtd></mtr>
<mtr><mtd><mn>1</mn></mtd></mtr>
</mtable>
</mfenced>
</math>
</div>
</div>
</div>
<div class="section">Instantiation</div>
The easiest way to instantiate a <code>Linear­Transform</code> is to use the <a href="MathTransforms.html#linear(org.opengis.referencing.operation.Matrix)"><code>Math­Transforms​.linear(Matrix)</code></a>
convenience method.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.4</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="MathTransforms.html#linear(org.opengis.referencing.operation.Matrix)"><code>Math­Transforms​.linear(Matrix)</code></a>,
<a href="../builder/LinearTransformBuilder.html" title="class in org.apache.sis.referencing.operation.builder"><code>Linear­Transform­Builder</code></a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/awt/geom/AffineTransform.html?is-external=true" title="class or interface in java.awt.geom" class="externalLink"><code>Affine­Transform</code></a>,
<a href="http://mathworld.wolfram.com/AffineTransformation.html">Affine transformation on MathWorld</a></dd>
<p><font size="-1">Defined in the <code>sis-referencing</code> module</font></p>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deltaTransform(double%5B%5D,int,double%5B%5D,int,int)">deltaTransform</a></span>&#8203;(double[]&nbsp;srcPts,
int&nbsp;srcOff,
double[]&nbsp;dstPts,
int&nbsp;dstOff,
int&nbsp;numPts)</code></th>
<td class="colLast">
<div class="block">Transforms an array of relative distance vectors.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><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" class="externalLink">Matrix</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getMatrix()">getMatrix</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the coefficients of this linear transform as a matrix.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform">LinearTransform</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#inverse()">inverse</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the inverse transform of this object, which shall also be linear.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isAffine()">isAffine</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns <code>true</code> if this transform is affine.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.MathTransform">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;<a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">MathTransform</a></h3>
<code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#derivative(org.opengis.geometry.DirectPosition)" title="class or interface in org.opengis.referencing.operation" class="externalLink">derivative</a>, <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#getSourceDimensions()" title="class or interface in org.opengis.referencing.operation" class="externalLink">get­Source­Dimensions</a>, <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#getTargetDimensions()" title="class or interface in org.opengis.referencing.operation" class="externalLink">get­Target­Dimensions</a>, <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#isIdentity()" title="class or interface in org.opengis.referencing.operation" class="externalLink">is­Identity</a>, <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#toWKT()" title="class or interface in org.opengis.referencing.operation" class="externalLink">to­WKT</a>, <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#transform(double%5B%5D,int,double%5B%5D,int,int)" title="class or interface in org.opengis.referencing.operation" class="externalLink">transform</a>, <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#transform(double%5B%5D,int,float%5B%5D,int,int)" title="class or interface in org.opengis.referencing.operation" class="externalLink">transform</a>, <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#transform(float%5B%5D,int,double%5B%5D,int,int)" title="class or interface in org.opengis.referencing.operation" class="externalLink">transform</a>, <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#transform(float%5B%5D,int,float%5B%5D,int,int)" title="class or interface in org.opengis.referencing.operation" class="externalLink">transform</a>, <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#transform(org.opengis.geometry.DirectPosition,org.opengis.geometry.DirectPosition)" title="class or interface in org.opengis.referencing.operation" class="externalLink">transform</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="isAffine()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isAffine</h4>
<pre class="methodSignature">boolean&nbsp;isAffine()</pre>
<div class="block">Returns <code>true</code> if this transform is affine.
An affine transform preserves parallelism.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if this transform is affine.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.6</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../matrix/MatrixSIS.html#isAffine()"><code>Matrix­SIS​.is­Affine()</code></a></dd>
</dl>
</li>
</ul>
<a id="getMatrix()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMatrix</h4>
<pre class="methodSignature"><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" class="externalLink">Matrix</a>&nbsp;getMatrix()</pre>
<div class="block">Returns the coefficients of this linear transform as a matrix.
Converting a coordinate with this <code>Math­Transform</code> is equivalent to multiplying the
returned matrix by a vector containing the coordinate values with an additional 1 in the last row.
See <a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform"><code>Linear­Transform</code></a> class Javadoc for more details.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the coefficients of this linear transform as a matrix.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="MathTransforms.html#getMatrix(org.opengis.referencing.operation.MathTransform)"><code>Math­Transforms​.get­Matrix(Math­Transform)</code></a></dd>
</dl>
</li>
</ul>
<a id="deltaTransform(double[],int,double[],int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deltaTransform</h4>
<pre class="methodSignature">void&nbsp;deltaTransform&#8203;(double[]&nbsp;srcPts,
int&nbsp;srcOff,
double[]&nbsp;dstPts,
int&nbsp;dstOff,
int&nbsp;numPts)
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">TransformException</a></pre>
<div class="block">Transforms an array of relative distance vectors.
Distance vectors are transformed without applying the translation components.
The supplied array of distance values will contain packed values.
<div class="note"><b>Example:</b> if the source dimension is 3, then the values will be packed in this order:
(<var>Δx₀</var>,<var>Δy₀</var>,<var>Δz₀</var>,
<var>Δx₁</var>,<var>Δy₁</var>,<var>Δz₁</var> …).
</div></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>src­Pts</code> - the array containing the source vectors.</dd>
<dd><code>src­Off</code> - the offset to the first vector to be transformed in the source array.</dd>
<dd><code>dst­Pts</code> - the array into which the transformed vectors are returned. Can be the same than <code>src­Pts</code>.</dd>
<dd><code>dst­Off</code> - the offset to the location of the first transformed vector that is stored in the destination array.</dd>
<dd><code>num­Pts</code> - the number of vector objects to be transformed.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/TransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Transform­Exception</a></code> - if a vector can not be transformed.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.7</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/awt/geom/AffineTransform.html?is-external=true#deltaTransform(double%5B%5D,int,double%5B%5D,int,int)" title="class or interface in java.awt.geom" class="externalLink"><code>Affine­Transform​.delta­Transform(double[], int, double[], int, int)</code></a></dd>
</dl>
</li>
</ul>
<a id="inverse()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>inverse</h4>
<pre class="methodSignature"><a href="LinearTransform.html" title="interface in org.apache.sis.referencing.operation.transform">LinearTransform</a>&nbsp;inverse()
throws <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/NoninvertibleTransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">NoninvertibleTransformException</a></pre>
<div class="block">Returns the inverse transform of this object, which shall also be linear.
The target of the inverse transform is the source of the original.
The source of the inverse transform is the target of the original.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true#inverse()" title="class or interface in org.opengis.referencing.operation" class="externalLink">inverse</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/MathTransform.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Math­Transform</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the inverse transform.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/operation/NoninvertibleTransformException.html?is-external=true" title="class or interface in org.opengis.referencing.operation" class="externalLink">Noninvertible­Transform­Exception</a></code> - if the transform can not be inverted.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.7</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/awt/geom/AffineTransform.html?is-external=true#createInverse()" title="class or interface in java.awt.geom" class="externalLink"><code>Affine­Transform​.create­Inverse()</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/LinearTransform.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" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses.html">All&nbsp;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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2010&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>