Файловый менеджер - Редактировать - /usr/share/doc/imath-devel/html/functions/matrix.html
�азад
<!doctype html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Matrix Functions — Imath Documentation</title> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/bizstyle.css" type="text/css" /> <script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> <script src="../_static/jquery.js"></script> <script src="../_static/underscore.js"></script> <script src="../_static/doctools.js"></script> <script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script> <script src="../_static/bizstyle.js"></script> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> <link rel="next" title="Random Numbers" href="random.html" /> <link rel="prev" title="Line3 Functions" href="line.html" /> <meta name="viewport" content="width=device-width,initial-scale=1.0" /> <!--[if lt IE 9]> <script src="_static/css3-mediaqueries.js"></script> <![endif]--> </head><body> <div class="related" role="navigation" aria-label="related navigation"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" accesskey="I">index</a></li> <li class="right" > <a href="random.html" title="Random Numbers" accesskey="N">next</a> |</li> <li class="right" > <a href="line.html" title="Line3 Functions" accesskey="P">previous</a> |</li> <li class="nav-item nav-item-0"><a href="../index.html">Imath</a> »</li> <li class="nav-item nav-item-this"><a href="">Matrix Functions</a></li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body" role="main"> <div class="section" id="matrix-functions"> <span id="id1"></span><h1>Matrix Functions<a class="headerlink" href="#matrix-functions" title="Permalink to this headline">¶</a></h1> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">#include <Imath/ImathMatrixAlgo.h></span> </pre></div> </div> <p>Functions that operate on matrices</p> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath14extractScalingEbRK8Matrix44I1TER4Vec3I1TEb"> <span id="_CPPv3I0EN5Imath14extractScalingERK8Matrix44I1TER4Vec3I1TEb"></span><span id="_CPPv2I0EN5Imath14extractScalingERK8Matrix44I1TER4Vec3I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a7df44f8151938e3a507d9718f64bc61f"></span>bool <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">extractScaling</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath14extractScalingEbRK8Matrix44I1TER4Vec3I1TEb" title="Imath::extractScaling::T">T</a>> &<em>mat</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath14extractScalingEbRK8Matrix44I1TER4Vec3I1TEb" title="Imath::extractScaling::T">T</a>> &<em>scl</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath14extractScalingEbRK8Matrix44I1TER4Vec3I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Extract the scaling component of the given 4x4 matrix. </p> <p><dl class="simple"> <dt><strong>Return</strong></dt><dd><p>True if the scale could be extracted, false if the matrix is degenerate. </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The input matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">scl</span></code>: The extracted scale, i.e. the output value </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> is very close to zero. </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath11sansScalingE8Matrix44I1TERK8Matrix44I1TEb"> <span id="_CPPv3I0EN5Imath11sansScalingERK8Matrix44I1TEb"></span><span id="_CPPv2I0EN5Imath11sansScalingERK8Matrix44I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a3887a82a1aa28e42b71c8765db3de981"></span><a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11sansScalingE8Matrix44I1TERK8Matrix44I1TEb" title="Imath::sansScaling::T">T</a>> <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">sansScaling</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11sansScalingE8Matrix44I1TERK8Matrix44I1TEb" title="Imath::sansScaling::T">T</a>> &<em>mat</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath11sansScalingE8Matrix44I1TERK8Matrix44I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Return the given 4x4 matrix with scaling removed. </p> <p><dl class="simple"> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The input matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath13removeScalingEbR8Matrix44I1TEb"> <span id="_CPPv3I0EN5Imath13removeScalingER8Matrix44I1TEb"></span><span id="_CPPv2I0EN5Imath13removeScalingER8Matrix44I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1ab63f047fce15654a1ba7de63f0537503"></span>bool <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">removeScaling</code><span class="sig-paren">(</span><a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath13removeScalingEbR8Matrix44I1TEb" title="Imath::removeScaling::T">T</a>> &<em>mat</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath13removeScalingEbR8Matrix44I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Remove scaling from the given 4x4 matrix in place. </p> <p>Return true if the scale could be successfully extracted, false if the matrix is degenerate. <dl class="simple"> <dt><strong>Return</strong></dt><dd><p>True if the scale could be extracted, false if the matrix is degenerate. </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The matrix to operate on </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> is very close to zero. </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath22extractScalingAndShearEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TEb"> <span id="_CPPv3I0EN5Imath22extractScalingAndShearERK8Matrix44I1TER4Vec3I1TER4Vec3I1TEb"></span><span id="_CPPv2I0EN5Imath22extractScalingAndShearERK8Matrix44I1TER4Vec3I1TER4Vec3I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1ab74d7175dcbcb8d846757917f036d6dc"></span>bool <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">extractScalingAndShear</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath22extractScalingAndShearEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TEb" title="Imath::extractScalingAndShear::T">T</a>> &<em>mat</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath22extractScalingAndShearEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TEb" title="Imath::extractScalingAndShear::T">T</a>> &<em>scl</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath22extractScalingAndShearEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TEb" title="Imath::extractScalingAndShear::T">T</a>> &<em>shr</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath22extractScalingAndShearEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Extract the scaling and shear components of the given 4x4 matrix. </p> <p>Return true if the scale could be successfully extracted, false if the matrix is degenerate.</p> <p><dl class="simple"> <dt><strong>Return</strong></dt><dd><p>True if the scale could be extracted, false if the matrix is degenerate. </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The input matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">scl</span></code>: The extracted scale </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">shr</span></code>: The extracted shear </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> is very close to zero. </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath19sansScalingAndShearE8Matrix44I1TERK8Matrix44I1TEb"> <span id="_CPPv3I0EN5Imath19sansScalingAndShearERK8Matrix44I1TEb"></span><span id="_CPPv2I0EN5Imath19sansScalingAndShearERK8Matrix44I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a8a599d8d733cb0905135fd1b38d2027b"></span><a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath19sansScalingAndShearE8Matrix44I1TERK8Matrix44I1TEb" title="Imath::sansScalingAndShear::T">T</a>> <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">sansScalingAndShear</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath19sansScalingAndShearE8Matrix44I1TERK8Matrix44I1TEb" title="Imath::sansScalingAndShear::T">T</a>> &<em>mat</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath19sansScalingAndShearE8Matrix44I1TERK8Matrix44I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Return the given 4x4 matrix with scaling and shear removed. </p> <p><dl class="simple"> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The input matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> is very close to zero. </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath19sansScalingAndShearEvR8Matrix44I1TERK8Matrix44I1TEb"> <span id="_CPPv3I0EN5Imath19sansScalingAndShearER8Matrix44I1TERK8Matrix44I1TEb"></span><span id="_CPPv2I0EN5Imath19sansScalingAndShearER8Matrix44I1TERK8Matrix44I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a99548327da562d5d0c8a4c49c6bba904"></span>void <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">sansScalingAndShear</code><span class="sig-paren">(</span><a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath19sansScalingAndShearEvR8Matrix44I1TERK8Matrix44I1TEb" title="Imath::sansScalingAndShear::T">T</a>> &<em>result</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath19sansScalingAndShearEvR8Matrix44I1TERK8Matrix44I1TEb" title="Imath::sansScalingAndShear::T">T</a>> &<em>mat</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath19sansScalingAndShearEvR8Matrix44I1TERK8Matrix44I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Extract scaling and shear from the given 4x4 matrix in-place. </p> <p><dl class="simple"> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[inout]</span> <span class="pre">result</span></code>: The output matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The return value if <code class="docutils literal notranslate"><span class="pre">result</span></code> is degenerate </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> is very close to zero. </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath21removeScalingAndShearEbR8Matrix44I1TEb"> <span id="_CPPv3I0EN5Imath21removeScalingAndShearER8Matrix44I1TEb"></span><span id="_CPPv2I0EN5Imath21removeScalingAndShearER8Matrix44I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1afb2c9dba369801afd12fa60d546a20ad"></span>bool <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">removeScalingAndShear</code><span class="sig-paren">(</span><a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath21removeScalingAndShearEbR8Matrix44I1TEb" title="Imath::removeScalingAndShear::T">T</a>> &<em>mat</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath21removeScalingAndShearEbR8Matrix44I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Remove scaling and shear from the given 4x4 matrix in place. </p> <p><dl class="simple"> <dt><strong>Return</strong></dt><dd><p>True if the scale could be extracted, false if the matrix is degenerate. </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[inout]</span> <span class="pre">mat</span></code>: The matrix to operate on </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> is very close to zero. </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath31extractAndRemoveScalingAndShearEbR8Matrix44I1TER4Vec3I1TER4Vec3I1TEb"> <span id="_CPPv3I0EN5Imath31extractAndRemoveScalingAndShearER8Matrix44I1TER4Vec3I1TER4Vec3I1TEb"></span><span id="_CPPv2I0EN5Imath31extractAndRemoveScalingAndShearER8Matrix44I1TER4Vec3I1TER4Vec3I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a6f4e11b794cf9c90fcbbb765d1f5922d"></span>bool <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">extractAndRemoveScalingAndShear</code><span class="sig-paren">(</span><a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath31extractAndRemoveScalingAndShearEbR8Matrix44I1TER4Vec3I1TER4Vec3I1TEb" title="Imath::extractAndRemoveScalingAndShear::T">T</a>> &<em>mat</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath31extractAndRemoveScalingAndShearEbR8Matrix44I1TER4Vec3I1TER4Vec3I1TEb" title="Imath::extractAndRemoveScalingAndShear::T">T</a>> &<em>scl</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath31extractAndRemoveScalingAndShearEbR8Matrix44I1TER4Vec3I1TER4Vec3I1TEb" title="Imath::extractAndRemoveScalingAndShear::T">T</a>> &<em>shr</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath31extractAndRemoveScalingAndShearEbR8Matrix44I1TER4Vec3I1TER4Vec3I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Remove scaling and shear from the given 4x4 matrix in place, returning the extracted values. </p> <p><dl class="simple"> <dt><strong>Return</strong></dt><dd><p>True if the scale could be extracted, false if the matrix is degenerate. </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[inout]</span> <span class="pre">mat</span></code>: The matrix to operate on </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">scl</span></code>: The extracted scale </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">shr</span></code>: The extracted shear </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> is very close to zero. </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath15extractEulerXYZEvRK8Matrix44I1TER4Vec3I1TE"> <span id="_CPPv3I0EN5Imath15extractEulerXYZERK8Matrix44I1TER4Vec3I1TE"></span><span id="_CPPv2I0EN5Imath15extractEulerXYZERK8Matrix44I1TER4Vec3I1TE"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a32b097a73d068463bdfe3b54e7d83d1a"></span>void <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">extractEulerXYZ</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath15extractEulerXYZEvRK8Matrix44I1TER4Vec3I1TE" title="Imath::extractEulerXYZ::T">T</a>> &<em>mat</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath15extractEulerXYZEvRK8Matrix44I1TER4Vec3I1TE" title="Imath::extractEulerXYZ::T">T</a>> &<em>rot</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath15extractEulerXYZEvRK8Matrix44I1TER4Vec3I1TE" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Extract the rotation from the given 4x4 matrix in the form of XYZ euler angles. </p> <p><dl class="simple"> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The input matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">rot</span></code>: The extracted XYZ euler angle vector </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath15extractEulerZYXEvRK8Matrix44I1TER4Vec3I1TE"> <span id="_CPPv3I0EN5Imath15extractEulerZYXERK8Matrix44I1TER4Vec3I1TE"></span><span id="_CPPv2I0EN5Imath15extractEulerZYXERK8Matrix44I1TER4Vec3I1TE"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1ab670cfd58ee6b234c402bcaaf2a262ce"></span>void <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">extractEulerZYX</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath15extractEulerZYXEvRK8Matrix44I1TER4Vec3I1TE" title="Imath::extractEulerZYX::T">T</a>> &<em>mat</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath15extractEulerZYXEvRK8Matrix44I1TER4Vec3I1TE" title="Imath::extractEulerZYX::T">T</a>> &<em>rot</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath15extractEulerZYXEvRK8Matrix44I1TER4Vec3I1TE" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Extract the rotation from the given 4x4 matrix in the form of ZYX euler angles. </p> <p><dl class="simple"> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The input matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">rot</span></code>: The extracted ZYX euler angle vector </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath11extractQuatE4QuatI1TERK8Matrix44I1TE"> <span id="_CPPv3I0EN5Imath11extractQuatERK8Matrix44I1TE"></span><span id="_CPPv2I0EN5Imath11extractQuatERK8Matrix44I1TE"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1abe3b346be13fc5f3bc1d3007547cf225"></span><a class="reference internal" href="../classes/Quat.html#_CPPv4I0EN5Imath4QuatE" title="Imath::Quat">Quat</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractQuatE4QuatI1TERK8Matrix44I1TE" title="Imath::extractQuat::T">T</a>> <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">extractQuat</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractQuatE4QuatI1TERK8Matrix44I1TE" title="Imath::extractQuat::T">T</a>> &<em>mat</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath11extractQuatE4QuatI1TERK8Matrix44I1TE" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Extract the rotation from the given 4x4 matrix in the form of a quaternion. </p> <p><dl class="simple"> <dt><strong>Return</strong></dt><dd><p>The extracted quaternion </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The input matrix </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEbN5EulerI1TE5OrderE"> <span id="_CPPv3I0EN5Imath11extractSHRTERK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEbN5EulerI1TE5OrderE"></span><span id="_CPPv2I0EN5Imath11extractSHRTERK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEbN5EulerI1TE5OrderE"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1aedb6d5c6f8307f6c6f28587c6ab7c261"></span>bool <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">extractSHRT</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEbN5EulerI1TE5OrderE" title="Imath::extractSHRT::T">T</a>> &<em>mat</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEbN5EulerI1TE5OrderE" title="Imath::extractSHRT::T">T</a>> &<em>s</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEbN5EulerI1TE5OrderE" title="Imath::extractSHRT::T">T</a>> &<em>h</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEbN5EulerI1TE5OrderE" title="Imath::extractSHRT::T">T</a>> &<em>r</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEbN5EulerI1TE5OrderE" title="Imath::extractSHRT::T">T</a>> &<em>t</em>, bool <em>exc</em>, <em class="property">typename</em> <a class="reference internal" href="../classes/Euler.html#_CPPv4I0EN5Imath5EulerE" title="Imath::Euler">Euler</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEbN5EulerI1TE5OrderE" title="Imath::extractSHRT::T">T</a>>::Order <em>rOrder</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEbN5EulerI1TE5OrderE" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Extract the scaling, shear, rotation, and translation components of the given 4x4 matrix. </p> <p>The values are such that: <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">M</span> <span class="o">=</span> <span class="n">S</span> <span class="o">*</span> <span class="n">H</span> <span class="o">*</span> <span class="n">R</span> <span class="o">*</span> <span class="n">T</span> </pre></div> </div> <dl class="simple"> <dt><strong>Return</strong></dt><dd><p>True if the values could be extracted, false if the matrix is degenerate. </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The input matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">s</span></code>: The extracted scale </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">h</span></code>: The extracted shear </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">r</span></code>: The extracted rotation </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">t</span></code>: The extracted translation </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> is very close to zero. </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">rOrder</span></code>: The order with which to extract the rotation </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEb"> <span id="_CPPv3I0EN5Imath11extractSHRTERK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEb"></span><span id="_CPPv2I0EN5Imath11extractSHRTERK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a82641758b1b50850cfe408fbbae4526f"></span>bool <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">extractSHRT</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEb" title="Imath::extractSHRT::T">T</a>> &<em>mat</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEb" title="Imath::extractSHRT::T">T</a>> &<em>s</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEb" title="Imath::extractSHRT::T">T</a>> &<em>h</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEb" title="Imath::extractSHRT::T">T</a>> &<em>r</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEb" title="Imath::extractSHRT::T">T</a>> &<em>t</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TER4Vec3I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Extract the scaling, shear, rotation, and translation components of the given 4x4 matrix. </p> <p><dl class="simple"> <dt><strong>Return</strong></dt><dd><p>True if the values could be extracted, false if the matrix is degenerate. </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The input matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">s</span></code>: The extracted scale </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">h</span></code>: The extracted shear </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">r</span></code>: The extracted rotation, in XYZ euler angles </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">t</span></code>: The extracted translation </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> is very close to zero. </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER5EulerI1TER4Vec3I1TEb"> <span id="_CPPv3I0EN5Imath11extractSHRTERK8Matrix44I1TER4Vec3I1TER4Vec3I1TER5EulerI1TER4Vec3I1TEb"></span><span id="_CPPv2I0EN5Imath11extractSHRTERK8Matrix44I1TER4Vec3I1TER4Vec3I1TER5EulerI1TER4Vec3I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a4fffb7c992d1b19706b795c56e689bed"></span>bool <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">extractSHRT</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER5EulerI1TER4Vec3I1TEb" title="Imath::extractSHRT::T">T</a>> &<em>mat</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER5EulerI1TER4Vec3I1TEb" title="Imath::extractSHRT::T">T</a>> &<em>s</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER5EulerI1TER4Vec3I1TEb" title="Imath::extractSHRT::T">T</a>> &<em>h</em>, <a class="reference internal" href="../classes/Euler.html#_CPPv4I0EN5Imath5EulerE" title="Imath::Euler">Euler</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER5EulerI1TER4Vec3I1TEb" title="Imath::extractSHRT::T">T</a>> &<em>r</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER5EulerI1TER4Vec3I1TEb" title="Imath::extractSHRT::T">T</a>> &<em>t</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix44I1TER4Vec3I1TER4Vec3I1TER5EulerI1TER4Vec3I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Extract the scaling, shear, rotation, and translation components of the given 4x4 matrix. </p> <p><dl class="simple"> <dt><strong>Return</strong></dt><dd><p>True if the values could be extracted, false if the matrix is degenerate. </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The input matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">s</span></code>: The extracted scale </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">h</span></code>: The extracted shear </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">r</span></code>: The extracted rotation, in <a class="reference internal" href="../classes/Euler.html#class_imath_1_1_euler"><span class="std std-ref">Euler</span></a> angles </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">t</span></code>: The extracted translation </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> is very close to zero. </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath22checkForZeroScaleInRowEbRK1TRK4Vec3I1TEb"> <span id="_CPPv3I0EN5Imath22checkForZeroScaleInRowERK1TRK4Vec3I1TEb"></span><span id="_CPPv2I0EN5Imath22checkForZeroScaleInRowERK1TRK4Vec3I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1aaed112e4e6bce87f05d756cf7f81f73d"></span>bool <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">checkForZeroScaleInRow</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="#_CPPv4I0EN5Imath22checkForZeroScaleInRowEbRK1TRK4Vec3I1TEb" title="Imath::checkForZeroScaleInRow::T">T</a> &<em>scl</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath22checkForZeroScaleInRowEbRK1TRK4Vec3I1TEb" title="Imath::checkForZeroScaleInRow::T">T</a>> &<em>row</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath22checkForZeroScaleInRowEbRK1TRK4Vec3I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Return true if the given scale can be removed from the given row matrix, false if <code class="docutils literal notranslate"><span class="pre">scl</span></code> is small enough that the operation would overflow. </p> <p>If <code class="docutils literal notranslate"><span class="pre">exc</span></code> is true, throw an exception on overflow. </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath12outerProductE8Matrix44I1TERK4Vec4I1TERK4Vec4I1TE"> <span id="_CPPv3I0EN5Imath12outerProductERK4Vec4I1TERK4Vec4I1TE"></span><span id="_CPPv2I0EN5Imath12outerProductERK4Vec4I1TERK4Vec4I1TE"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a60541f72f378e00e175c78056785781d"></span><a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath12outerProductE8Matrix44I1TERK4Vec4I1TERK4Vec4I1TE" title="Imath::outerProduct::T">T</a>> <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">outerProduct</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Vec4.html#_CPPv4I0EN5Imath4Vec4E" title="Imath::Vec4">Vec4</a><<a class="reference internal" href="#_CPPv4I0EN5Imath12outerProductE8Matrix44I1TERK4Vec4I1TERK4Vec4I1TE" title="Imath::outerProduct::T">T</a>> &<em>a</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Vec4.html#_CPPv4I0EN5Imath4Vec4E" title="Imath::Vec4">Vec4</a><<a class="reference internal" href="#_CPPv4I0EN5Imath12outerProductE8Matrix44I1TERK4Vec4I1TERK4Vec4I1TE" title="Imath::outerProduct::T">T</a>> &<em>b</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath12outerProductE8Matrix44I1TERK4Vec4I1TERK4Vec4I1TE" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Return the 4x4 outer product two 4-vectors. </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath14rotationMatrixE8Matrix44I1TERK4Vec3I1TERK4Vec3I1TE"> <span id="_CPPv3I0EN5Imath14rotationMatrixERK4Vec3I1TERK4Vec3I1TE"></span><span id="_CPPv2I0EN5Imath14rotationMatrixERK4Vec3I1TERK4Vec3I1TE"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a01f0d9f727a777e6205a74d325c1beaf"></span><a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath14rotationMatrixE8Matrix44I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::rotationMatrix::T">T</a>> <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">rotationMatrix</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath14rotationMatrixE8Matrix44I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::rotationMatrix::T">T</a>> &<em>fromDirection</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath14rotationMatrixE8Matrix44I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::rotationMatrix::T">T</a>> &<em>toDirection</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath14rotationMatrixE8Matrix44I1TERK4Vec3I1TERK4Vec3I1TE" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Return a 4x4 matrix that rotates the vector <code class="docutils literal notranslate"><span class="pre">fromDirection</span></code> to <code class="docutils literal notranslate"><span class="pre">toDirection</span></code> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath23rotationMatrixWithUpDirE8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE"> <span id="_CPPv3I0EN5Imath23rotationMatrixWithUpDirERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE"></span><span id="_CPPv2I0EN5Imath23rotationMatrixWithUpDirERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a4ecbd0b8aafaa4c5b53ee9a5cdbe9f5f"></span><a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath23rotationMatrixWithUpDirE8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::rotationMatrixWithUpDir::T">T</a>> <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">rotationMatrixWithUpDir</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath23rotationMatrixWithUpDirE8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::rotationMatrixWithUpDir::T">T</a>> &<em>fromDir</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath23rotationMatrixWithUpDirE8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::rotationMatrixWithUpDir::T">T</a>> &<em>toDir</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath23rotationMatrixWithUpDirE8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::rotationMatrixWithUpDir::T">T</a>> &<em>upDir</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath23rotationMatrixWithUpDirE8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Return a 4x4 matrix that rotates the <code class="docutils literal notranslate"><span class="pre">fromDir</span></code> vector so that it points towards `toDir1. </p> <p>You may also specify that you want the up vector to be pointing in a certain direction 1upDir`. </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath23alignZAxisWithTargetDirEvR8Matrix44I1TE4Vec3I1TE4Vec3I1TE"> <span id="_CPPv3I0EN5Imath23alignZAxisWithTargetDirER8Matrix44I1TE4Vec3I1TE4Vec3I1TE"></span><span id="_CPPv2I0EN5Imath23alignZAxisWithTargetDirER8Matrix44I1TE4Vec3I1TE4Vec3I1TE"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a26ec3fee85301bb99f0936adf85b4096"></span>void <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">alignZAxisWithTargetDir</code><span class="sig-paren">(</span><a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath23alignZAxisWithTargetDirEvR8Matrix44I1TE4Vec3I1TE4Vec3I1TE" title="Imath::alignZAxisWithTargetDir::T">T</a>> &<em>result</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath23alignZAxisWithTargetDirEvR8Matrix44I1TE4Vec3I1TE4Vec3I1TE" title="Imath::alignZAxisWithTargetDir::T">T</a>> <em>targetDir</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath23alignZAxisWithTargetDirEvR8Matrix44I1TE4Vec3I1TE4Vec3I1TE" title="Imath::alignZAxisWithTargetDir::T">T</a>> <em>upDir</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath23alignZAxisWithTargetDirEvR8Matrix44I1TE4Vec3I1TE4Vec3I1TE" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Construct a 4x4 matrix that rotates the z-axis so that it points towards <code class="docutils literal notranslate"><span class="pre">targetDir</span></code>. </p> <p>You must also specify that you want the up vector to be pointing in a certain direction <code class="docutils literal notranslate"><span class="pre">upDir</span></code>.</p> <p>Notes: The following degenerate cases are handled: (a) when the directions given by <code class="docutils literal notranslate"><span class="pre">toDir</span></code> and <code class="docutils literal notranslate"><span class="pre">upDir</span></code> are parallel or opposite (the direction vectors must have a non-zero cross product); (b) when any of the given direction vectors have zero length</p> <p><dl class="simple"> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">result</span></code>: The output matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">targetDir</span></code>: The target direction vector </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">upDir</span></code>: The up direction vector </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath17computeLocalFrameE8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE"> <span id="_CPPv3I0EN5Imath17computeLocalFrameERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE"></span><span id="_CPPv2I0EN5Imath17computeLocalFrameERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a920a7e9912c07e98061f1cc8e73c40a5"></span><a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath17computeLocalFrameE8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::computeLocalFrame::T">T</a>> <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">computeLocalFrame</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath17computeLocalFrameE8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::computeLocalFrame::T">T</a>> &<em>p</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath17computeLocalFrameE8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::computeLocalFrame::T">T</a>> &<em>xDir</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath17computeLocalFrameE8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::computeLocalFrame::T">T</a>> &<em>normal</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath17computeLocalFrameE8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Compute an orthonormal direct 4x4 frame from a position, an x axis direction and a normal to the y axis. </p> <p>If the x axis and normal are perpendicular, then the normal will have the same direction as the z axis.</p> <p><dl class="simple"> <dt><strong>Return</strong></dt><dd><p>The orthonormal frame </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">p</span></code>: The position of the frame </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">xDir</span></code>: The x axis direction of the frame </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">normal</span></code>: A normal to the y axis of the frame </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath9addOffsetE8Matrix44I1TERK8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE"> <span id="_CPPv3I0EN5Imath9addOffsetERK8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE"></span><span id="_CPPv2I0EN5Imath9addOffsetERK8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1ad92f3ff0ae31ee7aacc7bb5413f1aaf6"></span><a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath9addOffsetE8Matrix44I1TERK8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::addOffset::T">T</a>> <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">addOffset</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath9addOffsetE8Matrix44I1TERK8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::addOffset::T">T</a>> &<em>inMat</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath9addOffsetE8Matrix44I1TERK8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::addOffset::T">T</a>> &<em>tOffset</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath9addOffsetE8Matrix44I1TERK8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::addOffset::T">T</a>> &<em>rOffset</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath9addOffsetE8Matrix44I1TERK8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::addOffset::T">T</a>> &<em>sOffset</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath9addOffsetE8Matrix44I1TERK8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::addOffset::T">T</a>> &<em>ref</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath9addOffsetE8Matrix44I1TERK8Matrix44I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TERK4Vec3I1TE" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Add a translate/rotate/scale offset to a 4x4 input frame and put it in another frame of reference. </p> <p><dl class="simple"> <dt><strong>Return</strong></dt><dd><p>The offsetted frame </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">inMat</span></code>: Input frame </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">tOffset</span></code>: Translation offset </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">rOffset</span></code>: Rotation offset in degrees </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">sOffset</span></code>: Scale offset </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">ref</span></code>: Frame of reference </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath15computeRSMatrixE8Matrix44I1TEbbRK8Matrix44I1TERK8Matrix44I1TE"> <span id="_CPPv3I0EN5Imath15computeRSMatrixEbbRK8Matrix44I1TERK8Matrix44I1TE"></span><span id="_CPPv2I0EN5Imath15computeRSMatrixEbbRK8Matrix44I1TERK8Matrix44I1TE"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1ab5a0c1931869f140b395a0bbb2b2831b"></span><a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath15computeRSMatrixE8Matrix44I1TEbbRK8Matrix44I1TERK8Matrix44I1TE" title="Imath::computeRSMatrix::T">T</a>> <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">computeRSMatrix</code><span class="sig-paren">(</span>bool <em>keepRotateA</em>, bool <em>keepScaleA</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath15computeRSMatrixE8Matrix44I1TEbbRK8Matrix44I1TERK8Matrix44I1TE" title="Imath::computeRSMatrix::T">T</a>> &<em>A</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath15computeRSMatrixE8Matrix44I1TEbbRK8Matrix44I1TERK8Matrix44I1TE" title="Imath::computeRSMatrix::T">T</a>> &<em>B</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath15computeRSMatrixE8Matrix44I1TEbbRK8Matrix44I1TERK8Matrix44I1TE" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Compute 4x4 translate/rotate/scale matrix from <code class="docutils literal notranslate"><span class="pre">A</span></code> with the rotate/scale of <code class="docutils literal notranslate"><span class="pre">B</span></code>. </p> <p><dl class="simple"> <dt><strong>Return</strong></dt><dd><p>Matrix <code class="docutils literal notranslate"><span class="pre">A</span></code> with tweaked rotation/scale </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">keepRotateA</span></code>: If true, keep rotate from matrix <code class="docutils literal notranslate"><span class="pre">A</span></code>, use <code class="docutils literal notranslate"><span class="pre">B</span></code> otherwise </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">keepScaleA</span></code>: If true, keep scale from matrix <code class="docutils literal notranslate"><span class="pre">A</span></code>, use <code class="docutils literal notranslate"><span class="pre">B</span></code> otherwise </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">A</span></code>: Matrix A </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">B</span></code>: Matrix B </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath14extractScalingEbRK8Matrix33I1TER4Vec2I1TEb"> <span id="_CPPv3I0EN5Imath14extractScalingERK8Matrix33I1TER4Vec2I1TEb"></span><span id="_CPPv2I0EN5Imath14extractScalingERK8Matrix33I1TER4Vec2I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a4108b4b139817e51a2dacb400d3f6d0b"></span>bool <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">extractScaling</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath14extractScalingEbRK8Matrix33I1TER4Vec2I1TEb" title="Imath::extractScaling::T">T</a>> &<em>mat</em>, <a class="reference internal" href="../classes/Vec2.html#_CPPv4I0EN5Imath4Vec2E" title="Imath::Vec2">Vec2</a><<a class="reference internal" href="#_CPPv4I0EN5Imath14extractScalingEbRK8Matrix33I1TER4Vec2I1TEb" title="Imath::extractScaling::T">T</a>> &<em>scl</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath14extractScalingEbRK8Matrix33I1TER4Vec2I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Extract the scaling component of the given 3x3 matrix. </p> <p><dl class="simple"> <dt><strong>Return</strong></dt><dd><p>True if the scale could be extracted, false if the matrix is degenerate. </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The input matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">scl</span></code>: The extracted scale, i.e. the output value </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> is very close to zero. </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath11sansScalingE8Matrix33I1TERK8Matrix33I1TEb"> <span id="_CPPv3I0EN5Imath11sansScalingERK8Matrix33I1TEb"></span><span id="_CPPv2I0EN5Imath11sansScalingERK8Matrix33I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1ad370882ac314f9b93cac2ecc5d04cd1d"></span><a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11sansScalingE8Matrix33I1TERK8Matrix33I1TEb" title="Imath::sansScaling::T">T</a>> <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">sansScaling</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11sansScalingE8Matrix33I1TERK8Matrix33I1TEb" title="Imath::sansScaling::T">T</a>> &<em>mat</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath11sansScalingE8Matrix33I1TERK8Matrix33I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Return the given 3x3 matrix with scaling removed. </p> <p><dl class="simple"> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The input matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath13removeScalingEbR8Matrix33I1TEb"> <span id="_CPPv3I0EN5Imath13removeScalingER8Matrix33I1TEb"></span><span id="_CPPv2I0EN5Imath13removeScalingER8Matrix33I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a24800fea358fad9f578b219ec0ab0881"></span>bool <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">removeScaling</code><span class="sig-paren">(</span><a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath13removeScalingEbR8Matrix33I1TEb" title="Imath::removeScaling::T">T</a>> &<em>mat</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath13removeScalingEbR8Matrix33I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Remove scaling from the given 3x3 matrix in place. </p> <p>Return true if the scale could be successfully extracted, false if the matrix is degenerate. <dl class="simple"> <dt><strong>Return</strong></dt><dd><p>True if the scale could be extracted, false if the matrix is degenerate. </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The matrix to operate on </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> is very close to zero. </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath22extractScalingAndShearEbRK8Matrix33I1TER4Vec2I1TER1Tb"> <span id="_CPPv3I0EN5Imath22extractScalingAndShearERK8Matrix33I1TER4Vec2I1TER1Tb"></span><span id="_CPPv2I0EN5Imath22extractScalingAndShearERK8Matrix33I1TER4Vec2I1TER1Tb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1ae54dde8ab6cd85ba8febd4949be0afeb"></span>bool <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">extractScalingAndShear</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath22extractScalingAndShearEbRK8Matrix33I1TER4Vec2I1TER1Tb" title="Imath::extractScalingAndShear::T">T</a>> &<em>mat</em>, <a class="reference internal" href="../classes/Vec2.html#_CPPv4I0EN5Imath4Vec2E" title="Imath::Vec2">Vec2</a><<a class="reference internal" href="#_CPPv4I0EN5Imath22extractScalingAndShearEbRK8Matrix33I1TER4Vec2I1TER1Tb" title="Imath::extractScalingAndShear::T">T</a>> &<em>scl</em>, <a class="reference internal" href="#_CPPv4I0EN5Imath22extractScalingAndShearEbRK8Matrix33I1TER4Vec2I1TER1Tb" title="Imath::extractScalingAndShear::T">T</a> &<em>shr</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath22extractScalingAndShearEbRK8Matrix33I1TER4Vec2I1TER1Tb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Extract the scaling and shear components of the given 3x3 matrix. </p> <p>Return true if the scale could be successfully extracted, false if the matrix is degenerate.</p> <p><dl class="simple"> <dt><strong>Return</strong></dt><dd><p>True if the scale could be extracted, false if the matrix is degenerate. </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The input matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">scl</span></code>: The extracted scale </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">shr</span></code>: The extracted shear </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> is very close to zero. </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath19sansScalingAndShearE8Matrix33I1TERK8Matrix33I1TEb"> <span id="_CPPv3I0EN5Imath19sansScalingAndShearERK8Matrix33I1TEb"></span><span id="_CPPv2I0EN5Imath19sansScalingAndShearERK8Matrix33I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a8f1b10cbf3fb43d4acff37ef805ea1e0"></span><a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath19sansScalingAndShearE8Matrix33I1TERK8Matrix33I1TEb" title="Imath::sansScalingAndShear::T">T</a>> <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">sansScalingAndShear</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath19sansScalingAndShearE8Matrix33I1TERK8Matrix33I1TEb" title="Imath::sansScalingAndShear::T">T</a>> &<em>mat</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath19sansScalingAndShearE8Matrix33I1TERK8Matrix33I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Return the given 3x3 matrix with scaling and shear removed. </p> <p><dl class="simple"> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The input matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> is very close to zero. </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath21removeScalingAndShearEbR8Matrix33I1TEb"> <span id="_CPPv3I0EN5Imath21removeScalingAndShearER8Matrix33I1TEb"></span><span id="_CPPv2I0EN5Imath21removeScalingAndShearER8Matrix33I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a993c77d8e4a3498d6153e2e59dab974b"></span>bool <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">removeScalingAndShear</code><span class="sig-paren">(</span><a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath21removeScalingAndShearEbR8Matrix33I1TEb" title="Imath::removeScalingAndShear::T">T</a>> &<em>mat</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath21removeScalingAndShearEbR8Matrix33I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Remove scaling and shear from the given 3x3e matrix in place. </p> <p><dl class="simple"> <dt><strong>Return</strong></dt><dd><p>True if the scale could be extracted, false if the matrix is degenerate. </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[inout]</span> <span class="pre">mat</span></code>: The matrix to operate on </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> is very close to zero. </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath31extractAndRemoveScalingAndShearEbR8Matrix33I1TER4Vec2I1TER1Tb"> <span id="_CPPv3I0EN5Imath31extractAndRemoveScalingAndShearER8Matrix33I1TER4Vec2I1TER1Tb"></span><span id="_CPPv2I0EN5Imath31extractAndRemoveScalingAndShearER8Matrix33I1TER4Vec2I1TER1Tb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1aebd2b029fcb85f901b6ed317989a1dd5"></span>bool <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">extractAndRemoveScalingAndShear</code><span class="sig-paren">(</span><a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath31extractAndRemoveScalingAndShearEbR8Matrix33I1TER4Vec2I1TER1Tb" title="Imath::extractAndRemoveScalingAndShear::T">T</a>> &<em>mat</em>, <a class="reference internal" href="../classes/Vec2.html#_CPPv4I0EN5Imath4Vec2E" title="Imath::Vec2">Vec2</a><<a class="reference internal" href="#_CPPv4I0EN5Imath31extractAndRemoveScalingAndShearEbR8Matrix33I1TER4Vec2I1TER1Tb" title="Imath::extractAndRemoveScalingAndShear::T">T</a>> &<em>scl</em>, <a class="reference internal" href="#_CPPv4I0EN5Imath31extractAndRemoveScalingAndShearEbR8Matrix33I1TER4Vec2I1TER1Tb" title="Imath::extractAndRemoveScalingAndShear::T">T</a> &<em>shr</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath31extractAndRemoveScalingAndShearEbR8Matrix33I1TER4Vec2I1TER1Tb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Remove scaling and shear from the given 3x3 matrix in place, returning the extracted values. </p> <p><dl class="simple"> <dt><strong>Return</strong></dt><dd><p>True if the scale could be extracted, false if the matrix is degenerate. </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[inout]</span> <span class="pre">mat</span></code>: The matrix to operate on </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">scl</span></code>: The extracted scale </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">shr</span></code>: The extracted shear </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> is very close to zero. </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath12extractEulerEvRK8Matrix22I1TER1T"> <span id="_CPPv3I0EN5Imath12extractEulerERK8Matrix22I1TER1T"></span><span id="_CPPv2I0EN5Imath12extractEulerERK8Matrix22I1TER1T"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1ac11fa9726aa397f5e41c06e606d4fb66"></span>void <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">extractEuler</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix22.html#_CPPv4I0EN5Imath8Matrix22E" title="Imath::Matrix22">Matrix22</a><<a class="reference internal" href="#_CPPv4I0EN5Imath12extractEulerEvRK8Matrix22I1TER1T" title="Imath::extractEuler::T">T</a>> &<em>mat</em>, <a class="reference internal" href="#_CPPv4I0EN5Imath12extractEulerEvRK8Matrix22I1TER1T" title="Imath::extractEuler::T">T</a> &<em>rot</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath12extractEulerEvRK8Matrix22I1TER1T" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Extract the rotation from the given 2x2 matrix. </p> <p><dl class="simple"> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The input matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">rot</span></code>: The extracted rotation value </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath12extractEulerEvRK8Matrix33I1TER1T"> <span id="_CPPv3I0EN5Imath12extractEulerERK8Matrix33I1TER1T"></span><span id="_CPPv2I0EN5Imath12extractEulerERK8Matrix33I1TER1T"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a5e3fe9b61b54404dc14b89e0c4f6f744"></span>void <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">extractEuler</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath12extractEulerEvRK8Matrix33I1TER1T" title="Imath::extractEuler::T">T</a>> &<em>mat</em>, <a class="reference internal" href="#_CPPv4I0EN5Imath12extractEulerEvRK8Matrix33I1TER1T" title="Imath::extractEuler::T">T</a> &<em>rot</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath12extractEulerEvRK8Matrix33I1TER1T" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Extract the rotation from the given 3x3 matrix. </p> <p><dl class="simple"> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The input matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">rot</span></code>: The extracted rotation value </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix33I1TER4Vec2I1TER1TR1TR4Vec2I1TEb"> <span id="_CPPv3I0EN5Imath11extractSHRTERK8Matrix33I1TER4Vec2I1TER1TR1TR4Vec2I1TEb"></span><span id="_CPPv2I0EN5Imath11extractSHRTERK8Matrix33I1TER4Vec2I1TER1TR1TR4Vec2I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a7a9e72f6f805fe358e73a45aaf27ed92"></span>bool <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">extractSHRT</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix33I1TER4Vec2I1TER1TR1TR4Vec2I1TEb" title="Imath::extractSHRT::T">T</a>> &<em>mat</em>, <a class="reference internal" href="../classes/Vec2.html#_CPPv4I0EN5Imath4Vec2E" title="Imath::Vec2">Vec2</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix33I1TER4Vec2I1TER1TR1TR4Vec2I1TEb" title="Imath::extractSHRT::T">T</a>> &<em>s</em>, <a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix33I1TER4Vec2I1TER1TR1TR4Vec2I1TEb" title="Imath::extractSHRT::T">T</a> &<em>h</em>, <a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix33I1TER4Vec2I1TER1TR1TR4Vec2I1TEb" title="Imath::extractSHRT::T">T</a> &<em>r</em>, <a class="reference internal" href="../classes/Vec2.html#_CPPv4I0EN5Imath4Vec2E" title="Imath::Vec2">Vec2</a><<a class="reference internal" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix33I1TER4Vec2I1TER1TR1TR4Vec2I1TEb" title="Imath::extractSHRT::T">T</a>> &<em>t</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath11extractSHRTEbRK8Matrix33I1TER4Vec2I1TER1TR1TR4Vec2I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Extract the scaling, shear, rotation, and translation components of the given 3x3 matrix. </p> <p>The values are such that: <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">M</span> <span class="o">=</span> <span class="n">S</span> <span class="o">*</span> <span class="n">H</span> <span class="o">*</span> <span class="n">R</span> <span class="o">*</span> <span class="n">T</span> </pre></div> </div> <dl class="simple"> <dt><strong>Return</strong></dt><dd><p>True if the values could be extracted, false if the matrix is degenerate. </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">mat</span></code>: The input matrix </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">s</span></code>: The extracted scale </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">h</span></code>: The extracted shear </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">r</span></code>: The extracted rotation </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[out]</span> <span class="pre">t</span></code>: The extracted translation </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">[in]</span> <span class="pre">exc</span></code>: If true, throw an exception if the scaling in <code class="docutils literal notranslate"><span class="pre">mat</span></code> is very close to zero. </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath22checkForZeroScaleInRowEbRK1TRK4Vec2I1TEb"> <span id="_CPPv3I0EN5Imath22checkForZeroScaleInRowERK1TRK4Vec2I1TEb"></span><span id="_CPPv2I0EN5Imath22checkForZeroScaleInRowERK1TRK4Vec2I1TEb"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1abce3c443dddc31c09e4778f04fa44130"></span>bool <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">checkForZeroScaleInRow</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="#_CPPv4I0EN5Imath22checkForZeroScaleInRowEbRK1TRK4Vec2I1TEb" title="Imath::checkForZeroScaleInRow::T">T</a> &<em>scl</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Vec2.html#_CPPv4I0EN5Imath4Vec2E" title="Imath::Vec2">Vec2</a><<a class="reference internal" href="#_CPPv4I0EN5Imath22checkForZeroScaleInRowEbRK1TRK4Vec2I1TEb" title="Imath::checkForZeroScaleInRow::T">T</a>> &<em>row</em>, bool <em>exc</em> = true<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath22checkForZeroScaleInRowEbRK1TRK4Vec2I1TEb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Return true if the given scale can be removed from the given row matrix, false if <code class="docutils literal notranslate"><span class="pre">scl</span></code> is small enough that the operation would overflow. </p> <p>If <code class="docutils literal notranslate"><span class="pre">exc</span></code> is true, throw an exception on overflow. </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath12outerProductE8Matrix33I1TERK4Vec3I1TERK4Vec3I1TE"> <span id="_CPPv3I0EN5Imath12outerProductERK4Vec3I1TERK4Vec3I1TE"></span><span id="_CPPv2I0EN5Imath12outerProductERK4Vec3I1TERK4Vec3I1TE"></span>template<class <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1aef84ddd3576db6e988283514abf3f62a"></span><a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath12outerProductE8Matrix33I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::outerProduct::T">T</a>> <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">outerProduct</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath12outerProductE8Matrix33I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::outerProduct::T">T</a>> &<em>a</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath12outerProductE8Matrix33I1TERK4Vec3I1TERK4Vec3I1TE" title="Imath::outerProduct::T">T</a>> &<em>b</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath12outerProductE8Matrix33I1TERK4Vec3I1TERK4Vec3I1TE" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Return the 3xe outer product two 3-vectors. </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath32procrustesRotationAndTranslationE4M44dPK4Vec3I1TEPK4Vec3I1TEPK1TK6size_tKb"> <span id="_CPPv3I0EN5Imath32procrustesRotationAndTranslationEPK4Vec3I1TEPK4Vec3I1TEPK1TK6size_tKb"></span><span id="_CPPv2I0EN5Imath32procrustesRotationAndTranslationEPK4Vec3I1TEPK4Vec3I1TEPK1TK6size_tKb"></span>template<typename <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a368e2da80fcf2bc0cc74d8fdb3951c74"></span><a class="reference internal" href="../classes/Matrix44.html#_CPPv4N5Imath4M44dE" title="Imath::M44d">M44d</a> <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">procrustesRotationAndTranslation</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath32procrustesRotationAndTranslationE4M44dPK4Vec3I1TEPK4Vec3I1TEPK1TK6size_tKb" title="Imath::procrustesRotationAndTranslation::T">T</a>> *<em>A</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath32procrustesRotationAndTranslationE4M44dPK4Vec3I1TEPK4Vec3I1TEPK1TK6size_tKb" title="Imath::procrustesRotationAndTranslation::T">T</a>> *<em>B</em>, <em class="property">const</em> <a class="reference internal" href="#_CPPv4I0EN5Imath32procrustesRotationAndTranslationE4M44dPK4Vec3I1TEPK4Vec3I1TEPK1TK6size_tKb" title="Imath::procrustesRotationAndTranslation::T">T</a> *<em>weights</em>, <em class="property">const</em> size_t <em>numPoints</em>, <em class="property">const</em> bool <em>doScaling</em> = false<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath32procrustesRotationAndTranslationE4M44dPK4Vec3I1TEPK4Vec3I1TEPK1TK6size_tKb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Computes the translation and rotation that brings the ‘from’ points as close as possible to the ‘to’ points under the Frobenius norm. </p> <p>To be more specific, let x be the matrix of ‘from’ points and y be the matrix of ‘to’ points, we want to find the matrix A of the form [ R t ] [ 0 1 ] that minimizes || (A*x - y)^T * W * (A*x - y) ||_F If doScaling is true, then a uniform scale is allowed also. <dl class="simple"> <dt><strong>Return</strong></dt><dd><p>The procrustes transformation </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">A</span></code>: From points </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">B</span></code>: To points </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">weights</span></code>: Per-point weights </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">numPoints</span></code>: The number of points in <code class="docutils literal notranslate"><span class="pre">A</span></code>, <code class="docutils literal notranslate"><span class="pre">B</span></code>, and <code class="docutils literal notranslate"><span class="pre">weights</span></code> (must be equal) </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">doScaling</span></code>: If true, include a scaling transformation </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath32procrustesRotationAndTranslationE4M44dPK4Vec3I1TEPK4Vec3I1TEK6size_tKb"> <span id="_CPPv3I0EN5Imath32procrustesRotationAndTranslationEPK4Vec3I1TEPK4Vec3I1TEK6size_tKb"></span><span id="_CPPv2I0EN5Imath32procrustesRotationAndTranslationEPK4Vec3I1TEPK4Vec3I1TEK6size_tKb"></span>template<typename <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a0c82331ce1805290ea4f8cb808ee5beb"></span><a class="reference internal" href="../classes/Matrix44.html#_CPPv4N5Imath4M44dE" title="Imath::M44d">M44d</a> <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">procrustesRotationAndTranslation</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath32procrustesRotationAndTranslationE4M44dPK4Vec3I1TEPK4Vec3I1TEK6size_tKb" title="Imath::procrustesRotationAndTranslation::T">T</a>> *<em>A</em>, <em class="property">const</em> <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath32procrustesRotationAndTranslationE4M44dPK4Vec3I1TEPK4Vec3I1TEK6size_tKb" title="Imath::procrustesRotationAndTranslation::T">T</a>> *<em>B</em>, <em class="property">const</em> size_t <em>numPoints</em>, <em class="property">const</em> bool <em>doScaling</em> = false<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath32procrustesRotationAndTranslationE4M44dPK4Vec3I1TEPK4Vec3I1TEK6size_tKb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Computes the translation and rotation that brings the ‘from’ points as close as possible to the ‘to’ points under the Frobenius norm. </p> <p>To be more specific, let x be the matrix of ‘from’ points and y be the matrix of ‘to’ points, we want to find the matrix A of the form [ R t ] [ 0 1 ] that minimizes || (A*x - y)^T * W * (A*x - y) ||_F If doScaling is true, then a uniform scale is allowed also. <dl class="simple"> <dt><strong>Return</strong></dt><dd><p>The procrustes transformation </p> </dd> <dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple"> <li><p><code class="docutils literal notranslate"><span class="pre">A</span></code>: From points </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">B</span></code>: To points </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">numPoints</span></code>: The number of points in <code class="docutils literal notranslate"><span class="pre">A</span></code> and <code class="docutils literal notranslate"><span class="pre">B</span></code> (must be equal) </p></li> <li><p><code class="docutils literal notranslate"><span class="pre">doScaling</span></code>: If true, include a scaling transformation </p></li> </ul> </dd> </dl> </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath9jacobiSVDEvRK8Matrix33I1TER8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1TKb"> <span id="_CPPv3I0EN5Imath9jacobiSVDERK8Matrix33I1TER8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1TKb"></span><span id="_CPPv2I0EN5Imath9jacobiSVDERK8Matrix33I1TER8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1TKb"></span>template<typename <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a6bdbac385aad94cd8b1f39b8f3c17a32"></span>void <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">jacobiSVD</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath9jacobiSVDEvRK8Matrix33I1TER8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1TKb" title="Imath::jacobiSVD::T">T</a>> &<em>A</em>, <a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath9jacobiSVDEvRK8Matrix33I1TER8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1TKb" title="Imath::jacobiSVD::T">T</a>> &<em>U</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath9jacobiSVDEvRK8Matrix33I1TER8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1TKb" title="Imath::jacobiSVD::T">T</a>> &<em>S</em>, <a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath9jacobiSVDEvRK8Matrix33I1TER8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1TKb" title="Imath::jacobiSVD::T">T</a>> &<em>V</em>, <em class="property">const</em> <a class="reference internal" href="#_CPPv4I0EN5Imath9jacobiSVDEvRK8Matrix33I1TER8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1TKb" title="Imath::jacobiSVD::T">T</a> <em>tol</em> = std::numeric_limits<<a class="reference internal" href="#_CPPv4I0EN5Imath9jacobiSVDEvRK8Matrix33I1TER8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1TKb" title="Imath::jacobiSVD::T">T</a>>::epsilon(), <em class="property">const</em> bool <em>forcePositiveDeterminant</em> = false<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath9jacobiSVDEvRK8Matrix33I1TER8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1TKb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Compute the SVD of a 3x3 matrix using Jacobi transformations. </p> <p>This method should be quite accurate (competitive with LAPACK) even for poorly conditioned matrices, and because it has been written specifically for the 3x3/4x4 case it is much faster than calling out to LAPACK.</p> <p>The SVD of a 3x3/4x4 matrix A is defined as follows: A = U * S * V^T where S is the diagonal matrix of singular values and both U and V are orthonormal. By convention, the entries S are all positive and sorted from the largest to the smallest. However, some uses of this function may require that the matrix U*V^T have positive determinant; in this case, we may make the smallest singular value negative to ensure that this is satisfied.</p> <p>Currently only available for single- and double-precision matrices. </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath9jacobiSVDEvRK8Matrix44I1TER8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1TKb"> <span id="_CPPv3I0EN5Imath9jacobiSVDERK8Matrix44I1TER8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1TKb"></span><span id="_CPPv2I0EN5Imath9jacobiSVDERK8Matrix44I1TER8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1TKb"></span>template<typename <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a96e6e2cf2cb32db2d77d987e741459c0"></span>void <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">jacobiSVD</code><span class="sig-paren">(</span><em class="property">const</em> <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath9jacobiSVDEvRK8Matrix44I1TER8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1TKb" title="Imath::jacobiSVD::T">T</a>> &<em>A</em>, <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath9jacobiSVDEvRK8Matrix44I1TER8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1TKb" title="Imath::jacobiSVD::T">T</a>> &<em>U</em>, <a class="reference internal" href="../classes/Vec4.html#_CPPv4I0EN5Imath4Vec4E" title="Imath::Vec4">Vec4</a><<a class="reference internal" href="#_CPPv4I0EN5Imath9jacobiSVDEvRK8Matrix44I1TER8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1TKb" title="Imath::jacobiSVD::T">T</a>> &<em>S</em>, <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath9jacobiSVDEvRK8Matrix44I1TER8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1TKb" title="Imath::jacobiSVD::T">T</a>> &<em>V</em>, <em class="property">const</em> <a class="reference internal" href="#_CPPv4I0EN5Imath9jacobiSVDEvRK8Matrix44I1TER8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1TKb" title="Imath::jacobiSVD::T">T</a> <em>tol</em> = std::numeric_limits<<a class="reference internal" href="#_CPPv4I0EN5Imath9jacobiSVDEvRK8Matrix44I1TER8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1TKb" title="Imath::jacobiSVD::T">T</a>>::epsilon(), <em class="property">const</em> bool <em>forcePositiveDeterminant</em> = false<span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath9jacobiSVDEvRK8Matrix44I1TER8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1TKb" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Compute the SVD of a 3x3 matrix using Jacobi transformations. </p> <p>This method should be quite accurate (competitive with LAPACK) even for poorly conditioned matrices, and because it has been written specifically for the 3x3/4x4 case it is much faster than calling out to LAPACK.</p> <p>The SVD of a 3x3/4x4 matrix A is defined as follows: A = U * S * V^T where S is the diagonal matrix of singular values and both U and V are orthonormal. By convention, the entries S are all positive and sorted from the largest to the smallest. However, some uses of this function may require that the matrix U*V^T have positive determinant; in this case, we may make the smallest singular value negative to ensure that this is satisfied.</p> <p>Currently only available for single- and double-precision matrices. </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1T"> <span id="_CPPv3I0EN5Imath17jacobiEigenSolverER8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1T"></span><span id="_CPPv2I0EN5Imath17jacobiEigenSolverER8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1T"></span>template<typename <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a04ee94289ef5445c3541df4d95ba58b5"></span>void <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">jacobiEigenSolver</code><span class="sig-paren">(</span><a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1T" title="Imath::jacobiEigenSolver::T">T</a>> &<em>A</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1T" title="Imath::jacobiEigenSolver::T">T</a>> &<em>S</em>, <a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1T" title="Imath::jacobiEigenSolver::T">T</a>> &<em>V</em>, <em class="property">const</em> <a class="reference internal" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1T" title="Imath::jacobiEigenSolver::T">T</a> <em>tol</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix33I1TER4Vec3I1TER8Matrix33I1TEK1T" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Compute the eigenvalues (S) and the eigenvectors (V) of a real symmetric matrix using Jacobi transformation, using a given tolerance <code class="docutils literal notranslate"><span class="pre">tol</span></code>. </p> <p>Jacobi transformation of a 3x3/4x4 matrix A outputs S and V: A = V * S * V^T where V is orthonormal and S is the diagonal matrix of eigenvalues. Input matrix A must be symmetric. A is also modified during the computation so that upper diagonal entries of A become zero. </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix33I1TER4Vec3I1TER8Matrix33I1TE"> <span id="_CPPv3I0EN5Imath17jacobiEigenSolverER8Matrix33I1TER4Vec3I1TER8Matrix33I1TE"></span><span id="_CPPv2I0EN5Imath17jacobiEigenSolverER8Matrix33I1TER4Vec3I1TER8Matrix33I1TE"></span>template<typename <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1afa76d36fc2fd9f578cdecfad197ced0a"></span><em class="property">inline</em> void <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">jacobiEigenSolver</code><span class="sig-paren">(</span><a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix33I1TER4Vec3I1TER8Matrix33I1TE" title="Imath::jacobiEigenSolver::T">T</a>> &<em>A</em>, <a class="reference internal" href="../classes/Vec3.html#_CPPv4I0EN5Imath4Vec3E" title="Imath::Vec3">Vec3</a><<a class="reference internal" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix33I1TER4Vec3I1TER8Matrix33I1TE" title="Imath::jacobiEigenSolver::T">T</a>> &<em>S</em>, <a class="reference internal" href="../classes/Matrix33.html#_CPPv4I0EN5Imath8Matrix33E" title="Imath::Matrix33">Matrix33</a><<a class="reference internal" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix33I1TER4Vec3I1TER8Matrix33I1TE" title="Imath::jacobiEigenSolver::T">T</a>> &<em>V</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix33I1TER4Vec3I1TER8Matrix33I1TE" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Compute the eigenvalues (S) and the eigenvectors (V) of a real symmetric matrix using Jacobi transformation. </p> <p>Jacobi transformation of a 3x3/4x4 matrix A outputs S and V: A = V * S * V^T where V is orthonormal and S is the diagonal matrix of eigenvalues. Input matrix A must be symmetric. A is also modified during the computation so that upper diagonal entries of A become zero. </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1T"> <span id="_CPPv3I0EN5Imath17jacobiEigenSolverER8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1T"></span><span id="_CPPv2I0EN5Imath17jacobiEigenSolverER8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1T"></span>template<typename <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1aa78d4ed5e74384d60fb5567fc2f93b67"></span>void <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">jacobiEigenSolver</code><span class="sig-paren">(</span><a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1T" title="Imath::jacobiEigenSolver::T">T</a>> &<em>A</em>, <a class="reference internal" href="../classes/Vec4.html#_CPPv4I0EN5Imath4Vec4E" title="Imath::Vec4">Vec4</a><<a class="reference internal" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1T" title="Imath::jacobiEigenSolver::T">T</a>> &<em>S</em>, <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1T" title="Imath::jacobiEigenSolver::T">T</a>> &<em>V</em>, <em class="property">const</em> <a class="reference internal" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1T" title="Imath::jacobiEigenSolver::T">T</a> <em>tol</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix44I1TER4Vec4I1TER8Matrix44I1TEK1T" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Compute the eigenvalues (S) and the eigenvectors (V) of a real symmetric matrix using Jacobi transformation, using a given tolerance <code class="docutils literal notranslate"><span class="pre">tol</span></code>. </p> <p>Jacobi transformation of a 3x3/4x4 matrix A outputs S and V: A = V * S * V^T where V is orthonormal and S is the diagonal matrix of eigenvalues. Input matrix A must be symmetric. A is also modified during the computation so that upper diagonal entries of A become zero. </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix44I1TER4Vec4I1TER8Matrix44I1TE"> <span id="_CPPv3I0EN5Imath17jacobiEigenSolverER8Matrix44I1TER4Vec4I1TER8Matrix44I1TE"></span><span id="_CPPv2I0EN5Imath17jacobiEigenSolverER8Matrix44I1TER4Vec4I1TER8Matrix44I1TE"></span>template<typename <code class="sig-name descname">T</code>><br /><span class="target" id="_imath_matrix_algo_8h_1a0b54ab1aae12bc65ce4ba30dd1f6743e"></span><em class="property">inline</em> void <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">jacobiEigenSolver</code><span class="sig-paren">(</span><a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix44I1TER4Vec4I1TER8Matrix44I1TE" title="Imath::jacobiEigenSolver::T">T</a>> &<em>A</em>, <a class="reference internal" href="../classes/Vec4.html#_CPPv4I0EN5Imath4Vec4E" title="Imath::Vec4">Vec4</a><<a class="reference internal" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix44I1TER4Vec4I1TER8Matrix44I1TE" title="Imath::jacobiEigenSolver::T">T</a>> &<em>S</em>, <a class="reference internal" href="../classes/Matrix44.html#_CPPv4I0EN5Imath8Matrix44E" title="Imath::Matrix44">Matrix44</a><<a class="reference internal" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix44I1TER4Vec4I1TER8Matrix44I1TE" title="Imath::jacobiEigenSolver::T">T</a>> &<em>V</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I0EN5Imath17jacobiEigenSolverEvR8Matrix44I1TER4Vec4I1TER8Matrix44I1TE" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Compute the eigenvalues (S) and the eigenvectors (V) of a real symmetric matrix using Jacobi transformation. </p> <p>Jacobi transformation of a 3x3/4x4 matrix A outputs S and V: A = V * S * V^T where V is orthonormal and S is the diagonal matrix of eigenvalues. Input matrix A must be symmetric. A is also modified during the computation so that upper diagonal entries of A become zero. </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I00EN5Imath14maxEigenVectorEvR2TMR2TV"> <span id="_CPPv3I00EN5Imath14maxEigenVectorER2TMR2TV"></span><span id="_CPPv2I00EN5Imath14maxEigenVectorER2TMR2TV"></span>template<typename <code class="sig-name descname">TM</code>, typename <code class="sig-name descname">TV</code>><br /><span class="target" id="_imath_matrix_algo_8h_1ab6a996a7e02a7b4116d247837dfc7d19"></span>void <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">maxEigenVector</code><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv4I00EN5Imath14maxEigenVectorEvR2TMR2TV" title="Imath::maxEigenVector::TM">TM</a> &<em>A</em>, <a class="reference internal" href="#_CPPv4I00EN5Imath14maxEigenVectorEvR2TMR2TV" title="Imath::maxEigenVector::TV">TV</a> &<em>S</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I00EN5Imath14maxEigenVectorEvR2TMR2TV" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Compute a eigenvector corresponding to the abs max eigenvalue of a real symmetric matrix using Jacobi transformation. </p> </dd></dl> <dl class="cpp function"> <dt id="_CPPv4I00EN5Imath14minEigenVectorEvR2TMR2TV"> <span id="_CPPv3I00EN5Imath14minEigenVectorER2TMR2TV"></span><span id="_CPPv2I00EN5Imath14minEigenVectorER2TMR2TV"></span>template<typename <code class="sig-name descname">TM</code>, typename <code class="sig-name descname">TV</code>><br /><span class="target" id="_imath_matrix_algo_8h_1acb3cf413b84278f2b9be795081748b8e"></span>void <code class="sig-prename descclassname">Imath<code class="sig-prename descclassname">::</code></code><code class="sig-name descname">minEigenVector</code><span class="sig-paren">(</span><a class="reference internal" href="#_CPPv4I00EN5Imath14minEigenVectorEvR2TMR2TV" title="Imath::minEigenVector::TM">TM</a> &<em>A</em>, <a class="reference internal" href="#_CPPv4I00EN5Imath14minEigenVectorEvR2TMR2TV" title="Imath::minEigenVector::TV">TV</a> &<em>S</em><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4I00EN5Imath14minEigenVectorEvR2TMR2TV" title="Permalink to this definition">¶</a><br /></dt> <dd><p>Compute a eigenvector corresponding to the abs min eigenvalue of a real symmetric matrix using Jacobi transformation. </p> </dd></dl> </div> <div class="clearer"></div> </div> </div> </div> <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> <div class="sphinxsidebarwrapper"> <p class="logo"><a href="../index.html"> <img class="logo" src="../_static/imath-logo-blue.png" alt="Logo"/> </a></p> <h4>Previous topic</h4> <p class="topless"><a href="line.html" title="previous chapter">Line3 Functions</a></p> <h4>Next topic</h4> <p class="topless"><a href="random.html" title="next chapter">Random Numbers</a></p> <div role="note" aria-label="source link"> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="../_sources/functions/matrix.rst.txt" rel="nofollow">Show Source</a></li> </ul> </div> <div id="searchbox" style="display: none" role="search"> <h3 id="searchlabel">Quick search</h3> <div class="searchformwrapper"> <form class="search" action="../search.html" method="get"> <input type="text" name="q" aria-labelledby="searchlabel" /> <input type="submit" value="Go" /> </form> </div> </div> <script>$('#searchbox').show(0);</script> </div> </div> <div class="clearer"></div> </div> <div class="related" role="navigation" aria-label="related navigation"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" >index</a></li> <li class="right" > <a href="random.html" title="Random Numbers" >next</a> |</li> <li class="right" > <a href="line.html" title="Line3 Functions" >previous</a> |</li> <li class="nav-item nav-item-0"><a href="../index.html">Imath</a> »</li> <li class="nav-item nav-item-this"><a href="">Matrix Functions</a></li> </ul> </div> <div class="footer" role="contentinfo"> © Copyright 2021, Contributors to the OpenEXR Project. Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.3. </div> </body> </html>
| ver. 1.4 |
Github
|
.
| PHP 8.2.29 | Генераци� �траницы: 0 |
proxy
|
phpinfo
|
�а�тройка