<!-- iframe showing the search results (closed by default) -->
<divid="MSearchResultsWindow">
<iframesrc="javascript:void(0)"frameborder="0"
name="MSearchResults"id="MSearchResults">
</iframe>
</div>
<divclass="header">
<divclass="headertitle">
<divclass="title">vector.hh</div></div>
</div><!--header-->
<divclass="contents">
<ahref="vector_8hh.html">Go to the documentation of this file.</a><divclass="fragment"><divclass="line"><aname="l00001"></a><spanclass="lineno"> 1</span> <spanclass="preprocessor">#ifndef __VECTOR__HH__</span></div><divclass="line"><aname="l00002"></a><spanclass="lineno"> 2</span> <spanclass="preprocessor">#define __VECTOR__HH__</span></div><divclass="line"><aname="l00003"></a><spanclass="lineno"> 3</span> </div><divclass="line"><aname="l00004"></a><spanclass="lineno"> 4</span> <spanclass="comment">/* -------------------------------------------------------------------------- */</span></div><divclass="line"><aname="l00005"></a><spanclass="lineno"> 5</span> <spanclass="preprocessor">#include "<aclass="code"href="my__types_8hh.html">my_types.hh</a>"</span></div><divclass="line"><aname="l00006"></a><spanclass="lineno"> 6</span> <spanclass="comment">/* -------------------------------------------------------------------------- */</span></div><divclass="line"><aname="l00007"></a><spanclass="lineno"> 7</span> <spanclass="preprocessor">#include <array></span></div><divclass="line"><aname="l00008"></a><spanclass="lineno"> 8</span> </div><divclass="line"><aname="l00014"></a><spanclass="lineno"><aclass="line"href="class_vector.html"> 14</a></span> <spanclass="keyword">class </span><aclass="code"href="class_vector.html">Vector</a> {</div><divclass="line"><aname="l00015"></a><spanclass="lineno"> 15</span> <spanclass="keyword">public</span>:</div><divclass="line"><aname="l00017"></a><spanclass="lineno"><aclass="line"href="class_vector.html#ab506adc6769e122782b17cb98199f94b"> 17</a></span> <spanclass="keyword">static</span> constexpr <aclass="code"href="my__types_8hh.html#a9cc0620fb2e91b51587c6936060d4161">UInt</a><aclass="code"href="class_vector.html#ab506adc6769e122782b17cb98199f94b">dim</a> = 3;</div><divclass="line"><aname="l00018"></a><spanclass="lineno"> 18</span> </div><divclass="line"><aname="l00019"></a><spanclass="lineno"> 19</span> <spanclass="comment">// Methods</span></div><divclass="line"><aname="l00020"></a><spanclass="lineno"> 20</span> <spanclass="keyword">public</span>:</div><divclass="line"><aname="l00022"></a><spanclass="lineno"> 22</span> <aclass="code"href="my__types_8hh.html#a4b04262b81aa7d31eb5d2f607e2a35de">Real</a>&<aclass="code"href="class_vector.html#af4da600d5a3dec4e08f2d21357a20b83">operator[]</a>(<aclass="code"href="my__types_8hh.html#a9cc0620fb2e91b51587c6936060d4161">UInt</a> i);</div><divclass="line"><aname="l00024"></a><spanclass="lineno"> 24</span> <spanclass="keyword">const</span><aclass="code"href="my__types_8hh.html#a4b04262b81aa7d31eb5d2f607e2a35de">Real</a>&<aclass="code"href="class_vector.html#af4da600d5a3dec4e08f2d21357a20b83">operator[]</a>(<aclass="code"href="my__types_8hh.html#a9cc0620fb2e91b51587c6936060d4161">UInt</a> i) <spanclass="keyword">const</span>;</div><divclass="line"><aname="l00025"></a><spanclass="lineno"> 25</span> </div><divclass="line"><aname="l00027"></a><spanclass="lineno"> 27</span> <aclass="code"href="my__types_8hh.html#a4b04262b81aa7d31eb5d2f607e2a35de">Real</a><aclass="code"href="class_vector.html#a1bef1592d4d51436dba6d346ff8cc9d3">squaredNorm</a>() <spanclass="keyword">const</span>;</div><divclass="line"><aname="l00028"></a><spanclass="lineno"> 28</span> </div><divclass="line"><aname="l00029"></a><spanclass="lineno"> 29</span> <spanclass="comment">// Operators that make sense for vectors</span></div><divclass="line"><aname="l00030"></a><spanclass="lineno"> 30</span> <aclass="code"href="class_vector.html">Vector</a>&<aclass="code"href="class_vector.html#a48896b0a406f7880a16a038aa6a2cd3b">operator+=</a>(<spanclass="keyword">const</span><aclass="code"href="class_vector.html">Vector</a>& vec);</div><divclass="line"><aname="l00031"></a><spanclass="lineno"> 31</span> <aclass="code"href="class_vector.html">Vector</a>&<aclass="code"href="class_vector.html#a1a6bf45adec873d9d9192aa9b8b7021a">operator-=</a>(<spanclass="keyword">const</span><aclass="code"href="class_vector.html">Vector</a>& vec);</div><divclass="line"><aname="l00032"></a><spanclass="lineno"> 32</span> <aclass="code"href="class_vector.html">Vector</a>&<aclass="code"href="class_vector.html#ab50afabfe126de92662d0e6d87e4c9ff">operator*=</a>(<aclass="code"href="my__types_8hh.html#a4b04262b81aa7d31eb5d2f607e2a35de">Real</a> val);</div><divclass="line"><aname="l00033"></a><spanclass="lineno"> 33</span> <aclass="code"href="class_vector.html">Vector</a>&<aclass="code"href="class_vector.html#aa4107e152657c7076550adf803fdbefa">operator/=</a>(<aclass="code"href="my__types_8hh.html#a4b04262b81aa7d31eb5d2f607e2a35de">Real</a> val);</div><divclass="line"><aname="l00034"></a><spanclass="lineno"> 34</span> </div><divclass="line"><aname="l00036"></a><spanclass="lineno"> 36</span> <aclass="code"href="class_vector.html">Vector</a>&<aclass="code"href="class_vector.html#a0e65fea9a2c5d04e6d29b9b0b141060a">operator=</a>(<spanclass="keyword">const</span><aclass="code"href="class_vector.html">Vector</a>& vec);</div><divclass="line"><aname="l00038"></a><spanclass="lineno"> 38</span> <aclass="code"href="class_vector.html">Vector</a>&<aclass="code"href="class_vector.html#a0e65fea9a2c5d04e6d29b9b0b141060a">operator=</a>(<aclass="code"href="my__types_8hh.html#a4b04262b81aa7d31eb5d2f607e2a35de">Real</a> val);</div><divclass="line"><aname="l00039"></a><spanclass="lineno"> 39</span> </div><divclass="line"><aname="l00040"></a><spanclass="lineno"> 40</span> </div><divclass="line"><aname="l00041"></a><spanclass="lineno"> 41</span> <spanclass="keyword">public</span>:</div><divclass="line"><aname="l00043"></a><spanclass="lineno"> 43</span> <spanclass="keyword">friend</span> std::ostream&<aclass="code"href="class_vector.html#a544a5227e001d8bd51cf4e10017d9d43">operator<<</a>(std::ostream& stream, <spanclass="keyword">const</span><aclass="code"href="class_vector.html">Vector</a>& _this);</div><divclass="line"><aname="l00045"></a><spanclass="lineno"> 45</span> <spanclass="keyword">friend</span> std::istream&<aclass="code"href="class_vector.html#ad1e3f06f90d57ac931bb8347c3910c12">operator>></a>(std::istream& stream, <aclass="code"href="class_vector.html">Vector</a>& _this);</div><divclass="line"><aname="l00046"></a><spanclass="lineno"> 46</span> </div><divclass="line"><aname="l00047"></a><spanclass="lineno"> 47</span> <spanclass="keyword">private</span>:</div><divclass="line"><aname="l00049"></a><spanclass="lineno"> 49</span>  std::array<Real, dim> values = {0};</div><divclass="line"><aname="l00050"></a><spanclass="lineno"> 50</span> };</div><divclass="line"><aname="l00051"></a><spanclass="lineno"> 51</span> </div><divclass="line"><aname="l00052"></a><spanclass="lineno"> 52</span> <spanclass="comment">/* -------------------------------------------------------------------------- */</span></div><divclass="line"><aname="l00053"></a><spanclass="lineno"> 53</span> <spanclass="comment">/* Separate function definitions */</span></div><divclass="line"><aname="l00054"></a><spanclass="lineno"> 54</span> <spanclass="comment">/* -------------------------------------------------------------------------- */</span></div><divclass="line"><aname="l00055"></a><spanclass="lineno"> 55</span> </div><divclass="line"><aname="l00057"></a><spanclass="lineno"> 57</span> std::ostream&<aclass="code"href="class_vector.html#a544a5227e001d8bd51cf4e10017d9d43">operator<<</a>(std::ostream& stream, <spanclass="keyword">const</span><aclass="code"href="class_vector.html">Vector</a>& _this);</div><divclass="line"><aname="l00059"></a><spanclass="lineno"> 59</span> std::istream&<aclass="code"href="class_vector.html#ad1e3f06f90d57ac931bb8347c3910c12">operator>></a>(std::istream& stream, <aclass="code"href="class_vector.html">Vector</a>& _this);</div><divclass="line"><aname="l00060"></a><spanclass="lineno"> 60</span> </div><divclass="line"><aname="l00061"></a><spanclass="lineno"> 61</span> <spanclass="comment">// We define the operators +, -, *, / with vectors and scalars</span></div><divclass="line"><aname="l00062"></a><spanclass="lineno"> 62</span> <aclass="code"href="class_vector.html">Vector</a><aclass="code"href="vector_8hh.html#a53d6a19cb17320a43a60e4356f80c205">operator+</a>(<spanclass="keyword">const</span><aclass="code"href="class_vector.html">Vector</a>& a, <spanclass="keyword">const</span><aclass="code"href="class_vector.html">Vector</a>& b);</div><divclass="line"><aname="l00063"></a><spanclass="lineno"> 63</span> <aclass="code"href="class_vector.html">Vector</a><aclass="code"href="vector_8hh.html#a316d381a8ae7de1d299f2131a042a349">operator-</a>(<spanclass="keyword">const</span><aclass="code"href="class_vector.html">Vector</a>& a, <spanclass="keyword">const</span><aclass="code"href="class_vector.html">Vector</a>& b);</div><divclass="line"><aname="l00064"></a><spanclass="lineno"> 64</span> </div><divclass="line"><aname="l00065"></a><spanclass="lineno"> 65</span> <spanclass="comment">// Symmetry of multiplication</span></div><divclass="line"><aname="l00066"></a><spanclass="lineno"> 66</span> <aclass="code"href="class_vector.html">Vector</a><aclass="code"href="vector_8hh.html#ae2a4a40bc4d791a05129b4c1f3ad28f0">operator*</a>(<spanclass="keyword">const</span><aclass="code"href="class_vector.html">Vector</a>& a, <aclass="code"href="my__types_8hh.html#a4b04262b81aa7d31eb5d2f607e2a35de">Real</a> val);</div><divclass="line"><aname="l00067"></a><spanclass="lineno"> 67</span> <aclass="code"href="class_vector.html">Vector</a><aclass="code"href="vector_8hh.html#ae2a4a40bc4d791a05129b4c1f3ad28f0">operator*</a>(<aclass="code"href="my__types_8hh.html#a4b04262b81aa7d31eb5d2f607e2a35de">Real</a> val, <spanclass="keyword">const</span><aclass="code"href="class_vector.html">Vector</a>& a);</div><divclass="line"><aname="l00068"></a><spanclass="lineno"> 68</span> </div><divclass="line"><aname="l00069"></a><spanclass="lineno"> 69</span> <spanclass="comment">// For convenience</span></div><divclass="line"><aname="l00070"></a><spanclass="lineno"> 70</span> <aclass="code"href="class_vector.html">Vector</a><aclass="code"href="vector_8hh.html#acce98977053361fa0caf1dd12afd7bae">operator/</a>(<spanclass="keyword">const</span><aclass="code"href="class_vector.html">Vector</a>& a, <aclass="code"href="my__types_8hh.html#a4b04262b81aa7d31eb5d2f607e2a35de">Real</a> val);</div><divclass="line"><aname="l00071"></a><spanclass="lineno"> 71</span> </div><divclass="line"><aname="l00072"></a><spanclass="lineno"> 72</span> <spanclass="comment">// Include inline implementation</span></div><divclass="line"><aname="l00073"></a><spanclass="lineno"> 73</span> <spanclass="preprocessor">#include "<aclass="code"href="vector__inline_8hh.html">vector_inline.hh</a>"</span></div><divclass="line"><aname="l00074"></a><spanclass="lineno"> 74</span> </div><divclass="line"><aname="l00075"></a><spanclass="lineno"> 75</span> <spanclass="preprocessor">#endif //__VECTOR__HH__</span></div><divclass="ttc"id="vector_8hh_html_ae2a4a40bc4d791a05129b4c1f3ad28f0"><divclass="ttname"><ahref="vector_8hh.html#ae2a4a40bc4d791a05129b4c1f3ad28f0">operator*</a></div><divclass="ttdeci">Vector operator*(const Vector &a, Real val)</div><divclass="ttdef"><b>Definition:</b> vector_inline.hh:71</div></div>
<divclass="ttc"id="class_vector_html_a1a6bf45adec873d9d9192aa9b8b7021a"><divclass="ttname"><ahref="class_vector.html#a1a6bf45adec873d9d9192aa9b8b7021a">Vector::operator-=</a></div><divclass="ttdeci">Vector & operator-=(const Vector &vec)</div><divclass="ttdef"><b>Definition:</b> vector_inline.hh:27</div></div>
<divclass="ttc"id="class_vector_html_a544a5227e001d8bd51cf4e10017d9d43"><divclass="ttname"><ahref="class_vector.html#a544a5227e001d8bd51cf4e10017d9d43">Vector::operator<<</a></div><divclass="ttdeci">friend std::ostream & operator<<(std::ostream &stream, const Vector &_this)</div><divclass="ttdoc">Output to stream. </div><divclass="ttdef"><b>Definition:</b> vector_inline.hh:90</div></div>
<divclass="ttc"id="class_vector_html_af4da600d5a3dec4e08f2d21357a20b83"><divclass="ttname"><ahref="class_vector.html#af4da600d5a3dec4e08f2d21357a20b83">Vector::operator[]</a></div><divclass="ttdeci">Real & operator[](UInt i)</div><divclass="ttdoc">access given component </div><divclass="ttdef"><b>Definition:</b> vector_inline.hh:3</div></div>
<divclass="ttc"id="class_vector_html_ab50afabfe126de92662d0e6d87e4c9ff"><divclass="ttname"><ahref="class_vector.html#ab50afabfe126de92662d0e6d87e4c9ff">Vector::operator*=</a></div><divclass="ttdeci">Vector & operator*=(Real val)</div><divclass="ttdef"><b>Definition:</b> vector_inline.hh:33</div></div>
<divclass="ttc"id="vector_8hh_html_acce98977053361fa0caf1dd12afd7bae"><divclass="ttname"><ahref="vector_8hh.html#acce98977053361fa0caf1dd12afd7bae">operator/</a></div><divclass="ttdeci">Vector operator/(const Vector &a, Real val)</div><divclass="ttdef"><b>Definition:</b> vector_inline.hh:81</div></div>
<divclass="ttc"id="my__types_8hh_html_a9cc0620fb2e91b51587c6936060d4161"><divclass="ttname"><ahref="my__types_8hh.html#a9cc0620fb2e91b51587c6936060d4161">UInt</a></div><divclass="ttdeci">unsigned int UInt</div><divclass="ttdef"><b>Definition:</b> my_types.hh:8</div></div>
<divclass="ttc"id="class_vector_html_ad1e3f06f90d57ac931bb8347c3910c12"><divclass="ttname"><ahref="class_vector.html#ad1e3f06f90d57ac931bb8347c3910c12">Vector::operator>></a></div><divclass="ttdeci">friend std::istream & operator>>(std::istream &stream, Vector &_this)</div><divclass="ttdoc">Initialize from stream. </div><divclass="ttdef"><b>Definition:</b> vector_inline.hh:98</div></div>
<divclass="ttc"id="class_vector_html"><divclass="ttname"><ahref="class_vector.html">Vector</a></div><divclass="ttdoc">3D Vector class </div><divclass="ttdef"><b>Definition:</b> vector.hh:14</div></div>
<divclass="ttc"id="class_vector_html_a0e65fea9a2c5d04e6d29b9b0b141060a"><divclass="ttname"><ahref="class_vector.html#a0e65fea9a2c5d04e6d29b9b0b141060a">Vector::operator=</a></div><divclass="ttdeci">Vector & operator=(const Vector &vec)</div><divclass="ttdoc">Copy operator. </div><divclass="ttdef"><b>Definition:</b> vector_inline.hh:47</div></div>
<divclass="ttc"id="class_vector_html_aa4107e152657c7076550adf803fdbefa"><divclass="ttname"><ahref="class_vector.html#aa4107e152657c7076550adf803fdbefa">Vector::operator/=</a></div><divclass="ttdeci">Vector & operator/=(Real val)</div><divclass="ttdef"><b>Definition:</b> vector_inline.hh:39</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hrclass="footer"/><addressclass="footer"><small>
Generated by  <ahref="http://www.doxygen.org/index.html">