etk/_matrix_8hpp_source.html

193 lines
84 KiB
HTML

<!-- HTML header for doxygen 1.8.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- For Mobile Devices -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.12"/>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<title>Etk: Ewol Tool Kit: framework/atria-soft/etk/etk/math/Matrix.hpp Source File</title>
<!--<link href="tabs.css" rel="stylesheet" type="text/css"/>-->
<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" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
<script type="text/javascript" src="doxy-boot.js"></script>
</head>
<body>
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand">Etk: Ewol Tool Kit 0.10.0</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="index.html">Main&nbsp;Page</a></li>
<li><a href="pages.html">Related&nbsp;Pages</a></li>
<li><a href="namespaces.html">Namespaces</a></li>
<li><a href="annotated.html">Classes</a></li>
<li><a href="files.html">Files</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
Link-libs<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="http://HeeroYui.github.io/lutin">lutin</a></li>
<li><a href="http://atria-soft.github.io/ewol">ewol</a></li>
<li><a href="http://atria-soft.github.io/echrono">echrono</a></li>
<li><a href="http://atria-soft.github.io/etk">etk</a></li>
<li><a href="http://atria-soft.github.io/ejson">ejson</a></li>
<li><a href="http://atria-soft.github.io/exml">exml</a></li>
<li><a href="http://atria-soft.github.io/esvg">esvg</a></li>
<li><a href="http://atria-soft.github.io/egami">egami</a></li>
<li><a href="http://atria-soft.github.io/gale">gale</a></li>
<li><a href="http://atria-soft.github.io/ege">ege</a></li>
<li><a href="http://atria-soft.github.io/elog">elog</a></li>
<li><a href="http://atria-soft.github.io/ememory">ememory</a></li>
<li><a href="http://atria-soft.github.io/enet">enet</a></li>
<li><a href="http://atria-soft.github.io/eproperty">eproperty</a></li>
<li><a href="http://atria-soft.github.io/esignal">esignal</a></li>
<li><a href="http://atria-soft.github.io/etranslate">etranslate</a></li>
<li><a href="http://atria-soft.github.io/zeus">zeus</a></li>
<li><a href="http://musicdsp.github.io/audio-ess">audio-ess</a></li>
<li><a href="http://musicdsp.github.io/audio">audio</a></li>
<li><a href="http://musicdsp.github.io/audio-drain">audio-drain</a></li>
<li><a href="http://musicdsp.github.io/audio-orchestra">audio-orchestra</a></li>
<li><a href="http://musicdsp.github.io/audio-river">audio-river</a></li>
</ul>
</li>
</ul>
<div id="search-box" class="input-group">
<div class="input-group-btn">
<button aria-expanded="false" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
<span class="glyphicon glyphicon-search"></span>
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a href="#">All</a></li>
<li><a href="#">Classes</a></li>
<li><a href="#">Namespaces</a></li>
<li><a href="#">Files</a></li>
<li><a href="#">Functions</a></li>
<li><a href="#">Variables</a></li>
<li><a href="#">Typedefs</a></li>
<li><a href="#">Enumerations</a></li>
<li><a href="#">Enumerator</a></li>
<li><a href="#">Friends</a></li>
<li><a href="#">Macros</a></li>
<li><a href="#">Pages</a></li>
</ul>
</div>
<button id="search-close" type="button" class="close" aria-label="Close">
<span aria-hidden="true"></span>
</button>
<input id="search-field" class="form-control" accesskey="S" onkeydown="searchBox.OnSearchFieldChange(event);" placeholder="Search ..." type="text">
</div>
</div><!--/.nav-collapse -->
</div>
</nav>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div class="content" id="content">
<div class="container">
<div class="row">
<div class="col-sm-12 panel panel-default" style="padding-bottom: 15px;">
<div style="margin-bottom: 15px;margin-top: 60px;">
<!-- end header part -->
<!-- Generated by Doxygen 1.8.12 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</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="dir_644e041c3a6521da7b27eba0e4eb2b95.html">framework</a></li><li class="navelem"><a class="el" href="dir_a094892b17be858f66bf3446bbb755c7.html">atria-soft</a></li><li class="navelem"><a class="el" href="dir_101ca691570835542fc832f149ed9b11.html">etk</a></li><li class="navelem"><a class="el" href="dir_8e1854e033aa3ec68b8dd13c773d2923.html">etk</a></li><li class="navelem"><a class="el" href="dir_f311a0a6eba1dc32efa9f7eace7d8ad2.html">math</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Matrix.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="_matrix_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="types_8hpp.html">etk/types.hpp</a>&gt;</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_vector2_d_8hpp.html">etk/math/Vector2D.hpp</a>&gt;</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceetk.html">etk</a> {</div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html"> 17</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">class </span><a class="code" href="classetk_1_1_matrix.html">Matrix</a> {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <a class="code" href="classetk_1_1_vector2_d.html">uivec2</a> m_size; </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; std::vector&lt;T&gt; m_data; </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#aad86d66460d629601a63a70739991d09"> 27</a></span>&#160; <a class="code" href="classetk_1_1_matrix.html#aad86d66460d629601a63a70739991d09">Matrix</a>(<span class="keyword">const</span> <a class="code" href="classetk_1_1_vector2_d.html">ivec2</a>&amp; _size, T* _defaultVal=<span class="keyword">nullptr</span>) :</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; m_size(_size),</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="namespaceetk.html">etk</a>::<a class="code" href="classetk_1_1_vector2_d.html">Vector2D</a>&lt;T&gt;(_size.x()* _size.y()) {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">if</span> (defaultVal == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="_matrix_8hpp.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">// copy all the elements</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> iii = 0;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; iii &lt;= m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>()*m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; ++iii) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">// cast and set value : </span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; m_data[iii] = T(_defaultVal++);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#ab50a671a8e9f9d7b1b6a3d519f6a2847"> 48</a></span>&#160; <a class="code" href="classetk_1_1_matrix.html#ab50a671a8e9f9d7b1b6a3d519f6a2847">Matrix</a>(int32_t _width=0, int32_t _heigh=0, T* _defaultVal=<span class="keyword">nullptr</span>) :</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; m_size(_width, _heigh),</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespaceetk.html">etk</a>::<a class="code" href="classetk_1_1_vector2_d.html">Vector2D</a>&lt;T&gt;(_width*_heigh) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (_defaultVal == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="_matrix_8hpp.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// copy all the elements</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> iii = 0;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; iii &lt;= m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>()*m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; ++iii) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment">// cast and set value : </span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; m_data[iii] = T(_defaultVal++);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> ETK_TYPE_MATRIX_2&gt;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#afffb93555f328b3972c456e2f0e5aca8"> 68</a></span>&#160; <a class="code" href="classetk_1_1_matrix.html#afffb93555f328b3972c456e2f0e5aca8">Matrix</a>(<span class="keyword">const</span> <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;ETK_TYPE_MATRIX_2&gt;</a>&amp; _obj) :</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; m_size(_obj.m_size),</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="namespaceetk.html">etk</a>::<a class="code" href="classetk_1_1_vector2_d.html">Vector2D</a>&lt;T&gt;(_obj.m_size.x()* _obj.m_size.y()) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="comment">// copy all the elements</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> iii = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; iii &lt;= m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>()*m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; ++iii) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="comment">// cast and set value : </span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; m_data[iii] = T(_obj.m_data[iii]);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classetk_1_1_matrix.html#a8ae71a3749309ebea595c9619d28878e">~Matrix</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#a15251e4a208c761f60f4314e9a16b423"> 89</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a>&amp; <a class="code" href="classetk_1_1_matrix.html#a15251e4a208c761f60f4314e9a16b423">operator= </a>(<span class="keyword">const</span> <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a>&amp; _obj ) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">// check if it was the same pointer</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">this</span> == &amp;_obj ) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="comment">// copy data :</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; m_size = _obj.m_size;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; m_data = _obj.m_data;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#aa1ed48736a8b4948a33eec76d88369d2"> 104</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a>&amp; <a class="code" href="classetk_1_1_matrix.html#a15251e4a208c761f60f4314e9a16b423">operator= </a>(T&amp; _value) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="comment">// set data :</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> iii = 0;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; iii &lt;= m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>()*m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; ++iii) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; m_data = _value;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#abf3cb49a1c359fed6e006112c593c476"> 119</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classetk_1_1_matrix.html#abf3cb49a1c359fed6e006112c593c476">operator== </a>(<span class="keyword">const</span> <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a>&amp; _obj)<span class="keyword"> const </span>{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span> (m_data == _obj.m_data);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#a462dc7b2109911c681808e4c39e0242c"> 128</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classetk_1_1_matrix.html#a462dc7b2109911c681808e4c39e0242c">operator!= </a>(<span class="keyword">const</span> <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a>&amp; _obj)<span class="keyword"> const </span>{</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> (m_data != _obj.m_data);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#a56b9d699e1e6df0819553bc18580ebc5"> 141</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a>&amp; <a class="code" href="classetk_1_1_matrix.html#a56b9d699e1e6df0819553bc18580ebc5">operator+= </a>(<span class="keyword">const</span> <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a>&amp; _obj) {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">if</span> (m_size != _obj.m_size) {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">//TK_CRITICAL(&quot;add 2 Matrix with différent size ... ==&gt; generate the max size of all the 2 matrix&quot;);</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classetk_1_1_matrix.html">etk::Matrix&lt;T&gt;</a> tmpMatrix(std::max(m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>(),_obj.m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>()), std::max(m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>(),_obj.m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>()));</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">for</span> (int32_t jjj=0; jjj&lt; m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>(); jjj++) {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; T* tmpPointer = tmpMatrix[jjj];</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; T* tmpPointerIn = (*this)[jjj];</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">for</span> (int32_t iii=0; iii&lt; m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>(); iii++) {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; tmpPointer[iii] = tmpPointerIn[iii];</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">for</span> (int32_t jjj=0; jjj&lt; _obj.m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>(); jjj++) {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; T* tmpPointer = tmpMatrix[jjj];</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; T* tmpPointerIn = _obj[jjj];</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">for</span> (int32_t iii=0; iii&lt; _obj.m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>(); iii++) {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; tmpPointer[iii] += tmpPointerIn[iii];</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">// copy in local :</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; m_size = tmpMatrix.m_size;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; m_data = tmpMatrix.m_data;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="comment">// copy data for the same size:</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">for</span> (int32_t iii=0; iii&lt; m_data.size(); iii++) {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; m_data[iii] += _obj.m_data[iii];</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#ab4be6249290e9cc83e11fb5a7d51a71a"> 180</a></span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> <a class="code" href="classetk_1_1_matrix.html#ab4be6249290e9cc83e11fb5a7d51a71a">operator+ </a>(<span class="keyword">const</span> <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a>&amp; _obj) {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> tmpp(*<span class="keyword">this</span>);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; tmpp += _obj;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> tmpp;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#a4f9f11ea323f846d3dff802a8ae42dfc"> 195</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a>&amp; <a class="code" href="classetk_1_1_matrix.html#a4f9f11ea323f846d3dff802a8ae42dfc">operator-= </a>(<span class="keyword">const</span> <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a>&amp; _obj) {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">if</span> (m_size != _obj.m_size) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="comment">//TK_CRITICAL(&quot;less 2 Matrix with different size ... ==&gt; generate the max size of all the 2 matrix&quot;);</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classetk_1_1_matrix.html">etk::Matrix&lt;T&gt;</a> tmpMatrix(std::max(m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>(),_obj.m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>()), std::max(m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>(),_obj.m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>()));</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">for</span> (int32_t jjj=0; jjj&lt; m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>; jjj++) {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; T* tmpPointer = tmpMatrix[jjj];</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; T* tmpPointerIn = (*this)[jjj];</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">for</span> (int32_t iii=0; iii&lt; m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>(); iii++) {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; tmpPointer[iii] = tmpPointerIn[iii];</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">for</span> (int32_t jjj=0; jjj&lt; _obj.m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>(); jjj++) {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; T* tmpPointer = tmpMatrix[jjj];</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; T* tmpPointerIn = _obj[jjj];</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">for</span> (int32_t iii=0; iii&lt; _obj.m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>(); iii++) {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; tmpPointer[iii] -= tmpPointerIn[iii];</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">// copy in local :</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; m_size = tmpMatrix.m_size;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; m_data = tmpMatrix.m_data;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="comment">// copy data for the same size :</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">for</span> (int32_t iii=0; iii&lt; m_data.size(); iii++) {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; m_data[iii] -= _obj.m_data[iii];</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; };</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#a0ae8ca9d370824a39292d491fe5f1a98"> 234</a></span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> <a class="code" href="classetk_1_1_matrix.html#a40747926d8d2e3c15dec55e54dc1cb1d">operator- </a>(<span class="keyword">const</span> <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a>&amp; _obj) {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> tmpp(*<span class="keyword">this</span>);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; tmpp += _obj;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> tmpp;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#ae7a240d2806b1559321c777164ed3f19"> 244</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a>&amp; <a class="code" href="classetk_1_1_matrix.html#ae7a240d2806b1559321c777164ed3f19">operator*= </a>(<span class="keyword">const</span> <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a>&amp; _obj) {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">if</span>( m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>() != _obj.m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>()</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; || m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>() != _obj.m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>()) {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="comment">//TK_CRITICAL(&quot;Error while multipliying 2 matrix with different size ==&gt; impossible case ...&quot;);</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="classetk_1_1_matrix.html">etk::Matrix&lt;T&gt;</a> tmpMatrix(m_size);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">for</span> (int32_t jjj=0; jjj&lt; _obj.m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>(); jjj++) {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">for</span> (int32_t iii=0; iii&lt; _obj.m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>(); iii++) {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; T tmpVal = 0;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">for</span> (int32_t kkk=0; kkk&lt; _obj.m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>(); kkk++) {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; tmpVal += (*this)[jjj][iii+kkk] * _obj[jjj+kkk][iii];</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; tmpMatrix[jjj][iii] = tmpVal;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="comment">// copy in local :</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; m_data = tmpMatrix.m_data;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; };</div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#af172540c6c28fb2ae897079b8c67ecf7"> 269</a></span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> <a class="code" href="classetk_1_1_matrix.html#af172540c6c28fb2ae897079b8c67ecf7">operator* </a>(<span class="keyword">const</span> <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a>&amp; _obj) {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix</a> tmpp(*<span class="keyword">this</span>);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; tmpp *= _obj;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span> tmpp;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="comment">// TODO : Check if is possible to do elemntValue = mayMatrix[xxx, yyy]</span></div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#a24182b2aa9d2dd90c194645017690d06"> 283</a></span>&#160;<span class="comment"></span> <span class="keyword">const</span> T* <a class="code" href="classetk_1_1_matrix.html#a24182b2aa9d2dd90c194645017690d06">operator[] </a>(int32_t _yyy)<span class="keyword"> const </span>{</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> &amp;m_data[_yyy*m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>()];</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#a1267a239b7aa11a7aad1de94a1de36a4"> 294</a></span>&#160; T* <a class="code" href="classetk_1_1_matrix.html#a24182b2aa9d2dd90c194645017690d06">operator[] </a>(int32_t _yyy) {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">return</span> &amp;m_data[_yyy*m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>()];</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#aa09270ed5528f21e9ba99ef66289d930"> 305</a></span>&#160; <span class="keyword">const</span> T&amp; <a class="code" href="classetk_1_1_matrix.html#a24182b2aa9d2dd90c194645017690d06">operator[] </a>(<span class="keyword">const</span> <a class="code" href="classetk_1_1_vector2_d.html">ivec2</a>&amp; _pos)<span class="keyword"> const </span>{</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">return</span> m_data[_pos.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>()*m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>() + _pos.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>()];</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#a5622ca68ea8cccd48eec422f1d0921d4"> 316</a></span>&#160; T&amp; <a class="code" href="classetk_1_1_matrix.html#a24182b2aa9d2dd90c194645017690d06">operator[] </a>(<span class="keyword">const</span> <a class="code" href="classetk_1_1_vector2_d.html">ivec2</a>&amp; _pos) {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> m_data[_pos.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>()*m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>() + _pos.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>()];</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#a4bc86bfb0274d2aac75816462bc77406"> 328</a></span>&#160; T&amp; <a class="code" href="classetk_1_1_matrix.html#a4bc86bfb0274d2aac75816462bc77406">operator () </a>(<span class="keywordtype">size_t</span> _xxx, <span class="keywordtype">size_t</span> _yyy) {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> m_data[_yyy*m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>() + _xxx];</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#a40747926d8d2e3c15dec55e54dc1cb1d"> 335</a></span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> <a class="code" href="classetk_1_1_matrix.html#a40747926d8d2e3c15dec55e54dc1cb1d">operator- </a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> tmp(m_size);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">for</span> (int32_t iii=0; iii&lt;m_data.Size(); iii++) {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; tmp.m_data[iii] = -m_data[iii];</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">return</span> tmp;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#ab05c8b14ec68367d0391c23b77870a3b"> 346</a></span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> <a class="code" href="classetk_1_1_matrix.html#ab05c8b14ec68367d0391c23b77870a3b">transpose</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="comment">// create a matrix with the inverted size</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> tmpMatrix(m_size);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">for</span> (int32_t jjj=0; jjj&lt; m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>(); jjj++) {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">for</span> (int32_t iii=0; iii&lt; m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>(); iii++) {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; tmpMatrix(jjj,iii) = (*this)(iii,jjj);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">return</span> tmpMatrix;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#a1c77336ae8faf6fd48c7573d46a74533"> 361</a></span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> <a class="code" href="classetk_1_1_matrix.html#a1c77336ae8faf6fd48c7573d46a74533">convolution</a>(<a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a>&amp; _obj)<span class="keyword"> const </span>{</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> tmppp(1,1);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="comment">// TODO : ...</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">return</span> tmppp;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#a2b08925854b289bb5bbbe390a7df2ec5"> 371</a></span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> <a class="code" href="classetk_1_1_matrix.html#a2b08925854b289bb5bbbe390a7df2ec5">fix</a>(int32_t _decalage)<span class="keyword"> const </span>{</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> tmppp(m_size);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; T tmpVal = 0;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">for</span>(int32_t iii=0; iii&lt;m_data.size(); iii++) {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; tmpVal = m_data[iii];</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">if</span> (tmpVal &lt; 0 &amp;&amp; (tmpVal &amp; ~(~0 &lt;&lt; _decalage))) {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; tmpVal = tmpVal &gt;&gt; _decalage;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; tmpVal++;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; tmpVal = tmpVal &gt;&gt; _decalage;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; tmppp.m_data[iii] = tmpVal;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">return</span> tmppp;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; };</div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#abcdbd3b8fd508eb89618c4deb966b6ce"> 391</a></span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> <a class="code" href="classetk_1_1_matrix.html#abcdbd3b8fd508eb89618c4deb966b6ce">round</a>(int32_t _decalage)<span class="keyword"> const </span>{</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> tmppp(m_size);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">for</span>(int32_t iii=0; iii&lt;m_data.size(); iii++) {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; tmppp.m_data[iii] = ( m_data[iii]+(1&lt;&lt;(_decalage-1)) ) &gt;&gt; _decalage;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">return</span> tmppp;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; };</div><div class="line"><a name="l00403"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#af36248ca24c111c83555ba8d97b07452"> 403</a></span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> <a class="code" href="classetk_1_1_matrix.html#af36248ca24c111c83555ba8d97b07452">resize</a>(<a class="code" href="classetk_1_1_vector2_d.html">etk::Vector2D&lt;int32_t&gt;</a> _size)<span class="keyword"> const </span>{</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> tmppp(_size);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">for</span>(int32_t iii=0; iii&lt;m_data.m_size.x() &amp;&amp; iii&lt;tmppp.m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>(); iii++) {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">for</span>(int32_t jjj=0; jjj&lt;m_data.m_size.y() &amp;&amp; jjj&lt;tmppp.m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>(); jjj++) {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; tmppp(iii,jjj) = (*this)(iii,jjj);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> tmppp;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; };</div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#a1c8f1bb6f8d14c0fb9d4d39dac67b07b"> 420</a></span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> <a class="code" href="classetk_1_1_matrix.html#a1c8f1bb6f8d14c0fb9d4d39dac67b07b">select</a>(int32_t _np, int32_t* _p, int32_t _nq, int32_t* _q)<span class="keyword"> const </span>{</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">if</span> (_np &lt; 1 || _nq &lt; 1) {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; TK_WARNING(<span class="stringliteral">&quot;bad index array sizes&quot;</span>);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="classetk_1_1_matrix.html">Matrix&lt;T&gt;</a> tmppp(_np, _nq);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">for</span> (int32_t iii=0; iii&lt;_np; iii++) {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">for</span> (int32_t jjj=0; jjj&lt;_nq; jjj++) {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">if</span>( _p[i] &lt; 0</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; || _p[i] &gt;= m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>()</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; || _q[i] &lt; 0</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; || _q[i] &gt;= m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>()) {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; TK_WARNING(<span class="stringliteral">&quot;bad index arrays&quot;</span>);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; tmppp(iii,jjj) = (*this)(_p[i],_q[j]);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">return</span> tmppp;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; }</div><div class="line"><a name="l00448"></a><span class="lineno"><a class="line" href="classetk_1_1_matrix.html#a56e65b58426a503e0f55274d813fc307"> 448</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classetk_1_1_matrix.html#a56e65b58426a503e0f55274d813fc307">clearUpperTriangle</a>() {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span> (m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>() != m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>()) {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; TK_WARNING(<span class="stringliteral">&quot;better to do with square Matrix&quot;</span>);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">for</span> (int32_t iii=0; iii&lt;m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>(); iii++) {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">for</span> (int32_t jjj=iii+1; jjj&lt;m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>(); jjj++)</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; m_data[iii*m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>() + jjj] = 0;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; };</div><div class="line"><a name="l00468"></a><span class="lineno"><a class="line" href="namespaceetk.html#a80d4500245f02806cf3397656ed18bb8"> 468</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="namespaceetk.html#a80d4500245f02806cf3397656ed18bb8">clearLowerTriangle</a>() {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">if</span> (m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>() != m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>()) {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; TK_WARNING(<span class="stringliteral">&quot;better to do with square Matrix&quot;</span>);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; }</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">for</span> (int32_t iii=0; iii&lt;m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>(); iii++) {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">for</span> (int32_t jjj=0; jjj&lt;m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>() &amp;&amp; jjj&lt;iii; jjj++)</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; m_data[iii*m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>() + jjj] = 0;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; }</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; };</div><div class="line"><a name="l00482"></a><span class="lineno"><a class="line" href="_matrix_8hpp.html#ac4e350fa2c355b17557877b9c1e2b411"> 482</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="_matrix_8hpp.html#ac4e350fa2c355b17557877b9c1e2b411">makeRandom</a>(<span class="keywordtype">float</span> _range) {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">for</span>(int32_t iii=0; iii&lt;m_data.size(); iii++) {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; m_data[iii] = (T)<a class="code" href="namespaceetk_1_1tool.html#a3acc4fd6faa76439bd1651ec86bccd03">etk::tool::frand</a>(-_range, _range);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; }</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; };</div><div class="line"><a name="l00492"></a><span class="lineno"><a class="line" href="_matrix_8hpp.html#af2f25c1372f63ddd76bfc39e19f57bc2"> 492</a></span>&#160; T <a class="code" href="_matrix_8hpp.html#af2f25c1372f63ddd76bfc39e19f57bc2">maxDifference</a>(<span class="keyword">const</span> Matrix&lt;T&gt;&amp; _input)<span class="keyword"> const </span>{</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span> (m_size != _input.m_size) {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; TK_WARNING(<span class="stringliteral">&quot;better to do with same size Matrix&quot;</span>);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; T max = 0;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">for</span>(int32_t iii = 0;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; iii &lt; m_data.size() &amp;&amp; iii &lt; _input.m_data.size();</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; ++iii) {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; T diff = m_data[iii] - _input.m_data[iii];</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">if</span> (diff&lt;0) {</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; diff = -diff;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">if</span> (diff &gt; max) {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; max = diff;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">return</span> max;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; }</div><div class="line"><a name="l00520"></a><span class="lineno"><a class="line" href="_matrix_8hpp.html#ac8bb3912a3ce86b15842e79d0b421204"> 520</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="_matrix_8hpp.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>() {</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="comment">// copy data for the same size :</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">for</span> (int32_t iii=0; iii&lt; m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>()*m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>(); iii++) {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; m_data[iii] = (T)0;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; };</div><div class="line"><a name="l00535"></a><span class="lineno"><a class="line" href="_matrix_8hpp.html#ac1b6fba75206cba9fb2cfc71ed0a7052"> 535</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="_matrix_8hpp.html#ac1b6fba75206cba9fb2cfc71ed0a7052">identity</a>() {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="comment">// copy data for the same size :</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">for</span> (int32_t iii=0; iii&lt; std::mim(m_size.<a class="code" href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">x</a>(), m_size.<a class="code" href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">y</a>()); iii++) {</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; (*this)(iii,iii) = (T)1;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; };</div><div class="line"><a name="l00544"></a><span class="lineno"><a class="line" href="_matrix_8hpp.html#a576603a22be715dc2c22a9002737e655"> 544</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="_matrix_8hpp.html#a576603a22be715dc2c22a9002737e655">eye</a>() {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <a class="code" href="_matrix_8hpp.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>();</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <a class="code" href="_matrix_8hpp.html#ac1b6fba75206cba9fb2cfc71ed0a7052">identity</a>();</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; };</div><div class="line"><a name="l00552"></a><span class="lineno"><a class="line" href="_matrix_8hpp.html#ab35a6d6d9aa161dbe3debb10b27613ef"> 552</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classetk_1_1_vector2_d.html">uivec2</a>&amp; <a class="code" href="_matrix_8hpp.html#ab35a6d6d9aa161dbe3debb10b27613ef">size</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">return</span> m_size;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; };</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; };</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;}</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;<span class="comment">// To siplify the writing of the code ==&gt; this is not compatible with GLSL ...</span></div><div class="line"><a name="l00559"></a><span class="lineno"><a class="line" href="_matrix_8hpp.html#a756b989683c5370413adde4d86ac59b2"> 559</a></span>&#160;<span class="keyword">using</span> <a class="code" href="classetk_1_1_matrix.html">dmat</a> = <a class="code" href="classetk_1_1_matrix.html">etk::Matrix&lt;double&gt;</a>; </div><div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="_matrix_8hpp.html#a45d98ad44526fb0afcbc6d2cacc05d34"> 560</a></span>&#160;<span class="keyword">using</span> <a class="code" href="classetk_1_1_matrix.html">mat</a> = <a class="code" href="classetk_1_1_matrix.html">etk::Matrix&lt;float&gt;</a>; </div><div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="_matrix_8hpp.html#a1660fbf545101f027ea5c88061f334c1"> 561</a></span>&#160;<span class="keyword">using</span> <a class="code" href="classetk_1_1_matrix.html">imat</a> = <a class="code" href="classetk_1_1_matrix.html">etk::Matrix&lt;int32_t&gt;</a>; </div><div class="line"><a name="l00562"></a><span class="lineno"><a class="line" href="_matrix_8hpp.html#a042e3a7f45f57b7ef9811db473231d5b"> 562</a></span>&#160;<span class="keyword">using</span> <a class="code" href="classetk_1_1_matrix.html">uimat</a> = <a class="code" href="classetk_1_1_matrix.html">etk::Matrix&lt;uint32_t&gt;</a>; </div><div class="ttc" id="classetk_1_1_vector2_d_html_a8409de5d430e5cdcb7326aee94176873"><div class="ttname"><a href="classetk_1_1_vector2_d.html#a8409de5d430e5cdcb7326aee94176873">etk::Vector2D::x</a></div><div class="ttdeci">const T &amp; x() const</div><div class="ttdoc">Get X value. </div><div class="ttdef"><b>Definition:</b> Vector2D.hpp:467</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_af172540c6c28fb2ae897079b8c67ecf7"><div class="ttname"><a href="classetk_1_1_matrix.html#af172540c6c28fb2ae897079b8c67ecf7">etk::Matrix::operator*</a></div><div class="ttdeci">Matrix&lt; T &gt; operator*(const Matrix&lt; T &gt; &amp;_obj)</div><div class="ttdoc">Operator* Multiplication an other matrix with this one. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:269</div></div>
<div class="ttc" id="_matrix_8hpp_html_a576603a22be715dc2c22a9002737e655"><div class="ttname"><a href="_matrix_8hpp.html#a576603a22be715dc2c22a9002737e655">eye</a></div><div class="ttdeci">void eye()</div><div class="ttdoc">Clear and set the diagonal at 1. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:544</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_ae7a240d2806b1559321c777164ed3f19"><div class="ttname"><a href="classetk_1_1_matrix.html#ae7a240d2806b1559321c777164ed3f19">etk::Matrix::operator*=</a></div><div class="ttdeci">const Matrix&lt; T &gt; &amp; operator*=(const Matrix&lt; T &gt; &amp;_obj)</div><div class="ttdoc">Operator*= Multiplication an other matrix with this one. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:244</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_afffb93555f328b3972c456e2f0e5aca8"><div class="ttname"><a href="classetk_1_1_matrix.html#afffb93555f328b3972c456e2f0e5aca8">etk::Matrix::Matrix</a></div><div class="ttdeci">Matrix(const Matrix&lt; ETK_TYPE_MATRIX_2 &gt; &amp;_obj)</div><div class="ttdoc">Copy contructor with ETK_TYPE_MATRIX_2 type matrix input. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:68</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_a56e65b58426a503e0f55274d813fc307"><div class="ttname"><a href="classetk_1_1_matrix.html#a56e65b58426a503e0f55274d813fc307">etk::Matrix::clearUpperTriangle</a></div><div class="ttdeci">void clearUpperTriangle()</div><div class="ttdoc">Clear the Upper triangle of the current Matrix. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:448</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_ab05c8b14ec68367d0391c23b77870a3b"><div class="ttname"><a href="classetk_1_1_matrix.html#ab05c8b14ec68367d0391c23b77870a3b">etk::Matrix::transpose</a></div><div class="ttdeci">Matrix&lt; T &gt; transpose() const</div><div class="ttdoc">Transpose Matrix. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:346</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_a40747926d8d2e3c15dec55e54dc1cb1d"><div class="ttname"><a href="classetk_1_1_matrix.html#a40747926d8d2e3c15dec55e54dc1cb1d">etk::Matrix::operator-</a></div><div class="ttdeci">Matrix&lt; T &gt; operator-() const</div><div class="ttdoc">Operator- Multiply with -1. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:335</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_a56b9d699e1e6df0819553bc18580ebc5"><div class="ttname"><a href="classetk_1_1_matrix.html#a56b9d699e1e6df0819553bc18580ebc5">etk::Matrix::operator+=</a></div><div class="ttdeci">const Matrix&lt; T &gt; &amp; operator+=(const Matrix&lt; T &gt; &amp;_obj)</div><div class="ttdoc">Operator+= Addition an other matrix with this one. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:141</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_abcdbd3b8fd508eb89618c4deb966b6ce"><div class="ttname"><a href="classetk_1_1_matrix.html#abcdbd3b8fd508eb89618c4deb966b6ce">etk::Matrix::round</a></div><div class="ttdeci">Matrix&lt; T &gt; round(int32_t _decalage) const</div><div class="ttdoc">generate a devide of the curent Matrix with the specify power of 2 </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:391</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_abf3cb49a1c359fed6e006112c593c476"><div class="ttname"><a href="classetk_1_1_matrix.html#abf3cb49a1c359fed6e006112c593c476">etk::Matrix::operator==</a></div><div class="ttdeci">bool operator==(const Matrix&lt; T &gt; &amp;_obj) const</div><div class="ttdoc">Equality compare operator with an other object. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:119</div></div>
<div class="ttc" id="_matrix_8hpp_html_ab35a6d6d9aa161dbe3debb10b27613ef"><div class="ttname"><a href="_matrix_8hpp.html#ab35a6d6d9aa161dbe3debb10b27613ef">size</a></div><div class="ttdeci">const uivec2 &amp; size() const</div><div class="ttdoc">Get the size of the current Matrix. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:552</div></div>
<div class="ttc" id="namespaceetk_html"><div class="ttname"><a href="namespaceetk.html">etk</a></div><div class="ttdoc">basic namespace of the etk library. (it might contain all the etk fuctions/class/structures without m...</div><div class="ttdef"><b>Definition:</b> Archive.hpp:16</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_af36248ca24c111c83555ba8d97b07452"><div class="ttname"><a href="classetk_1_1_matrix.html#af36248ca24c111c83555ba8d97b07452">etk::Matrix::resize</a></div><div class="ttdeci">Matrix&lt; T &gt; resize(etk::Vector2D&lt; int32_t &gt; _size) const</div><div class="ttdoc">Generate a resised matrix. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:403</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_a1c8f1bb6f8d14c0fb9d4d39dac67b07b"><div class="ttname"><a href="classetk_1_1_matrix.html#a1c8f1bb6f8d14c0fb9d4d39dac67b07b">etk::Matrix::select</a></div><div class="ttdeci">Matrix&lt; T &gt; select(int32_t _np, int32_t *_p, int32_t _nq, int32_t *_q) const</div><div class="ttdoc">Select element in the matrix from a list of element Ids. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:420</div></div>
<div class="ttc" id="_matrix_8hpp_html_af2f25c1372f63ddd76bfc39e19f57bc2"><div class="ttname"><a href="_matrix_8hpp.html#af2f25c1372f63ddd76bfc39e19f57bc2">maxDifference</a></div><div class="ttdeci">T maxDifference(const Matrix&lt; T &gt; &amp;_input) const</div><div class="ttdoc">Return the maximum of the diff for this Matrix. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:492</div></div>
<div class="ttc" id="types_8hpp_html"><div class="ttname"><a href="types_8hpp.html">types.hpp</a></div></div>
<div class="ttc" id="classetk_1_1_matrix_html_aad86d66460d629601a63a70739991d09"><div class="ttname"><a href="classetk_1_1_matrix.html#aad86d66460d629601a63a70739991d09">etk::Matrix::Matrix</a></div><div class="ttdeci">Matrix(const ivec2 &amp;_size, T *_defaultVal=nullptr)</div><div class="ttdoc">Contructor that create a Vector with a specific size and specific raw data. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:27</div></div>
<div class="ttc" id="_matrix_8hpp_html_ac4e350fa2c355b17557877b9c1e2b411"><div class="ttname"><a href="_matrix_8hpp.html#ac4e350fa2c355b17557877b9c1e2b411">makeRandom</a></div><div class="ttdeci">void makeRandom(float _range)</div><div class="ttdoc">Generate a compleate random Matrix. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:482</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_ab50a671a8e9f9d7b1b6a3d519f6a2847"><div class="ttname"><a href="classetk_1_1_matrix.html#ab50a671a8e9f9d7b1b6a3d519f6a2847">etk::Matrix::Matrix</a></div><div class="ttdeci">Matrix(int32_t _width=0, int32_t _heigh=0, T *_defaultVal=nullptr)</div><div class="ttdoc">default contructor that create a Vector with a specific size and specific raw data ...</div><div class="ttdef"><b>Definition:</b> Matrix.hpp:48</div></div>
<div class="ttc" id="_matrix_8hpp_html_ac1b6fba75206cba9fb2cfc71ed0a7052"><div class="ttname"><a href="_matrix_8hpp.html#ac1b6fba75206cba9fb2cfc71ed0a7052">identity</a></div><div class="ttdeci">void identity()</div><div class="ttdoc">Set the matrix identity. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:535</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_a15251e4a208c761f60f4314e9a16b423"><div class="ttname"><a href="classetk_1_1_matrix.html#a15251e4a208c761f60f4314e9a16b423">etk::Matrix::operator=</a></div><div class="ttdeci">const Matrix&lt; T &gt; &amp; operator=(const Matrix&lt; T &gt; &amp;_obj)</div><div class="ttdoc">Operator= Asign the current object with an other object. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:89</div></div>
<div class="ttc" id="_matrix_8hpp_html_ac8bb3912a3ce86b15842e79d0b421204"><div class="ttname"><a href="_matrix_8hpp.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clear all the matrix. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:520</div></div>
<div class="ttc" id="classetk_1_1_vector2_d_html_abc8a9a46cb0bf2c32916bfa3a35dfb22"><div class="ttname"><a href="classetk_1_1_vector2_d.html#abc8a9a46cb0bf2c32916bfa3a35dfb22">etk::Vector2D::y</a></div><div class="ttdeci">const T &amp; y() const</div><div class="ttdoc">Get Y value. </div><div class="ttdef"><b>Definition:</b> Vector2D.hpp:474</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_a2b08925854b289bb5bbbe390a7df2ec5"><div class="ttname"><a href="classetk_1_1_matrix.html#a2b08925854b289bb5bbbe390a7df2ec5">etk::Matrix::fix</a></div><div class="ttdeci">Matrix&lt; T &gt; fix(int32_t _decalage) const</div><div class="ttdoc">generate a devide of the curent Matrix with the specify power of 2 </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:371</div></div>
<div class="ttc" id="namespaceetk_html_a80d4500245f02806cf3397656ed18bb8"><div class="ttname"><a href="namespaceetk.html#a80d4500245f02806cf3397656ed18bb8">etk::clearLowerTriangle</a></div><div class="ttdeci">void clearLowerTriangle()</div><div class="ttdoc">Clear the Lower triangle of the current Matrix. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:468</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_a4f9f11ea323f846d3dff802a8ae42dfc"><div class="ttname"><a href="classetk_1_1_matrix.html#a4f9f11ea323f846d3dff802a8ae42dfc">etk::Matrix::operator-=</a></div><div class="ttdeci">const Matrix&lt; T &gt; &amp; operator-=(const Matrix&lt; T &gt; &amp;_obj)</div><div class="ttdoc">Operator+= Addition an other matrix with this one. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:195</div></div>
<div class="ttc" id="classetk_1_1_matrix_html"><div class="ttname"><a href="classetk_1_1_matrix.html">etk::Matrix</a></div><div class="ttdoc">2 dimention matrix template to manage simpliest algo </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:17</div></div>
<div class="ttc" id="_vector2_d_8hpp_html"><div class="ttname"><a href="_vector2_d_8hpp.html">Vector2D.hpp</a></div></div>
<div class="ttc" id="classetk_1_1_matrix_html_a8ae71a3749309ebea595c9619d28878e"><div class="ttname"><a href="classetk_1_1_matrix.html#a8ae71a3749309ebea595c9619d28878e">etk::Matrix::~Matrix</a></div><div class="ttdeci">virtual ~Matrix()=default</div><div class="ttdoc">Virtualisation of destructor. </div></div>
<div class="ttc" id="classetk_1_1_vector2_d_html"><div class="ttname"><a href="classetk_1_1_vector2_d.html">etk::Vector2D&lt; uint32_t &gt;</a></div></div>
<div class="ttc" id="classetk_1_1_matrix_html_a4bc86bfb0274d2aac75816462bc77406"><div class="ttname"><a href="classetk_1_1_matrix.html#a4bc86bfb0274d2aac75816462bc77406">etk::Matrix::operator()</a></div><div class="ttdeci">T &amp; operator()(size_t _xxx, size_t _yyy)</div><div class="ttdoc">Operator() Access at the element at a specific position. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:328</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_a462dc7b2109911c681808e4c39e0242c"><div class="ttname"><a href="classetk_1_1_matrix.html#a462dc7b2109911c681808e4c39e0242c">etk::Matrix::operator!=</a></div><div class="ttdeci">bool operator!=(const Matrix&lt; T &gt; &amp;_obj) const</div><div class="ttdoc">In-Equality compare operator with an other object. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:128</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_ab4be6249290e9cc83e11fb5a7d51a71a"><div class="ttname"><a href="classetk_1_1_matrix.html#ab4be6249290e9cc83e11fb5a7d51a71a">etk::Matrix::operator+</a></div><div class="ttdeci">Matrix&lt; T &gt; operator+(const Matrix&lt; T &gt; &amp;_obj)</div><div class="ttdoc">Operator+= Addition an other matrix with this one. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:180</div></div>
<div class="ttc" id="classetk_1_1_matrix_html_a24182b2aa9d2dd90c194645017690d06"><div class="ttname"><a href="classetk_1_1_matrix.html#a24182b2aa9d2dd90c194645017690d06">etk::Matrix::operator[]</a></div><div class="ttdeci">const T * operator[](int32_t _yyy) const</div><div class="ttdoc">Operator[] Access at the first element (const pointer) of a line. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:283</div></div>
<div class="ttc" id="namespaceetk_1_1tool_html_a3acc4fd6faa76439bd1651ec86bccd03"><div class="ttname"><a href="namespaceetk_1_1tool.html#a3acc4fd6faa76439bd1651ec86bccd03">etk::tool::frand</a></div><div class="ttdeci">double frand(double _a, double _b)</div><div class="ttdoc">Get a random value in a specific range in float. </div></div>
<div class="ttc" id="classetk_1_1_matrix_html_a1c77336ae8faf6fd48c7573d46a74533"><div class="ttname"><a href="classetk_1_1_matrix.html#a1c77336ae8faf6fd48c7573d46a74533">etk::Matrix::convolution</a></div><div class="ttdeci">Matrix&lt; T &gt; convolution(Matrix&lt; T &gt; &amp;_obj) const</div><div class="ttdoc">Create a convolution on the matrix : set convolution on the lines. </div><div class="ttdef"><b>Definition:</b> Matrix.hpp:361</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- HTML footer for doxygen 1.8.8-->
<!-- start footer part -->
</div>
</div>
</div>
</div>
</div>
<hr class="footer"/><address class="footer"><small>
Generated on Mon Oct 24 2016 15:35:46 for Etk: Ewol Tool Kit by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.12
</small></address>
</body>
</html>