a00968.html 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=9"/>
  6. <meta name="generator" content="Doxygen 1.8.18"/>
  7. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  8. <title>1.0.2 API documentation: GLM_GTX_pca</title>
  9. <link href="tabs.css" rel="stylesheet" type="text/css"/>
  10. <script type="text/javascript" src="jquery.js"></script>
  11. <script type="text/javascript" src="dynsections.js"></script>
  12. <link href="search/search.css" rel="stylesheet" type="text/css"/>
  13. <script type="text/javascript" src="search/searchdata.js"></script>
  14. <script type="text/javascript" src="search/search.js"></script>
  15. <link href="doxygen.css" rel="stylesheet" type="text/css" />
  16. </head>
  17. <body>
  18. <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
  19. <div id="titlearea">
  20. <table cellspacing="0" cellpadding="0">
  21. <tbody>
  22. <tr style="height: 56px;">
  23. <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
  24. <td id="projectalign" style="padding-left: 0.5em;">
  25. <div id="projectname">1.0.2 API documentation
  26. </div>
  27. </td>
  28. </tr>
  29. </tbody>
  30. </table>
  31. </div>
  32. <!-- end header part -->
  33. <!-- Generated by Doxygen 1.8.18 -->
  34. <script type="text/javascript">
  35. /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  36. var searchBox = new SearchBox("searchBox", "search",false,'Search');
  37. /* @license-end */
  38. </script>
  39. <script type="text/javascript" src="menudata.js"></script>
  40. <script type="text/javascript" src="menu.js"></script>
  41. <script type="text/javascript">
  42. /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  43. $(function() {
  44. initMenu('',true,false,'search.php','Search');
  45. $(document).ready(function() { init_search(); });
  46. });
  47. /* @license-end */</script>
  48. <div id="main-nav"></div>
  49. </div><!-- top -->
  50. <!-- window showing the filter options -->
  51. <div id="MSearchSelectWindow"
  52. onmouseover="return searchBox.OnSearchSelectShow()"
  53. onmouseout="return searchBox.OnSearchSelectHide()"
  54. onkeydown="return searchBox.OnSearchSelectKey(event)">
  55. </div>
  56. <!-- iframe showing the search results (closed by default) -->
  57. <div id="MSearchResultsWindow">
  58. <iframe src="javascript:void(0)" frameborder="0"
  59. name="MSearchResults" id="MSearchResults">
  60. </iframe>
  61. </div>
  62. <div class="header">
  63. <div class="summary">
  64. <a href="#func-members">Functions</a> </div>
  65. <div class="headertitle">
  66. <div class="title">GLM_GTX_pca<div class="ingroups"><a class="el" href="a00905.html">Experimental extensions</a></div></div> </div>
  67. </div><!--header-->
  68. <div class="contents">
  69. <table class="memberdecls">
  70. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
  71. Functions</h2></td></tr>
  72. <tr class="memitem:ga2c7b5ff4e0f4132a23e58eeb0803b53a"><td class="memTemplParams" colspan="2"><a id="ga2c7b5ff4e0f4132a23e58eeb0803b53a"></a>
  73. template&lt;length_t D, typename T , qualifier Q, typename I &gt; </td></tr>
  74. <tr class="memitem:ga2c7b5ff4e0f4132a23e58eeb0803b53a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL mat&lt; D, D, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00968.html#ga2c7b5ff4e0f4132a23e58eeb0803b53a">computeCovarianceMatrix</a> (I const &amp;b, I const &amp;e)</td></tr>
  75. <tr class="memdesc:ga2c7b5ff4e0f4132a23e58eeb0803b53a"><td class="mdescLeft">&#160;</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&lt;D, T, Qgt;</code> <br /></td></tr>
  76. <tr class="separator:ga2c7b5ff4e0f4132a23e58eeb0803b53a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  77. <tr class="memitem:ga666383aa52036f00f3b66e4e7e56da3a"><td class="memTemplParams" colspan="2"><a id="ga666383aa52036f00f3b66e4e7e56da3a"></a>
  78. template&lt;length_t D, typename T , qualifier Q, typename I &gt; </td></tr>
  79. <tr class="memitem:ga666383aa52036f00f3b66e4e7e56da3a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL mat&lt; D, D, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00968.html#ga666383aa52036f00f3b66e4e7e56da3a">computeCovarianceMatrix</a> (I const &amp;b, I const &amp;e, vec&lt; D, T, Q &gt; const &amp;c)</td></tr>
  80. <tr class="memdesc:ga666383aa52036f00f3b66e4e7e56da3a"><td class="mdescLeft">&#160;</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&lt;D, T, Qgt;</code> <br /></td></tr>
  81. <tr class="separator:ga666383aa52036f00f3b66e4e7e56da3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  82. <tr class="memitem:ga2d6dc3e25182cae243cdf55310059af0"><td class="memTemplParams" colspan="2">template&lt;length_t D, typename T , qualifier Q&gt; </td></tr>
  83. <tr class="memitem:ga2d6dc3e25182cae243cdf55310059af0"><td class="memTemplItemLeft" align="right" valign="top">GLM_INLINE mat&lt; D, D, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00968.html#ga2d6dc3e25182cae243cdf55310059af0">computeCovarianceMatrix</a> (vec&lt; D, T, Q &gt; const *v, size_t n)</td></tr>
  84. <tr class="memdesc:ga2d6dc3e25182cae243cdf55310059af0"><td class="mdescLeft">&#160;</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>
  85. <tr class="separator:ga2d6dc3e25182cae243cdf55310059af0"><td class="memSeparator" colspan="2">&#160;</td></tr>
  86. <tr class="memitem:gabfc7aba26da1eed6726f2484584f4077"><td class="memTemplParams" colspan="2">template&lt;length_t D, typename T , qualifier Q&gt; </td></tr>
  87. <tr class="memitem:gabfc7aba26da1eed6726f2484584f4077"><td class="memTemplItemLeft" align="right" valign="top">GLM_INLINE mat&lt; D, D, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00968.html#gabfc7aba26da1eed6726f2484584f4077">computeCovarianceMatrix</a> (vec&lt; D, T, Q &gt; const *v, size_t n, vec&lt; D, T, Q &gt; const &amp;c)</td></tr>
  88. <tr class="memdesc:gabfc7aba26da1eed6726f2484584f4077"><td class="mdescLeft">&#160;</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>
  89. <tr class="separator:gabfc7aba26da1eed6726f2484584f4077"><td class="memSeparator" colspan="2">&#160;</td></tr>
  90. <tr class="memitem:ga0586007af1073c8b0f629bca0ee7c46c"><td class="memTemplParams" colspan="2">template&lt;length_t D, typename T , qualifier Q&gt; </td></tr>
  91. <tr class="memitem:ga0586007af1073c8b0f629bca0ee7c46c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL unsigned int&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00968.html#ga0586007af1073c8b0f629bca0ee7c46c">findEigenvaluesSymReal</a> (mat&lt; D, D, T, Q &gt; const &amp;covarMat, vec&lt; D, T, Q &gt; &amp;outEigenvalues, mat&lt; D, D, T, Q &gt; &amp;outEigenvectors)</td></tr>
  92. <tr class="memdesc:ga0586007af1073c8b0f629bca0ee7c46c"><td class="mdescLeft">&#160;</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>
  93. <tr class="separator:ga0586007af1073c8b0f629bca0ee7c46c"><td class="memSeparator" colspan="2">&#160;</td></tr>
  94. <tr class="memitem:ga2824ef6f23df255f86b9c33cebd5da2f"><td class="memTemplParams" colspan="2">template&lt;typename T , qualifier Q&gt; </td></tr>
  95. <tr class="memitem:ga2824ef6f23df255f86b9c33cebd5da2f"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DISCARD_DECL void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00968.html#ga2824ef6f23df255f86b9c33cebd5da2f">sortEigenvalues</a> (vec&lt; 2, T, Q &gt; &amp;eigenvalues, mat&lt; 2, 2, T, Q &gt; &amp;eigenvectors)</td></tr>
  96. <tr class="memdesc:ga2824ef6f23df255f86b9c33cebd5da2f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sorts a group of Eigenvalues&amp;Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. <a href="a00968.html#ga2824ef6f23df255f86b9c33cebd5da2f">More...</a><br /></td></tr>
  97. <tr class="separator:ga2824ef6f23df255f86b9c33cebd5da2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
  98. <tr class="memitem:gaf6fbcbcca3eb46f4fd6d491a979db7c5"><td class="memTemplParams" colspan="2">template&lt;typename T , qualifier Q&gt; </td></tr>
  99. <tr class="memitem:gaf6fbcbcca3eb46f4fd6d491a979db7c5"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DISCARD_DECL void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00968.html#gaf6fbcbcca3eb46f4fd6d491a979db7c5">sortEigenvalues</a> (vec&lt; 3, T, Q &gt; &amp;eigenvalues, mat&lt; 3, 3, T, Q &gt; &amp;eigenvectors)</td></tr>
  100. <tr class="memdesc:gaf6fbcbcca3eb46f4fd6d491a979db7c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sorts a group of Eigenvalues&amp;Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. <a href="a00968.html#gaf6fbcbcca3eb46f4fd6d491a979db7c5">More...</a><br /></td></tr>
  101. <tr class="separator:gaf6fbcbcca3eb46f4fd6d491a979db7c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
  102. <tr class="memitem:ga3fe570b4abe7eca8afb32896d77394f5"><td class="memTemplParams" colspan="2">template&lt;typename T , qualifier Q&gt; </td></tr>
  103. <tr class="memitem:ga3fe570b4abe7eca8afb32896d77394f5"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DISCARD_DECL void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00968.html#ga3fe570b4abe7eca8afb32896d77394f5">sortEigenvalues</a> (vec&lt; 4, T, Q &gt; &amp;eigenvalues, mat&lt; 4, 4, T, Q &gt; &amp;eigenvectors)</td></tr>
  104. <tr class="memdesc:ga3fe570b4abe7eca8afb32896d77394f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sorts a group of Eigenvalues&amp;Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. <a href="a00968.html#ga3fe570b4abe7eca8afb32896d77394f5">More...</a><br /></td></tr>
  105. <tr class="separator:ga3fe570b4abe7eca8afb32896d77394f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
  106. </table>
  107. <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
  108. <p>Include &lt;<a class="el" href="a00704.html" title="GLM_GTX_pca">glm/gtx/pca.hpp</a>&gt; to use the features of this extension.</p>
  109. <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>
  110. <p>Example: </p><div class="fragment"><div class="line">std::vector&lt;glm::dvec3&gt; ptData;</div>
  111. <div class="line"><span class="comment">// ... fill ptData with some point data, e.g. vertices</span></div>
  112. <div class="line"> </div>
  113. <div class="line"><a class="code" href="a00899.html#ga5b83ae3d0fdec519c038e4d2cf967cf0">glm::dvec3</a> center = computeCenter(ptData);</div>
  114. <div class="line"> </div>
  115. <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>
  116. <div class="line"> </div>
  117. <div class="line"><a class="code" href="a00899.html#ga5b83ae3d0fdec519c038e4d2cf967cf0">glm::dvec3</a> evals;</div>
  118. <div class="line"><a class="code" href="a00901.html#ga6f40aa56265b4b0ccad41b86802efe33">glm::dmat3</a> evecs;</div>
  119. <div class="line"><span class="keywordtype">int</span> evcnt = <a class="code" href="a00968.html#ga0586007af1073c8b0f629bca0ee7c46c">glm::findEigenvaluesSymReal</a>(covarMat, evals, evecs);</div>
  120. <div class="line"> </div>
  121. <div class="line"><span class="keywordflow">if</span>(evcnt != 3)</div>
  122. <div class="line"> <span class="comment">// ... error handling</span></div>
  123. <div class="line"> </div>
  124. <div class="line"><a class="code" href="a00968.html#ga2824ef6f23df255f86b9c33cebd5da2f">glm::sortEigenvalues</a>(evals, evecs);</div>
  125. <div class="line"> </div>
  126. <div class="line"><span class="comment">// ... now evecs[0] points in the direction (symmetric) of the largest spatial distribution within ptData</span></div>
  127. </div><!-- fragment --> <h2 class="groupheader">Function Documentation</h2>
  128. <a id="ga2d6dc3e25182cae243cdf55310059af0"></a>
  129. <h2 class="memtitle"><span class="permalink"><a href="#ga2d6dc3e25182cae243cdf55310059af0">&#9670;&nbsp;</a></span>computeCovarianceMatrix() <span class="overload">[1/2]</span></h2>
  130. <div class="memitem">
  131. <div class="memproto">
  132. <table class="memname">
  133. <tr>
  134. <td class="memname">GLM_INLINE mat&lt;D, D, T, Q&gt; glm::computeCovarianceMatrix </td>
  135. <td>(</td>
  136. <td class="paramtype">vec&lt; D, T, Q &gt; const *&#160;</td>
  137. <td class="paramname"><em>v</em>, </td>
  138. </tr>
  139. <tr>
  140. <td class="paramkey"></td>
  141. <td></td>
  142. <td class="paramtype">size_t&#160;</td>
  143. <td class="paramname"><em>n</em>&#160;</td>
  144. </tr>
  145. <tr>
  146. <td></td>
  147. <td>)</td>
  148. <td></td><td></td>
  149. </tr>
  150. </table>
  151. </div><div class="memdoc">
  152. <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>
  153. <dl class="params"><dt>Parameters</dt><dd>
  154. <table class="params">
  155. <tr><td class="paramname">v</td><td>Points to a memory holding <code>n</code> times vectors </td></tr>
  156. <tr><td class="paramname">n</td><td>Number of points in v </td></tr>
  157. </table>
  158. </dd>
  159. </dl>
  160. </div>
  161. </div>
  162. <a id="gabfc7aba26da1eed6726f2484584f4077"></a>
  163. <h2 class="memtitle"><span class="permalink"><a href="#gabfc7aba26da1eed6726f2484584f4077">&#9670;&nbsp;</a></span>computeCovarianceMatrix() <span class="overload">[2/2]</span></h2>
  164. <div class="memitem">
  165. <div class="memproto">
  166. <table class="memname">
  167. <tr>
  168. <td class="memname">GLM_INLINE mat&lt;D, D, T, Q&gt; glm::computeCovarianceMatrix </td>
  169. <td>(</td>
  170. <td class="paramtype">vec&lt; D, T, Q &gt; const *&#160;</td>
  171. <td class="paramname"><em>v</em>, </td>
  172. </tr>
  173. <tr>
  174. <td class="paramkey"></td>
  175. <td></td>
  176. <td class="paramtype">size_t&#160;</td>
  177. <td class="paramname"><em>n</em>, </td>
  178. </tr>
  179. <tr>
  180. <td class="paramkey"></td>
  181. <td></td>
  182. <td class="paramtype">vec&lt; D, T, Q &gt; const &amp;&#160;</td>
  183. <td class="paramname"><em>c</em>&#160;</td>
  184. </tr>
  185. <tr>
  186. <td></td>
  187. <td>)</td>
  188. <td></td><td></td>
  189. </tr>
  190. </table>
  191. </div><div class="memdoc">
  192. <p>Compute a covariance matrix form an array of absolute coordinates <code>v</code> and a precomputed center of gravity <code>c</code> </p>
  193. <dl class="params"><dt>Parameters</dt><dd>
  194. <table class="params">
  195. <tr><td class="paramname">v</td><td>Points to a memory holding <code>n</code> times vectors </td></tr>
  196. <tr><td class="paramname">n</td><td>Number of points in v </td></tr>
  197. <tr><td class="paramname">c</td><td>Precomputed center of gravity </td></tr>
  198. </table>
  199. </dd>
  200. </dl>
  201. </div>
  202. </div>
  203. <a id="ga0586007af1073c8b0f629bca0ee7c46c"></a>
  204. <h2 class="memtitle"><span class="permalink"><a href="#ga0586007af1073c8b0f629bca0ee7c46c">&#9670;&nbsp;</a></span>findEigenvaluesSymReal()</h2>
  205. <div class="memitem">
  206. <div class="memproto">
  207. <table class="memname">
  208. <tr>
  209. <td class="memname">GLM_FUNC_DECL unsigned int glm::findEigenvaluesSymReal </td>
  210. <td>(</td>
  211. <td class="paramtype">mat&lt; D, D, T, Q &gt; const &amp;&#160;</td>
  212. <td class="paramname"><em>covarMat</em>, </td>
  213. </tr>
  214. <tr>
  215. <td class="paramkey"></td>
  216. <td></td>
  217. <td class="paramtype">vec&lt; D, T, Q &gt; &amp;&#160;</td>
  218. <td class="paramname"><em>outEigenvalues</em>, </td>
  219. </tr>
  220. <tr>
  221. <td class="paramkey"></td>
  222. <td></td>
  223. <td class="paramtype">mat&lt; D, D, T, Q &gt; &amp;&#160;</td>
  224. <td class="paramname"><em>outEigenvectors</em>&#160;</td>
  225. </tr>
  226. <tr>
  227. <td></td>
  228. <td>)</td>
  229. <td></td><td></td>
  230. </tr>
  231. </table>
  232. </div><div class="memdoc">
  233. <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>
  234. <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>
  235. <dl class="params"><dt>Parameters</dt><dd>
  236. <table class="params">
  237. <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>
  238. <tr><td class="paramdir">[out]</td><td class="paramname">outEigenvalues</td><td>Vector to receive the found eigenvalues </td></tr>
  239. <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>
  240. </table>
  241. </dd>
  242. </dl>
  243. <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>
  244. </div>
  245. </div>
  246. <a id="ga2824ef6f23df255f86b9c33cebd5da2f"></a>
  247. <h2 class="memtitle"><span class="permalink"><a href="#ga2824ef6f23df255f86b9c33cebd5da2f">&#9670;&nbsp;</a></span>sortEigenvalues() <span class="overload">[1/3]</span></h2>
  248. <div class="memitem">
  249. <div class="memproto">
  250. <table class="memname">
  251. <tr>
  252. <td class="memname">GLM_FUNC_DISCARD_DECL void glm::sortEigenvalues </td>
  253. <td>(</td>
  254. <td class="paramtype">vec&lt; 2, T, Q &gt; &amp;&#160;</td>
  255. <td class="paramname"><em>eigenvalues</em>, </td>
  256. </tr>
  257. <tr>
  258. <td class="paramkey"></td>
  259. <td></td>
  260. <td class="paramtype">mat&lt; 2, 2, T, Q &gt; &amp;&#160;</td>
  261. <td class="paramname"><em>eigenvectors</em>&#160;</td>
  262. </tr>
  263. <tr>
  264. <td></td>
  265. <td>)</td>
  266. <td></td><td></td>
  267. </tr>
  268. </table>
  269. </div><div class="memdoc">
  270. <p>Sorts a group of Eigenvalues&amp;Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. </p>
  271. <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>
  272. </div>
  273. </div>
  274. <a id="gaf6fbcbcca3eb46f4fd6d491a979db7c5"></a>
  275. <h2 class="memtitle"><span class="permalink"><a href="#gaf6fbcbcca3eb46f4fd6d491a979db7c5">&#9670;&nbsp;</a></span>sortEigenvalues() <span class="overload">[2/3]</span></h2>
  276. <div class="memitem">
  277. <div class="memproto">
  278. <table class="memname">
  279. <tr>
  280. <td class="memname">GLM_FUNC_DISCARD_DECL void glm::sortEigenvalues </td>
  281. <td>(</td>
  282. <td class="paramtype">vec&lt; 3, T, Q &gt; &amp;&#160;</td>
  283. <td class="paramname"><em>eigenvalues</em>, </td>
  284. </tr>
  285. <tr>
  286. <td class="paramkey"></td>
  287. <td></td>
  288. <td class="paramtype">mat&lt; 3, 3, T, Q &gt; &amp;&#160;</td>
  289. <td class="paramname"><em>eigenvectors</em>&#160;</td>
  290. </tr>
  291. <tr>
  292. <td></td>
  293. <td>)</td>
  294. <td></td><td></td>
  295. </tr>
  296. </table>
  297. </div><div class="memdoc">
  298. <p>Sorts a group of Eigenvalues&amp;Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. </p>
  299. <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>
  300. </div>
  301. </div>
  302. <a id="ga3fe570b4abe7eca8afb32896d77394f5"></a>
  303. <h2 class="memtitle"><span class="permalink"><a href="#ga3fe570b4abe7eca8afb32896d77394f5">&#9670;&nbsp;</a></span>sortEigenvalues() <span class="overload">[3/3]</span></h2>
  304. <div class="memitem">
  305. <div class="memproto">
  306. <table class="memname">
  307. <tr>
  308. <td class="memname">GLM_FUNC_DISCARD_DECL void glm::sortEigenvalues </td>
  309. <td>(</td>
  310. <td class="paramtype">vec&lt; 4, T, Q &gt; &amp;&#160;</td>
  311. <td class="paramname"><em>eigenvalues</em>, </td>
  312. </tr>
  313. <tr>
  314. <td class="paramkey"></td>
  315. <td></td>
  316. <td class="paramtype">mat&lt; 4, 4, T, Q &gt; &amp;&#160;</td>
  317. <td class="paramname"><em>eigenvectors</em>&#160;</td>
  318. </tr>
  319. <tr>
  320. <td></td>
  321. <td>)</td>
  322. <td></td><td></td>
  323. </tr>
  324. </table>
  325. </div><div class="memdoc">
  326. <p>Sorts a group of Eigenvalues&amp;Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. </p>
  327. <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>
  328. </div>
  329. </div>
  330. </div><!-- contents -->
  331. <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&lt; 2, T, Q &gt; &amp;eigenvalues, mat&lt; 2, 2, T, Q &gt; &amp;eigenvectors)</div><div class="ttdoc">Sorts a group of Eigenvalues&amp;Eigenvectors, for largest Eigenvalue to smallest Eigenvalue.</div></div>
  332. <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&lt; D, D, T, Q &gt; computeCovarianceMatrix(vec&lt; D, T, Q &gt; 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>
  333. <div class="ttc" id="aa00899_html_ga5b83ae3d0fdec519c038e4d2cf967cf0"><div class="ttname"><a href="a00899.html#ga5b83ae3d0fdec519c038e4d2cf967cf0">glm::dvec3</a></div><div class="ttdeci">vec&lt; 3, double, defaultp &gt; 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>
  334. <div class="ttc" id="aa00901_html_ga6f40aa56265b4b0ccad41b86802efe33"><div class="ttname"><a href="a00901.html#ga6f40aa56265b4b0ccad41b86802efe33">glm::dmat3</a></div><div class="ttdeci">mat&lt; 3, 3, double, defaultp &gt; 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>
  335. <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&lt; D, D, T, Q &gt; const &amp;covarMat, vec&lt; D, T, Q &gt; &amp;outEigenvalues, mat&lt; D, D, T, Q &gt; &amp;outEigenvectors)</div><div class="ttdoc">Assuming the provided covariance matrix covarMat is symmetric and real-valued, this function find the...</div></div>
  336. <!-- start footer part -->
  337. <hr class="footer"/><address class="footer"><small>
  338. Generated by &#160;<a href="http://www.doxygen.org/index.html">
  339. <img class="footer" src="doxygen.png" alt="doxygen"/>
  340. </a> 1.8.18
  341. </small></address>
  342. </body>
  343. </html>