Eule/Doxygen/build/classEule_1_1Math.html
2021-11-15 11:46:15 +01:00

703 lines
38 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Leonetienne/Eule: Eule::Math Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Leonetienne/Eule
</div>
<div id="projectbrief">Homemade math library, mainly targetted towards computer graphics</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- 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="namespaceEule.html">Eule</a></li><li class="navelem"><a class="el" href="classEule_1_1Math.html">Math</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classEule_1_1Math-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Eule::Math Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a class="el" href="classEule_1_1Math.html" title="Math utility class containing basic functions.">Math</a> utility class containing basic functions.
<a href="classEule_1_1Math.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="Math_8h_source.html">Math.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a991c620839f5fa9fcfe7e503b8ab0008"><td class="memItemLeft" align="right" valign="top">static constexpr double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEule_1_1Math.html#a991c620839f5fa9fcfe7e503b8ab0008">Max</a> (const double a, const double b)</td></tr>
<tr class="memdesc:a991c620839f5fa9fcfe7e503b8ab0008"><td class="mdescLeft">&#160;</td><td class="mdescRight">Will return the bigger of two values. <a href="classEule_1_1Math.html#a991c620839f5fa9fcfe7e503b8ab0008">More...</a><br /></td></tr>
<tr class="separator:a991c620839f5fa9fcfe7e503b8ab0008"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4d3c52cb09984ec567a9961ff7e3f02"><td class="memItemLeft" align="right" valign="top">static constexpr double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEule_1_1Math.html#aa4d3c52cb09984ec567a9961ff7e3f02">Min</a> (const double a, const double b)</td></tr>
<tr class="memdesc:aa4d3c52cb09984ec567a9961ff7e3f02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Will return the smaller of two values. <a href="classEule_1_1Math.html#aa4d3c52cb09984ec567a9961ff7e3f02">More...</a><br /></td></tr>
<tr class="separator:aa4d3c52cb09984ec567a9961ff7e3f02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73947ee95912f0a06359fc5004bfc840"><td class="memItemLeft" align="right" valign="top">static constexpr double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEule_1_1Math.html#a73947ee95912f0a06359fc5004bfc840">Clamp</a> (const double v, const double min, const double max)</td></tr>
<tr class="memdesc:a73947ee95912f0a06359fc5004bfc840"><td class="mdescLeft">&#160;</td><td class="mdescRight">Will return <code>v</code>, but at least <code>min</code>, and at most <code>max</code> <a href="classEule_1_1Math.html#a73947ee95912f0a06359fc5004bfc840">More...</a><br /></td></tr>
<tr class="separator:a73947ee95912f0a06359fc5004bfc840"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a991f62401991014de20aca0fda9f9ef7"><td class="memItemLeft" align="right" valign="top">static constexpr double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEule_1_1Math.html#a991f62401991014de20aca0fda9f9ef7">Lerp</a> (double a, double b, double t)</td></tr>
<tr class="memdesc:a991f62401991014de20aca0fda9f9ef7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Will return the linear interpolation between <code>a</code> and <code>b</code> by <code>t</code> <a href="classEule_1_1Math.html#a991f62401991014de20aca0fda9f9ef7">More...</a><br /></td></tr>
<tr class="separator:a991f62401991014de20aca0fda9f9ef7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9ccf4aa730ef825faf224445c86ab25"><td class="memItemLeft" align="right" valign="top">static constexpr double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEule_1_1Math.html#ab9ccf4aa730ef825faf224445c86ab25">Abs</a> (const double a)</td></tr>
<tr class="memdesc:ab9ccf4aa730ef825faf224445c86ab25"><td class="mdescLeft">&#160;</td><td class="mdescRight">Will return the absolute value of <code>a</code> <a href="classEule_1_1Math.html#ab9ccf4aa730ef825faf224445c86ab25">More...</a><br /></td></tr>
<tr class="separator:ab9ccf4aa730ef825faf224445c86ab25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac928b1e9cde5ac60f5fdc1ba466305ff"><td class="memItemLeft" align="right" valign="top">static constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEule_1_1Math.html#ac928b1e9cde5ac60f5fdc1ba466305ff">Similar</a> (const double a, const double b, const double epsilon=0.00001)</td></tr>
<tr class="memdesc:ac928b1e9cde5ac60f5fdc1ba466305ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compares two double values with a given accuracy. <a href="classEule_1_1Math.html#ac928b1e9cde5ac60f5fdc1ba466305ff">More...</a><br /></td></tr>
<tr class="separator:ac928b1e9cde5ac60f5fdc1ba466305ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6aa6d6c804f995a089779219e5136e4f"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEule_1_1Math.html#a6aa6d6c804f995a089779219e5136e4f">Random</a> ()</td></tr>
<tr class="memdesc:a6aa6d6c804f995a089779219e5136e4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Will return a random double between <code>0</code> and <code>1</code> <a href="classEule_1_1Math.html#a6aa6d6c804f995a089779219e5136e4f">More...</a><br /></td></tr>
<tr class="separator:a6aa6d6c804f995a089779219e5136e4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad38d9a50e08cd02bb35161cc3bd77b26"><td class="memItemLeft" align="right" valign="top">static unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEule_1_1Math.html#ad38d9a50e08cd02bb35161cc3bd77b26">RandomUint</a> ()</td></tr>
<tr class="memdesc:ad38d9a50e08cd02bb35161cc3bd77b26"><td class="mdescLeft">&#160;</td><td class="mdescRight">Will return a random unsigned integer. <a href="classEule_1_1Math.html#ad38d9a50e08cd02bb35161cc3bd77b26">More...</a><br /></td></tr>
<tr class="separator:ad38d9a50e08cd02bb35161cc3bd77b26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8d66e39e794d89594c50690ccc92c60"><td class="memItemLeft" align="right" valign="top">static unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEule_1_1Math.html#ab8d66e39e794d89594c50690ccc92c60">RandomInt</a> ()</td></tr>
<tr class="memdesc:ab8d66e39e794d89594c50690ccc92c60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Will return a random integer. <a href="classEule_1_1Math.html#ab8d66e39e794d89594c50690ccc92c60">More...</a><br /></td></tr>
<tr class="separator:ab8d66e39e794d89594c50690ccc92c60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48ca8451f9803ce35d2a35cfb83d8ae9"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEule_1_1Math.html#a48ca8451f9803ce35d2a35cfb83d8ae9">RandomRange</a> (const double min, const double max)</td></tr>
<tr class="memdesc:a48ca8451f9803ce35d2a35cfb83d8ae9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Will return a random double within a range <br />
These bounds are INCLUSIVE! <a href="classEule_1_1Math.html#a48ca8451f9803ce35d2a35cfb83d8ae9">More...</a><br /></td></tr>
<tr class="separator:a48ca8451f9803ce35d2a35cfb83d8ae9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adfc55be8cb68aba351374f045f29a2ad"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEule_1_1Math.html#adfc55be8cb68aba351374f045f29a2ad">RandomIntRange</a> (const int max, const int min)</td></tr>
<tr class="memdesc:adfc55be8cb68aba351374f045f29a2ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Will return a random integer within a range. <a href="classEule_1_1Math.html#adfc55be8cb68aba351374f045f29a2ad">More...</a><br /></td></tr>
<tr class="separator:adfc55be8cb68aba351374f045f29a2ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60bffec38a861b7701fc90bd6f1a11d6"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEule_1_1Math.html#a60bffec38a861b7701fc90bd6f1a11d6">RandomChance</a> (const double chance)</td></tr>
<tr class="memdesc:a60bffec38a861b7701fc90bd6f1a11d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Will 'roll' a dice, returning <code>true</code> \(100 * chance\) percent of the time. <a href="classEule_1_1Math.html#a60bffec38a861b7701fc90bd6f1a11d6">More...</a><br /></td></tr>
<tr class="separator:a60bffec38a861b7701fc90bd6f1a11d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b0fb72c51751470f7f819b20a5b3b3f"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEule_1_1Math.html#a1b0fb72c51751470f7f819b20a5b3b3f">Oscillate</a> (const double a, const double b, const double counter, const double speed)</td></tr>
<tr class="memdesc:a1b0fb72c51751470f7f819b20a5b3b3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Kind of like \(sin(counter)\), but it oscillates over \([a,b]\) instead of \([-1,1]\), by a given speed. <a href="classEule_1_1Math.html#a1b0fb72c51751470f7f819b20a5b3b3f">More...</a><br /></td></tr>
<tr class="separator:a1b0fb72c51751470f7f819b20a5b3b3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="classEule_1_1Math.html" title="Math utility class containing basic functions.">Math</a> utility class containing basic functions. </p>
<p class="definition">Definition at line <a class="el" href="Math_8h_source.html#l00008">8</a> of file <a class="el" href="Math_8h_source.html">Math.h</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ab9ccf4aa730ef825faf224445c86ab25"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab9ccf4aa730ef825faf224445c86ab25">&#9670;&nbsp;</a></span>Abs()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constexpr double Eule::Math::Abs </td>
<td>(</td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>a</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Will return the absolute value of <code>a</code> </p>
<p class="definition">Definition at line <a class="el" href="Math_8h_source.html#l00092">92</a> of file <a class="el" href="Math_8h_source.html">Math.h</a>.</p>
<div class="fragment"><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="keywordflow">return</span> (a &gt; 0.0) ? a : -a;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a73947ee95912f0a06359fc5004bfc840"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73947ee95912f0a06359fc5004bfc840">&#9670;&nbsp;</a></span>Clamp()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constexpr double Eule::Math::Clamp </td>
<td>(</td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>v</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Will return <code>v</code>, but at least <code>min</code>, and at most <code>max</code> </p>
<p class="definition">Definition at line <a class="el" href="Math_8h_source.html#l00081">81</a> of file <a class="el" href="Math_8h_source.html">Math.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classEule_1_1Math.html#a991c620839f5fa9fcfe7e503b8ab0008">Max</a>(<a class="code" href="classEule_1_1Math.html#aa4d3c52cb09984ec567a9961ff7e3f02">Min</a>(v, max), min);</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a991f62401991014de20aca0fda9f9ef7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a991f62401991014de20aca0fda9f9ef7">&#9670;&nbsp;</a></span>Lerp()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constexpr double Eule::Math::Lerp </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>t</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Will return the linear interpolation between <code>a</code> and <code>b</code> by <code>t</code> </p>
<p class="definition">Definition at line <a class="el" href="Math_8h_source.html#l00086">86</a> of file <a class="el" href="Math_8h_source.html">Math.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> it = 1.0 - t;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> (a * it) + (b * t);</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a991c620839f5fa9fcfe7e503b8ab0008"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a991c620839f5fa9fcfe7e503b8ab0008">&#9670;&nbsp;</a></span>Max()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constexpr double Eule::Math::Max </td>
<td>(</td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>b</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Will return the bigger of two values. </p>
<p class="definition">Definition at line <a class="el" href="Math_8h_source.html#l00071">71</a> of file <a class="el" href="Math_8h_source.html">Math.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">return</span> (a &gt; b) ? a : b;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="aa4d3c52cb09984ec567a9961ff7e3f02"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4d3c52cb09984ec567a9961ff7e3f02">&#9670;&nbsp;</a></span>Min()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constexpr double Eule::Math::Min </td>
<td>(</td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>b</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Will return the smaller of two values. </p>
<p class="definition">Definition at line <a class="el" href="Math_8h_source.html#l00076">76</a> of file <a class="el" href="Math_8h_source.html">Math.h</a>.</p>
<div class="fragment"><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; <span class="keywordflow">return</span> (a &lt; b) ? a : b;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a1b0fb72c51751470f7f819b20a5b3b3f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b0fb72c51751470f7f819b20a5b3b3f">&#9670;&nbsp;</a></span>Oscillate()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double Math::Oscillate </td>
<td>(</td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>counter</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>speed</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Kind of like \(sin(counter)\), but it oscillates over \([a,b]\) instead of \([-1,1]\), by a given speed. </p>
<p><br />
Given that \(speed = 1\), the result will always be <code>a</code> if <code>counter</code> is even, and <code>b</code> if <code>counter</code> is uneven. <br />
If <code>counter</code> is a rational, the result will oscillate between <code>a</code> and <code>b</code>, like <code>sin()</code> does. <br />
If you increase <code>speed</code>, the oscillation frequency will increase. Meaning \(speed = 2\) would result in \(counter=0.5\) returning <code>b</code>. </p>
<p class="definition">Definition at line <a class="el" href="Math_8cpp_source.html#l00068">68</a> of file <a class="el" href="Math_8cpp_source.html">Math.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;{</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">return</span> (sin(counter * speed * <a class="code" href="Constants_8h.html#a299aabc5fc8285cbf99025330a3d0d0d">PI</a> - <a class="code" href="Constants_8h.html#ad0661cafa18be7ccadefb27b6b809264">HALF_PI</a>) * 0.5 + 0.5) * (b-a) + a;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a6aa6d6c804f995a089779219e5136e4f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6aa6d6c804f995a089779219e5136e4f">&#9670;&nbsp;</a></span>Random()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double Math::Random </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Will return a random double between <code>0</code> and <code>1</code> </p>
<p class="definition">Definition at line <a class="el" href="Math_8cpp_source.html#l00029">29</a> of file <a class="el" href="Math_8cpp_source.html">Math.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;{</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="Math_8cpp.html#ac0cae806d3e9a3772f7388dd53cfc370">MAKE_SURE_RNG_IS_INITIALIZED</a>;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; </div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">return</span> (rng() % 694206942069ll) / 694206942069.0;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a60bffec38a861b7701fc90bd6f1a11d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60bffec38a861b7701fc90bd6f1a11d6">&#9670;&nbsp;</a></span>RandomChance()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool Math::RandomChance </td>
<td>(</td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>chance</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Will 'roll' a dice, returning <code>true</code> \(100 * chance\) percent of the time. </p>
<p class="definition">Definition at line <a class="el" href="Math_8cpp_source.html#l00073">73</a> of file <a class="el" href="Math_8cpp_source.html">Math.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;{</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classEule_1_1Math.html#a6aa6d6c804f995a089779219e5136e4f">Random</a>() &lt;= chance;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="ab8d66e39e794d89594c50690ccc92c60"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab8d66e39e794d89594c50690ccc92c60">&#9670;&nbsp;</a></span>RandomInt()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int Math::RandomInt </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Will return a random integer. </p>
<p class="definition">Definition at line <a class="el" href="Math_8cpp_source.html#l00045">45</a> of file <a class="el" href="Math_8cpp_source.html">Math.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="Math_8cpp.html#ac0cae806d3e9a3772f7388dd53cfc370">MAKE_SURE_RNG_IS_INITIALIZED</a>;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">// Since this is supposed to return a random value anyways,</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// we can let the random uint overflow without any problems.</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)rng();</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="adfc55be8cb68aba351374f045f29a2ad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adfc55be8cb68aba351374f045f29a2ad">&#9670;&nbsp;</a></span>RandomIntRange()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int Math::RandomIntRange </td>
<td>(</td>
<td class="paramtype">const int&#160;</td>
<td class="paramname"><em>max</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int&#160;</td>
<td class="paramname"><em>min</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Will return a random integer within a range. </p>
<p>This is faster than <code>(int)RandomRange(x,y)</code> <br />
These bounds are INCLUSIVE! </p>
<p class="definition">Definition at line <a class="el" href="Math_8cpp_source.html#l00063">63</a> of file <a class="el" href="Math_8cpp_source.html">Math.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;{</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> (rng() % (max + 1 - min)) + min;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a48ca8451f9803ce35d2a35cfb83d8ae9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a48ca8451f9803ce35d2a35cfb83d8ae9">&#9670;&nbsp;</a></span>RandomRange()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double Math::RandomRange </td>
<td>(</td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>min</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>max</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Will return a random double within a range <br />
These bounds are INCLUSIVE! </p>
<p class="definition">Definition at line <a class="el" href="Math_8cpp_source.html#l00056">56</a> of file <a class="el" href="Math_8cpp_source.html">Math.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;{</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classEule_1_1Math.html#a6aa6d6c804f995a089779219e5136e4f">Random</a>() * (max - min)) + min;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="ad38d9a50e08cd02bb35161cc3bd77b26"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad38d9a50e08cd02bb35161cc3bd77b26">&#9670;&nbsp;</a></span>RandomUint()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int Math::RandomUint </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Will return a random unsigned integer. </p>
<p class="definition">Definition at line <a class="el" href="Math_8cpp_source.html#l00037">37</a> of file <a class="el" href="Math_8cpp_source.html">Math.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;{</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="Math_8cpp.html#ac0cae806d3e9a3772f7388dd53cfc370">MAKE_SURE_RNG_IS_INITIALIZED</a>;</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; <span class="keywordflow">return</span> rng();</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="ac928b1e9cde5ac60f5fdc1ba466305ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac928b1e9cde5ac60f5fdc1ba466305ff">&#9670;&nbsp;</a></span>Similar()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static constexpr bool Eule::Math::Similar </td>
<td>(</td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>b</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double&#160;</td>
<td class="paramname"><em>epsilon</em> = <code>0.00001</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Compares two double values with a given accuracy. </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>Eule/<a class="el" href="Math_8h_source.html">Math.h</a></li>
<li>Eule/<a class="el" href="Math_8cpp_source.html">Math.cpp</a></li>
</ul>
</div><!-- contents -->
<div class="ttc" id="aMath_8cpp_html_ac0cae806d3e9a3772f7388dd53cfc370"><div class="ttname"><a href="Math_8cpp.html#ac0cae806d3e9a3772f7388dd53cfc370">MAKE_SURE_RNG_IS_INITIALIZED</a></div><div class="ttdeci">#define MAKE_SURE_RNG_IS_INITIALIZED</div><div class="ttdef"><b>Definition:</b> <a href="Math_8cpp_source.html#l00008">Math.cpp:8</a></div></div>
<div class="ttc" id="aConstants_8h_html_a299aabc5fc8285cbf99025330a3d0d0d"><div class="ttname"><a href="Constants_8h.html#a299aabc5fc8285cbf99025330a3d0d0d">PI</a></div><div class="ttdeci">static constexpr double PI</div><div class="ttdoc">Pi up to 50 decimal places.</div><div class="ttdef"><b>Definition:</b> <a href="Constants_8h_source.html#l00006">Constants.h:6</a></div></div>
<div class="ttc" id="aclassEule_1_1Math_html_a991c620839f5fa9fcfe7e503b8ab0008"><div class="ttname"><a href="classEule_1_1Math.html#a991c620839f5fa9fcfe7e503b8ab0008">Eule::Math::Max</a></div><div class="ttdeci">static constexpr double Max(const double a, const double b)</div><div class="ttdoc">Will return the bigger of two values.</div><div class="ttdef"><b>Definition:</b> <a href="Math_8h_source.html#l00071">Math.h:71</a></div></div>
<div class="ttc" id="aclassEule_1_1Math_html_aa4d3c52cb09984ec567a9961ff7e3f02"><div class="ttname"><a href="classEule_1_1Math.html#aa4d3c52cb09984ec567a9961ff7e3f02">Eule::Math::Min</a></div><div class="ttdeci">static constexpr double Min(const double a, const double b)</div><div class="ttdoc">Will return the smaller of two values.</div><div class="ttdef"><b>Definition:</b> <a href="Math_8h_source.html#l00076">Math.h:76</a></div></div>
<div class="ttc" id="aclassEule_1_1Math_html_a6aa6d6c804f995a089779219e5136e4f"><div class="ttname"><a href="classEule_1_1Math.html#a6aa6d6c804f995a089779219e5136e4f">Eule::Math::Random</a></div><div class="ttdeci">static double Random()</div><div class="ttdoc">Will return a random double between 0 and 1</div><div class="ttdef"><b>Definition:</b> <a href="Math_8cpp_source.html#l00029">Math.cpp:29</a></div></div>
<div class="ttc" id="aConstants_8h_html_ad0661cafa18be7ccadefb27b6b809264"><div class="ttname"><a href="Constants_8h.html#ad0661cafa18be7ccadefb27b6b809264">HALF_PI</a></div><div class="ttdeci">static constexpr double HALF_PI</div><div class="ttdoc">Pi divided by two.</div><div class="ttdef"><b>Definition:</b> <a href="Constants_8h_source.html#l00009">Constants.h:9</a></div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Nov 15 2021 11:45:52 for Leonetienne/Eule by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>