| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363 |
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
- <meta name="generator" content="Doxygen 1.8.18"/>
- <meta name="viewport" content="width=device-width, initial-scale=1"/>
- <title>1.0.2 API documentation: GLM_GTX_pca</title>
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
- <script type="text/javascript" src="jquery.js"></script>
- <script type="text/javascript" src="dynsections.js"></script>
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
- <script type="text/javascript" src="search/searchdata.js"></script>
- <script type="text/javascript" src="search/search.js"></script>
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
- <div id="titlearea">
- <table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
- <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
- <td id="projectalign" style="padding-left: 0.5em;">
- <div id="projectname">1.0.2 API documentation
- </div>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <!-- end header part -->
- <!-- Generated by Doxygen 1.8.18 -->
- <script type="text/javascript">
- /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
- /* @license-end */
- </script>
- <script type="text/javascript" src="menudata.js"></script>
- <script type="text/javascript" src="menu.js"></script>
- <script type="text/javascript">
- /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
- $(function() {
- initMenu('',true,false,'search.php','Search');
- $(document).ready(function() { init_search(); });
- });
- /* @license-end */</script>
- <div id="main-nav"></div>
- </div><!-- top -->
- <!-- window showing the filter options -->
- <div id="MSearchSelectWindow"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- onkeydown="return searchBox.OnSearchSelectKey(event)">
- </div>
- <!-- iframe showing the search results (closed by default) -->
- <div id="MSearchResultsWindow">
- <iframe src="javascript:void(0)" frameborder="0"
- name="MSearchResults" id="MSearchResults">
- </iframe>
- </div>
- <div class="header">
- <div class="summary">
- <a href="#func-members">Functions</a> </div>
- <div class="headertitle">
- <div class="title">GLM_GTX_pca<div class="ingroups"><a class="el" href="a00905.html">Experimental extensions</a></div></div> </div>
- </div><!--header-->
- <div class="contents">
- <table class="memberdecls">
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
- Functions</h2></td></tr>
- <tr class="memitem:ga2c7b5ff4e0f4132a23e58eeb0803b53a"><td class="memTemplParams" colspan="2"><a id="ga2c7b5ff4e0f4132a23e58eeb0803b53a"></a>
- template<length_t D, typename T , qualifier Q, typename I > </td></tr>
- <tr class="memitem:ga2c7b5ff4e0f4132a23e58eeb0803b53a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL mat< D, D, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00968.html#ga2c7b5ff4e0f4132a23e58eeb0803b53a">computeCovarianceMatrix</a> (I const &b, I const &e)</td></tr>
- <tr class="memdesc:ga2c7b5ff4e0f4132a23e58eeb0803b53a"><td class="mdescLeft"> </td><td class="mdescRight">Compute a covariance matrix form a pair of iterators <code>b</code> (begin) and <code>e</code> (end) of a container with relative coordinates (e.g., relative to the center of gravity of the object) Dereferencing an iterator of type I must yield a <code>vec<D, T, Qgt;</code> <br /></td></tr>
- <tr class="separator:ga2c7b5ff4e0f4132a23e58eeb0803b53a"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga666383aa52036f00f3b66e4e7e56da3a"><td class="memTemplParams" colspan="2"><a id="ga666383aa52036f00f3b66e4e7e56da3a"></a>
- template<length_t D, typename T , qualifier Q, typename I > </td></tr>
- <tr class="memitem:ga666383aa52036f00f3b66e4e7e56da3a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL mat< D, D, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00968.html#ga666383aa52036f00f3b66e4e7e56da3a">computeCovarianceMatrix</a> (I const &b, I const &e, vec< D, T, Q > const &c)</td></tr>
- <tr class="memdesc:ga666383aa52036f00f3b66e4e7e56da3a"><td class="mdescLeft"> </td><td class="mdescRight">Compute a covariance matrix form a pair of iterators <code>b</code> (begin) and <code>e</code> (end) of a container with absolute coordinates and a precomputed center of gravity <code>c</code> Dereferencing an iterator of type I must yield a <code>vec<D, T, Qgt;</code> <br /></td></tr>
- <tr class="separator:ga666383aa52036f00f3b66e4e7e56da3a"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga2d6dc3e25182cae243cdf55310059af0"><td class="memTemplParams" colspan="2">template<length_t D, typename T , qualifier Q> </td></tr>
- <tr class="memitem:ga2d6dc3e25182cae243cdf55310059af0"><td class="memTemplItemLeft" align="right" valign="top">GLM_INLINE mat< D, D, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00968.html#ga2d6dc3e25182cae243cdf55310059af0">computeCovarianceMatrix</a> (vec< D, T, Q > const *v, size_t n)</td></tr>
- <tr class="memdesc:ga2d6dc3e25182cae243cdf55310059af0"><td class="mdescLeft"> </td><td class="mdescRight">Compute a covariance matrix form an array of relative coordinates <code>v</code> (e.g., relative to the center of gravity of the object) <a href="a00968.html#ga2d6dc3e25182cae243cdf55310059af0">More...</a><br /></td></tr>
- <tr class="separator:ga2d6dc3e25182cae243cdf55310059af0"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gabfc7aba26da1eed6726f2484584f4077"><td class="memTemplParams" colspan="2">template<length_t D, typename T , qualifier Q> </td></tr>
- <tr class="memitem:gabfc7aba26da1eed6726f2484584f4077"><td class="memTemplItemLeft" align="right" valign="top">GLM_INLINE mat< D, D, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00968.html#gabfc7aba26da1eed6726f2484584f4077">computeCovarianceMatrix</a> (vec< D, T, Q > const *v, size_t n, vec< D, T, Q > const &c)</td></tr>
- <tr class="memdesc:gabfc7aba26da1eed6726f2484584f4077"><td class="mdescLeft"> </td><td class="mdescRight">Compute a covariance matrix form an array of absolute coordinates <code>v</code> and a precomputed center of gravity <code>c</code> <a href="a00968.html#gabfc7aba26da1eed6726f2484584f4077">More...</a><br /></td></tr>
- <tr class="separator:gabfc7aba26da1eed6726f2484584f4077"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga0586007af1073c8b0f629bca0ee7c46c"><td class="memTemplParams" colspan="2">template<length_t D, typename T , qualifier Q> </td></tr>
- <tr class="memitem:ga0586007af1073c8b0f629bca0ee7c46c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL unsigned int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00968.html#ga0586007af1073c8b0f629bca0ee7c46c">findEigenvaluesSymReal</a> (mat< D, D, T, Q > const &covarMat, vec< D, T, Q > &outEigenvalues, mat< D, D, T, Q > &outEigenvectors)</td></tr>
- <tr class="memdesc:ga0586007af1073c8b0f629bca0ee7c46c"><td class="mdescLeft"> </td><td class="mdescRight">Assuming the provided covariance matrix <code>covarMat</code> is symmetric and real-valued, this function find the <code>D</code> Eigenvalues of the matrix, and also provides the corresponding Eigenvectors. <a href="a00968.html#ga0586007af1073c8b0f629bca0ee7c46c">More...</a><br /></td></tr>
- <tr class="separator:ga0586007af1073c8b0f629bca0ee7c46c"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga2824ef6f23df255f86b9c33cebd5da2f"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
- <tr class="memitem:ga2824ef6f23df255f86b9c33cebd5da2f"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DISCARD_DECL void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00968.html#ga2824ef6f23df255f86b9c33cebd5da2f">sortEigenvalues</a> (vec< 2, T, Q > &eigenvalues, mat< 2, 2, T, Q > &eigenvectors)</td></tr>
- <tr class="memdesc:ga2824ef6f23df255f86b9c33cebd5da2f"><td class="mdescLeft"> </td><td class="mdescRight">Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. <a href="a00968.html#ga2824ef6f23df255f86b9c33cebd5da2f">More...</a><br /></td></tr>
- <tr class="separator:ga2824ef6f23df255f86b9c33cebd5da2f"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gaf6fbcbcca3eb46f4fd6d491a979db7c5"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
- <tr class="memitem:gaf6fbcbcca3eb46f4fd6d491a979db7c5"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DISCARD_DECL void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00968.html#gaf6fbcbcca3eb46f4fd6d491a979db7c5">sortEigenvalues</a> (vec< 3, T, Q > &eigenvalues, mat< 3, 3, T, Q > &eigenvectors)</td></tr>
- <tr class="memdesc:gaf6fbcbcca3eb46f4fd6d491a979db7c5"><td class="mdescLeft"> </td><td class="mdescRight">Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. <a href="a00968.html#gaf6fbcbcca3eb46f4fd6d491a979db7c5">More...</a><br /></td></tr>
- <tr class="separator:gaf6fbcbcca3eb46f4fd6d491a979db7c5"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga3fe570b4abe7eca8afb32896d77394f5"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
- <tr class="memitem:ga3fe570b4abe7eca8afb32896d77394f5"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DISCARD_DECL void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00968.html#ga3fe570b4abe7eca8afb32896d77394f5">sortEigenvalues</a> (vec< 4, T, Q > &eigenvalues, mat< 4, 4, T, Q > &eigenvectors)</td></tr>
- <tr class="memdesc:ga3fe570b4abe7eca8afb32896d77394f5"><td class="mdescLeft"> </td><td class="mdescRight">Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. <a href="a00968.html#ga3fe570b4abe7eca8afb32896d77394f5">More...</a><br /></td></tr>
- <tr class="separator:ga3fe570b4abe7eca8afb32896d77394f5"><td class="memSeparator" colspan="2"> </td></tr>
- </table>
- <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
- <p>Include <<a class="el" href="a00704.html" title="GLM_GTX_pca">glm/gtx/pca.hpp</a>> to use the features of this extension.</p>
- <p>Implements functions required for fundamental 'princple component analysis' in 2D, 3D, and 4D: 1) Computing a covariance matrics from a list of <em>relative</em> position vectors 2) Compute the eigenvalues and eigenvectors of the covariance matrics This is useful, e.g., to compute an object-aligned bounding box from vertices of an object. <a href="https://en.wikipedia.org/wiki/Principal_component_analysis">https://en.wikipedia.org/wiki/Principal_component_analysis</a></p>
- <p>Example: </p><div class="fragment"><div class="line">std::vector<glm::dvec3> ptData;</div>
- <div class="line"><span class="comment">// ... fill ptData with some point data, e.g. vertices</span></div>
- <div class="line"> </div>
- <div class="line"><a class="code" href="a00899.html#ga5b83ae3d0fdec519c038e4d2cf967cf0">glm::dvec3</a> center = computeCenter(ptData);</div>
- <div class="line"> </div>
- <div class="line"><a class="code" href="a00901.html#ga6f40aa56265b4b0ccad41b86802efe33">glm::dmat3</a> covarMat = <a class="code" href="a00968.html#ga2d6dc3e25182cae243cdf55310059af0">glm::computeCovarianceMatrix</a>(ptData.data(), ptData.size(), center);</div>
- <div class="line"> </div>
- <div class="line"><a class="code" href="a00899.html#ga5b83ae3d0fdec519c038e4d2cf967cf0">glm::dvec3</a> evals;</div>
- <div class="line"><a class="code" href="a00901.html#ga6f40aa56265b4b0ccad41b86802efe33">glm::dmat3</a> evecs;</div>
- <div class="line"><span class="keywordtype">int</span> evcnt = <a class="code" href="a00968.html#ga0586007af1073c8b0f629bca0ee7c46c">glm::findEigenvaluesSymReal</a>(covarMat, evals, evecs);</div>
- <div class="line"> </div>
- <div class="line"><span class="keywordflow">if</span>(evcnt != 3)</div>
- <div class="line"> <span class="comment">// ... error handling</span></div>
- <div class="line"> </div>
- <div class="line"><a class="code" href="a00968.html#ga2824ef6f23df255f86b9c33cebd5da2f">glm::sortEigenvalues</a>(evals, evecs);</div>
- <div class="line"> </div>
- <div class="line"><span class="comment">// ... now evecs[0] points in the direction (symmetric) of the largest spatial distribution within ptData</span></div>
- </div><!-- fragment --> <h2 class="groupheader">Function Documentation</h2>
- <a id="ga2d6dc3e25182cae243cdf55310059af0"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ga2d6dc3e25182cae243cdf55310059af0">◆ </a></span>computeCovarianceMatrix() <span class="overload">[1/2]</span></h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">GLM_INLINE mat<D, D, T, Q> glm::computeCovarianceMatrix </td>
- <td>(</td>
- <td class="paramtype">vec< D, T, Q > const * </td>
- <td class="paramname"><em>v</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"><em>n</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Compute a covariance matrix form an array of relative coordinates <code>v</code> (e.g., relative to the center of gravity of the object) </p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">v</td><td>Points to a memory holding <code>n</code> times vectors </td></tr>
- <tr><td class="paramname">n</td><td>Number of points in v </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="gabfc7aba26da1eed6726f2484584f4077"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#gabfc7aba26da1eed6726f2484584f4077">◆ </a></span>computeCovarianceMatrix() <span class="overload">[2/2]</span></h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">GLM_INLINE mat<D, D, T, Q> glm::computeCovarianceMatrix </td>
- <td>(</td>
- <td class="paramtype">vec< D, T, Q > const * </td>
- <td class="paramname"><em>v</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"><em>n</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vec< D, T, Q > const & </td>
- <td class="paramname"><em>c</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Compute a covariance matrix form an array of absolute coordinates <code>v</code> and a precomputed center of gravity <code>c</code> </p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">v</td><td>Points to a memory holding <code>n</code> times vectors </td></tr>
- <tr><td class="paramname">n</td><td>Number of points in v </td></tr>
- <tr><td class="paramname">c</td><td>Precomputed center of gravity </td></tr>
- </table>
- </dd>
- </dl>
- </div>
- </div>
- <a id="ga0586007af1073c8b0f629bca0ee7c46c"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ga0586007af1073c8b0f629bca0ee7c46c">◆ </a></span>findEigenvaluesSymReal()</h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">GLM_FUNC_DECL unsigned int glm::findEigenvaluesSymReal </td>
- <td>(</td>
- <td class="paramtype">mat< D, D, T, Q > const & </td>
- <td class="paramname"><em>covarMat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vec< D, T, Q > & </td>
- <td class="paramname"><em>outEigenvalues</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">mat< D, D, T, Q > & </td>
- <td class="paramname"><em>outEigenvectors</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Assuming the provided covariance matrix <code>covarMat</code> is symmetric and real-valued, this function find the <code>D</code> Eigenvalues of the matrix, and also provides the corresponding Eigenvectors. </p>
- <p>Note: the data in <code>outEigenvalues</code> and <code>outEigenvectors</code> are in matching order, i.e. <code>outEigenvector[i]</code> is the Eigenvector of the Eigenvalue <code>outEigenvalue[i]</code>. This is a numeric implementation to find the Eigenvalues, using 'QL decomposition` (variant of QR decomposition: <a href="https://en.wikipedia.org/wiki/QR_decomposition">https://en.wikipedia.org/wiki/QR_decomposition</a>).</p>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">covarMat</td><td>A symmetric, real-valued covariance matrix, e.g. computed from computeCovarianceMatrix </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">outEigenvalues</td><td>Vector to receive the found eigenvalues </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">outEigenvectors</td><td>Matrix to receive the found eigenvectors corresponding to the found eigenvalues, as column vectors </td></tr>
- </table>
- </dd>
- </dl>
- <dl class="section return"><dt>Returns</dt><dd>The number of eigenvalues found, usually D if the precondition of the covariance matrix is met. </dd></dl>
- </div>
- </div>
- <a id="ga2824ef6f23df255f86b9c33cebd5da2f"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ga2824ef6f23df255f86b9c33cebd5da2f">◆ </a></span>sortEigenvalues() <span class="overload">[1/3]</span></h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">GLM_FUNC_DISCARD_DECL void glm::sortEigenvalues </td>
- <td>(</td>
- <td class="paramtype">vec< 2, T, Q > & </td>
- <td class="paramname"><em>eigenvalues</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">mat< 2, 2, T, Q > & </td>
- <td class="paramname"><em>eigenvectors</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. </p>
- <p>The data in <code>outEigenvalues</code> and <code>outEigenvectors</code> are assumed to be matching order, i.e. <code>outEigenvector[i]</code> is the Eigenvector of the Eigenvalue <code>outEigenvalue[i]</code>. </p>
- </div>
- </div>
- <a id="gaf6fbcbcca3eb46f4fd6d491a979db7c5"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#gaf6fbcbcca3eb46f4fd6d491a979db7c5">◆ </a></span>sortEigenvalues() <span class="overload">[2/3]</span></h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">GLM_FUNC_DISCARD_DECL void glm::sortEigenvalues </td>
- <td>(</td>
- <td class="paramtype">vec< 3, T, Q > & </td>
- <td class="paramname"><em>eigenvalues</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">mat< 3, 3, T, Q > & </td>
- <td class="paramname"><em>eigenvectors</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. </p>
- <p>The data in <code>outEigenvalues</code> and <code>outEigenvectors</code> are assumed to be matching order, i.e. <code>outEigenvector[i]</code> is the Eigenvector of the Eigenvalue <code>outEigenvalue[i]</code>. </p>
- </div>
- </div>
- <a id="ga3fe570b4abe7eca8afb32896d77394f5"></a>
- <h2 class="memtitle"><span class="permalink"><a href="#ga3fe570b4abe7eca8afb32896d77394f5">◆ </a></span>sortEigenvalues() <span class="overload">[3/3]</span></h2>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">GLM_FUNC_DISCARD_DECL void glm::sortEigenvalues </td>
- <td>(</td>
- <td class="paramtype">vec< 4, T, Q > & </td>
- <td class="paramname"><em>eigenvalues</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">mat< 4, 4, T, Q > & </td>
- <td class="paramname"><em>eigenvectors</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. </p>
- <p>The data in <code>outEigenvalues</code> and <code>outEigenvectors</code> are assumed to be matching order, i.e. <code>outEigenvector[i]</code> is the Eigenvector of the Eigenvalue <code>outEigenvalue[i]</code>. </p>
- </div>
- </div>
- </div><!-- contents -->
- <div class="ttc" id="aa00968_html_ga2824ef6f23df255f86b9c33cebd5da2f"><div class="ttname"><a href="a00968.html#ga2824ef6f23df255f86b9c33cebd5da2f">glm::sortEigenvalues</a></div><div class="ttdeci">GLM_FUNC_DISCARD_DECL void sortEigenvalues(vec< 2, T, Q > &eigenvalues, mat< 2, 2, T, Q > &eigenvectors)</div><div class="ttdoc">Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue.</div></div>
- <div class="ttc" id="aa00968_html_ga2d6dc3e25182cae243cdf55310059af0"><div class="ttname"><a href="a00968.html#ga2d6dc3e25182cae243cdf55310059af0">glm::computeCovarianceMatrix</a></div><div class="ttdeci">GLM_INLINE mat< D, D, T, Q > computeCovarianceMatrix(vec< D, T, Q > const *v, size_t n)</div><div class="ttdoc">Compute a covariance matrix form an array of relative coordinates v (e.g., relative to the center of ...</div></div>
- <div class="ttc" id="aa00899_html_ga5b83ae3d0fdec519c038e4d2cf967cf0"><div class="ttname"><a href="a00899.html#ga5b83ae3d0fdec519c038e4d2cf967cf0">glm::dvec3</a></div><div class="ttdeci">vec< 3, double, defaultp > dvec3</div><div class="ttdoc">3 components vector of double-precision floating-point numbers.</div><div class="ttdef"><b>Definition:</b> <a href="a00422_source.html#l00015">vector_double3.hpp:15</a></div></div>
- <div class="ttc" id="aa00901_html_ga6f40aa56265b4b0ccad41b86802efe33"><div class="ttname"><a href="a00901.html#ga6f40aa56265b4b0ccad41b86802efe33">glm::dmat3</a></div><div class="ttdeci">mat< 3, 3, double, defaultp > dmat3</div><div class="ttdoc">3 columns of 3 components matrix of double-precision floating-point numbers.</div><div class="ttdef"><b>Definition:</b> <a href="a00122_source.html#l00020">matrix_double3x3.hpp:20</a></div></div>
- <div class="ttc" id="aa00968_html_ga0586007af1073c8b0f629bca0ee7c46c"><div class="ttname"><a href="a00968.html#ga0586007af1073c8b0f629bca0ee7c46c">glm::findEigenvaluesSymReal</a></div><div class="ttdeci">GLM_FUNC_DECL unsigned int findEigenvaluesSymReal(mat< D, D, T, Q > const &covarMat, vec< D, T, Q > &outEigenvalues, mat< D, D, T, Q > &outEigenvectors)</div><div class="ttdoc">Assuming the provided covariance matrix covarMat is symmetric and real-valued, this function find the...</div></div>
- <!-- start footer part -->
- <hr class="footer"/><address class="footer"><small>
- Generated by  <a href="http://www.doxygen.org/index.html">
- <img class="footer" src="doxygen.png" alt="doxygen"/>
- </a> 1.8.18
- </small></address>
- </body>
- </html>
|