Metahuman_DNA_Calibration/docs/doxygen/build/html/namespacetdm_1_1projective.html

794 lines
56 KiB
HTML
Raw Permalink Normal View History

2022-11-28 19:21:26 +08:00
<!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=11"/>
<meta name="generator" content="Doxygen 1.9.4"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>DNA Calib: tdm::projective Namespace Reference</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 id="projectrow">
<td id="projectalign">
<div id="projectname">DNA Calib<span id="projectnumber">&#160;1.1</span>
</div>
<div id="projectbrief">Project brief</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- 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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacetdm.html">tdm</a></li><li class="navelem"><a class="el" href="namespacetdm_1_1projective.html">projective</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">tdm::projective Namespace Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structtdm_1_1projective_1_1axis__angle.html">axis_angle</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a6d871452e6ba8e5af822c3d3f4573139"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a6d871452e6ba8e5af822c3d3f4573139"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacetdm_1_1projective.html#a6d871452e6ba8e5af822c3d3f4573139">rotate</a> (const <a class="el" href="namespacetdm.html#a0ee1135015dc380efab2a1f62e27d32c">vec3</a>&lt; T &gt; &amp;axis, T radians, <a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aed">handedness</a> h=<a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aeda7c4f29407893c334a6cb7a87bf045c0d">handedness::right</a>)</td></tr>
<tr class="separator:a6d871452e6ba8e5af822c3d3f4573139"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a531b788392d682b3b5507feceeaba471"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a531b788392d682b3b5507feceeaba471"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacetdm_1_1projective.html#a531b788392d682b3b5507feceeaba471">rotate</a> (const <a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt; &amp;m, const <a class="el" href="namespacetdm.html#a0ee1135015dc380efab2a1f62e27d32c">vec3</a>&lt; T &gt; &amp;axis, T radians, <a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aed">handedness</a> h=<a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aeda7c4f29407893c334a6cb7a87bf045c0d">handedness::right</a>)</td></tr>
<tr class="separator:a531b788392d682b3b5507feceeaba471"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a64b5932ac17185165bf65c2000cddfb4"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a64b5932ac17185165bf65c2000cddfb4"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacetdm_1_1projective.html#a64b5932ac17185165bf65c2000cddfb4">rotate</a> (T xRadians, T yRadians, T zRadians, <a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aed">handedness</a> h=<a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aeda7c4f29407893c334a6cb7a87bf045c0d">handedness::right</a>)</td></tr>
<tr class="separator:a64b5932ac17185165bf65c2000cddfb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a734e16d0c46de4f6622e1c8a631bfa53"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a734e16d0c46de4f6622e1c8a631bfa53"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacetdm_1_1projective.html#a734e16d0c46de4f6622e1c8a631bfa53">rotate</a> (const <a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt; &amp;m, T xRadians, T yRadians, T zRadians, <a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aed">handedness</a> h=<a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aeda7c4f29407893c334a6cb7a87bf045c0d">handedness::right</a>)</td></tr>
<tr class="separator:a734e16d0c46de4f6622e1c8a631bfa53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55b0b5111d65a205801e520b83a91e4d"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a55b0b5111d65a205801e520b83a91e4d"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacetdm_1_1projective.html#a55b0b5111d65a205801e520b83a91e4d">rotate</a> (const <a class="el" href="namespacetdm.html#a0ee1135015dc380efab2a1f62e27d32c">vec3</a>&lt; T &gt; &amp;radians, <a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aed">handedness</a> h=<a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aeda7c4f29407893c334a6cb7a87bf045c0d">handedness::right</a>)</td></tr>
<tr class="separator:a55b0b5111d65a205801e520b83a91e4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abac0d987f95650a5086a231364064fbb"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:abac0d987f95650a5086a231364064fbb"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacetdm_1_1projective.html#abac0d987f95650a5086a231364064fbb">rotate</a> (const <a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt; &amp;m, const <a class="el" href="namespacetdm.html#a0ee1135015dc380efab2a1f62e27d32c">vec3</a>&lt; T &gt; &amp;radians, <a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aed">handedness</a> h=<a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aeda7c4f29407893c334a6cb7a87bf045c0d">handedness::right</a>)</td></tr>
<tr class="separator:abac0d987f95650a5086a231364064fbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f30f4777ac8bdc4e0eb5c96ab634a58"><td class="memTemplParams" colspan="2">template&lt;<a class="el" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> L, typename T &gt; </td></tr>
<tr class="memitem:a3f30f4777ac8bdc4e0eb5c96ab634a58"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L+1, L+1, T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacetdm_1_1projective.html#a3f30f4777ac8bdc4e0eb5c96ab634a58">scale</a> (const <a class="el" href="structtdm_1_1vec.html">vec</a>&lt; L, T &gt; &amp;factors)</td></tr>
<tr class="separator:a3f30f4777ac8bdc4e0eb5c96ab634a58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f73dee532160054f7aeb723d3371162"><td class="memTemplParams" colspan="2">template&lt;<a class="el" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> L, typename T &gt; </td></tr>
<tr class="memitem:a0f73dee532160054f7aeb723d3371162"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L+1, L+1, T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacetdm_1_1projective.html#a0f73dee532160054f7aeb723d3371162">scale</a> (const <a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L+1, L+1, T &gt; &amp;m, const <a class="el" href="structtdm_1_1vec.html">vec</a>&lt; L, T &gt; &amp;factors)</td></tr>
<tr class="separator:a0f73dee532160054f7aeb723d3371162"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3af28aac1eb1d3b1b6d6e66fdc95b59"><td class="memTemplParams" colspan="2">template&lt;<a class="el" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> L, typename T &gt; </td></tr>
<tr class="memitem:aa3af28aac1eb1d3b1b6d6e66fdc95b59"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L+1, L+1, T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacetdm_1_1projective.html#aa3af28aac1eb1d3b1b6d6e66fdc95b59">scale</a> (T factor)</td></tr>
<tr class="separator:aa3af28aac1eb1d3b1b6d6e66fdc95b59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af07ccf333c2d31d6b28e2a854e4b758a"><td class="memTemplParams" colspan="2">template&lt;<a class="el" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> L, typename T &gt; </td></tr>
<tr class="memitem:af07ccf333c2d31d6b28e2a854e4b758a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L, L, T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacetdm_1_1projective.html#af07ccf333c2d31d6b28e2a854e4b758a">scale</a> (const <a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L, L, T &gt; &amp;m, T factor)</td></tr>
<tr class="separator:af07ccf333c2d31d6b28e2a854e4b758a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acebdfbfa65a7452ac8b81acd0b618eee"><td class="memTemplParams" colspan="2">template&lt;<a class="el" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> L, typename T &gt; </td></tr>
<tr class="memitem:acebdfbfa65a7452ac8b81acd0b618eee"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L+1, L+1, T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacetdm_1_1projective.html#acebdfbfa65a7452ac8b81acd0b618eee">translate</a> (const <a class="el" href="structtdm_1_1vec.html">vec</a>&lt; L, T &gt; &amp;position)</td></tr>
<tr class="separator:acebdfbfa65a7452ac8b81acd0b618eee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac120cb33694cec606634642dc48019e9"><td class="memTemplParams" colspan="2">template&lt;<a class="el" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> L, typename T &gt; </td></tr>
<tr class="memitem:ac120cb33694cec606634642dc48019e9"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L+1, L+1, T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacetdm_1_1projective.html#ac120cb33694cec606634642dc48019e9">translate</a> (const <a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L+1, L+1, T &gt; &amp;m, const <a class="el" href="structtdm_1_1vec.html">vec</a>&lt; L, T &gt; &amp;position)</td></tr>
<tr class="separator:ac120cb33694cec606634642dc48019e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6b0c39e3a4f3435a1b3445dc0a93e9b"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ab6b0c39e3a4f3435a1b3445dc0a93e9b"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structtdm_1_1projective_1_1axis__angle.html">axis_angle</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacetdm_1_1projective.html#ab6b0c39e3a4f3435a1b3445dc0a93e9b">xyz2AxisAngle</a> (T xRadians, T yRadians, T zRadians, <a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aed">handedness</a> h=<a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aeda7c4f29407893c334a6cb7a87bf045c0d">handedness::right</a>)</td></tr>
<tr class="separator:ab6b0c39e3a4f3435a1b3445dc0a93e9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a070fb9fdf44db8b854ade70147a8ce4c"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a070fb9fdf44db8b854ade70147a8ce4c"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structtdm_1_1projective_1_1axis__angle.html">axis_angle</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacetdm_1_1projective.html#a070fb9fdf44db8b854ade70147a8ce4c">xyz2AxisAngle</a> (const <a class="el" href="namespacetdm.html#a0ee1135015dc380efab2a1f62e27d32c">vec3</a>&lt; T &gt; &amp;radians, <a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aed">handedness</a> h=<a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aeda7c4f29407893c334a6cb7a87bf045c0d">handedness::right</a>)</td></tr>
<tr class="separator:a070fb9fdf44db8b854ade70147a8ce4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a531b788392d682b3b5507feceeaba471" name="a531b788392d682b3b5507feceeaba471"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a531b788392d682b3b5507feceeaba471">&#9670;&nbsp;</a></span>rotate() <span class="overload">[1/6]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt; tdm::projective::rotate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>m</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacetdm.html#a0ee1135015dc380efab2a1f62e27d32c">vec3</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>axis</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>radians</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aed">handedness</a>&#160;</td>
<td class="paramname"><em>h</em> = <code><a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aeda7c4f29407893c334a6cb7a87bf045c0d">handedness::right</a></code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 77</span> {</div>
<div class="line"><span class="lineno"> 78</span> <span class="keywordflow">return</span> m * <a class="code hl_function" href="namespacetdm_1_1projective.html#abac0d987f95650a5086a231364064fbb">rotate</a>(axis, <a class="code hl_function" href="namespacetdm.html#a26fb6809e4f953161a41fe43c18465d9">radians</a>, h);</div>
<div class="line"><span class="lineno"> 79</span>}</div>
<div class="ttc" id="anamespacetdm_1_1projective_html_abac0d987f95650a5086a231364064fbb"><div class="ttname"><a href="namespacetdm_1_1projective.html#abac0d987f95650a5086a231364064fbb">tdm::projective::rotate</a></div><div class="ttdeci">mat4&lt; T &gt; rotate(const mat4&lt; T &gt; &amp;m, const vec3&lt; T &gt; &amp;radians, handedness h=handedness::right)</div><div class="ttdef"><b>Definition:</b> Transforms.h:118</div></div>
<div class="ttc" id="anamespacetdm_html_a26fb6809e4f953161a41fe43c18465d9"><div class="ttname"><a href="namespacetdm.html#a26fb6809e4f953161a41fe43c18465d9">tdm::radians</a></div><div class="ttdeci">std::enable_if&lt; std::is_floating_point&lt; T &gt;::value, T &gt;::type radians(T degrees)</div><div class="ttdef"><b>Definition:</b> Transforms.h:21</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="abac0d987f95650a5086a231364064fbb" name="abac0d987f95650a5086a231364064fbb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abac0d987f95650a5086a231364064fbb">&#9670;&nbsp;</a></span>rotate() <span class="overload">[2/6]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt; tdm::projective::rotate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>m</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacetdm.html#a0ee1135015dc380efab2a1f62e27d32c">vec3</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>radians</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aed">handedness</a>&#160;</td>
<td class="paramname"><em>h</em> = <code><a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aeda7c4f29407893c334a6cb7a87bf045c0d">handedness::right</a></code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 118</span> {</div>
<div class="line"><span class="lineno"> 119</span> <span class="keywordflow">return</span> m * <a class="code hl_function" href="namespacetdm_1_1projective.html#abac0d987f95650a5086a231364064fbb">rotate</a>(<a class="code hl_function" href="namespacetdm.html#a26fb6809e4f953161a41fe43c18465d9">radians</a>[0], <a class="code hl_function" href="namespacetdm.html#a26fb6809e4f953161a41fe43c18465d9">radians</a>[1], <a class="code hl_function" href="namespacetdm.html#a26fb6809e4f953161a41fe43c18465d9">radians</a>[2], h);</div>
<div class="line"><span class="lineno"> 120</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a734e16d0c46de4f6622e1c8a631bfa53" name="a734e16d0c46de4f6622e1c8a631bfa53"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a734e16d0c46de4f6622e1c8a631bfa53">&#9670;&nbsp;</a></span>rotate() <span class="overload">[3/6]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt; tdm::projective::rotate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>m</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>xRadians</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>yRadians</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>zRadians</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aed">handedness</a>&#160;</td>
<td class="paramname"><em>h</em> = <code><a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aeda7c4f29407893c334a6cb7a87bf045c0d">handedness::right</a></code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 108</span> {</div>
<div class="line"><span class="lineno"> 109</span> <span class="keywordflow">return</span> m * <a class="code hl_function" href="namespacetdm_1_1projective.html#abac0d987f95650a5086a231364064fbb">rotate</a>(xRadians, yRadians, zRadians, h);</div>
<div class="line"><span class="lineno"> 110</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a6d871452e6ba8e5af822c3d3f4573139" name="a6d871452e6ba8e5af822c3d3f4573139"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d871452e6ba8e5af822c3d3f4573139">&#9670;&nbsp;</a></span>rotate() <span class="overload">[4/6]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt; tdm::projective::rotate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="namespacetdm.html#a0ee1135015dc380efab2a1f62e27d32c">vec3</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>axis</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>radians</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aed">handedness</a>&#160;</td>
<td class="paramname"><em>h</em> = <code><a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aeda7c4f29407893c334a6cb7a87bf045c0d">handedness::right</a></code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 53</span> {</div>
<div class="line"><span class="lineno"> 54</span> <span class="keyword">const</span> T c = std::cos(<a class="code hl_function" href="namespacetdm.html#a26fb6809e4f953161a41fe43c18465d9">radians</a>);</div>
<div class="line"><span class="lineno"> 55</span> <span class="keyword">const</span> T s = std::sin(<a class="code hl_function" href="namespacetdm.html#a26fb6809e4f953161a41fe43c18465d9">radians</a>) * <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(h);</div>
<div class="line"><span class="lineno"> 56</span> <span class="keyword">const</span> T one_minus_c = <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(1) - c;</div>
<div class="line"><span class="lineno"> 57</span> <span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1vec.html">vec3&lt;T&gt;</a> n = <a class="code hl_function" href="namespacetdm.html#a19d3e09b0d8eea38abc06732ed3775a7">normalize</a>(axis);</div>
<div class="line"><span class="lineno"> 58</span> <span class="keywordflow">return</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat4&lt;T&gt;</a>{n[0] * n[0] * one_minus_c + c,</div>
<div class="line"><span class="lineno"> 59</span> n[1] * n[0] * one_minus_c - n[2] * s,</div>
<div class="line"><span class="lineno"> 60</span> n[2] * n[0] * one_minus_c + n[1] * s,</div>
<div class="line"><span class="lineno"> 61</span> <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(0),</div>
<div class="line"><span class="lineno"> 62</span> n[0] * n[1] * one_minus_c + n[2] * s,</div>
<div class="line"><span class="lineno"> 63</span> n[1] * n[1] * one_minus_c + c,</div>
<div class="line"><span class="lineno"> 64</span> n[2] * n[1] * one_minus_c - n[0] * s,</div>
<div class="line"><span class="lineno"> 65</span> <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(0),</div>
<div class="line"><span class="lineno"> 66</span> n[0] * n[2] * one_minus_c - n[1] * s,</div>
<div class="line"><span class="lineno"> 67</span> n[1] * n[2] * one_minus_c + n[0] * s,</div>
<div class="line"><span class="lineno"> 68</span> n[2] * n[2] * one_minus_c + c,</div>
<div class="line"><span class="lineno"> 69</span> <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(0),</div>
<div class="line"><span class="lineno"> 70</span> <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(0),</div>
<div class="line"><span class="lineno"> 71</span> <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(0),</div>
<div class="line"><span class="lineno"> 72</span> <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(0),</div>
<div class="line"><span class="lineno"> 73</span> <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(1)};</div>
<div class="line"><span class="lineno"> 74</span>}</div>
<div class="ttc" id="anamespacetdm_html_a19d3e09b0d8eea38abc06732ed3775a7"><div class="ttname"><a href="namespacetdm.html#a19d3e09b0d8eea38abc06732ed3775a7">tdm::normalize</a></div><div class="ttdeci">std::enable_if&lt; std::is_floating_point&lt; T &gt;::value, vec&lt; L, T &gt; &gt;::type normalize(vec&lt; L, T &gt; v)</div><div class="ttdef"><b>Definition:</b> Computations.h:51</div></div>
<div class="ttc" id="astructtdm_1_1mat_html"><div class="ttname"><a href="structtdm_1_1mat.html">tdm::mat</a></div><div class="ttdef"><b>Definition:</b> Mat.h:17</div></div>
<div class="ttc" id="astructtdm_1_1vec_html"><div class="ttname"><a href="structtdm_1_1vec.html">tdm::vec</a></div><div class="ttdef"><b>Definition:</b> Vec.h:10</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a55b0b5111d65a205801e520b83a91e4d" name="a55b0b5111d65a205801e520b83a91e4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a55b0b5111d65a205801e520b83a91e4d">&#9670;&nbsp;</a></span>rotate() <span class="overload">[5/6]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt; tdm::projective::rotate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="namespacetdm.html#a0ee1135015dc380efab2a1f62e27d32c">vec3</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>radians</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aed">handedness</a>&#160;</td>
<td class="paramname"><em>h</em> = <code><a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aeda7c4f29407893c334a6cb7a87bf045c0d">handedness::right</a></code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 113</span> {</div>
<div class="line"><span class="lineno"> 114</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacetdm_1_1projective.html#abac0d987f95650a5086a231364064fbb">rotate</a>(<a class="code hl_function" href="namespacetdm.html#a26fb6809e4f953161a41fe43c18465d9">radians</a>[0], <a class="code hl_function" href="namespacetdm.html#a26fb6809e4f953161a41fe43c18465d9">radians</a>[1], <a class="code hl_function" href="namespacetdm.html#a26fb6809e4f953161a41fe43c18465d9">radians</a>[2], h);</div>
<div class="line"><span class="lineno"> 115</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a64b5932ac17185165bf65c2000cddfb4" name="a64b5932ac17185165bf65c2000cddfb4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a64b5932ac17185165bf65c2000cddfb4">&#9670;&nbsp;</a></span>rotate() <span class="overload">[6/6]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespacetdm.html#a3fe6100e4962363b1a4be245b13d527c">mat4</a>&lt; T &gt; tdm::projective::rotate </td>
<td>(</td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>xRadians</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>yRadians</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>zRadians</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aed">handedness</a>&#160;</td>
<td class="paramname"><em>h</em> = <code><a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aeda7c4f29407893c334a6cb7a87bf045c0d">handedness::right</a></code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 82</span> {</div>
<div class="line"><span class="lineno"> 83</span> <span class="keyword">const</span> T sx = std::sin(xRadians) * <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(h);</div>
<div class="line"><span class="lineno"> 84</span> <span class="keyword">const</span> T sy = std::sin(yRadians) * <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(h);</div>
<div class="line"><span class="lineno"> 85</span> <span class="keyword">const</span> T sz = std::sin(zRadians) * <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(h);</div>
<div class="line"><span class="lineno"> 86</span> <span class="keyword">const</span> T cx = std::cos(xRadians);</div>
<div class="line"><span class="lineno"> 87</span> <span class="keyword">const</span> T cy = std::cos(yRadians);</div>
<div class="line"><span class="lineno"> 88</span> <span class="keyword">const</span> T cz = std::cos(zRadians);</div>
<div class="line"><span class="lineno"> 89</span> <span class="keyword">auto</span> rx = <a class="code hl_struct" href="structtdm_1_1mat.html">mat4&lt;T&gt;::identity</a>();</div>
<div class="line"><span class="lineno"> 90</span> rx(1, 1) = cx;</div>
<div class="line"><span class="lineno"> 91</span> rx(1, 2) = sx;</div>
<div class="line"><span class="lineno"> 92</span> rx(2, 1) = -sx;</div>
<div class="line"><span class="lineno"> 93</span> rx(2, 2) = cx;</div>
<div class="line"><span class="lineno"> 94</span> <span class="keyword">auto</span> ry = <a class="code hl_struct" href="structtdm_1_1mat.html">mat4&lt;T&gt;::identity</a>();</div>
<div class="line"><span class="lineno"> 95</span> ry(0, 0) = cy;</div>
<div class="line"><span class="lineno"> 96</span> ry(0, 2) = -sy;</div>
<div class="line"><span class="lineno"> 97</span> ry(2, 0) = sy;</div>
<div class="line"><span class="lineno"> 98</span> ry(2, 2) = cy;</div>
<div class="line"><span class="lineno"> 99</span> <span class="keyword">auto</span> rz = <a class="code hl_struct" href="structtdm_1_1mat.html">mat4&lt;T&gt;::identity</a>();</div>
<div class="line"><span class="lineno"> 100</span> rz(0, 0) = cz;</div>
<div class="line"><span class="lineno"> 101</span> rz(0, 1) = sz;</div>
<div class="line"><span class="lineno"> 102</span> rz(1, 0) = -sz;</div>
<div class="line"><span class="lineno"> 103</span> rz(1, 1) = cz;</div>
<div class="line"><span class="lineno"> 104</span> <span class="keywordflow">return</span> rx * ry * rz;</div>
<div class="line"><span class="lineno"> 105</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a0f73dee532160054f7aeb723d3371162" name="a0f73dee532160054f7aeb723d3371162"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0f73dee532160054f7aeb723d3371162">&#9670;&nbsp;</a></span>scale() <span class="overload">[1/4]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;<a class="el" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> L, typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L+1, L+1, T &gt; tdm::projective::scale </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L+1, L+1, T &gt; &amp;&#160;</td>
<td class="paramname"><em>m</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structtdm_1_1vec.html">vec</a>&lt; L, T &gt; &amp;&#160;</td>
<td class="paramname"><em>factors</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 132</span> {</div>
<div class="line"><span class="lineno"> 133</span> <span class="keywordflow">return</span> m * <a class="code hl_function" href="namespacetdm_1_1projective.html#af07ccf333c2d31d6b28e2a854e4b758a">scale</a>(factors);</div>
<div class="line"><span class="lineno"> 134</span>}</div>
<div class="ttc" id="anamespacetdm_1_1projective_html_af07ccf333c2d31d6b28e2a854e4b758a"><div class="ttname"><a href="namespacetdm_1_1projective.html#af07ccf333c2d31d6b28e2a854e4b758a">tdm::projective::scale</a></div><div class="ttdeci">mat&lt; L, L, T &gt; scale(const mat&lt; L, L, T &gt; &amp;m, T factor)</div><div class="ttdef"><b>Definition:</b> Transforms.h:142</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="af07ccf333c2d31d6b28e2a854e4b758a" name="af07ccf333c2d31d6b28e2a854e4b758a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af07ccf333c2d31d6b28e2a854e4b758a">&#9670;&nbsp;</a></span>scale() <span class="overload">[2/4]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;<a class="el" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> L, typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L, L, T &gt; tdm::projective::scale </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L, L, T &gt; &amp;&#160;</td>
<td class="paramname"><em>m</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>factor</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 142</span> {</div>
<div class="line"><span class="lineno"> 143</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacetdm_1_1projective.html#af07ccf333c2d31d6b28e2a854e4b758a">scale</a>(m, <a class="code hl_struct" href="structtdm_1_1vec.html">vec&lt;L - 1, T&gt;</a>{factor});</div>
<div class="line"><span class="lineno"> 144</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a3f30f4777ac8bdc4e0eb5c96ab634a58" name="a3f30f4777ac8bdc4e0eb5c96ab634a58"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f30f4777ac8bdc4e0eb5c96ab634a58">&#9670;&nbsp;</a></span>scale() <span class="overload">[3/4]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;<a class="el" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> L, typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L+1, L+1, T &gt; tdm::projective::scale </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structtdm_1_1vec.html">vec</a>&lt; L, T &gt; &amp;&#160;</td>
<td class="paramname"><em>factors</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 123</span> {</div>
<div class="line"><span class="lineno"> 124</span> <a class="code hl_struct" href="structtdm_1_1vec.html">vec&lt;L + 1, T&gt;</a> diagonal{<span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(1)};</div>
<div class="line"><span class="lineno"> 125</span> factors.<a class="code hl_function" href="structtdm_1_1vec.html#a127a38ee0747536a683201485e0d40c4">apply</a>([&amp;diagonal](<span class="keyword">const</span> T&amp; value, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> i) {</div>
<div class="line"><span class="lineno"> 126</span> diagonal[i] = value;</div>
<div class="line"><span class="lineno"> 127</span> });</div>
<div class="line"><span class="lineno"> 128</span> <span class="keywordflow">return</span> mat&lt;L + 1, L + 1, T&gt;::diagonal(diagonal);</div>
<div class="line"><span class="lineno"> 129</span>}</div>
<div class="ttc" id="anamespacetdm_html_a644d3de5f1ca2eaa628196afcfbadef4"><div class="ttname"><a href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">tdm::dim_t</a></div><div class="ttdeci">std::size_t dim_t</div><div class="ttdef"><b>Definition:</b> Types.h:22</div></div>
<div class="ttc" id="astructtdm_1_1vec_html_a127a38ee0747536a683201485e0d40c4"><div class="ttname"><a href="structtdm_1_1vec.html#a127a38ee0747536a683201485e0d40c4">tdm::vec::apply</a></div><div class="ttdeci">vec &amp; apply(F func)</div><div class="ttdef"><b>Definition:</b> Vec.h:68</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa3af28aac1eb1d3b1b6d6e66fdc95b59" name="aa3af28aac1eb1d3b1b6d6e66fdc95b59"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa3af28aac1eb1d3b1b6d6e66fdc95b59">&#9670;&nbsp;</a></span>scale() <span class="overload">[4/4]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;<a class="el" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> L, typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L+1, L+1, T &gt; tdm::projective::scale </td>
<td>(</td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>factor</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 137</span> {</div>
<div class="line"><span class="lineno"> 138</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacetdm_1_1projective.html#af07ccf333c2d31d6b28e2a854e4b758a">scale</a>(<a class="code hl_struct" href="structtdm_1_1vec.html">vec&lt;L, T&gt;</a>{factor});</div>
<div class="line"><span class="lineno"> 139</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="ac120cb33694cec606634642dc48019e9" name="ac120cb33694cec606634642dc48019e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac120cb33694cec606634642dc48019e9">&#9670;&nbsp;</a></span>translate() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;<a class="el" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> L, typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L+1, L+1, T &gt; tdm::projective::translate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L+1, L+1, T &gt; &amp;&#160;</td>
<td class="paramname"><em>m</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structtdm_1_1vec.html">vec</a>&lt; L, T &gt; &amp;&#160;</td>
<td class="paramname"><em>position</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 156</span> {</div>
<div class="line"><span class="lineno"> 157</span> <span class="keywordflow">return</span> m * <a class="code hl_function" href="namespacetdm_1_1projective.html#ac120cb33694cec606634642dc48019e9">translate</a>(position);</div>
<div class="line"><span class="lineno"> 158</span>}</div>
<div class="ttc" id="anamespacetdm_1_1projective_html_ac120cb33694cec606634642dc48019e9"><div class="ttname"><a href="namespacetdm_1_1projective.html#ac120cb33694cec606634642dc48019e9">tdm::projective::translate</a></div><div class="ttdeci">mat&lt; L+1, L+1, T &gt; translate(const mat&lt; L+1, L+1, T &gt; &amp;m, const vec&lt; L, T &gt; &amp;position)</div><div class="ttdef"><b>Definition:</b> Transforms.h:156</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="acebdfbfa65a7452ac8b81acd0b618eee" name="acebdfbfa65a7452ac8b81acd0b618eee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acebdfbfa65a7452ac8b81acd0b618eee">&#9670;&nbsp;</a></span>translate() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;<a class="el" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> L, typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structtdm_1_1mat.html">mat</a>&lt; L+1, L+1, T &gt; tdm::projective::translate </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="structtdm_1_1vec.html">vec</a>&lt; L, T &gt; &amp;&#160;</td>
<td class="paramname"><em>position</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 147</span> {</div>
<div class="line"><span class="lineno"> 148</span> <span class="keyword">auto</span> m = <a class="code hl_struct" href="structtdm_1_1mat.html">mat&lt;L + 1, L + 1, T&gt;::identity</a>();</div>
<div class="line"><span class="lineno"> 149</span> position.<a class="code hl_function" href="structtdm_1_1vec.html#a127a38ee0747536a683201485e0d40c4">apply</a>([&amp;m](<span class="keyword">const</span> T&amp; value, <a class="code hl_typedef" href="namespacetdm.html#a644d3de5f1ca2eaa628196afcfbadef4">dim_t</a> i) {</div>
<div class="line"><span class="lineno"> 150</span> m(L, i) = value;</div>
<div class="line"><span class="lineno"> 151</span> });</div>
<div class="line"><span class="lineno"> 152</span> <span class="keywordflow">return</span> m;</div>
<div class="line"><span class="lineno"> 153</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a070fb9fdf44db8b854ade70147a8ce4c" name="a070fb9fdf44db8b854ade70147a8ce4c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a070fb9fdf44db8b854ade70147a8ce4c">&#9670;&nbsp;</a></span>xyz2AxisAngle() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structtdm_1_1projective_1_1axis__angle.html">axis_angle</a>&lt; T &gt; tdm::projective::xyz2AxisAngle </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="namespacetdm.html#a0ee1135015dc380efab2a1f62e27d32c">vec3</a>&lt; T &gt; &amp;&#160;</td>
<td class="paramname"><em>radians</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aed">handedness</a>&#160;</td>
<td class="paramname"><em>h</em> = <code><a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aeda7c4f29407893c334a6cb7a87bf045c0d">handedness::right</a></code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 178</span> {</div>
<div class="line"><span class="lineno"> 179</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacetdm_1_1projective.html#a070fb9fdf44db8b854ade70147a8ce4c">xyz2AxisAngle</a>(<a class="code hl_function" href="namespacetdm.html#a26fb6809e4f953161a41fe43c18465d9">radians</a>[0], <a class="code hl_function" href="namespacetdm.html#a26fb6809e4f953161a41fe43c18465d9">radians</a>[1], <a class="code hl_function" href="namespacetdm.html#a26fb6809e4f953161a41fe43c18465d9">radians</a>[2], h);</div>
<div class="line"><span class="lineno"> 180</span>}</div>
<div class="ttc" id="anamespacetdm_1_1projective_html_a070fb9fdf44db8b854ade70147a8ce4c"><div class="ttname"><a href="namespacetdm_1_1projective.html#a070fb9fdf44db8b854ade70147a8ce4c">tdm::projective::xyz2AxisAngle</a></div><div class="ttdeci">axis_angle&lt; T &gt; xyz2AxisAngle(const vec3&lt; T &gt; &amp;radians, handedness h=handedness::right)</div><div class="ttdef"><b>Definition:</b> Transforms.h:178</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab6b0c39e3a4f3435a1b3445dc0a93e9b" name="ab6b0c39e3a4f3435a1b3445dc0a93e9b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6b0c39e3a4f3435a1b3445dc0a93e9b">&#9670;&nbsp;</a></span>xyz2AxisAngle() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structtdm_1_1projective_1_1axis__angle.html">axis_angle</a>&lt; T &gt; tdm::projective::xyz2AxisAngle </td>
<td>(</td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>xRadians</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>yRadians</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>zRadians</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aed">handedness</a>&#160;</td>
<td class="paramname"><em>h</em> = <code><a class="el" href="namespacetdm.html#a4c1144e7275ec98fc638359109142aeda7c4f29407893c334a6cb7a87bf045c0d">handedness::right</a></code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 167</span> {</div>
<div class="line"><span class="lineno"> 168</span> <span class="keyword">const</span> <a class="code hl_struct" href="structtdm_1_1mat.html">mat4&lt;T&gt;</a> m = <a class="code hl_function" href="namespacetdm_1_1projective.html#abac0d987f95650a5086a231364064fbb">rotate</a>(xRadians, yRadians, zRadians, h);</div>
<div class="line"><span class="lineno"> 169</span> <span class="keyword">const</span> T <a class="code hl_function" href="namespacetdm.html#a26fb6809e4f953161a41fe43c18465d9">radians</a> = std::acos((<a class="code hl_function" href="namespacetdm.html#af2af6050315345aa0db49cc5f77ba33f">trace</a>(m.template submat&lt;3, 3&gt;(0, 0)) - <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(1)) / <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(2));</div>
<div class="line"><span class="lineno"> 170</span> <span class="keyword">const</span> T factor = <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(1) / (<span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(2) * std::sin(<a class="code hl_function" href="namespacetdm.html#a26fb6809e4f953161a41fe43c18465d9">radians</a>));</div>
<div class="line"><span class="lineno"> 171</span> <span class="keyword">const</span> T x = factor * (m(2, 1) - m(1, 2));</div>
<div class="line"><span class="lineno"> 172</span> <span class="keyword">const</span> T y = factor * (m(0, 2) - m(2, 0));</div>
<div class="line"><span class="lineno"> 173</span> <span class="keyword">const</span> T z = factor * (m(1, 0) - m(0, 1));</div>
<div class="line"><span class="lineno"> 174</span> <span class="keywordflow">return</span> {{x, y, z}, <a class="code hl_function" href="namespacetdm.html#a26fb6809e4f953161a41fe43c18465d9">radians</a>};</div>
<div class="line"><span class="lineno"> 175</span>}</div>
<div class="ttc" id="anamespacetdm_html_af2af6050315345aa0db49cc5f77ba33f"><div class="ttname"><a href="namespacetdm.html#af2af6050315345aa0db49cc5f77ba33f">tdm::trace</a></div><div class="ttdeci">T trace(const mat&lt; N, N, T &gt; &amp;m)</div><div class="ttdef"><b>Definition:</b> Computations.h:151</div></div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
</small></address>
</body>
</html>