twgl.js/docs/m4.html
2015-05-19 02:24:51 +09:00

6100 lines
84 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>TWGL Module: twgl.m4</title>
<link type="text/css" rel="stylesheet" href="styles/site.cerulean.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">TWGL</a>
<ul class="nav">
<li class="dropdown">
<a href="modules.list.html" class="dropdown-toggle" data-toggle="dropdown">Modules<b
class="caret"></b></a>
<ul class="dropdown-menu ">
<li>
<a href="module-twgl.html">twgl</a>
</li>
<li>
<a href="m4.html">twgl/m4</a>
</li>
<li>
<a href="primitives.html">twgl/primitives</a>
</li>
<li>
<a href="v3.html">twgl/v3</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span8">
<div id="main">
<h1 class="page-title">Module: twgl.m4</h1>
<section>
<header>
<h2>
twgl/m4
</h2>
</header>
<article>
<div class="container-overview">
<div class="description"><p>4x4 Matrix math math functions.</p>
<p>Almost all functions take an optional <code>dst</code> argument. If it is not passed in the
functions will create a new matrix. In other words you can do this</p>
<pre><code>var mat = m4.translation([1, 2, 3]); // Creates a new translation matrix</code></pre>
<p>or</p>
<pre><code>var mat = m4.create();
m4.translation([1, 2, 3], mat); // Puts translation matrix in mat.</code></pre>
<p>The first style is often easier but depending on where it's used it generates garbage where
as there is almost never allocation with the second style.</p>
<p>It is always save to pass any matrix as the destination. So for example</p>
<pre><code>var mat = m4.identity();
var trans = m4.translation([1, 2, 3]);
m4.multiply(mat, trans, mat); // Multiplies mat * trans and puts result in mat.</code></pre></div>
<dl class="details">
</dl>
</div>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="axisRotate"><span class="type-signature"> </span>axisRotate<span class="signature">(m, axis, angleInRadians, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Modifies the given 4-by-4 matrix by rotation around the given axis by the
given angle.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>m</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The matrix.</p></td>
</tr>
<tr>
<td class="name"><code>axis</code></td>
<td class="type">
<span class="param-type">Vec3</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The axis
about which to rotate.</p></td>
</tr>
<tr>
<td class="name"><code>angleInRadians</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The angle by which to rotate (in radians).</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>m once modified.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="axisRotation"><span class="type-signature"> </span>axisRotation<span class="signature">(axis, angleInRadians, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Creates a 4-by-4 matrix which rotates around the given axis by the given
angle.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>axis</code></td>
<td class="type">
<span class="param-type">Vec3</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The axis
about which to rotate.</p></td>
</tr>
<tr>
<td class="name"><code>angleInRadians</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The angle by which to rotate (in radians).</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>A matrix which rotates angle radians
around the axis.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="copy"><span class="type-signature"> </span>copy<span class="signature">(m, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Copies a matrix.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>m</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The matrix.</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>The matrix.</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>A copy of m.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="frustum"><span class="type-signature"> </span>frustum<span class="signature">(left, right, bottom, top, near, far, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Computes a 4-by-4 perspective transformation matrix given the left, right,
top, bottom, near and far clipping planes. The arguments define a frustum
extending in the negative z direction. The arguments near and far are the
distances to the near and far clipping planes. Note that near and far are not
z coordinates, but rather they are distances along the negative z-axis. The
matrix generated sends the viewing frustum to the unit box. We assume a unit
box extending from -1 to 1 in the x and y dimensions and from 0 to 1 in the z
dimension.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>left</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The x coordinate of the left plane of the box.</p></td>
</tr>
<tr>
<td class="name"><code>right</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The x coordinate of the right plane of the box.</p></td>
</tr>
<tr>
<td class="name"><code>bottom</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The y coordinate of the bottom plane of the box.</p></td>
</tr>
<tr>
<td class="name"><code>top</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The y coordinate of the right plane of the box.</p></td>
</tr>
<tr>
<td class="name"><code>near</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The negative z coordinate of the near plane of the box.</p></td>
</tr>
<tr>
<td class="name"><code>far</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The negative z coordinate of the far plane of the box.</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>Output matrix.</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>The perspective projection matrix.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="getAxis"><span class="type-signature"> </span>getAxis<span class="signature">(m, axis)</span><span class="type-signature"> &rarr; {Vec3}</span></h4>
</dt>
<dd>
<div class="description">
<p>Returns the axis of a 4x4 matrix as a vector with 3 entries</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>m</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="description last"><p>The matrix.</p></td>
</tr>
<tr>
<td class="name"><code>axis</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last"><p>The axis 0 = x, 1 = y, 2 = z;</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<ul>
<li>
<div class="param-desc">
<p>[dst] vector.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Vec3</span>
</dd>
</dl>
</li>
<li>
<div class="param-desc">
<p>The axis component of m.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Vec3</span>
</dd>
</dl>
</li>
</ul>
</dd>
<dt>
<h4 class="name" id="getTranslation"><span class="type-signature"> </span>getTranslation<span class="signature">(m)</span><span class="type-signature"> &rarr; {Vec3}</span></h4>
</dt>
<dd>
<div class="description">
<p>Returns the translation component of a 4-by-4 matrix as a vector with 3
entries.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>m</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="description last"><p>The matrix.</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<ul>
<li>
<div class="param-desc">
<p>[dst] vector..</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Vec3</span>
</dd>
</dl>
</li>
<li>
<div class="param-desc">
<p>The translation component of m.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Vec3</span>
</dd>
</dl>
</li>
</ul>
</dd>
<dt>
<h4 class="name" id="identity"><span class="type-signature"> </span>identity<span class="signature">(<span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Creates an n-by-n identity matrix.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>An n-by-n identity matrix.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="inverse"><span class="type-signature"> </span>inverse<span class="signature">(m, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Computes the inverse of a 4-by-4 matrix.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>m</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The matrix.</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>The inverse of m.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="lookAt"><span class="type-signature"> </span>lookAt<span class="signature">(eye, target, up, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Computes a 4-by-4 look-at transformation.</p>
<p>This is a matrix which positions the camera itself. If you want
a view matrix (a matrix which moves things in front of the camera)
take the inverse of this.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>eye</code></td>
<td class="type">
<span class="param-type">Vec3</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The position of the eye.</p></td>
</tr>
<tr>
<td class="name"><code>target</code></td>
<td class="type">
<span class="param-type">Vec3</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The position meant to be viewed.</p></td>
</tr>
<tr>
<td class="name"><code>up</code></td>
<td class="type">
<span class="param-type">Vec3</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>A vector pointing up.</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>The look-at matrix.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="multiply"><span class="type-signature"> </span>multiply<span class="signature">(a, b, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Multiplies two 4-by-4 matrices; assumes that the given matrices are 4-by-4;
assumes matrix entries are accessed in [row][column] fashion.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>a</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The matrix on the left.</p></td>
</tr>
<tr>
<td class="name"><code>b</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The matrix on the right.</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>The matrix product of a and b.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="negate"><span class="type-signature"> </span>negate<span class="signature">(m, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Negates a matrix.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>m</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The matrix.</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>-m.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="ortho"><span class="type-signature"> </span>ortho<span class="signature">(left, right, top, bottom, near, far, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Computes a 4-by-4 othogonal transformation matrix given the left, right,
bottom, and top dimensions of the near clipping plane as well as the
near and far clipping plane distances.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>left</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>Left side of the near clipping plane viewport.</p></td>
</tr>
<tr>
<td class="name"><code>right</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>Right side of the near clipping plane viewport.</p></td>
</tr>
<tr>
<td class="name"><code>top</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>Top of the near clipping plane viewport.</p></td>
</tr>
<tr>
<td class="name"><code>bottom</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>Bottom of the near clipping plane viewport.</p></td>
</tr>
<tr>
<td class="name"><code>near</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The depth (negative z coordinate)
of the near clipping plane.</p></td>
</tr>
<tr>
<td class="name"><code>far</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The depth (negative z coordinate)
of the far clipping plane.</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>Output matrix.</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>The perspective matrix.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="perspective"><span class="type-signature"> </span>perspective<span class="signature">(fieldOfViewYInRadians, aspect, zNear, zFar, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Computes a 4-by-4 perspective transformation matrix given the angular height
of the frustum, the aspect ratio, and the near and far clipping planes. The
arguments define a frustum extending in the negative z direction. The given
angle is the vertical angle of the frustum, and the horizontal angle is
determined to produce the given aspect ratio. The arguments near and far are
the distances to the near and far clipping planes. Note that near and far
are not z coordinates, but rather they are distances along the negative
z-axis. The matrix generated sends the viewing frustum to the unit box.
We assume a unit box extending from -1 to 1 in the x and y dimensions and
from 0 to 1 in the z dimension.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>fieldOfViewYInRadians</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The camera angle from top to bottom (in radians).</p></td>
</tr>
<tr>
<td class="name"><code>aspect</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The aspect ratio width / height.</p></td>
</tr>
<tr>
<td class="name"><code>zNear</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The depth (negative z coordinate)
of the near clipping plane.</p></td>
</tr>
<tr>
<td class="name"><code>zFar</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The depth (negative z coordinate)
of the far clipping plane.</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>The perspective matrix.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="rotateX"><span class="type-signature"> </span>rotateX<span class="signature">(m, angleInRadians, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Modifies the given 4-by-4 matrix by a rotation around the x-axis by the given
angle.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>m</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The matrix.</p></td>
</tr>
<tr>
<td class="name"><code>angleInRadians</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The angle by which to rotate (in radians).</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>m once modified.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="rotateY"><span class="type-signature"> </span>rotateY<span class="signature">(m, angleInRadians, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Modifies the given 4-by-4 matrix by a rotation around the y-axis by the given
angle.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>m</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The matrix.</p></td>
</tr>
<tr>
<td class="name"><code>angleInRadians</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The angle by which to rotate (in radians).</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>m once modified.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="rotateZ"><span class="type-signature"> </span>rotateZ<span class="signature">(m, angleInRadians, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Modifies the given 4-by-4 matrix by a rotation around the z-axis by the given
angle.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>m</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The matrix.</p></td>
</tr>
<tr>
<td class="name"><code>angleInRadians</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The angle by which to rotate (in radians).</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>m once modified.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="rotationX"><span class="type-signature"> </span>rotationX<span class="signature">(angleInRadians, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Creates a 4-by-4 matrix which rotates around the x-axis by the given angle.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>angleInRadians</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The angle by which to rotate (in radians).</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>The rotation matrix.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="rotationY"><span class="type-signature"> </span>rotationY<span class="signature">(angleInRadians, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Creates a 4-by-4 matrix which rotates around the y-axis by the given angle.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>angleInRadians</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The angle by which to rotate (in radians).</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>The rotation matrix.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="rotationZ"><span class="type-signature"> </span>rotationZ<span class="signature">(angleInRadians, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Creates a 4-by-4 matrix which rotates around the z-axis by the given angle.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>angleInRadians</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The angle by which to rotate (in radians).</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>The rotation matrix.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="scale"><span class="type-signature"> </span>scale<span class="signature">(m, v, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Modifies the given 4-by-4 matrix, scaling in each dimension by an amount
given by the corresponding entry in the given vector; assumes the vector has
three entries.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>m</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The matrix to be modified.</p></td>
</tr>
<tr>
<td class="name"><code>v</code></td>
<td class="type">
<span class="param-type">Vec3</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>A vector of three entries specifying the
factor by which to scale in each dimension.</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>m once modified.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="scaling"><span class="type-signature"> </span>scaling<span class="signature">(v, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Creates a 4-by-4 matrix which scales in each dimension by an amount given by
the corresponding entry in the given vector; assumes the vector has three
entries.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>v</code></td>
<td class="type">
<span class="param-type">Vec3</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>A vector of
three entries specifying the factor by which to scale in each dimension.</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>The scaling matrix.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="setTranslation"><span class="type-signature"> </span>setTranslation<span class="signature">(a, v, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Sets the translation component of a 4-by-4 matrix to the given
vector.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>a</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The matrix.</p></td>
</tr>
<tr>
<td class="name"><code>v</code></td>
<td class="type">
<span class="param-type">Vec3</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The vector.</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>a once modified.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="transformDirection"><span class="type-signature"> </span>transformDirection<span class="signature">(m, v, dst)</span><span class="type-signature"> &rarr; {Vec3}</span></h4>
</dt>
<dd>
<div class="description">
<p>Takes a 4-by-4 matrix and a vector with 3 entries, interprets the vector as a
direction, transforms that direction by the matrix, and returns the result;
assumes the transformation of 3-dimensional space represented by the matrix
is parallel-preserving, i.e. any combination of rotation, scaling and
translation, but not a perspective distortion. Returns a vector with 3
entries.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>m</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="description last"><p>The matrix.</p></td>
</tr>
<tr>
<td class="name"><code>v</code></td>
<td class="type">
<span class="param-type">Vec3</span>
</td>
<td class="description last"><p>The direction.</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type">Vec3</span>
</td>
<td class="description last"><p>optional Vec3 to store result</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>dst or new Vec3 if not provided</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Vec3</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="transformNormal"><span class="type-signature"> </span>transformNormal<span class="signature">(m, v, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {Vec3}</span></h4>
</dt>
<dd>
<div class="description">
<p>Takes a 4-by-4 matrix m and a vector v with 3 entries, interprets the vector
as a normal to a surface, and computes a vector which is normal upon
transforming that surface by the matrix. The effect of this function is the
same as transforming v (as a direction) by the inverse-transpose of m. This
function assumes the transformation of 3-dimensional space represented by the
matrix is parallel-preserving, i.e. any combination of rotation, scaling and
translation, but not a perspective distortion. Returns a vector with 3
entries.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>m</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The matrix.</p></td>
</tr>
<tr>
<td class="name"><code>v</code></td>
<td class="type">
<span class="param-type">Vec3</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The normal.</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type">Vec3</span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>The direction.</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>The transformed direction.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Vec3</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="transformPoint"><span class="type-signature"> </span>transformPoint<span class="signature">(m, v, dst)</span><span class="type-signature"> &rarr; {Vec3}</span></h4>
</dt>
<dd>
<div class="description">
<p>Takes a 4-by-4 matrix and a vector with 3 entries,
interprets the vector as a point, transforms that point by the matrix, and
returns the result as a vector with 3 entries.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>m</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="description last"><p>The matrix.</p></td>
</tr>
<tr>
<td class="name"><code>v</code></td>
<td class="type">
<span class="param-type">Vec3</span>
</td>
<td class="description last"><p>The point.</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type">Vec3</span>
</td>
<td class="description last"><p>optional vec3 to store result</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>dst or new vec3 if not provided</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Vec3</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="translate"><span class="type-signature"> </span>translate<span class="signature">(m, v, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Modifies the given 4-by-4 matrix by translation by the given vector v.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>m</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The matrix.</p></td>
</tr>
<tr>
<td class="name"><code>v</code></td>
<td class="type">
<span class="param-type">Vec3</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The vector by
which to translate.</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>m once modified.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="translation"><span class="type-signature"> </span>translation<span class="signature">(v, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Creates a 4-by-4 matrix which translates by the given vector v.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>v</code></td>
<td class="type">
<span class="param-type">Vec3</span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The vector by
which to translate.</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>The translation matrix.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="transpose"><span class="type-signature"> </span>transpose<span class="signature">(m, <span class="optional">dst</span>)</span><span class="type-signature"> &rarr; {<a href="m4.html#Mat4">Mat4</a>}</span></h4>
</dt>
<dd>
<div class="description">
<p>Takes the transpose of a matrix.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>m</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>The matrix.</p></td>
</tr>
<tr>
<td class="name"><code>dst</code></td>
<td class="type">
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last"><p>matrix to hold result. If none new one is created..</p></td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>The transpose of m.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="m4.html#Mat4">Mat4</a></span>
</dd>
</dl>
</dd>
</dl>
<h3 class="subsection-title">Type Definitions</h3>
<dl>
<dt class="name" id="Mat4">
<h4>Mat4</h4>
</dt>
<dd>
<div class="description">
<p>A JavaScript array with 16 values or a Float32Array with 16 values.
When created by the library will create the default type which is <code>Float32Array</code>
but can be set by calling <code>setDefaultType</code>.</p>
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">Array.&lt;number>|</span>
<span class="param-type">Float32Array</span>
</li>
</ul>
<dl class="details">
</dl>
</dd>
</dl>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
</footer>
</div>
<div class="span3">
<div id="toc"></div>
</div>
<br clear="both">
</div>
</div>
<script src="scripts/prettify/prettify.js"></script>
<script src="scripts/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$(".dropdown-menu a").each(function() {
var text = $(this).text();
$(this).text(text.replace(/\//g, '.'));
});
$( "#toc" ).toc( {
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "prettyprint" )
.html( example.html() );
}
} );
$('pre>code')
.unwrap()
.replaceWith(function() {
return $('<pre class="prettyprint showlinemods">' + this.innerHTML + '</pre>')
});
prettyPrint();
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
<script>
(function ( i, s, o, g, r, a, m ) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push( arguments )
}, i[r].l = 1 * new Date();
a = s.createElement( o ),
m = s.getElementsByTagName( o )[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore( a, m )
})( window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga' );
ga( 'create', 'UA-61260681-1', 'auto' );
ga( 'send', 'pageview' );
</script>
</body>
</html>