blob: 68f91c64d4fb43091f521d4f7dccea3ddfb06ab8 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) on Thu Oct 05 19:54:57 CEST 2023 -->
<title>Matrix4 (Apache SIS 1.4 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2023-10-05">
<meta name="description" content="declaration: module: org.apache.sis.referencing, package: org.apache.sis.referencing.operation.matrix, class: Matrix4">
<meta name="generator" content="javadoc/ClassWriterImpl">
<meta name="keywords" content="org.apache.sis.referencing.operation.matrix.Matrix4 class">
<meta name="keywords" content="SIZE">
<meta name="keywords" content="m00">
<meta name="keywords" content="m01">
<meta name="keywords" content="m02">
<meta name="keywords" content="m03">
<meta name="keywords" content="m10">
<meta name="keywords" content="m11">
<meta name="keywords" content="m12">
<meta name="keywords" content="m13">
<meta name="keywords" content="m20">
<meta name="keywords" content="m21">
<meta name="keywords" content="m22">
<meta name="keywords" content="m23">
<meta name="keywords" content="m30">
<meta name="keywords" content="m31">
<meta name="keywords" content="m32">
<meta name="keywords" content="m33">
<meta name="keywords" content="castOrCopy()">
<meta name="keywords" content="getNumRow()">
<meta name="keywords" content="getNumCol()">
<meta name="keywords" content="getElement()">
<meta name="keywords" content="setElement()">
<meta name="keywords" content="getElements()">
<meta name="keywords" content="setElements()">
<meta name="keywords" content="isAffine()">
<meta name="keywords" content="isIdentity()">
<meta name="keywords" content="transpose()">
<meta name="keywords" content="clone()">
<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="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../index.html">Overview</a></li>
<li><a href="../../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</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#class">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Summary:</p>
<ul>
<li>Nested</li>
<li><a href="#field-summary">Field</a></li>
<li><a href="#constructor-summary">Constr</a></li>
<li><a href="#method-summary">Method</a></li>
</ul>
</li>
<li>
<p>Detail:</p>
<ul>
<li><a href="#field-detail">Field</a></li>
<li><a href="#constructor-detail">Constr</a></li>
<li><a href="#method-detail">Method</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../../../module-summary.html">org.apache.sis.referencing</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.sis.referencing.operation.matrix</a></div>
<h1 title="Class Matrix4" class="title">Class Matrix4</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
<div class="inheritance"><a href="MatrixSIS.html" title="class in org.apache.sis.referencing.operation.matrix">MatrixSIS</a>
<div class="inheritance">Matrix4</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Cloneable.html" title="class or interface in java.lang" class="external-link">Cloneable</a></code>, <code><a href="../../../../../../../org.apache.sis.util/org/apache/sis/util/LenientComparable.html" title="interface in org.apache.sis.util">Lenient­Comparable</a></code>, <code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Matrix.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Matrix</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">Matrix4</span>
<span class="extends-implements">extends <a href="MatrixSIS.html" title="class in org.apache.sis.referencing.operation.matrix">MatrixSIS</a></span></div>
<div class="block">A matrix of fixed <a href="#SIZE">4</a>×<a href="#SIZE">4</a> size, often used in datum shifts.
The matrix members are:
<blockquote><pre> ┌ ┐
<a href="#m00">m00</a> <a href="#m01">m01</a> <a href="#m02">m02</a> <a href="#m03">m03</a>
<a href="#m10">m10</a> <a href="#m11">m11</a> <a href="#m12">m12</a> <a href="#m13">m13</a>
<a href="#m20">m20</a> <a href="#m21">m21</a> <a href="#m22">m22</a> <a href="#m23">m23</a>
<a href="#m30">m30</a> <a href="#m31">m31</a> <a href="#m32">m32</a> <a href="#m33">m33</a>
└ ┘</pre></blockquote></div>
<dl class="notes">
<dt>Since:</dt>
<dd>0.4</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="Matrix1.html" title="class in org.apache.sis.referencing.operation.matrix"><code>Matrix1</code></a></li>
<li><a href="Matrix2.html" title="class in org.apache.sis.referencing.operation.matrix"><code>Matrix2</code></a></li>
<li><a href="Matrix3.html" title="class in org.apache.sis.referencing.operation.matrix"><code>Matrix3</code></a></li>
<li><a href="../../../../../../../serialized-form.html#org.apache.sis.referencing.operation.matrix.Matrix4">Serialized Form</a></li>
</ul>
</dd>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>double</code></div>
<div class="col-second even-row-color"><code><a href="#m00" class="member-name-link">m00</a></code></div>
<div class="col-last even-row-color">
<div class="block">The first matrix element in the first row.</div>
</div>
<div class="col-first odd-row-color"><code>double</code></div>
<div class="col-second odd-row-color"><code><a href="#m01" class="member-name-link">m01</a></code></div>
<div class="col-last odd-row-color">
<div class="block">The second matrix element in the first row.</div>
</div>
<div class="col-first even-row-color"><code>double</code></div>
<div class="col-second even-row-color"><code><a href="#m02" class="member-name-link">m02</a></code></div>
<div class="col-last even-row-color">
<div class="block">The third matrix element in the first row.</div>
</div>
<div class="col-first odd-row-color"><code>double</code></div>
<div class="col-second odd-row-color"><code><a href="#m03" class="member-name-link">m03</a></code></div>
<div class="col-last odd-row-color">
<div class="block">The forth matrix element in the first row.</div>
</div>
<div class="col-first even-row-color"><code>double</code></div>
<div class="col-second even-row-color"><code><a href="#m10" class="member-name-link">m10</a></code></div>
<div class="col-last even-row-color">
<div class="block">The first matrix element in the second row.</div>
</div>
<div class="col-first odd-row-color"><code>double</code></div>
<div class="col-second odd-row-color"><code><a href="#m11" class="member-name-link">m11</a></code></div>
<div class="col-last odd-row-color">
<div class="block">The second matrix element in the second row.</div>
</div>
<div class="col-first even-row-color"><code>double</code></div>
<div class="col-second even-row-color"><code><a href="#m12" class="member-name-link">m12</a></code></div>
<div class="col-last even-row-color">
<div class="block">The third matrix element in the second row.</div>
</div>
<div class="col-first odd-row-color"><code>double</code></div>
<div class="col-second odd-row-color"><code><a href="#m13" class="member-name-link">m13</a></code></div>
<div class="col-last odd-row-color">
<div class="block">The forth matrix element in the second row.</div>
</div>
<div class="col-first even-row-color"><code>double</code></div>
<div class="col-second even-row-color"><code><a href="#m20" class="member-name-link">m20</a></code></div>
<div class="col-last even-row-color">
<div class="block">The first matrix element in the third row.</div>
</div>
<div class="col-first odd-row-color"><code>double</code></div>
<div class="col-second odd-row-color"><code><a href="#m21" class="member-name-link">m21</a></code></div>
<div class="col-last odd-row-color">
<div class="block">The second matrix element in the third row.</div>
</div>
<div class="col-first even-row-color"><code>double</code></div>
<div class="col-second even-row-color"><code><a href="#m22" class="member-name-link">m22</a></code></div>
<div class="col-last even-row-color">
<div class="block">The third matrix element in the third row.</div>
</div>
<div class="col-first odd-row-color"><code>double</code></div>
<div class="col-second odd-row-color"><code><a href="#m23" class="member-name-link">m23</a></code></div>
<div class="col-last odd-row-color">
<div class="block">The forth matrix element in the third row.</div>
</div>
<div class="col-first even-row-color"><code>double</code></div>
<div class="col-second even-row-color"><code><a href="#m30" class="member-name-link">m30</a></code></div>
<div class="col-last even-row-color">
<div class="block">The first matrix element in the forth row.</div>
</div>
<div class="col-first odd-row-color"><code>double</code></div>
<div class="col-second odd-row-color"><code><a href="#m31" class="member-name-link">m31</a></code></div>
<div class="col-last odd-row-color">
<div class="block">The second matrix element in the forth row.</div>
</div>
<div class="col-first even-row-color"><code>double</code></div>
<div class="col-second even-row-color"><code><a href="#m32" class="member-name-link">m32</a></code></div>
<div class="col-last even-row-color">
<div class="block">The third matrix element in the forth row.</div>
</div>
<div class="col-first odd-row-color"><code>double</code></div>
<div class="col-second odd-row-color"><code><a href="#m33" class="member-name-link">m33</a></code></div>
<div class="col-last odd-row-color">
<div class="block">The forth matrix element in the forth row.</div>
</div>
<div class="col-first even-row-color"><code>static final int</code></div>
<div class="col-second even-row-color"><code><a href="#SIZE" class="member-name-link">SIZE</a></code></div>
<div class="col-last even-row-color">
<div class="block">The matrix size, which is 4.</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">Matrix4</a>()</code></div>
<div class="col-last even-row-color">
<div class="block">Creates a new identity matrix.</div>
</div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(double%5B%5D)" class="member-name-link">Matrix4</a><wbr>(double[]&nbsp;elements)</code></div>
<div class="col-last odd-row-color">
<div class="block">Creates a new matrix initialized to the specified values.</div>
</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,double)" class="member-name-link">Matrix4</a><wbr>(double&nbsp;m00,
double&nbsp;m01,
double&nbsp;m02,
double&nbsp;m03,
double&nbsp;m10,
double&nbsp;m11,
double&nbsp;m12,
double&nbsp;m13,
double&nbsp;m20,
double&nbsp;m21,
double&nbsp;m22,
double&nbsp;m23,
double&nbsp;m30,
double&nbsp;m31,
double&nbsp;m32,
double&nbsp;m33)</code></div>
<div class="col-last even-row-color">
<div class="block">Creates a new matrix initialized to the specified values.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="Matrix4.html" title="class in org.apache.sis.referencing.operation.matrix">Matrix4</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#castOrCopy(org.opengis.referencing.operation.Matrix)" class="member-name-link">cast­Or­Copy</a><wbr>(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Matrix.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Matrix</a>&nbsp;matrix)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Casts or copies the given matrix to a <code>Matrix4</code> implementation.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="Matrix4.html" title="class in org.apache.sis.referencing.operation.matrix">Matrix4</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#clone()" class="member-name-link">clone</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns a clone of this matrix.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final double</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getElement(int,int)" class="member-name-link">get­Element</a><wbr>(int&nbsp;row,
int&nbsp;column)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Retrieves the value at the specified row and column of this matrix.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final double[]</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getElements()" class="member-name-link">get­Elements</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns all matrix elements in a flat, row-major (column indices vary fastest) array.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getNumCol()" class="member-name-link">get­Num­Col</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the number of columns in this matrix, which is always <a href="#SIZE">4</a> in this implementation.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final int</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getNumRow()" class="member-name-link">get­Num­Row</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns the number of rows in this matrix, which is always <a href="#SIZE">4</a> in this implementation.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isAffine()" class="member-name-link">is­Affine</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns <code>true</code> if this matrix represents an affine transform.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isIdentity()" class="member-name-link">is­Identity</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns <code>true</code> if this matrix is an identity matrix.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setElement(int,int,double)" class="member-name-link">set­Element</a><wbr>(int&nbsp;row,
int&nbsp;column,
double&nbsp;value)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Modifies the value at the specified row and column of this matrix.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>final void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setElements(double%5B%5D)" class="member-name-link">set­Elements</a><wbr>(double[]&nbsp;elements)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sets all matrix elements from a flat, row-major (column indices vary fastest) array.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#transpose()" class="member-name-link">transpose</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Sets the value of this matrix to its transpose.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-MatrixSIS">Methods inherited from class&nbsp;<a href="MatrixSIS.html" title="class in org.apache.sis.referencing.operation.matrix">MatrixSIS</a></h3>
<code><a href="MatrixSIS.html#convertAfter(int,java.lang.Number,java.lang.Number)">convert­After</a>, <a href="MatrixSIS.html#convertBefore(int,java.lang.Number,java.lang.Number)">convert­Before</a>, <a href="MatrixSIS.html#equals(java.lang.Object)">equals</a>, <a href="MatrixSIS.html#equals(java.lang.Object,org.apache.sis.util.ComparisonMode)">equals</a>, <a href="MatrixSIS.html#equals(org.opengis.referencing.operation.Matrix,double)">equals</a>, <a href="MatrixSIS.html#getInteger(int,int)">get­Integer</a>, <a href="MatrixSIS.html#getNumber(int,int)">get­Number</a>, <a href="MatrixSIS.html#hashCode()">hash­Code</a>, <a href="MatrixSIS.html#inverse()">inverse</a>, <a href="MatrixSIS.html#multiply(double%5B%5D)">multiply</a>, <a href="MatrixSIS.html#multiply(org.opengis.referencing.operation.Matrix)">multiply</a>, <a href="MatrixSIS.html#normalizeColumns()">normalize­Columns</a>, <a href="MatrixSIS.html#removeColumns(int,int)">remove­Columns</a>, <a href="MatrixSIS.html#removeRows(int,int)">remove­Rows</a>, <a href="MatrixSIS.html#setMatrix(org.opengis.referencing.operation.Matrix)">set­Matrix</a>, <a href="MatrixSIS.html#setNumber(int,int,java.lang.Number)">set­Number</a>, <a href="MatrixSIS.html#solve(org.opengis.referencing.operation.Matrix)">solve</a>, <a href="MatrixSIS.html#toString()">to­String</a>, <a href="MatrixSIS.html#translate(double%5B%5D)">translate</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-Object">Methods inherited from class&nbsp;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">get­Class</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notify­All</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="SIZE">
<h3>SIZE</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">SIZE</span></div>
<div class="block">The matrix size, which is 4.</div>
<dl class="notes">
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="../../../../../../../constant-values.html#org.apache.sis.referencing.operation.matrix.Matrix4.SIZE">Constant Field Values</a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="m00">
<h3>m00</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">m00</span></div>
<div class="block">The first matrix element in the first row.</div>
</section>
</li>
<li>
<section class="detail" id="m01">
<h3>m01</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">m01</span></div>
<div class="block">The second matrix element in the first row.</div>
</section>
</li>
<li>
<section class="detail" id="m02">
<h3>m02</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">m02</span></div>
<div class="block">The third matrix element in the first row.</div>
</section>
</li>
<li>
<section class="detail" id="m03">
<h3>m03</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">m03</span></div>
<div class="block">The forth matrix element in the first row.</div>
</section>
</li>
<li>
<section class="detail" id="m10">
<h3>m10</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">m10</span></div>
<div class="block">The first matrix element in the second row.</div>
</section>
</li>
<li>
<section class="detail" id="m11">
<h3>m11</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">m11</span></div>
<div class="block">The second matrix element in the second row.</div>
</section>
</li>
<li>
<section class="detail" id="m12">
<h3>m12</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">m12</span></div>
<div class="block">The third matrix element in the second row.</div>
</section>
</li>
<li>
<section class="detail" id="m13">
<h3>m13</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">m13</span></div>
<div class="block">The forth matrix element in the second row.</div>
</section>
</li>
<li>
<section class="detail" id="m20">
<h3>m20</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">m20</span></div>
<div class="block">The first matrix element in the third row.</div>
</section>
</li>
<li>
<section class="detail" id="m21">
<h3>m21</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">m21</span></div>
<div class="block">The second matrix element in the third row.</div>
</section>
</li>
<li>
<section class="detail" id="m22">
<h3>m22</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">m22</span></div>
<div class="block">The third matrix element in the third row.</div>
</section>
</li>
<li>
<section class="detail" id="m23">
<h3>m23</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">m23</span></div>
<div class="block">The forth matrix element in the third row.</div>
</section>
</li>
<li>
<section class="detail" id="m30">
<h3>m30</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">m30</span></div>
<div class="block">The first matrix element in the forth row.</div>
</section>
</li>
<li>
<section class="detail" id="m31">
<h3>m31</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">m31</span></div>
<div class="block">The second matrix element in the forth row.</div>
</section>
</li>
<li>
<section class="detail" id="m32">
<h3>m32</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">m32</span></div>
<div class="block">The third matrix element in the forth row.</div>
</section>
</li>
<li>
<section class="detail" id="m33">
<h3>m33</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">m33</span></div>
<div class="block">The forth matrix element in the forth row.</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;()">
<h3>Matrix4</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Matrix4</span>()</div>
<div class="block">Creates a new identity matrix.</div>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(double,double,double,double,double,double,double,double,double,double,double,double,double,double,double,double)">
<h3>Matrix4</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Matrix4</span><wbr><span class="parameters">(double&nbsp;m00,
double&nbsp;m01,
double&nbsp;m02,
double&nbsp;m03,
double&nbsp;m10,
double&nbsp;m11,
double&nbsp;m12,
double&nbsp;m13,
double&nbsp;m20,
double&nbsp;m21,
double&nbsp;m22,
double&nbsp;m23,
double&nbsp;m30,
double&nbsp;m31,
double&nbsp;m32,
double&nbsp;m33)</span></div>
<div class="block">Creates a new matrix initialized to the specified values.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>m00</code> - the first matrix element in the first row.</dd>
<dd><code>m01</code> - the second matrix element in the first row.</dd>
<dd><code>m02</code> - the third matrix element in the first row.</dd>
<dd><code>m03</code> - the forth matrix element in the first row.</dd>
<dd><code>m10</code> - the first matrix element in the second row.</dd>
<dd><code>m11</code> - the second matrix element in the second row.</dd>
<dd><code>m12</code> - the third matrix element in the second row.</dd>
<dd><code>m13</code> - the forth matrix element in the second row.</dd>
<dd><code>m20</code> - the first matrix element in the third row.</dd>
<dd><code>m21</code> - the second matrix element in the third row.</dd>
<dd><code>m22</code> - the third matrix element in the third row.</dd>
<dd><code>m23</code> - the forth matrix element in the third row.</dd>
<dd><code>m30</code> - the first matrix element in the forth row.</dd>
<dd><code>m31</code> - the second matrix element in the forth row.</dd>
<dd><code>m32</code> - the third matrix element in the forth row.</dd>
<dd><code>m33</code> - the forth matrix element in the forth row.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(double[])">
<h3>Matrix4</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Matrix4</span><wbr><span class="parameters">(double[]&nbsp;elements)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></span></div>
<div class="block">Creates a new matrix initialized to the specified values.
The length of the given array must be 16 and the values in the same order than the above constructor.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>elements</code> - elements of the matrix. Column indices vary fastest.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">Illegal­Argument­Exception</a></code> - if the given array does not have the expected length.</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list-long">
<li><a href="#setElements(double%5B%5D)"><code>set­Elements(double[])</code></a></li>
<li><a href="Matrices.html#create(int,int,double%5B%5D)"><code>Matrices​.create(int, int, double[])</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="castOrCopy(org.opengis.referencing.operation.Matrix)">
<h3>castOrCopy</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="Matrix4.html" title="class in org.apache.sis.referencing.operation.matrix">Matrix4</a></span>&nbsp;<span class="element-name">castOrCopy</span><wbr><span class="parameters">(<a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Matrix.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Matrix</a>&nbsp;matrix)</span>
throws <span class="exceptions"><a href="MismatchedMatrixSizeException.html" title="class in org.apache.sis.referencing.operation.matrix">MismatchedMatrixSizeException</a></span></div>
<div class="block">Casts or copies the given matrix to a <code>Matrix4</code> implementation. If the given <code>matrix</code>
is already an instance of <code>Matrix4</code>, then it is returned unchanged. Otherwise this method
verifies the matrix size, then copies all elements in a new <code>Matrix4</code> object.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>matrix</code> - the matrix to cast or copy, or <code>null</code>.</dd>
<dt>Returns:</dt>
<dd>the matrix argument if it can be safely casted (including <code>null</code> argument),
or a copy of the given matrix otherwise.</dd>
<dt>Throws:</dt>
<dd><code><a href="MismatchedMatrixSizeException.html" title="class in org.apache.sis.referencing.operation.matrix">Mismatched­Matrix­Size­Exception</a></code> - if the size of the given matrix is not <a href="#SIZE">4</a>×<a href="#SIZE">4</a>.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getNumRow()">
<h3>getNumRow</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getNumRow</span>()</div>
<div class="block">Returns the number of rows in this matrix, which is always <a href="#SIZE">4</a> in this implementation.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>always <a href="#SIZE">4</a>.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getNumCol()">
<h3>getNumCol</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getNumCol</span>()</div>
<div class="block">Returns the number of columns in this matrix, which is always <a href="#SIZE">4</a> in this implementation.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>always <a href="#SIZE">4</a>.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getElement(int,int)">
<h3>getElement</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">double</span>&nbsp;<span class="element-name">getElement</span><wbr><span class="parameters">(int&nbsp;row,
int&nbsp;column)</span></div>
<div class="block">Retrieves the value at the specified row and column of this matrix.
This method can be invoked when the matrix size or type is unknown.
If the matrix is known to be an instance of <code>Matrix4</code>,
then the <a href="#m00"><code>m00</code></a><a href="#m33"><code>m33</code></a> fields can be read directly for efficiency.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>row</code> - the row index, from 0 inclusive to <a href="#SIZE">4</a> exclusive.</dd>
<dd><code>column</code> - the column index, from 0 inclusive to <a href="#SIZE">4</a> exclusive.</dd>
<dt>Returns:</dt>
<dd>the current value at the given row and column.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setElement(int,int,double)">
<h3>setElement</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setElement</span><wbr><span class="parameters">(int&nbsp;row,
int&nbsp;column,
double&nbsp;value)</span></div>
<div class="block">Modifies the value at the specified row and column of this matrix.
This method can be invoked when the matrix size or type is unknown.
If the matrix is known to be an instance of <code>Matrix4</code>,
then the <a href="#m00"><code>m00</code></a><a href="#m33"><code>m33</code></a> fields can be set directly for efficiency.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>row</code> - the row index, from 0 inclusive to <a href="#SIZE">4</a> exclusive.</dd>
<dd><code>column</code> - the column index, from 0 inclusive to <a href="#SIZE">4</a> exclusive.</dd>
<dd><code>value</code> - the new value to set at the given row and column.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getElements()">
<h3>getElements</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">double[]</span>&nbsp;<span class="element-name">getElements</span>()</div>
<div class="block">Returns all matrix elements in a flat, row-major (column indices vary fastest) array.
The array length is 16.</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="MatrixSIS.html#getElements()">get­Elements</a></code>&nbsp;in class&nbsp;<code><a href="MatrixSIS.html" title="class in org.apache.sis.referencing.operation.matrix">Matrix­SIS</a></code></dd>
<dt>Returns:</dt>
<dd>a copy of all current matrix elements in a row-major array.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setElements(double[])">
<h3>setElements</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setElements</span><wbr><span class="parameters">(double[]&nbsp;elements)</span></div>
<div class="block">Sets all matrix elements from a flat, row-major (column indices vary fastest) array.
The array length shall be 16.</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="MatrixSIS.html#setElements(double%5B%5D)">set­Elements</a></code>&nbsp;in class&nbsp;<code><a href="MatrixSIS.html" title="class in org.apache.sis.referencing.operation.matrix">Matrix­SIS</a></code></dd>
<dt>Parameters:</dt>
<dd><code>elements</code> - The new matrix elements in a row-major array.</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list-long">
<li><a href="Matrices.html#create(int,int,double%5B%5D)"><code>Matrices​.create(int, int, double[])</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isAffine()">
<h3>isAffine</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isAffine</span>()</div>
<div class="block">Returns <code>true</code> if this matrix represents an affine transform.
A transform is affine if the matrix is square and its last row contains
only zeros, except in the last column which contains 1.</div>
<dl class="notes">
<dt>Overrides:</dt>
<dd><code><a href="MatrixSIS.html#isAffine()">is­Affine</a></code>&nbsp;in class&nbsp;<code><a href="MatrixSIS.html" title="class in org.apache.sis.referencing.operation.matrix">Matrix­SIS</a></code></dd>
<dt>Returns:</dt>
<dd><code>true</code> if this matrix represents an affine transform.</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="Matrices.html#isAffine(org.opengis.referencing.operation.Matrix)"><code>Matrices​.is­Affine(Matrix)</code></a></li>
<li><a href="../transform/LinearTransform.html#isAffine()"><code>Linear­Transform​.is­Affine()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isIdentity()">
<h3>isIdentity</h3>
<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isIdentity</span>()</div>
<div class="block">Returns <code>true</code> if this matrix is an identity matrix.
This method is equivalent to the following code, except that it is potentially more efficient:
<div class="snippet-container"><button class="copy snippet-copy" aria-label="Copy snippet" onclick="copySnippet(this)"><span data-copied="Copied!">Copy</span><img src="../../../../../../../copy.svg" alt="Copy snippet"></button>
<pre class="snippet"><code class="language-java">return Matrices.isIdentity(this, 0.0);
</code></pre>
</div>
</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Matrix.html#isIdentity()" title="class or interface in org.opengis.referencing.operation" class="external-link">is­Identity</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Matrix.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Matrix</a></code></dd>
<dt>Specified by:</dt>
<dd><code><a href="MatrixSIS.html#isIdentity()">is­Identity</a></code>&nbsp;in class&nbsp;<code><a href="MatrixSIS.html" title="class in org.apache.sis.referencing.operation.matrix">Matrix­SIS</a></code></dd>
<dt>Returns:</dt>
<dd><code>true</code> if this matrix is an identity matrix.</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list-long">
<li><a href="Matrices.html#isIdentity(org.opengis.referencing.operation.Matrix,double)"><code>Matrices​.is­Identity(Matrix, double)</code></a></li>
<li><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/geom/AffineTransform.html#isIdentity()" title="class or interface in java.awt.geom" class="external-link"><code>Affine­Transform​.is­Identity()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="transpose()">
<h3>transpose</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">transpose</span>()</div>
<div class="block">Sets the value of this matrix to its transpose.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="MatrixSIS.html#transpose()">transpose</a></code>&nbsp;in class&nbsp;<code><a href="MatrixSIS.html" title="class in org.apache.sis.referencing.operation.matrix">Matrix­SIS</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="clone()">
<h3>clone</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="Matrix4.html" title="class in org.apache.sis.referencing.operation.matrix">Matrix4</a></span>&nbsp;<span class="element-name">clone</span>()</div>
<div class="block">Returns a clone of this matrix.</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Matrix.html#clone()" title="class or interface in org.opengis.referencing.operation" class="external-link">clone</a></code>&nbsp;in interface&nbsp;<code><a href="http://www.geoapi.org/3.0/javadoc/org.opengis.geoapi/org/opengis/referencing/operation/Matrix.html" title="class or interface in org.opengis.referencing.operation" class="external-link">Matrix</a></code></dd>
<dt>Overrides:</dt>
<dd><code><a href="MatrixSIS.html#clone()">clone</a></code>&nbsp;in class&nbsp;<code><a href="MatrixSIS.html" title="class in org.apache.sis.referencing.operation.matrix">Matrix­SIS</a></code></dd>
<dt>Returns:</dt>
<dd>a new matrix of the same class and with the same values than this matrix.</dd>
<dt>See Also:</dt>
<dd>
<ul class="tag-list">
<li><a href="Matrices.html#copy(org.opengis.referencing.operation.Matrix)"><code>Matrices​.copy(Matrix)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>