1458 lines
272 KiB
HTML
Vendored
1458 lines
272 KiB
HTML
Vendored
<!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" lang="zh">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||
<meta name="generator" content="Doxygen 1.13.1"/>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||
<title>dl: D:/dl/dl/math/dl_math.h 源文件</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>
|
||
<script type="text/javascript" src="clipboard.js"></script>
|
||
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
||
<script type="text/javascript" src="resize.js"></script>
|
||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||
</head>
|
||
<body>
|
||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||
<div id="titlearea">
|
||
<table cellspacing="0" cellpadding="0">
|
||
<tbody>
|
||
<tr id="projectrow">
|
||
<td id="projectalign">
|
||
<div id="projectname">dl
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<!-- end header part -->
|
||
<!-- 制作者 Doxygen 1.13.1 -->
|
||
<script type="text/javascript">
|
||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||
$(function() { codefold.init(0); });
|
||
/* @license-end */
|
||
</script>
|
||
<script type="text/javascript" src="menudata.js"></script>
|
||
<script type="text/javascript" src="menu.js"></script>
|
||
<script type="text/javascript">
|
||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||
$(function() {
|
||
initMenu('',false,false,'search.php','搜索',false);
|
||
});
|
||
/* @license-end */
|
||
</script>
|
||
<div id="main-nav"></div>
|
||
<script type="text/javascript">
|
||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||
$(function(){ initResizable(false); });
|
||
/* @license-end */
|
||
</script>
|
||
<div id="nav-path" class="navpath">
|
||
<ul>
|
||
<li class="navelem"><a class="el" href="dir_17297ffb27ce571941f5fb5008f01a1f.html">dl</a></li><li class="navelem"><a class="el" href="dir_d483d22d183a78db490f3ff6a4a958eb.html">math</a></li> </ul>
|
||
</div>
|
||
</div><!-- top -->
|
||
<div id="doc-content">
|
||
<div class="header">
|
||
<div class="headertitle"><div class="title">dl_math.h</div></div>
|
||
</div><!--header-->
|
||
<div class="contents">
|
||
<a href="dl__math_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span></div>
|
||
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#pragma once</span></div>
|
||
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
|
||
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include <numeric></span></div>
|
||
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include <list></span></div>
|
||
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include <version></span></div>
|
||
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include <functional></span></div>
|
||
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
|
||
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include "<a class="code" href="dl__type_8h.html">dl_type.h</a>"</span></div>
|
||
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include "<a class="code" href="dl__log_8h.html">io/dl_log.h</a>"</span></div>
|
||
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#include "<a class="code" href="dl__concept_8h.html">base/dl_concept.h</a>"</span></div>
|
||
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#include "<a class="code" href="dl__algorithm_8h.html">dl_algorithm.h</a>"</span></div>
|
||
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#include "<a class="code" href="dl__range_8h.html">dl_range.h</a>"</span></div>
|
||
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
|
||
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
|
||
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="preprocessor">#include "<a class="code" href="dl__platform_8h.html">system/dl_platform.h</a>"</span></div>
|
||
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="preprocessor">#if (DL_PLATFORM == DL_PLATFORM_WIN32)</span></div>
|
||
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="preprocessor">#include <numbers></span></div>
|
||
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span></div>
|
||
<div class="foldopen" id="foldopen00030" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="namespacedl_1_1_numbers.html"> 30</a></span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacedl_1_1_numbers.html">dl::Numbers</a></div>
|
||
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span>{</div>
|
||
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"><a class="line" href="namespacedl_1_1_numbers.html#a27b365e4b15f0e772b45ad4384071191"> 32</a></span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">Float</a> <a class="code hl_variable" href="namespacedl_1_1_numbers.html#a27b365e4b15f0e772b45ad4384071191">EARTH_fADIUS</a> = 6371.393_f; </div>
|
||
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="namespacedl_1_1_numbers.html#a489312a13766a274d4a6cb497f788b06"> 33</a></span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">Float</a> <a class="code hl_variable" href="namespacedl_1_1_numbers.html#a489312a13766a274d4a6cb497f788b06">GRAVITY</a> = 9.8_f; </div>
|
||
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="namespacedl_1_1_numbers.html#a1075e2c18e33762256edcb857d9478a1"> 34</a></span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">Float</a> <a class="code hl_variable" href="namespacedl_1_1_numbers.html#a1075e2c18e33762256edcb857d9478a1">EULER</a> = 2.718281828459045_f; </div>
|
||
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="namespacedl_1_1_numbers.html#add20a4590c12a565e0ceb1304aa1fb11"> 35</a></span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">Float</a> <a class="code hl_variable" href="namespacedl_1_1_numbers.html#add20a4590c12a565e0ceb1304aa1fb11">RATIO_GOLD</a> = 0.618033988749894_f;</div>
|
||
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="namespacedl_1_1_numbers.html#abe43b603e3b3d10b060f30f84c637c49"> 36</a></span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">Float</a> <a class="code hl_variable" href="namespacedl_1_1_numbers.html#abe43b603e3b3d10b060f30f84c637c49">SQRT_2</a> = 1.41421356237_f; </div>
|
||
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="namespacedl_1_1_numbers.html#a6975b404b22d21d0b22c469e8bc2bc9b"> 37</a></span> <span class="keyword">constexpr</span> <a class="code hl_typedef" href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">Float</a> <a class="code hl_variable" href="namespacedl_1_1_numbers.html#a6975b404b22d21d0b22c469e8bc2bc9b">PI</a> = 3.1415926536_f; </div>
|
||
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span></div>
|
||
<div class="foldopen" id="foldopen00041" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"><a class="line" href="namespacedl_1_1_numeric.html"> 41</a></span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacedl_1_1_numeric.html">dl::Numeric</a></div>
|
||
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span>{</div>
|
||
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keywordtype">size_t</span> N></div>
|
||
<div class="foldopen" id="foldopen00045" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="namespacedl_1_1_numeric.html#a460b5258a3501aa49063917c6eb5bbfb"> 45</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="namespacedl_1_1_numeric.html#a460b5258a3501aa49063917c6eb5bbfb">Min</a>(<a class="code hl_class" href="classdl_1_1_array.html">Array<T, N></a>& container)</div>
|
||
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> {</div>
|
||
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a8d9c307cb7f3c4a32822a51922d1ceaa">N</a>; ++i)</div>
|
||
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> {</div>
|
||
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> container[i] = (std::numeric_limits<T>::min)();</div>
|
||
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> }</div>
|
||
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> }</div>
|
||
</div>
|
||
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keywordtype">size_t</span> N></div>
|
||
<div class="foldopen" id="foldopen00053" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="namespacedl_1_1_numeric.html#aefaca7a8e14a5bf467788ca6d9b87564"> 53</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="namespacedl_1_1_numeric.html#aefaca7a8e14a5bf467788ca6d9b87564">Max</a>(<a class="code hl_class" href="classdl_1_1_array.html">Array<T, N></a>& container)</div>
|
||
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> {</div>
|
||
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a8d9c307cb7f3c4a32822a51922d1ceaa">N</a>; ++i)</div>
|
||
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> {</div>
|
||
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> container[i] = (std::numeric_limits<T>::max)();</div>
|
||
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> }</div>
|
||
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> }</div>
|
||
</div>
|
||
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span></div>
|
||
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="comment">//void RectBinPack(const Size& size, list<>& map_fect, map<size_t, RectU>& map_fet)</span></div>
|
||
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment">//{</span></div>
|
||
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment">// //0按面积排序</span></div>
|
||
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment">//}</span></div>
|
||
<div class="foldopen" id="foldopen00071" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html"> 71</a></span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacedl_1_1_math.html">dl::Math</a></div>
|
||
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span>{</div>
|
||
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen00077" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a179e7cdae2c5e2721dcce18f539ba1dc"> 77</a></span><span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a179e7cdae2c5e2721dcce18f539ba1dc">IsOutRange</a>(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> x, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> a, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> b)</div>
|
||
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span>{</div>
|
||
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="keywordflow">return</span> x < a || b < x;</div>
|
||
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span></div>
|
||
<div class="foldopen" id="foldopen00084" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a7dd8ad32404788c594e14647d1299507"> 84</a></span><span class="keyword">constexpr</span> <span class="keywordtype">float</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a7dd8ad32404788c594e14647d1299507">Radian2Angle</a>(<span class="keywordtype">float</span> radin)</div>
|
||
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span>{</div>
|
||
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">return</span> radin * 180.0f / <a class="code hl_variable" href="namespacedl_1_1_numbers.html#a6975b404b22d21d0b22c469e8bc2bc9b">Numbers::PI</a>;</div>
|
||
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span></div>
|
||
<div class="foldopen" id="foldopen00091" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#ae818648de6e0dc9cacee134bf6436d73"> 91</a></span><span class="keyword">constexpr</span> <span class="keywordtype">float</span> <a class="code hl_function" href="namespacedl_1_1_math.html#ae818648de6e0dc9cacee134bf6436d73">Angle2Radian</a>(<span class="keywordtype">float</span> angle)</div>
|
||
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span>{</div>
|
||
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordflow">return</span> angle * <a class="code hl_variable" href="namespacedl_1_1_numbers.html#a6975b404b22d21d0b22c469e8bc2bc9b">Numbers::PI</a> / 180.0f;</div>
|
||
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span></div>
|
||
<div class="foldopen" id="foldopen00100" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#ab05d68f0f058aefa1d75608134517ce4"> 100</a></span><span class="keyword">constexpr</span> <span class="keywordtype">void</span> <a class="code hl_function" href="namespacedl_1_1_math.html#ab05d68f0f058aefa1d75608134517ce4">RangeRadian</a>(std::array<float, 2>& arr)</div>
|
||
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span>{</div>
|
||
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keyword">constexpr</span> <span class="keywordtype">float</span> PI_2 = <a class="code hl_variable" href="namespacedl_1_1_numbers.html#a6975b404b22d21d0b22c469e8bc2bc9b">Numbers::PI</a> * 2;</div>
|
||
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordflow">if</span> (arr[0] > arr[1])</div>
|
||
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> {</div>
|
||
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> arr[1] += PI_2 * (std::floor((arr[0] - arr[1]) / PI_2) + 1);</div>
|
||
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> }</div>
|
||
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span></div>
|
||
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> </div>
|
||
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span><span class="preprocessor">#if DL_PLATFORM == DL_PLATFORM_WIN32</span></div>
|
||
<div class="foldopen" id="foldopen00113" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a04458f7f2d5dac1e877fba42a141a51a"> 113</a></span><span class="keyword">inline</span> uint32_t <a class="code hl_function" href="namespacedl_1_1_math.html#a04458f7f2d5dac1e877fba42a141a51a">ByteReverse</a>(uint32_t x)</div>
|
||
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span>{</div>
|
||
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordflow">return</span> _byteswap_ulong(x);</div>
|
||
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="preprocessor">#else</span></div>
|
||
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="keyword">constexpr</span> uint32_t <a class="code hl_function" href="namespacedl_1_1_math.html#a04458f7f2d5dac1e877fba42a141a51a">ByteReverse</a>(uint32_t x)</div>
|
||
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span>{</div>
|
||
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">return</span> __builtin_bswap32(x);</div>
|
||
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span>}</div>
|
||
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
|
||
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span></div>
|
||
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen00131" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a4ca0412804f8a0b02f64c9e17fcaaec5"> 131</a></span><span class="keyword">constexpr</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="namespacedl_1_1_math.html#a4ca0412804f8a0b02f64c9e17fcaaec5">Pow</a>(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> x, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> n)</div>
|
||
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span>{</div>
|
||
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> ret = 1;</div>
|
||
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">for</span> (<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> i = 0; i < n; ++i)</div>
|
||
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> {</div>
|
||
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> ret *= x;</div>
|
||
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> }</div>
|
||
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <span class="keywordflow">return</span> ret;</div>
|
||
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span>}</div>
|
||
</div>
|
||
<div class="foldopen" id="foldopen00140" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365"> 140</a></span><span class="keyword">constexpr</span> uint64_t <a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(uint64_t x, uint8_t n)</div>
|
||
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span>{</div>
|
||
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> uint64_t ret = 1;</div>
|
||
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="keywordflow">for</span> (uint8_t i = 0; i < n; ++i)</div>
|
||
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> {</div>
|
||
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> ret *= x;</div>
|
||
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> }</div>
|
||
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keywordflow">return</span> ret;</div>
|
||
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span>}</div>
|
||
</div>
|
||
<div class="foldopen" id="foldopen00149" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336"> 149</a></span><span class="keyword">constexpr</span> uint32_t <a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(uint32_t x, uint8_t n)</div>
|
||
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span>{</div>
|
||
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> uint32_t ret = 1;</div>
|
||
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keywordflow">for</span> (uint8_t i = 0; i < n; ++i)</div>
|
||
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> {</div>
|
||
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> ret *= x;</div>
|
||
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> }</div>
|
||
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keywordflow">return</span> ret;</div>
|
||
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span></div>
|
||
<div class="foldopen" id="foldopen00162" data-start="{" data-end="};">
|
||
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#aac05b119f1bdc7c211f75cb83e943c02"> 162</a></span><span class="keyword">constexpr</span> uint64_t <a class="code hl_variable" href="namespacedl_1_1_math.html#aac05b119f1bdc7c211f75cb83e943c02">ARRAY_POW2</a>[] = {</div>
|
||
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,0),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,1),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,2),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,3),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,4),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,5),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,6),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,7),</div>
|
||
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,8),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,9),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,10),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,11),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,12),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,13),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,14),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,15),</div>
|
||
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,16),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,17),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,18),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,19),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,20),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,21),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,22),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,23),</div>
|
||
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,24),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,25),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,26),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,27),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,28),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,29),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,30),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,31),</div>
|
||
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,32),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,33),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,34),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,35),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,36),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,37),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,38),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,39),</div>
|
||
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,40),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,41),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,42),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,43),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,44),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,45),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,46),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,47),</div>
|
||
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,48),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,49),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,50),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,51),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,52),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,53),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,54),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,55),</div>
|
||
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,56),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,57),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,58),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,59),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,60),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,61),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,62),<a class="code hl_function" href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">Pow64</a>(2,63) };</div>
|
||
</div>
|
||
<div class="foldopen" id="foldopen00171" data-start="{" data-end="};">
|
||
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a35722e5e04b27ee4c5c1e9e29e190712"> 171</a></span><span class="keyword">constexpr</span> uint32_t <a class="code hl_variable" href="namespacedl_1_1_math.html#a35722e5e04b27ee4c5c1e9e29e190712">ARRAY_POW2_32</a>[] = {</div>
|
||
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,0),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,1),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,2),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,3),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,4),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,5),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,6),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,7),</div>
|
||
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,8),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,9),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,10),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,11),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,12),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,13),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,14),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,15),</div>
|
||
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,16),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,17),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,18),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,19),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,20),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,21),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,22),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,23),</div>
|
||
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,24),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,25),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,26),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,27),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,28),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,29),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,30),<a class="code hl_function" href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">Pow32</a>(2,31) };</div>
|
||
</div>
|
||
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span></div>
|
||
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"><a class="line" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67"> 182</a></span><span class="preprocessor">#define DND_ARRAY_POW_LINE(index) if (x <= ARRAY_POW2[index])return ARRAY_POW2[index]</span></div>
|
||
<div class="foldopen" id="foldopen00183" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#adddef243cf841007e5d654c2006829a7"> 183</a></span><span class="keyword">constexpr</span> uint64_t <a class="code hl_function" href="namespacedl_1_1_math.html#adddef243cf841007e5d654c2006829a7">CeilToPow2</a>(uint64_t&& x)</div>
|
||
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span>{</div>
|
||
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(0); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(1); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(2); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(3); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(4); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(5); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(6); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(7);</div>
|
||
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(8); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(9); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(10); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(11); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(12); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(13); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(14); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(15);</div>
|
||
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(16); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(17); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(18); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(19); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(20); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(21); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(22); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(23);</div>
|
||
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(24); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(25); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(26); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(27); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(28); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(29); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(30); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(31);</div>
|
||
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(32); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(33); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(34); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(35); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(36); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(37); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(38); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(39);</div>
|
||
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(40); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(41); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(42); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(43); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(44); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(45); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(46); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(47);</div>
|
||
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(48); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(49); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(50); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(51); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(52); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(53); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(54); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(55);</div>
|
||
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(56); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(57); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(58); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(59); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(60); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(61); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(62); <a class="code hl_define" href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a>(63);</div>
|
||
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> </div>
|
||
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <a class="code hl_function" href="namespacedl.html#a5bb9ee10db5338251b4bb854939b69b3">log</a>(<span class="stringliteral">"数值过大,超过2^63:"</span> + std::to_string(x));</div>
|
||
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="keywordflow">return</span> 0;</div>
|
||
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"><a class="line" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa"> 197</a></span><span class="preprocessor">#define DND_ARRAY_POW_LINE_32(index) if (x <= ARRAY_POW2_32[index])return ARRAY_POW2_32[index]</span></div>
|
||
<div class="foldopen" id="foldopen00198" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a3eeb60bae7d2782c2691b04aca34ff5c"> 198</a></span><span class="keyword">constexpr</span> uint32_t <a class="code hl_function" href="namespacedl_1_1_math.html#adddef243cf841007e5d654c2006829a7">CeilToPow2</a>(uint32_t&& x)</div>
|
||
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span>{</div>
|
||
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(0); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(1); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(2); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(3); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(4); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(5); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(6); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(7);</div>
|
||
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(8); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(9); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(10); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(11); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(12); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(13); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(14); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(15);</div>
|
||
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(16); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(17); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(18); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(19); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(20); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(21); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(22); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(23);</div>
|
||
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(24); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(25); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(26); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(27); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(28); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(29); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(30); <a class="code hl_define" href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a>(31);</div>
|
||
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> </div>
|
||
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <a class="code hl_function" href="namespacedl.html#a5bb9ee10db5338251b4bb854939b69b3">log</a>(<span class="stringliteral">"数值过大,超过2^31:"</span> + std::to_string(x));</div>
|
||
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <span class="keywordflow">return</span> 0;</div>
|
||
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span></div>
|
||
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen00214" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a31bca635c9d085d31f0c4adf30e4f14e"> 214</a></span><span class="keyword">inline</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="namespacedl_1_1_math.html#adddef243cf841007e5d654c2006829a7">CeilToPow2</a>(<span class="keyword">const</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>& x)</div>
|
||
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span>{</div>
|
||
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="preprocessor">#if (DL_PLATFORM == DL_PLATFORM_WIN32)</span></div>
|
||
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> <span class="keywordflow">return</span> std::bit_ceil(x);</div>
|
||
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span><span class="preprocessor">#else</span></div>
|
||
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacedl_1_1_math.html#adddef243cf841007e5d654c2006829a7">CeilToPow2</a>(x);</div>
|
||
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span><span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> </div>
|
||
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span></div>
|
||
<div class="foldopen" id="foldopen00230" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a7317ab76cec9c98260f3cbb7f6530238"> 230</a></span><span class="keyword">inline</span> <span class="keywordtype">float</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a7317ab76cec9c98260f3cbb7f6530238">RSqrt</a>(<span class="keywordtype">float</span> x)</div>
|
||
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span>{</div>
|
||
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="keywordtype">long</span> i;</div>
|
||
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="keywordtype">float</span> x2, y;</div>
|
||
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keyword">const</span> <span class="keywordtype">float</span> threehalfs = 1.5f;</div>
|
||
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> </div>
|
||
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> x2 = x * 0.5f;</div>
|
||
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> y = x;</div>
|
||
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> i = *(<span class="keywordtype">long</span>*)&y;</div>
|
||
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> i = 0x5f3759df - (i >> 1);</div>
|
||
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> y = *(<span class="keywordtype">float</span>*)&i;</div>
|
||
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> y = y * (threehalfs - (x2 * y * y));</div>
|
||
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="keywordflow">return</span> y;</div>
|
||
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> </div>
|
||
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span></div>
|
||
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span><span class="keyword">template</span><<span class="keywordtype">size_t</span> N></div>
|
||
<div class="foldopen" id="foldopen00250" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a883b5ed41484062d5437ce662cf52319"> 250</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a883b5ed41484062d5437ce662cf52319">NormalizeFast</a>(<a class="code hl_class" href="classdl_1_1_array.html">Array<float, N></a>& v)</div>
|
||
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span>{</div>
|
||
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <span class="keywordtype">float</span> length = 0;</div>
|
||
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a8d9c307cb7f3c4a32822a51922d1ceaa">N</a>; ++i)</div>
|
||
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> {</div>
|
||
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> length += (v[i] * v[i]);</div>
|
||
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> }</div>
|
||
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> </div>
|
||
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> length = <a class="code hl_function" href="namespacedl_1_1_math.html#a7317ab76cec9c98260f3cbb7f6530238">RSqrt</a>(length);</div>
|
||
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a8d9c307cb7f3c4a32822a51922d1ceaa">N</a>; ++i)</div>
|
||
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> {</div>
|
||
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> v[i] *= length;</div>
|
||
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> }</div>
|
||
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span></div>
|
||
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span><span class="keyword">template</span> <IsUn<span class="keywordtype">signed</span> T0, IsSigned T1></div>
|
||
<div class="foldopen" id="foldopen00269" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#af74bba51c5ae4f7eafe21b0d8b41dd77"> 269</a></span>T0 <a class="code hl_function" href="namespacedl_1_1_math.html#af74bba51c5ae4f7eafe21b0d8b41dd77">AddU</a>(T0 a, T1 b)</div>
|
||
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span>{</div>
|
||
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> <span class="keywordflow">if</span> (b >= 0)</div>
|
||
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keywordflow">return</span> a + (T0)b;</div>
|
||
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> T0 nag_b = (T0)-b;</div>
|
||
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keywordflow">return</span> nag_b < a ? a - nag_b : 0;</div>
|
||
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span></div>
|
||
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span><span class="keyword">template</span> <IsUn<span class="keywordtype">signed</span> T0, IsSigned T1, <span class="keywordtype">size_t</span> N></div>
|
||
<div class="foldopen" id="foldopen00280" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a11c31edeab26c0aa7709e5033a5829a4"> 280</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="namespacedl_1_1_math.html#af74bba51c5ae4f7eafe21b0d8b41dd77">AddU</a>(<a class="code hl_class" href="classdl_1_1_array.html">Array<T0, N></a>& a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T1, N></a>& b)</div>
|
||
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span>{</div>
|
||
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a8d9c307cb7f3c4a32822a51922d1ceaa">N</a>; ++i)</div>
|
||
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> a[i] = <a class="code hl_function" href="namespacedl_1_1_math.html#af74bba51c5ae4f7eafe21b0d8b41dd77">AddU</a>(a[i], b[i]);</div>
|
||
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> </div>
|
||
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span><span class="keyword">template</span> <IsUn<span class="keywordtype">signed</span> T0, IsSigned T1, <span class="keywordtype">size_t</span> N></div>
|
||
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span>[[nodiscard]]</div>
|
||
<div class="foldopen" id="foldopen00288" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a72afdf382458d013dfcdf794db9c9e0d"> 288</a></span><a class="code hl_class" href="classdl_1_1_array.html">Array<T0, N></a> <a class="code hl_function" href="namespacedl_1_1_math.html#af74bba51c5ae4f7eafe21b0d8b41dd77">AddU</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T0, N></a>& a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T1, N></a>& b)</div>
|
||
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span>{</div>
|
||
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T0, N></a> ret = a;</div>
|
||
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a8d9c307cb7f3c4a32822a51922d1ceaa">N</a>; ++i)</div>
|
||
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> <a class="code hl_function" href="namespacedl_1_1_math.html#af74bba51c5ae4f7eafe21b0d8b41dd77">AddU</a>(ret, b[i]);</div>
|
||
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> <span class="keywordflow">return</span> ret;</div>
|
||
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span></div>
|
||
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span><span class="keyword">template</span> <IsUn<span class="keywordtype">signed</span> T0, IsSigned T1></div>
|
||
<div class="foldopen" id="foldopen00299" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a4ee9f3ba35fa7a809016bf99b50f9665"> 299</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a4ee9f3ba35fa7a809016bf99b50f9665">AddUCheck</a>(T0 a, T1 b, T0& ret)</div>
|
||
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span>{</div>
|
||
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> <span class="keywordflow">if</span> (b >= 0)</div>
|
||
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <span class="keywordflow">return</span> a + (T0)b;</div>
|
||
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> T0 nag_b = (T0)-b;</div>
|
||
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> <span class="keywordflow">if</span> (nag_b > a)</div>
|
||
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> ret = a - nag_b;</div>
|
||
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span></div>
|
||
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span><span class="keyword">template</span> <IsUn<span class="keywordtype">signed</span> T0, IsSigned T1, <span class="keywordtype">size_t</span> N></div>
|
||
<div class="foldopen" id="foldopen00313" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a7299d8bc3086fec32c6587be339d8da4"> 313</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a4ee9f3ba35fa7a809016bf99b50f9665">AddUCheck</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T0, N></a>& a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T1, N></a>& b, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T0, N></a>& ret)</div>
|
||
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span>{</div>
|
||
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a8d9c307cb7f3c4a32822a51922d1ceaa">N</a>; ++i)</div>
|
||
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> {</div>
|
||
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="namespacedl_1_1_math.html#a4ee9f3ba35fa7a809016bf99b50f9665">AddUCheck</a>(a[i], b[i], ret[i]))</div>
|
||
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> }</div>
|
||
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span></div>
|
||
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span><span class="keyword">template</span> <IsUn<span class="keywordtype">signed</span> T></div>
|
||
<div class="foldopen" id="foldopen00326" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a0380237a8e9d81a1ee75916a12b836db"> 326</a></span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="namespacedl_1_1_math.html#a0380237a8e9d81a1ee75916a12b836db">SubU</a>(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> a, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> b)</div>
|
||
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span>{</div>
|
||
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> <span class="keywordflow">return</span> a > b ? a - b : 0;</div>
|
||
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span></div>
|
||
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span><span class="keyword">template</span> <IsUn<span class="keywordtype">signed</span> T0, IsSigned T1></div>
|
||
<div class="foldopen" id="foldopen00334" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a657ce888b215ad854d96df93500f0ad4"> 334</a></span>T0 <a class="code hl_function" href="namespacedl_1_1_math.html#a0380237a8e9d81a1ee75916a12b836db">SubU</a>(T0 a, T1 b)</div>
|
||
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span>{</div>
|
||
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> <span class="keywordflow">if</span> (b <= 0)</div>
|
||
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> <span class="keywordflow">return</span> a + -b;</div>
|
||
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a0380237a8e9d81a1ee75916a12b836db">SubU</a>(a, (T0)b);</div>
|
||
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span></div>
|
||
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span><span class="keyword">template</span> <IsUn<span class="keywordtype">signed</span> T, <span class="keywordtype">size_t</span> N></div>
|
||
<div class="foldopen" id="foldopen00344" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a5cb8bdfad54eb42aa820147f7dde5e9a"> 344</a></span><a class="code hl_class" href="classdl_1_1_array.html">Array<T, N></a> <a class="code hl_function" href="namespacedl_1_1_math.html#a0380237a8e9d81a1ee75916a12b836db">SubU</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, N></a>& a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, N></a>& b)</div>
|
||
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span>{</div>
|
||
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, N></a> ret;</div>
|
||
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a8d9c307cb7f3c4a32822a51922d1ceaa">N</a>; ++i)</div>
|
||
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> ret[i] = <a class="code hl_function" href="namespacedl_1_1_math.html#a0380237a8e9d81a1ee75916a12b836db">SubU</a>(a[i], b[i]);</div>
|
||
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> <span class="keywordflow">return</span> ret;</div>
|
||
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span></div>
|
||
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span><span class="keyword">template</span> <IsUn<span class="keywordtype">signed</span> T0, IsSigned T1, <span class="keywordtype">size_t</span> N></div>
|
||
<div class="foldopen" id="foldopen00355" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a1f56a2e9e6fac28373c63f40ff62ca37"> 355</a></span><a class="code hl_class" href="classdl_1_1_array.html">Array<T0, N></a> <a class="code hl_function" href="namespacedl_1_1_math.html#a0380237a8e9d81a1ee75916a12b836db">SubU</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T0, N></a>& a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T1, N></a>& b)</div>
|
||
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span>{</div>
|
||
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T0, N></a> ret;</div>
|
||
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a8d9c307cb7f3c4a32822a51922d1ceaa">N</a>; ++i)</div>
|
||
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> ret[i] = <a class="code hl_function" href="namespacedl_1_1_math.html#a0380237a8e9d81a1ee75916a12b836db">SubU</a>(a[i], b[i]);</div>
|
||
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> <span class="keywordflow">return</span> ret;</div>
|
||
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span></div>
|
||
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span><span class="keyword">template</span> <IsUn<span class="keywordtype">signed</span> T></div>
|
||
<div class="foldopen" id="foldopen00366" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a834f4782bdd70e7034832d5b4c5ea87c"> 366</a></span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="namespacedl_1_1_math.html#a834f4782bdd70e7034832d5b4c5ea87c">DisU</a>(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> a, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> b)</div>
|
||
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span>{</div>
|
||
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> <span class="keywordflow">return</span> a < b ? b - a : a - b;</div>
|
||
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span></div>
|
||
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span><span class="keyword">template</span> <IsUn<span class="keywordtype">signed</span> T, <span class="keywordtype">size_t</span> N></div>
|
||
<div class="foldopen" id="foldopen00375" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a17273ff24ed2be16e7bf6ba58a0eee62"> 375</a></span><a class="code hl_class" href="classdl_1_1_array.html">Array<T, N></a> <a class="code hl_function" href="namespacedl_1_1_math.html#a834f4782bdd70e7034832d5b4c5ea87c">DisU</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, N></a>& a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, N></a>& b)</div>
|
||
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span>{</div>
|
||
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, N></a> ret;</div>
|
||
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a8d9c307cb7f3c4a32822a51922d1ceaa">N</a>; ++i)</div>
|
||
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> ret[i] = <a class="code hl_function" href="namespacedl_1_1_math.html#a834f4782bdd70e7034832d5b4c5ea87c">DisU</a>(a[i], b[i]);</div>
|
||
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> <span class="keywordflow">return</span> ret;</div>
|
||
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> </div>
|
||
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> </div>
|
||
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span><span class="comment">//-------------------------------向量距离-----------------------------</span></div>
|
||
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span><span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen00389" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#aaf5f859bf7a1ed57578fbf040113fd37"> 389</a></span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="namespacedl_1_1_math.html#aaf5f859bf7a1ed57578fbf040113fd37">DistancePow2</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 2></a>& a)</div>
|
||
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span>{</div>
|
||
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> <span class="keywordflow">return</span> a[0] * a[0] + a[1] * a[1];</div>
|
||
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> </div>
|
||
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span><span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen00395" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a952ba8a92e01b978568ea5c6574fe663"> 395</a></span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="namespacedl_1_1_math.html#aaf5f859bf7a1ed57578fbf040113fd37">DistancePow2</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 3></a>& a)</div>
|
||
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span>{</div>
|
||
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> <span class="keywordflow">return</span> a[0] * a[0] + a[1] * a[1] + a[2] * a[2];</div>
|
||
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> </div>
|
||
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span><span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen00401" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a7de12e808a28574d032ddc38c11876cd"> 401</a></span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="namespacedl_1_1_math.html#aaf5f859bf7a1ed57578fbf040113fd37">DistancePow2</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 4></a>& a)</div>
|
||
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span>{</div>
|
||
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> <span class="keywordflow">return</span> a[0] * a[0] + a[1] * a[1] + a[2] * a[2] + a[3] * a[3];</div>
|
||
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span><span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen00406" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a31ff00e50cd7649d37e469706827439b"> 406</a></span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="namespacedl_1_1_math.html#a31ff00e50cd7649d37e469706827439b">Distance</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 2></a>& a)</div>
|
||
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span>{</div>
|
||
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a><span class="keyword">></span>(std::sqrt(<a class="code hl_function" href="namespacedl_1_1_math.html#aaf5f859bf7a1ed57578fbf040113fd37">DistancePow2</a>(a)));</div>
|
||
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span><span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen00411" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#ac02e8be8ba71068d5b4ae57f42749443"> 411</a></span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="namespacedl_1_1_math.html#a31ff00e50cd7649d37e469706827439b">Distance</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 3></a>& a)</div>
|
||
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span>{</div>
|
||
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a><span class="keyword">></span>(std::sqrt(<a class="code hl_function" href="namespacedl_1_1_math.html#aaf5f859bf7a1ed57578fbf040113fd37">DistancePow2</a>(a)));</div>
|
||
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span><span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen00416" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a26258e9ab93b4ee8867d673874c75f73"> 416</a></span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="namespacedl_1_1_math.html#a31ff00e50cd7649d37e469706827439b">Distance</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 4></a>& a)</div>
|
||
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span>{</div>
|
||
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a><span class="keyword">></span>(std::sqrt(<a class="code hl_function" href="namespacedl_1_1_math.html#aaf5f859bf7a1ed57578fbf040113fd37">DistancePow2</a>(a)));</div>
|
||
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span></div>
|
||
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span><span class="keyword">template</span> <IsSigned T></div>
|
||
<div class="foldopen" id="foldopen00425" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a7c490226a724b0c8bcb9de118c0e4242"> 425</a></span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="namespacedl_1_1_math.html#aaf5f859bf7a1ed57578fbf040113fd37">DistancePow2</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 2></a>& a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 2></a>& b)</div>
|
||
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span>{</div>
|
||
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacedl_1_1_math.html#aaf5f859bf7a1ed57578fbf040113fd37">DistancePow2</a>(b - a);</div>
|
||
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span></div>
|
||
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span><span class="keyword">template</span> <IsUn<span class="keywordtype">signed</span> T></div>
|
||
<div class="foldopen" id="foldopen00434" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a125c73a721ba7fffc381d396dd09cbe6"> 434</a></span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="namespacedl_1_1_math.html#a125c73a721ba7fffc381d396dd09cbe6">DistancePow2U</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 2></a>& a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 2></a>& b)</div>
|
||
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span>{</div>
|
||
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> <span class="keywordtype">unsigned</span> dx = <a class="code hl_function" href="namespacedl_1_1_math.html#a834f4782bdd70e7034832d5b4c5ea87c">DisU</a>(a[0], b[0]);</div>
|
||
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> <span class="keywordtype">unsigned</span> dy = <a class="code hl_function" href="namespacedl_1_1_math.html#a834f4782bdd70e7034832d5b4c5ea87c">DisU</a>(a[1], b[1]);</div>
|
||
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> <span class="keywordflow">return</span> dx * dx + dy * dy;</div>
|
||
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span></div>
|
||
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span><span class="keyword">template</span> <IsUn<span class="keywordtype">signed</span> T></div>
|
||
<div class="foldopen" id="foldopen00445" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#ae4ea8b4e5f810327297dd5264056e03e"> 445</a></span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="namespacedl_1_1_math.html#ae4ea8b4e5f810327297dd5264056e03e">DistanceU</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 2></a>& a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 2></a>& b)</div>
|
||
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span>{</div>
|
||
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a><span class="keyword">></span>(std::sqrt(<a class="code hl_function" href="namespacedl_1_1_math.html#a125c73a721ba7fffc381d396dd09cbe6">DistancePow2U</a>(a, b)));</div>
|
||
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span></div>
|
||
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span><span class="keyword">template</span> <IsSigned T, <span class="keywordtype">size_t</span> N></div>
|
||
<div class="foldopen" id="foldopen00453" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a58fa4763197d4ffe4d73c5f14db25ad3"> 453</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a58fa4763197d4ffe4d73c5f14db25ad3">Normalize</a>(<a class="code hl_class" href="classdl_1_1_array.html">Array<T, N></a>& v)</div>
|
||
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span>{</div>
|
||
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> length = <a class="code hl_function" href="namespacedl_1_1_math.html#aaf5f859bf7a1ed57578fbf040113fd37">DistancePow2</a>(v);</div>
|
||
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> length = sqrt(length);</div>
|
||
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> </div>
|
||
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> v /= length;</div>
|
||
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> </div>
|
||
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span><span class="keyword">template</span> <IsSigned T, <span class="keywordtype">size_t</span> N></div>
|
||
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span>[[nodiscard]]</div>
|
||
<div class="foldopen" id="foldopen00463" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#ad93e72766e62852fcc99f56f37d3a52e"> 463</a></span><a class="code hl_class" href="classdl_1_1_array.html">Array<T, N></a> <a class="code hl_function" href="namespacedl_1_1_math.html#a58fa4763197d4ffe4d73c5f14db25ad3">Normalize</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, N></a>& v)</div>
|
||
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span>{</div>
|
||
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, N></a> ret = v;</div>
|
||
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a58fa4763197d4ffe4d73c5f14db25ad3">Normalize</a>(ret);</div>
|
||
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> <span class="keywordflow">return</span> ret;</div>
|
||
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span></div>
|
||
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a44e4357e81bf26026604eb39fd6bcf46"> 474</a></span>std::vector<PointU> <a class="code hl_function" href="namespacedl_1_1_math.html#a44e4357e81bf26026604eb39fd6bcf46">GetCircle</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af4b025efbd5dae0045cce4cbc9546416">Size</a>& size, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& xy, <span class="keywordtype">unsigned</span> rad);</div>
|
||
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> </div>
|
||
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span></div>
|
||
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#abd6d26eb243e7190c83bf3447db83fa6"> 481</a></span>std::vector<Point> <a class="code hl_function" href="namespacedl_1_1_math.html#a44e4357e81bf26026604eb39fd6bcf46">GetCircle</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a>& xy, <span class="keywordtype">unsigned</span> rad);</div>
|
||
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> </div>
|
||
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span></div>
|
||
<div class="foldopen" id="foldopen00489" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a6c4d5b783a36df0968baff39b508ec0b"> 489</a></span><span class="keyword">constexpr</span> <span class="keywordtype">double</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a6c4d5b783a36df0968baff39b508ec0b">PI</a>(<span class="keywordtype">unsigned</span> n = 1, <span class="keywordtype">unsigned</span> d = 1)</div>
|
||
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span>{</div>
|
||
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span><span class="preprocessor">#ifdef false</span></div>
|
||
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> <span class="keywordflow">return</span> std::numbers::pi * n / d;</div>
|
||
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span><span class="preprocessor">#else</span></div>
|
||
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> <span class="keywordflow">return</span> 3.1415926535897932384626433832795 * n / d;</div>
|
||
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span><span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span>}</div>
|
||
</div>
|
||
<div class="foldopen" id="foldopen00497" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a1274044c749de5cfee397f1faf1b0910"> 497</a></span><span class="keyword">constexpr</span> <span class="keywordtype">float</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a1274044c749de5cfee397f1faf1b0910">PIF</a>(<span class="keywordtype">unsigned</span> n = 1, <span class="keywordtype">unsigned</span> d = 1)</div>
|
||
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span>{</div>
|
||
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span><span class="preprocessor">#ifdef false</span></div>
|
||
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> <span class="keywordflow">return</span> (<span class="keywordtype">float</span>)std::numbers::pi * n / d;</div>
|
||
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span><span class="preprocessor">#else</span></div>
|
||
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> <span class="keywordflow">return</span> 3.1415926535897932384626433832795f * n / d;</div>
|
||
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span><span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span></div>
|
||
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span><span class="comment">/*dnd::Direction IndexRpg2Direction(size_t index)</span></div>
|
||
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span><span class="comment">{</span></div>
|
||
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span><span class="comment"> if (index == 0)</span></div>
|
||
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span><span class="comment"> return Direction::DOWN;</span></div>
|
||
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span><span class="comment"> if (index == 1)</span></div>
|
||
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span><span class="comment"> return Direction::LEFT;</span></div>
|
||
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span><span class="comment"> if (index == 2)</span></div>
|
||
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span><span class="comment"> return Direction::RIGHT;</span></div>
|
||
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span><span class="comment"> if (index == 3)</span></div>
|
||
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span><span class="comment"> return Direction::UP;</span></div>
|
||
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span><span class="comment"></span> </div>
|
||
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span><span class="comment"> debug_warn("错误的下标![0, 3]");</span></div>
|
||
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span><span class="comment"> return Direction::DOWN;</span></div>
|
||
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span><span class="comment">}*/</span></div>
|
||
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span></div>
|
||
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span><span class="comment">//DirectionMask::Var Dir2Mask(const Vector2& dir)</span></div>
|
||
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span><span class="comment">//{</span></div>
|
||
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span><span class="comment">// if (Every::Zero(dir))</span></div>
|
||
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span><span class="comment">// return DirectionMask::NONE;</span></div>
|
||
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span><span class="comment">// double r = atan2(dir[1], dir[0]);//返回(-pi, pi],从正x轴向正y轴旋转</span></div>
|
||
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span><span class="comment">// if (r < 0)//变换到(0, 2pi],x轴不变</span></div>
|
||
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span><span class="comment">// r += (std::numbers::pi * 2.0);</span></div>
|
||
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span><span class="comment">// r += (std::numbers::pi / 8.0);//四舍五入 加pi/8</span></div>
|
||
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span><span class="comment">// size_t index = r / (std::numbers::pi / 4.0);//2pi分为8个方向为pi/4</span></div>
|
||
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"> 536</span> </div>
|
||
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span><span class="comment">// dnd_assert(index >= 0 && index <= 7);</span></div>
|
||
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span><span class="comment">// //x为0</span></div>
|
||
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span><span class="comment">// if (index == 0)</span></div>
|
||
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span><span class="comment">// return DirectionMask::RIGHT;</span></div>
|
||
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span><span class="comment">// else if (index == 1)</span></div>
|
||
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span><span class="comment">// return DirectionMask::RIGHT_DOWN;</span></div>
|
||
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span><span class="comment">// else if (index == 2)</span></div>
|
||
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span><span class="comment">// return DirectionMask::DOWN;</span></div>
|
||
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span><span class="comment">// else if (index == 3)</span></div>
|
||
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span><span class="comment">// return DirectionMask::LEFT_DOWN;</span></div>
|
||
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span><span class="comment">// else if (index == 4)</span></div>
|
||
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span><span class="comment">// return DirectionMask::LEFT;</span></div>
|
||
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span><span class="comment">// else if (index == 5)</span></div>
|
||
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span><span class="comment">// return DirectionMask::LEFT_UP;</span></div>
|
||
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span><span class="comment">// else if (index == 6)</span></div>
|
||
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span><span class="comment">// return DirectionMask::UP;</span></div>
|
||
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span><span class="comment">// else if (index == 7)</span></div>
|
||
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span><span class="comment">// return DirectionMask::RIGHT_UP;</span></div>
|
||
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span><span class="comment">// return DirectionMask::NONE;</span></div>
|
||
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span><span class="comment">//}</span></div>
|
||
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span></div>
|
||
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"> 563</span><span class="keyword">template</span><IsReal T></div>
|
||
<div class="foldopen" id="foldopen00564" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a39a6c98b69fb6d8ca1462b5e200864db"> 564</a></span><span class="keyword">constexpr</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="namespacedl_1_1_math.html#a39a6c98b69fb6d8ca1462b5e200864db">AlignF</a>(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> x, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> align)</div>
|
||
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span>{</div>
|
||
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span> assert(align > 0);</div>
|
||
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span> </div>
|
||
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span> <span class="keywordflow">if</span> (x < 0)</div>
|
||
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span> {</div>
|
||
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"> 570</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> ret = -align;</div>
|
||
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"> 571</span> <span class="keywordflow">while</span> (x < ret)</div>
|
||
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"> 572</span> {</div>
|
||
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> ret -= align;</div>
|
||
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> }</div>
|
||
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span> <span class="keywordflow">return</span> ret + align;</div>
|
||
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> }</div>
|
||
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> <span class="keywordflow">else</span></div>
|
||
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span> {</div>
|
||
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> ret = align;</div>
|
||
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> <span class="keywordflow">while</span> (x > ret)</div>
|
||
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"> 581</span> {</div>
|
||
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span> ret += align;</div>
|
||
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span> }</div>
|
||
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"> 584</span> <span class="keywordflow">return</span> ret;</div>
|
||
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span> }</div>
|
||
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span></div>
|
||
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"> 592</span><span class="keyword">template</span><IsUn<span class="keywordtype">signed</span> T></div>
|
||
<div class="foldopen" id="foldopen00593" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a19fda0cdde99bb9cdd07a0d4a7f27643"> 593</a></span><span class="keyword">constexpr</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="namespacedl_1_1_math.html#a19fda0cdde99bb9cdd07a0d4a7f27643">Align</a>(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> x, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> align)</div>
|
||
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"> 594</span>{</div>
|
||
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"> 595</span> assert(align != 0);</div>
|
||
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span> </div>
|
||
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"> 597</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> ret = align;</div>
|
||
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"> 598</span> <span class="keywordflow">while</span> (x > ret)</div>
|
||
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> {</div>
|
||
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span> ret += align;</div>
|
||
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"> 601</span> }</div>
|
||
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span> <span class="keywordflow">return</span> ret;</div>
|
||
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span></div>
|
||
<div class="foldopen" id="foldopen00608" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a059f5a13706b19d1097577c6a413a30a"> 608</a></span><span class="keyword">constexpr</span> <span class="keywordtype">unsigned</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a059f5a13706b19d1097577c6a413a30a">IsPow2</a>(<span class="keywordtype">unsigned</span> x)</div>
|
||
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"> 609</span>{</div>
|
||
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span> <span class="keywordflow">return</span> x && !(x & (x - 1));</div>
|
||
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"> 611</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"> 612</span></div>
|
||
<div class="foldopen" id="foldopen00617" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a21b27263260ecfff829431dffe79db24"> 617</a></span><span class="keyword">constexpr</span> <span class="keywordtype">unsigned</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a21b27263260ecfff829431dffe79db24">AlignPow2</a>(<span class="keywordtype">unsigned</span> x, <span class="keywordtype">unsigned</span> align)</div>
|
||
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"> 618</span>{</div>
|
||
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"> 619</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="namespacedl_1_1_math.html#a059f5a13706b19d1097577c6a413a30a">IsPow2</a>(align))</div>
|
||
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"> 620</span> <span class="keywordflow">return</span> 0;</div>
|
||
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span> </div>
|
||
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span> <span class="keywordflow">return</span> (x + align - 1) & ~(align - 1);</div>
|
||
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span></div>
|
||
<div class="foldopen" id="foldopen00630" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a459084245a9241c9c9d1c3600ce22c99"> 630</a></span><span class="keyword">constexpr</span> <span class="keywordtype">unsigned</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a459084245a9241c9c9d1c3600ce22c99">div_found</a>(<span class="keywordtype">unsigned</span> n, <span class="keywordtype">unsigned</span> d)</div>
|
||
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span>{</div>
|
||
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span> <span class="keywordtype">unsigned</span> q = n / d;</div>
|
||
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"> 633</span> <span class="keywordtype">unsigned</span> r = n % d;</div>
|
||
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span> <span class="keywordflow">return</span> r >= (d >> 1) ? q + 1 : q;</div>
|
||
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span></div>
|
||
<div class="foldopen" id="foldopen00643" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a5ce9d978cb5f546c0c62a59cae7609d8"> 643</a></span><span class="keyword">constexpr</span> <span class="keywordtype">unsigned</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a5ce9d978cb5f546c0c62a59cae7609d8">div_found_fast</a>(<span class="keywordtype">unsigned</span> n, <span class="keywordtype">unsigned</span> d)</div>
|
||
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"> 644</span>{</div>
|
||
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno"> 645</span> <span class="keywordflow">return</span> (n + (d >> 1)) / d;</div>
|
||
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno"> 646</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"> 647</span></div>
|
||
<div class="foldopen" id="foldopen00659" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a2bae19c3ef6fe4dd56cbbcf6e5017011"> 659</a></span><span class="keyword">constexpr</span> <span class="keywordtype">float</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a2bae19c3ef6fe4dd56cbbcf6e5017011">OffsetOrder</a>(<span class="keywordtype">float</span> order, <span class="keywordtype">int</span> u = 1, <span class="keywordtype">int</span> v = 0, <span class="keywordtype">int</span> w = 0)</div>
|
||
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"> 660</span>{</div>
|
||
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> <span class="keyword">constexpr</span> <span class="keywordtype">int</span> NUM_ORDER_DT = 100;</div>
|
||
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> <span class="keywordtype">float</span> ret = order + (w + v * NUM_ORDER_DT + u * NUM_ORDER_DT * NUM_ORDER_DT)</div>
|
||
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span> * std::numeric_limits<float>::epsilon();</div>
|
||
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="namespacedl.html#a52d151a5836974d062fad33e4d6dad3f">is_saturate</a>(ret))</div>
|
||
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span> {</div>
|
||
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno"> 666</span> <a class="code hl_define" href="dl__log_8h.html#a91583a8f2cf65e8c793fee9181900907">log_</a>(<span class="stringliteral">"order超出范围:{}"</span>, ret);</div>
|
||
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"> 667</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacedl.html#ab5903c381116ba61ce724dc9390e3722">saturate</a>(ret);</div>
|
||
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"> 668</span> }</div>
|
||
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span> <span class="keywordflow">return</span> ret;</div>
|
||
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span></div>
|
||
<div class="foldopen" id="foldopen00674" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a1e09b79ab628cb0cafba38f6deb9e555"> 674</a></span><span class="keyword">constexpr</span> <a class="code hl_typedef" href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">Float</a> <a class="code hl_function" href="namespacedl_1_1_math.html#a1e09b79ab628cb0cafba38f6deb9e555">CrossProduct</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a50cf03966b4ef57c19c125108102ac6a">Position2</a>& a, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a50cf03966b4ef57c19c125108102ac6a">Position2</a>& b)</div>
|
||
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno"> 675</span>{</div>
|
||
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno"> 676</span> <span class="keywordflow">return</span> a[0] * b[1] - a[1] * b[0];</div>
|
||
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"> 678</span> </div>
|
||
<div class="foldopen" id="foldopen00679" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#aeb9de51c93bf99eae86de5c7f4d2ac4b"> 679</a></span><span class="keyword">constexpr</span> <a class="code hl_typedef" href="namespacedl.html#a8caf4bcf54955de2e79b95811306b841">Position3</a> <a class="code hl_function" href="namespacedl_1_1_math.html#a1e09b79ab628cb0cafba38f6deb9e555">CrossProduct</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a8caf4bcf54955de2e79b95811306b841">Position3</a>& a, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a8caf4bcf54955de2e79b95811306b841">Position3</a>& b)</div>
|
||
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"> 680</span>{</div>
|
||
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"> 681</span> <span class="keywordflow">return</span> {</div>
|
||
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno"> 682</span> a[1] * b[2] - b[1] * a[2],</div>
|
||
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"> 683</span> a[2] * b[0] - b[2] * a[0],</div>
|
||
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span> a[0] * b[1] - b[0] * a[1]</div>
|
||
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"> 685</span> };</div>
|
||
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"> 686</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno"> 687</span></div>
|
||
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno"> 691</span><span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keywordtype">size_t</span> N></div>
|
||
<div class="foldopen" id="foldopen00692" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#acbf3faf5f923f308a154146ae2bcaef6"> 692</a></span><span class="keyword">constexpr</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="namespacedl_1_1_math.html#acbf3faf5f923f308a154146ae2bcaef6">DotProduct</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, N></a>& a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, N></a>& b)</div>
|
||
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"> 693</span>{</div>
|
||
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"> 694</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> ret = 0;</div>
|
||
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno"> 695</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a8d9c307cb7f3c4a32822a51922d1ceaa">N</a>; ++i)</div>
|
||
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno"> 696</span> ret += a[i] * b[i];</div>
|
||
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno"> 697</span> <span class="keywordflow">return</span> ret;</div>
|
||
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno"> 698</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno"> 699</span></div>
|
||
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a6b4a57c034f58c7ba26105da97b21d22"> 704</a></span><a class="code hl_typedef" href="namespacedl.html#aa4bb00cad84e587e46364ac39f4d3d4a">Position4</a> <a class="code hl_function" href="namespacedl_1_1_math.html#a6b4a57c034f58c7ba26105da97b21d22">Slerp</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#aa4bb00cad84e587e46364ac39f4d3d4a">Position4</a>& q0, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#aa4bb00cad84e587e46364ac39f4d3d4a">Position4</a>& q1, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">Float</a>& t);</div>
|
||
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno"> 705</span></div>
|
||
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno"> 709</span><span class="comment">//constexpr void Rect2Uv(const Size& tex_size, const RectU& rect, floatx2* uv)</span></div>
|
||
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno"> 710</span><span class="comment">//{</span></div>
|
||
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno"> 711</span><span class="comment">// floatx4 ltrb;</span></div>
|
||
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno"> 712</span><span class="comment">// ltrb[LTRB::LEFT] = float(rect[LTRB::LEFT]) / tex_size[0];</span></div>
|
||
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno"> 713</span><span class="comment">// ltrb[LTRB::TOP] = float(rect[LTRB::TOP]) / tex_size[1];</span></div>
|
||
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno"> 714</span><span class="comment">// ltrb[LTRB::RIGHT] = float(rect[LTRB::RIGHT]) / tex_size[0];</span></div>
|
||
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno"> 715</span><span class="comment">// ltrb[LTRB::BUTTOM] = float(rect[LTRB::BUTTOM]) / tex_size[1];</span></div>
|
||
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno"> 716</span><span class="comment">//</span></div>
|
||
<div class="line"><a id="l00717" name="l00717"></a><span class="lineno"> 717</span><span class="comment">// </span></div>
|
||
<div class="line"><a id="l00718" name="l00718"></a><span class="lineno"> 718</span><span class="comment">// uv[Corner::LT] = { ltrb[LTRB::LEFT], ltrb[LTRB::TOP] };</span></div>
|
||
<div class="line"><a id="l00719" name="l00719"></a><span class="lineno"> 719</span><span class="comment">// uv[Corner::RT] = { ltrb[LTRB::RIGHT], ltrb[LTRB::TOP] };</span></div>
|
||
<div class="line"><a id="l00720" name="l00720"></a><span class="lineno"> 720</span><span class="comment">// uv[Corner::LB] = { ltrb[LTRB::LEFT], ltrb[LTRB::BUTTOM] };</span></div>
|
||
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno"> 721</span><span class="comment">// uv[Corner::RB] = { ltrb[LTRB::RIGHT], ltrb[LTRB::BUTTOM] };</span></div>
|
||
<div class="line"><a id="l00722" name="l00722"></a><span class="lineno"> 722</span><span class="comment">//}</span></div>
|
||
<div class="line"><a id="l00723" name="l00723"></a><span class="lineno"> 723</span></div>
|
||
<div class="line"><a id="l00727" name="l00727"></a><span class="lineno"> 727</span><span class="keyword">template</span><<span class="keyword">typename</span> C></div>
|
||
<div class="foldopen" id="foldopen00728" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#ac646c4be3e3f82f16711b9c6fe342e76"> 728</a></span><span class="keyword">constexpr</span> <span class="keyword">auto</span> <a class="code hl_function" href="namespacedl_1_1_math.html#ac646c4be3e3f82f16711b9c6fe342e76">DistanceDiagonal</a>(<span class="keyword">const</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a0d61f8370cad1d412f80b84d143e1257">C</a>& p0, <span class="keyword">const</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a0d61f8370cad1d412f80b84d143e1257">C</a>& p1)</div>
|
||
<div class="line"><a id="l00729" name="l00729"></a><span class="lineno"> 729</span>{</div>
|
||
<div class="line"><a id="l00730" name="l00730"></a><span class="lineno"> 730</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a0d61f8370cad1d412f80b84d143e1257">C</a> dt = p1 - p0;</div>
|
||
<div class="line"><a id="l00731" name="l00731"></a><span class="lineno"> 731</span> <a class="code hl_function" href="namespacedl_1_1_every.html#a852eafa5dbddaa40882e78eb2cf09bff">Every::Abs</a>(dt);</div>
|
||
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno"> 732</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacedl_1_1_select.html#abd483aa59ad30cb9686888397615335a">Select::Max</a>(dt);</div>
|
||
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno"> 733</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00734" name="l00734"></a><span class="lineno"> 734</span> </div>
|
||
<div class="line"><a id="l00735" name="l00735"></a><span class="lineno"> 735</span></div>
|
||
<div class="line"><a id="l00739" name="l00739"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a2c7a88eb88bf3bc12a95b9d3624add9e"> 739</a></span>std::vector<Point> <a class="code hl_function" href="namespacedl_1_1_math.html#a2c7a88eb88bf3bc12a95b9d3624add9e">DrawLineLerp</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a>& p0, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a>& p1);</div>
|
||
<div class="line"><a id="l00740" name="l00740"></a><span class="lineno"> 740</span></div>
|
||
<div class="line"><a id="l00744" name="l00744"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#abe5d98c6dc17d29dda3b85262e5c1f62"> 744</a></span>std::vector<Point> <a class="code hl_function" href="namespacedl_1_1_math.html#abe5d98c6dc17d29dda3b85262e5c1f62">DrawLineBresenham</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a>& p0, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a>& p1);</div>
|
||
<div class="line"><a id="l00745" name="l00745"></a><span class="lineno"> 745</span></div>
|
||
<div class="line"><a id="l00750" name="l00750"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a0b5e9bc843a048a64c962c2ed2838e7d"> 750</a></span>std::vector<Point> <a class="code hl_function" href="namespacedl_1_1_math.html#a0b5e9bc843a048a64c962c2ed2838e7d">DrawLineOrth</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a>& p0, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a>& p1);</div>
|
||
<div class="line"><a id="l00751" name="l00751"></a><span class="lineno"> 751</span></div>
|
||
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a5051ef44773c5f3f741cfb2a6c84d327"> 756</a></span>std::vector<Point> <a class="code hl_function" href="namespacedl_1_1_math.html#a5051ef44773c5f3f741cfb2a6c84d327">DrawLineCover</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a>& p0, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a>& p1);</div>
|
||
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno"> 757</span></div>
|
||
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a6dd305713bb1ddac8c079a54529aed29"> 762</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a6dd305713bb1ddac8c079a54529aed29">MergePath</a>(std::list<Point>& list_pos);</div>
|
||
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno"> 763</span></div>
|
||
<div class="line"><a id="l00768" name="l00768"></a><span class="lineno"> 768</span><span class="keyword">template</span><<span class="keyword">typename</span> F></div>
|
||
<div class="foldopen" id="foldopen00769" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00769" name="l00769"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a30cec7b226756e813b19eca19cb38746"> 769</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a30cec7b226756e813b19eca19cb38746">MergePathDirect</a>(std::list<Point>& list_pos, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a800618943025315f869e4e1f09471012">F</a> func_pass)</div>
|
||
<div class="line"><a id="l00770" name="l00770"></a><span class="lineno"> 770</span>{</div>
|
||
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno"> 771</span> <span class="keywordflow">if</span> (list_pos.size() < 3)</div>
|
||
<div class="line"><a id="l00772" name="l00772"></a><span class="lineno"> 772</span> <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a id="l00773" name="l00773"></a><span class="lineno"> 773</span> <span class="keyword">auto</span> iter_last = list_pos.end();<span class="comment">//最后一个点总是有效的</span></div>
|
||
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno"> 774</span> --iter_last;</div>
|
||
<div class="line"><a id="l00775" name="l00775"></a><span class="lineno"> 775</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> iter_0 = list_pos.begin(); iter_0 != iter_last;)</div>
|
||
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno"> 776</span> {<span class="comment">//直到前一个点到 iter_last(最后一个点)</span></div>
|
||
<div class="line"><a id="l00777" name="l00777"></a><span class="lineno"> 777</span> <span class="comment">//iter_0的下一个点</span></div>
|
||
<div class="line"><a id="l00778" name="l00778"></a><span class="lineno"> 778</span> <span class="keyword">auto</span> iter_0_next = iter_0;</div>
|
||
<div class="line"><a id="l00779" name="l00779"></a><span class="lineno"> 779</span> ++iter_0_next;</div>
|
||
<div class="line"><a id="l00780" name="l00780"></a><span class="lineno"> 780</span> <span class="comment">//是否删除了节点</span></div>
|
||
<div class="line"><a id="l00781" name="l00781"></a><span class="lineno"> 781</span> <span class="keywordtype">bool</span> b_del = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l00782" name="l00782"></a><span class="lineno"> 782</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> iter_1 = iter_last; iter_1 != iter_0_next; --iter_1)</div>
|
||
<div class="line"><a id="l00783" name="l00783"></a><span class="lineno"> 783</span> {<span class="comment">//后一个点 从后往前遍历,直到iter_0_next</span></div>
|
||
<div class="line"><a id="l00784" name="l00784"></a><span class="lineno"> 784</span> <span class="keywordflow">if</span> (func_pass(*iter_0, *iter_1))</div>
|
||
<div class="line"><a id="l00785" name="l00785"></a><span class="lineno"> 785</span> {<span class="comment">//如果可通行 删除中间的节点</span></div>
|
||
<div class="line"><a id="l00786" name="l00786"></a><span class="lineno"> 786</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span> iter = iter_0_next; iter != iter_1;)</div>
|
||
<div class="line"><a id="l00787" name="l00787"></a><span class="lineno"> 787</span> iter = list_pos.erase(iter);</div>
|
||
<div class="line"><a id="l00788" name="l00788"></a><span class="lineno"> 788</span> iter_0 = iter_1;<span class="comment">//后一个点此时成为起点</span></div>
|
||
<div class="line"><a id="l00789" name="l00789"></a><span class="lineno"> 789</span> b_del = <span class="keyword">true</span>;</div>
|
||
<div class="line"><a id="l00790" name="l00790"></a><span class="lineno"> 790</span> <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a id="l00791" name="l00791"></a><span class="lineno"> 791</span> }</div>
|
||
<div class="line"><a id="l00792" name="l00792"></a><span class="lineno"> 792</span> }</div>
|
||
<div class="line"><a id="l00793" name="l00793"></a><span class="lineno"> 793</span> <span class="keywordflow">if</span> (!b_del)</div>
|
||
<div class="line"><a id="l00794" name="l00794"></a><span class="lineno"> 794</span> ++iter_0;</div>
|
||
<div class="line"><a id="l00795" name="l00795"></a><span class="lineno"> 795</span> }</div>
|
||
<div class="line"><a id="l00796" name="l00796"></a><span class="lineno"> 796</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00797" name="l00797"></a><span class="lineno"> 797</span> </div>
|
||
<div class="line"><a id="l00798" name="l00798"></a><span class="lineno"> 798</span> </div>
|
||
<div class="line"><a id="l00799" name="l00799"></a><span class="lineno"> 799</span><span class="comment">//----------------Quad和Rect的操作不同,Quad需要加名字-------</span></div>
|
||
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno"> 803</span><span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen00804" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00804" name="l00804"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a4a65e291f6c8fbee166a55652a2af6cd"> 804</a></span><span class="keyword">constexpr</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> <a class="code hl_function" href="namespacedl_1_1_math.html#a4a65e291f6c8fbee166a55652a2af6cd">GetQuadSize</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 4></a>& quad)</div>
|
||
<div class="line"><a id="l00805" name="l00805"></a><span class="lineno"> 805</span>{</div>
|
||
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno"> 806</span> <span class="keywordflow">return</span> quad[2] - quad[0];</div>
|
||
<div class="line"><a id="l00807" name="l00807"></a><span class="lineno"> 807</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00808" name="l00808"></a><span class="lineno"> 808</span></div>
|
||
<div class="line"><a id="l00813" name="l00813"></a><span class="lineno"> 813</span><span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen00814" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a65d9465077735120c1e2087908402e7b"> 814</a></span><span class="keyword">constexpr</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 3></a> <a class="code hl_function" href="namespacedl_1_1_math.html#a65d9465077735120c1e2087908402e7b">GetQuadTriangle0</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 4></a>& quad)</div>
|
||
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno"> 815</span>{</div>
|
||
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno"> 816</span> <span class="keywordflow">return</span> { quad[0], quad[1], quad[2] };</div>
|
||
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno"> 817</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00818" name="l00818"></a><span class="lineno"> 818</span><span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen00819" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00819" name="l00819"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#ae400ae778f11859dbe0b3eba018483b0"> 819</a></span><span class="keyword">constexpr</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 3></a> <a class="code hl_function" href="namespacedl_1_1_math.html#ae400ae778f11859dbe0b3eba018483b0">GetQuadTriangle1</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 4></a>& quad)</div>
|
||
<div class="line"><a id="l00820" name="l00820"></a><span class="lineno"> 820</span>{</div>
|
||
<div class="line"><a id="l00821" name="l00821"></a><span class="lineno"> 821</span> <span class="keywordflow">return</span> { quad[0], quad[2], quad[3] };</div>
|
||
<div class="line"><a id="l00822" name="l00822"></a><span class="lineno"> 822</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00823" name="l00823"></a><span class="lineno"> 823</span></div>
|
||
<div class="line"><a id="l00829" name="l00829"></a><span class="lineno"> 829</span><span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen00830" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00830" name="l00830"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#ae767ab216cd5f9ae60549bfc2361b223"> 830</a></span><span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacedl_1_1_math.html#ae767ab216cd5f9ae60549bfc2361b223">IsRectValid</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 4></a>& rect)</div>
|
||
<div class="line"><a id="l00831" name="l00831"></a><span class="lineno"> 831</span>{</div>
|
||
<div class="line"><a id="l00832" name="l00832"></a><span class="lineno"> 832</span> <span class="keywordflow">return</span> rect[0] <= rect[2]</div>
|
||
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno"> 833</span> && rect[1] <= rect[3];</div>
|
||
<div class="line"><a id="l00834" name="l00834"></a><span class="lineno"> 834</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno"> 835</span></div>
|
||
<div class="line"><a id="l00839" name="l00839"></a><span class="lineno"> 839</span><span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen00840" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00840" name="l00840"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a45a957095c103eeab76b6aebbcc43b82"> 840</a></span><span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a45a957095c103eeab76b6aebbcc43b82">IsRectEmpty</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 4></a>& rect)</div>
|
||
<div class="line"><a id="l00841" name="l00841"></a><span class="lineno"> 841</span>{</div>
|
||
<div class="line"><a id="l00842" name="l00842"></a><span class="lineno"> 842</span> <span class="keywordflow">return</span> rect[0] == rect[2]</div>
|
||
<div class="line"><a id="l00843" name="l00843"></a><span class="lineno"> 843</span> && rect[1] == rect[3];</div>
|
||
<div class="line"><a id="l00844" name="l00844"></a><span class="lineno"> 844</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00845" name="l00845"></a><span class="lineno"> 845</span></div>
|
||
<div class="line"><a id="l00850" name="l00850"></a><span class="lineno"> 850</span><span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen00851" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00851" name="l00851"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#ae7d693ca46e7a9a3d26aaca78638b4b7"> 851</a></span><span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacedl_1_1_math.html#ae7d693ca46e7a9a3d26aaca78638b4b7">IsRectInSize</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 4></a>& rect, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af4b025efbd5dae0045cce4cbc9546416">Size</a>& size)</div>
|
||
<div class="line"><a id="l00852" name="l00852"></a><span class="lineno"> 852</span>{</div>
|
||
<div class="line"><a id="l00853" name="l00853"></a><span class="lineno"> 853</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="namespacedl_1_1_math.html#ae767ab216cd5f9ae60549bfc2361b223">IsRectValid</a>(rect))</div>
|
||
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno"> 854</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno"> 855</span> <span class="keywordflow">return</span> rect[0] >= 0</div>
|
||
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno"> 856</span> && rect[1] >= 0</div>
|
||
<div class="line"><a id="l00857" name="l00857"></a><span class="lineno"> 857</span> && rect[2] <= size[0]</div>
|
||
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno"> 858</span> && rect[3] <= size[1];</div>
|
||
<div class="line"><a id="l00859" name="l00859"></a><span class="lineno"> 859</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00860" name="l00860"></a><span class="lineno"> 860</span></div>
|
||
<div class="foldopen" id="foldopen00864" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00864" name="l00864"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a48d2083efe7e913aaec26ebf33e7e308"> 864</a></span><span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a48d2083efe7e913aaec26ebf33e7e308">IsXyInSize</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a>& xy, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af4b025efbd5dae0045cce4cbc9546416">Size</a>& size)</div>
|
||
<div class="line"><a id="l00865" name="l00865"></a><span class="lineno"> 865</span>{</div>
|
||
<div class="line"><a id="l00866" name="l00866"></a><span class="lineno"> 866</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="namespacedl_1_1_each.html#a6b5526a0a09f78db19bc965c5514d0b6">Each::Less</a>(xy, {}))</div>
|
||
<div class="line"><a id="l00867" name="l00867"></a><span class="lineno"> 867</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l00868" name="l00868"></a><span class="lineno"> 868</span> <span class="keywordflow">return</span> unsigned(xy[0]) < size[0]</div>
|
||
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno"> 869</span> && unsigned(xy[1]) < size[1];</div>
|
||
<div class="line"><a id="l00870" name="l00870"></a><span class="lineno"> 870</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00871" name="l00871"></a><span class="lineno"> 871</span></div>
|
||
<div class="foldopen" id="foldopen00876" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a0fb9b2d9b508e046d83ed387a2ace051"> 876</a></span><span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a0fb9b2d9b508e046d83ed387a2ace051">IsXyInRect</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a>& xy, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#ac239c3e197b60bee840b9583cf35db65">Rect</a>& rect)</div>
|
||
<div class="line"><a id="l00877" name="l00877"></a><span class="lineno"> 877</span>{</div>
|
||
<div class="line"><a id="l00878" name="l00878"></a><span class="lineno"> 878</span> <span class="keywordflow">return</span> xy[0] >= rect[0]</div>
|
||
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno"> 879</span> && xy[1] >= rect[1]</div>
|
||
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno"> 880</span> && xy[0] < rect[2]</div>
|
||
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno"> 881</span> && xy[1] < rect[3];</div>
|
||
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno"> 882</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno"> 883</span></div>
|
||
<div class="foldopen" id="foldopen00887" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00887" name="l00887"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a20d995298fa129d1082c4a3c6e30c18c"> 887</a></span><span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a20d995298fa129d1082c4a3c6e30c18c">IsTriangle</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a5ab03b7215d3aa1c91c31befb442b33d">Triangle</a>& triangle)</div>
|
||
<div class="line"><a id="l00888" name="l00888"></a><span class="lineno"> 888</span>{</div>
|
||
<div class="line"><a id="l00889" name="l00889"></a><span class="lineno"> 889</span> <a class="code hl_typedef" href="namespacedl.html#a04611b2d3b24b5b4ad6569cdea6f62d4">Position</a> ab = triangle[0] - triangle[1];</div>
|
||
<div class="line"><a id="l00890" name="l00890"></a><span class="lineno"> 890</span> <a class="code hl_typedef" href="namespacedl.html#a04611b2d3b24b5b4ad6569cdea6f62d4">Position</a> ac = triangle[0] - triangle[2];</div>
|
||
<div class="line"><a id="l00891" name="l00891"></a><span class="lineno"> 891</span> </div>
|
||
<div class="line"><a id="l00892" name="l00892"></a><span class="lineno"> 892</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a1e09b79ab628cb0cafba38f6deb9e555">CrossProduct</a>(ab, ac) != 0;</div>
|
||
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno"> 893</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno"> 894</span></div>
|
||
<div class="foldopen" id="foldopen00900" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00900" name="l00900"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#af9c0efe2a1a602f28edae22000be7c26"> 900</a></span><span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacedl_1_1_math.html#af9c0efe2a1a602f28edae22000be7c26">IsDotInTriangle</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a04611b2d3b24b5b4ad6569cdea6f62d4">Position</a>& dot, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a5ab03b7215d3aa1c91c31befb442b33d">Triangle</a>& triangle)</div>
|
||
<div class="line"><a id="l00901" name="l00901"></a><span class="lineno"> 901</span>{</div>
|
||
<div class="line"><a id="l00902" name="l00902"></a><span class="lineno"> 902</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="namespacedl_1_1_math.html#a20d995298fa129d1082c4a3c6e30c18c">IsTriangle</a>(triangle))</div>
|
||
<div class="line"><a id="l00903" name="l00903"></a><span class="lineno"> 903</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l00904" name="l00904"></a><span class="lineno"> 904</span> <a class="code hl_typedef" href="namespacedl.html#a04611b2d3b24b5b4ad6569cdea6f62d4">Position</a> pa = triangle[0] - dot;</div>
|
||
<div class="line"><a id="l00905" name="l00905"></a><span class="lineno"> 905</span> <a class="code hl_typedef" href="namespacedl.html#a04611b2d3b24b5b4ad6569cdea6f62d4">Position</a> pb = triangle[1] - dot;</div>
|
||
<div class="line"><a id="l00906" name="l00906"></a><span class="lineno"> 906</span> <a class="code hl_typedef" href="namespacedl.html#a04611b2d3b24b5b4ad6569cdea6f62d4">Position</a> pc = triangle[2] - dot;</div>
|
||
<div class="line"><a id="l00907" name="l00907"></a><span class="lineno"> 907</span> <a class="code hl_typedef" href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">Float</a> t1 = <a class="code hl_function" href="namespacedl_1_1_math.html#a1e09b79ab628cb0cafba38f6deb9e555">CrossProduct</a>(pa, pb);</div>
|
||
<div class="line"><a id="l00908" name="l00908"></a><span class="lineno"> 908</span> <a class="code hl_typedef" href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">Float</a> t2 = <a class="code hl_function" href="namespacedl_1_1_math.html#a1e09b79ab628cb0cafba38f6deb9e555">CrossProduct</a>(pb, pc);</div>
|
||
<div class="line"><a id="l00909" name="l00909"></a><span class="lineno"> 909</span> <a class="code hl_typedef" href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">Float</a> t3 = <a class="code hl_function" href="namespacedl_1_1_math.html#a1e09b79ab628cb0cafba38f6deb9e555">CrossProduct</a>(pc, pa);</div>
|
||
<div class="line"><a id="l00910" name="l00910"></a><span class="lineno"> 910</span> <span class="keywordflow">return</span> t1 * t2 >= 0 &&</div>
|
||
<div class="line"><a id="l00911" name="l00911"></a><span class="lineno"> 911</span> t1 * t3 >= 0 &&</div>
|
||
<div class="line"><a id="l00912" name="l00912"></a><span class="lineno"> 912</span> t2 * t3 >= 0;</div>
|
||
<div class="line"><a id="l00913" name="l00913"></a><span class="lineno"> 913</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00914" name="l00914"></a><span class="lineno"> 914</span></div>
|
||
<div class="foldopen" id="foldopen00920" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00920" name="l00920"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#adbd4f647071ac06d6308428d50ba7d54"> 920</a></span><span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacedl_1_1_math.html#adbd4f647071ac06d6308428d50ba7d54">IsDotInQuad</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a04611b2d3b24b5b4ad6569cdea6f62d4">Position</a>& dot, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#ae4f29e205fdc73953f8757963a2731fd">Quad</a>& quad)</div>
|
||
<div class="line"><a id="l00921" name="l00921"></a><span class="lineno"> 921</span>{</div>
|
||
<div class="line"><a id="l00922" name="l00922"></a><span class="lineno"> 922</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacedl_1_1_math.html#af9c0efe2a1a602f28edae22000be7c26">Math::IsDotInTriangle</a>(dot, <a class="code hl_function" href="namespacedl_1_1_math.html#a65d9465077735120c1e2087908402e7b">GetQuadTriangle0</a>(quad))</div>
|
||
<div class="line"><a id="l00923" name="l00923"></a><span class="lineno"> 923</span> || <a class="code hl_function" href="namespacedl_1_1_math.html#af9c0efe2a1a602f28edae22000be7c26">Math::IsDotInTriangle</a>(dot, <a class="code hl_function" href="namespacedl_1_1_math.html#ae400ae778f11859dbe0b3eba018483b0">GetQuadTriangle1</a>(quad));</div>
|
||
<div class="line"><a id="l00924" name="l00924"></a><span class="lineno"> 924</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00925" name="l00925"></a><span class="lineno"> 925</span></div>
|
||
<div class="line"><a id="l00931" name="l00931"></a><span class="lineno"> 931</span><span class="comment">//constexpr bool IsDotInQuadConvex(const Position& dot, const Quad& quad)</span></div>
|
||
<div class="line"><a id="l00932" name="l00932"></a><span class="lineno"> 932</span><span class="comment">//{</span></div>
|
||
<div class="line"><a id="l00933" name="l00933"></a><span class="lineno"> 933</span><span class="comment">// </span></div>
|
||
<div class="line"><a id="l00934" name="l00934"></a><span class="lineno"> 934</span><span class="comment">//}</span></div>
|
||
<div class="line"><a id="l00935" name="l00935"></a><span class="lineno"> 935</span></div>
|
||
<div class="foldopen" id="foldopen00939" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00939" name="l00939"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a267c9aeadb50488d8f0a3e8fe9d885f8"> 939</a></span><span class="keyword">constexpr</span> <a class="code hl_typedef" href="namespacedl.html#a04611b2d3b24b5b4ad6569cdea6f62d4">Position</a> <a class="code hl_function" href="namespacedl_1_1_math.html#a267c9aeadb50488d8f0a3e8fe9d885f8">CreatePositionByRatioGoldW</a>(<a class="code hl_typedef" href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">Float</a> w)</div>
|
||
<div class="line"><a id="l00940" name="l00940"></a><span class="lineno"> 940</span>{</div>
|
||
<div class="line"><a id="l00941" name="l00941"></a><span class="lineno"> 941</span> <span class="keywordflow">return</span> { w, w * <a class="code hl_variable" href="namespacedl_1_1_numbers.html#add20a4590c12a565e0ceb1304aa1fb11">Numbers::RATIO_GOLD</a> };</div>
|
||
<div class="line"><a id="l00942" name="l00942"></a><span class="lineno"> 942</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l00943" name="l00943"></a><span class="lineno"> 943</span></div>
|
||
<div class="line"><a id="l00949" name="l00949"></a><span class="lineno"> 949</span><span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> F></div>
|
||
<div class="foldopen" id="foldopen00950" data-start="{" data-end="}">
|
||
<div class="line"><a id="l00950" name="l00950"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#aa99ad0951f499ce6eb4f8a2843311336"> 950</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="namespacedl_1_1_math.html#aa99ad0951f499ce6eb4f8a2843311336">GetRectTrim</a>(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a800618943025315f869e4e1f09471012">F</a> func, <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 4></a>& rect)</div>
|
||
<div class="line"><a id="l00951" name="l00951"></a><span class="lineno"> 951</span>{</div>
|
||
<div class="line"><a id="l00952" name="l00952"></a><span class="lineno"> 952</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="namespacedl_1_1_math.html#ae767ab216cd5f9ae60549bfc2361b223">IsRectValid</a>(rect) || <a class="code hl_function" href="namespacedl_1_1_math.html#a45a957095c103eeab76b6aebbcc43b82">IsRectEmpty</a>(rect))</div>
|
||
<div class="line"><a id="l00953" name="l00953"></a><span class="lineno"> 953</span> {</div>
|
||
<div class="line"><a id="l00954" name="l00954"></a><span class="lineno"> 954</span> <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a id="l00955" name="l00955"></a><span class="lineno"> 955</span> }</div>
|
||
<div class="line"><a id="l00956" name="l00956"></a><span class="lineno"> 956</span> <span class="comment">// 向下移动y</span></div>
|
||
<div class="line"><a id="l00957" name="l00957"></a><span class="lineno"> 957</span> <span class="keywordflow">while</span> (rect.top < rect.bottom)</div>
|
||
<div class="line"><a id="l00958" name="l00958"></a><span class="lineno"> 958</span> {</div>
|
||
<div class="line"><a id="l00959" name="l00959"></a><span class="lineno"> 959</span> <span class="keywordtype">bool</span> can_trim = <span class="keyword">true</span>;</div>
|
||
<div class="line"><a id="l00960" name="l00960"></a><span class="lineno"> 960</span> <span class="keywordflow">for</span> (<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> x = rect.left; x < rect.right; ++x)</div>
|
||
<div class="line"><a id="l00961" name="l00961"></a><span class="lineno"> 961</span> {</div>
|
||
<div class="line"><a id="l00962" name="l00962"></a><span class="lineno"> 962</span> <span class="keywordflow">if</span> (func(x, rect.top))</div>
|
||
<div class="line"><a id="l00963" name="l00963"></a><span class="lineno"> 963</span> {</div>
|
||
<div class="line"><a id="l00964" name="l00964"></a><span class="lineno"> 964</span> can_trim = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l00965" name="l00965"></a><span class="lineno"> 965</span> <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a id="l00966" name="l00966"></a><span class="lineno"> 966</span> }</div>
|
||
<div class="line"><a id="l00967" name="l00967"></a><span class="lineno"> 967</span> }</div>
|
||
<div class="line"><a id="l00968" name="l00968"></a><span class="lineno"> 968</span> <span class="keywordflow">if</span> (can_trim)</div>
|
||
<div class="line"><a id="l00969" name="l00969"></a><span class="lineno"> 969</span> ++rect.top;</div>
|
||
<div class="line"><a id="l00970" name="l00970"></a><span class="lineno"> 970</span> <span class="keywordflow">else</span></div>
|
||
<div class="line"><a id="l00971" name="l00971"></a><span class="lineno"> 971</span> <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a id="l00972" name="l00972"></a><span class="lineno"> 972</span> }</div>
|
||
<div class="line"><a id="l00973" name="l00973"></a><span class="lineno"> 973</span> <span class="comment">// 向上移动y</span></div>
|
||
<div class="line"><a id="l00974" name="l00974"></a><span class="lineno"> 974</span> <span class="keywordflow">while</span> (rect.bottom - 1 > rect.top)</div>
|
||
<div class="line"><a id="l00975" name="l00975"></a><span class="lineno"> 975</span> {</div>
|
||
<div class="line"><a id="l00976" name="l00976"></a><span class="lineno"> 976</span> <span class="keywordtype">bool</span> can_trim = <span class="keyword">true</span>;</div>
|
||
<div class="line"><a id="l00977" name="l00977"></a><span class="lineno"> 977</span> <span class="keywordflow">for</span> (<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> x = rect.left; x < rect.right; ++x)</div>
|
||
<div class="line"><a id="l00978" name="l00978"></a><span class="lineno"> 978</span> {</div>
|
||
<div class="line"><a id="l00979" name="l00979"></a><span class="lineno"> 979</span> <span class="keywordflow">if</span> (func(x, rect.bottom - 1))</div>
|
||
<div class="line"><a id="l00980" name="l00980"></a><span class="lineno"> 980</span> {</div>
|
||
<div class="line"><a id="l00981" name="l00981"></a><span class="lineno"> 981</span> can_trim = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l00982" name="l00982"></a><span class="lineno"> 982</span> <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a id="l00983" name="l00983"></a><span class="lineno"> 983</span> }</div>
|
||
<div class="line"><a id="l00984" name="l00984"></a><span class="lineno"> 984</span> }</div>
|
||
<div class="line"><a id="l00985" name="l00985"></a><span class="lineno"> 985</span> <span class="keywordflow">if</span> (can_trim)</div>
|
||
<div class="line"><a id="l00986" name="l00986"></a><span class="lineno"> 986</span> --rect.bottom;</div>
|
||
<div class="line"><a id="l00987" name="l00987"></a><span class="lineno"> 987</span> <span class="keywordflow">else</span></div>
|
||
<div class="line"><a id="l00988" name="l00988"></a><span class="lineno"> 988</span> <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a id="l00989" name="l00989"></a><span class="lineno"> 989</span> }</div>
|
||
<div class="line"><a id="l00990" name="l00990"></a><span class="lineno"> 990</span> <span class="comment">// 向右移动x</span></div>
|
||
<div class="line"><a id="l00991" name="l00991"></a><span class="lineno"> 991</span> <span class="keywordflow">while</span> (rect.left < rect.right)</div>
|
||
<div class="line"><a id="l00992" name="l00992"></a><span class="lineno"> 992</span> {</div>
|
||
<div class="line"><a id="l00993" name="l00993"></a><span class="lineno"> 993</span> <span class="keywordtype">bool</span> can_trim = <span class="keyword">true</span>;</div>
|
||
<div class="line"><a id="l00994" name="l00994"></a><span class="lineno"> 994</span> <span class="keywordflow">for</span> (<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> y = rect.top; y < rect.bottom; ++y)</div>
|
||
<div class="line"><a id="l00995" name="l00995"></a><span class="lineno"> 995</span> {</div>
|
||
<div class="line"><a id="l00996" name="l00996"></a><span class="lineno"> 996</span> <span class="keywordflow">if</span> (func(rect.left, y))</div>
|
||
<div class="line"><a id="l00997" name="l00997"></a><span class="lineno"> 997</span> {</div>
|
||
<div class="line"><a id="l00998" name="l00998"></a><span class="lineno"> 998</span> can_trim = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l00999" name="l00999"></a><span class="lineno"> 999</span> <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a id="l01000" name="l01000"></a><span class="lineno"> 1000</span> }</div>
|
||
<div class="line"><a id="l01001" name="l01001"></a><span class="lineno"> 1001</span> }</div>
|
||
<div class="line"><a id="l01002" name="l01002"></a><span class="lineno"> 1002</span> <span class="keywordflow">if</span> (can_trim)</div>
|
||
<div class="line"><a id="l01003" name="l01003"></a><span class="lineno"> 1003</span> ++rect.left;</div>
|
||
<div class="line"><a id="l01004" name="l01004"></a><span class="lineno"> 1004</span> <span class="keywordflow">else</span></div>
|
||
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span> <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"> 1006</span> }</div>
|
||
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"> 1007</span> <span class="comment">// 向左移动</span></div>
|
||
<div class="line"><a id="l01008" name="l01008"></a><span class="lineno"> 1008</span> <span class="keywordflow">while</span> (rect.right - 1 > rect.left)</div>
|
||
<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"> 1009</span> {</div>
|
||
<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"> 1010</span> <span class="keywordtype">bool</span> can_trim = <span class="keyword">true</span>;</div>
|
||
<div class="line"><a id="l01011" name="l01011"></a><span class="lineno"> 1011</span> <span class="keywordflow">for</span> (<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> y = rect.top; y < rect.bottom; ++y)</div>
|
||
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"> 1012</span> {</div>
|
||
<div class="line"><a id="l01013" name="l01013"></a><span class="lineno"> 1013</span> <span class="keywordflow">if</span> (func(rect.right - 1, y))</div>
|
||
<div class="line"><a id="l01014" name="l01014"></a><span class="lineno"> 1014</span> {</div>
|
||
<div class="line"><a id="l01015" name="l01015"></a><span class="lineno"> 1015</span> can_trim = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l01016" name="l01016"></a><span class="lineno"> 1016</span> <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a id="l01017" name="l01017"></a><span class="lineno"> 1017</span> }</div>
|
||
<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"> 1018</span> }</div>
|
||
<div class="line"><a id="l01019" name="l01019"></a><span class="lineno"> 1019</span> <span class="keywordflow">if</span> (can_trim)</div>
|
||
<div class="line"><a id="l01020" name="l01020"></a><span class="lineno"> 1020</span> --rect.right;</div>
|
||
<div class="line"><a id="l01021" name="l01021"></a><span class="lineno"> 1021</span> <span class="keywordflow">else</span></div>
|
||
<div class="line"><a id="l01022" name="l01022"></a><span class="lineno"> 1022</span> <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a id="l01023" name="l01023"></a><span class="lineno"> 1023</span> }</div>
|
||
<div class="line"><a id="l01024" name="l01024"></a><span class="lineno"> 1024</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"> 1025</span></div>
|
||
<div class="line"><a id="l01031" name="l01031"></a><span class="lineno"> 1031</span><span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen01032" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01032" name="l01032"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a75a2214abf4b88f8ebec86ec1aa103fd"> 1032</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a75a2214abf4b88f8ebec86ec1aa103fd">ExtendRectLeft</a>(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> min_left, <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 4></a>& rect, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> extend = 1)</div>
|
||
<div class="line"><a id="l01033" name="l01033"></a><span class="lineno"> 1033</span>{</div>
|
||
<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"> 1034</span> <span class="keywordflow">if</span> (rect.left >= min_left + extend)</div>
|
||
<div class="line"><a id="l01035" name="l01035"></a><span class="lineno"> 1035</span> rect.left -= extend;</div>
|
||
<div class="line"><a id="l01036" name="l01036"></a><span class="lineno"> 1036</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l01037" name="l01037"></a><span class="lineno"> 1037</span></div>
|
||
<div class="line"><a id="l01042" name="l01042"></a><span class="lineno"> 1042</span><span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen01043" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01043" name="l01043"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#ab3ac68a3f8ad937b643725f8fca0761c"> 1043</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="namespacedl_1_1_math.html#ab3ac68a3f8ad937b643725f8fca0761c">ExtendRectTop</a>(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> min_top, <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 4></a>& rect, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> extend = 1)</div>
|
||
<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"> 1044</span>{</div>
|
||
<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"> 1045</span> <span class="keywordflow">if</span> (rect.top >= min_top + extend)</div>
|
||
<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"> 1046</span> rect.top -= extend;</div>
|
||
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"> 1048</span></div>
|
||
<div class="line"><a id="l01053" name="l01053"></a><span class="lineno"> 1053</span><span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen01054" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01054" name="l01054"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#ab26a0dcb4f301b3e099ae1a800297c91"> 1054</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="namespacedl_1_1_math.html#ab26a0dcb4f301b3e099ae1a800297c91">ExtendRectRight</a>(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> max_right, <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 4></a>& rect, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> extend = 1)</div>
|
||
<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"> 1055</span>{</div>
|
||
<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"> 1056</span> <span class="keywordflow">if</span> (rect.right + extend <= max_right)</div>
|
||
<div class="line"><a id="l01057" name="l01057"></a><span class="lineno"> 1057</span> rect.right += extend;</div>
|
||
<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"> 1058</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"> 1059</span></div>
|
||
<div class="line"><a id="l01064" name="l01064"></a><span class="lineno"> 1064</span><span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen01065" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01065" name="l01065"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a892c64e33fa5e4a0a334651b7cdfec2c"> 1065</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a892c64e33fa5e4a0a334651b7cdfec2c">ExtendRectBottom</a>(<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> max_bottom, <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 4></a>& rect, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> extend = 1)</div>
|
||
<div class="line"><a id="l01066" name="l01066"></a><span class="lineno"> 1066</span>{</div>
|
||
<div class="line"><a id="l01067" name="l01067"></a><span class="lineno"> 1067</span> <span class="keywordflow">if</span> (rect.bottom + extend <= max_bottom)</div>
|
||
<div class="line"><a id="l01068" name="l01068"></a><span class="lineno"> 1068</span> rect.bottom += extend;</div>
|
||
<div class="line"><a id="l01069" name="l01069"></a><span class="lineno"> 1069</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l01070" name="l01070"></a><span class="lineno"> 1070</span></div>
|
||
<div class="line"><a id="l01076" name="l01076"></a><span class="lineno"> 1076</span><span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen01077" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01077" name="l01077"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#ad9ee522cb0e0c82b1c642f0898b58f88"> 1077</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="namespacedl_1_1_math.html#ad9ee522cb0e0c82b1c642f0898b58f88">ExtendRect</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 4></a>& rect_big, <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 4></a>& rect, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> extend = 1)</div>
|
||
<div class="line"><a id="l01078" name="l01078"></a><span class="lineno"> 1078</span>{</div>
|
||
<div class="line"><a id="l01079" name="l01079"></a><span class="lineno"> 1079</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a75a2214abf4b88f8ebec86ec1aa103fd">ExtendRectLeft</a>(rect_big.left, rect, extend);</div>
|
||
<div class="line"><a id="l01080" name="l01080"></a><span class="lineno"> 1080</span> <a class="code hl_function" href="namespacedl_1_1_math.html#ab3ac68a3f8ad937b643725f8fca0761c">ExtendRectTop</a>(rect_big.top, rect, extend);</div>
|
||
<div class="line"><a id="l01081" name="l01081"></a><span class="lineno"> 1081</span> <a class="code hl_function" href="namespacedl_1_1_math.html#ab26a0dcb4f301b3e099ae1a800297c91">ExtendRectRight</a>(rect_big.right, rect, extend);</div>
|
||
<div class="line"><a id="l01082" name="l01082"></a><span class="lineno"> 1082</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a892c64e33fa5e4a0a334651b7cdfec2c">ExtendRectBottom</a>(rect_big.bottom, rect, extend);</div>
|
||
<div class="line"><a id="l01083" name="l01083"></a><span class="lineno"> 1083</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l01084" name="l01084"></a><span class="lineno"> 1084</span></div>
|
||
<div class="line"><a id="l01090" name="l01090"></a><span class="lineno"> 1090</span><span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen01091" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01091" name="l01091"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a9c2a7a3ce701c1ac771682451ccc1191"> 1091</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="namespacedl_1_1_math.html#ad9ee522cb0e0c82b1c642f0898b58f88">ExtendRect</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 2></a>& size, <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 4></a>& rect, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> extend = 1)</div>
|
||
<div class="line"><a id="l01092" name="l01092"></a><span class="lineno"> 1092</span>{</div>
|
||
<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"> 1093</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a75a2214abf4b88f8ebec86ec1aa103fd">ExtendRectLeft</a>((<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>)0, rect, extend);</div>
|
||
<div class="line"><a id="l01094" name="l01094"></a><span class="lineno"> 1094</span> <a class="code hl_function" href="namespacedl_1_1_math.html#ab3ac68a3f8ad937b643725f8fca0761c">ExtendRectTop</a>((<a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a>)0, rect, extend);</div>
|
||
<div class="line"><a id="l01095" name="l01095"></a><span class="lineno"> 1095</span> <a class="code hl_function" href="namespacedl_1_1_math.html#ab26a0dcb4f301b3e099ae1a800297c91">ExtendRectRight</a>(size.w, rect, extend);</div>
|
||
<div class="line"><a id="l01096" name="l01096"></a><span class="lineno"> 1096</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a892c64e33fa5e4a0a334651b7cdfec2c">ExtendRectBottom</a>(size.h, rect, extend);</div>
|
||
<div class="line"><a id="l01097" name="l01097"></a><span class="lineno"> 1097</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l01098" name="l01098"></a><span class="lineno"> 1098</span></div>
|
||
<div class="line"><a id="l01103" name="l01103"></a><span class="lineno"> 1103</span><span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="foldopen" id="foldopen01104" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01104" name="l01104"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a5ba4a5c06ba40d3d10f82c6edbea18db"> 1104</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a5ba4a5c06ba40d3d10f82c6edbea18db">ExtendRectRB</a>(<span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 2></a>& size, <a class="code hl_class" href="classdl_1_1_array.html">Array<T, 4></a>& rect, <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a> extend = 1)</div>
|
||
<div class="line"><a id="l01105" name="l01105"></a><span class="lineno"> 1105</span>{</div>
|
||
<div class="line"><a id="l01106" name="l01106"></a><span class="lineno"> 1106</span> <a class="code hl_function" href="namespacedl_1_1_math.html#ab26a0dcb4f301b3e099ae1a800297c91">ExtendRectRight</a>(size.w, rect, extend);</div>
|
||
<div class="line"><a id="l01107" name="l01107"></a><span class="lineno"> 1107</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a892c64e33fa5e4a0a334651b7cdfec2c">ExtendRectBottom</a>(size.h, rect, extend);</div>
|
||
<div class="line"><a id="l01108" name="l01108"></a><span class="lineno"> 1108</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l01109" name="l01109"></a><span class="lineno"> 1109</span> </div>
|
||
<div class="line"><a id="l01110" name="l01110"></a><span class="lineno"> 1110</span></div>
|
||
<div class="foldopen" id="foldopen01112" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01112" name="l01112"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a6237f1594b5aa5aadae8a33148a47cf5"> 1112</a></span><span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a6237f1594b5aa5aadae8a33148a47cf5">GetCircleNumMax</a>(<span class="keywordtype">unsigned</span> rad)</div>
|
||
<div class="line"><a id="l01113" name="l01113"></a><span class="lineno"> 1113</span>{</div>
|
||
<div class="line"><a id="l01114" name="l01114"></a><span class="lineno"> 1114</span> <span class="comment">// todo 待证明更优的公式</span></div>
|
||
<div class="line"><a id="l01115" name="l01115"></a><span class="lineno"> 1115</span> <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span>)std::ceil(<a class="code hl_function" href="namespacedl_1_1_math.html#a6c4d5b783a36df0968baff39b508ec0b">PI</a>() * (rad + 1) * (rad + 1));</div>
|
||
<div class="line"><a id="l01116" name="l01116"></a><span class="lineno"> 1116</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l01117" name="l01117"></a><span class="lineno"> 1117</span> </div>
|
||
<div class="foldopen" id="foldopen01118" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01118" name="l01118"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math_1_1_ring_x.html"> 1118</a></span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacedl_1_1_math_1_1_ring_x.html">RingX</a></div>
|
||
<div class="line"><a id="l01119" name="l01119"></a><span class="lineno"> 1119</span>{</div>
|
||
<div class="line"><a id="l01120" name="l01120"></a><span class="lineno"> 1120</span> <span class="comment">// size不能为0</span></div>
|
||
<div class="line"><a id="l01121" name="l01121"></a><span class="lineno"> 1121</span></div>
|
||
<div class="foldopen" id="foldopen01123" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01123" name="l01123"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math_1_1_ring_x.html#acbc1b190a9e4a3265ddde0d8668b9156"> 1123</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code hl_function" href="namespacedl_1_1_math_1_1_ring_x.html#acbc1b190a9e4a3265ddde0d8668b9156">Clamp</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af4b025efbd5dae0045cce4cbc9546416">Size</a>& size, <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& xy)</div>
|
||
<div class="line"><a id="l01124" name="l01124"></a><span class="lineno"> 1124</span> {</div>
|
||
<div class="line"><a id="l01125" name="l01125"></a><span class="lineno"> 1125</span> <span class="keywordflow">if</span> (xy.y >= size.h)</div>
|
||
<div class="line"><a id="l01126" name="l01126"></a><span class="lineno"> 1126</span> xy.y = size.h - 1;</div>
|
||
<div class="line"><a id="l01127" name="l01127"></a><span class="lineno"> 1127</span> <span class="keywordflow">while</span> (xy.x >= size.w)</div>
|
||
<div class="line"><a id="l01128" name="l01128"></a><span class="lineno"> 1128</span> xy.x -= size.w;</div>
|
||
<div class="line"><a id="l01129" name="l01129"></a><span class="lineno"> 1129</span> }</div>
|
||
</div>
|
||
<div class="line"><a id="l01130" name="l01130"></a><span class="lineno"> 1130</span></div>
|
||
<div class="foldopen" id="foldopen01131" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01131" name="l01131"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math_1_1_ring_x.html#ad31a5c46239714a82c2ec00c00fa199b"> 1131</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacedl_1_1_math_1_1_ring_x.html#acbc1b190a9e4a3265ddde0d8668b9156">Clamp</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af4b025efbd5dae0045cce4cbc9546416">Size</a>& size, <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a> xy, <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& out_xy)</div>
|
||
<div class="line"><a id="l01132" name="l01132"></a><span class="lineno"> 1132</span> {</div>
|
||
<div class="line"><a id="l01133" name="l01133"></a><span class="lineno"> 1133</span> <span class="keywordflow">if</span> (xy.y < 0 || xy.y >= (<span class="keywordtype">int</span>)size.h)</div>
|
||
<div class="line"><a id="l01134" name="l01134"></a><span class="lineno"> 1134</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l01135" name="l01135"></a><span class="lineno"> 1135</span> <span class="keywordflow">while</span> (xy.x < 0)</div>
|
||
<div class="line"><a id="l01136" name="l01136"></a><span class="lineno"> 1136</span> xy.x += size.w;</div>
|
||
<div class="line"><a id="l01137" name="l01137"></a><span class="lineno"> 1137</span> <span class="keywordflow">while</span> (xy.x >= (<span class="keywordtype">int</span>)size.w)</div>
|
||
<div class="line"><a id="l01138" name="l01138"></a><span class="lineno"> 1138</span> xy.x -= size.w;</div>
|
||
<div class="line"><a id="l01139" name="l01139"></a><span class="lineno"> 1139</span> out_xy = <a class="code hl_function" href="namespacedl.html#a4c82201e93e408f5c14a674144a375b5">toSizeDefault</a>(xy);</div>
|
||
<div class="line"><a id="l01140" name="l01140"></a><span class="lineno"> 1140</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a id="l01141" name="l01141"></a><span class="lineno"> 1141</span> }</div>
|
||
</div>
|
||
<div class="line"><a id="l01142" name="l01142"></a><span class="lineno"> 1142</span></div>
|
||
<div class="foldopen" id="foldopen01146" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01146" name="l01146"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math_1_1_ring_x.html#a94d86a09de0c800af4b7b212c7cd34b8"> 1146</a></span> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code hl_function" href="namespacedl_1_1_math_1_1_ring_x.html#a94d86a09de0c800af4b7b212c7cd34b8">DistancePow2NoCheck</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af4b025efbd5dae0045cce4cbc9546416">Size</a>& size, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& a, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& b)</div>
|
||
<div class="line"><a id="l01147" name="l01147"></a><span class="lineno"> 1147</span> {</div>
|
||
<div class="line"><a id="l01148" name="l01148"></a><span class="lineno"> 1148</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a> dt;</div>
|
||
<div class="line"><a id="l01149" name="l01149"></a><span class="lineno"> 1149</span> dt.x = <a class="code hl_function" href="namespacedl_1_1_math.html#a834f4782bdd70e7034832d5b4c5ea87c">DisU</a>(a.x, b.x);</div>
|
||
<div class="line"><a id="l01150" name="l01150"></a><span class="lineno"> 1150</span> <span class="keywordflow">if</span> (dt.x > size.w / 2)</div>
|
||
<div class="line"><a id="l01151" name="l01151"></a><span class="lineno"> 1151</span> dt.x = size.w - dt.x;</div>
|
||
<div class="line"><a id="l01152" name="l01152"></a><span class="lineno"> 1152</span> dt.y = <a class="code hl_function" href="namespacedl_1_1_math.html#a834f4782bdd70e7034832d5b4c5ea87c">DisU</a>(a.y, b.y);</div>
|
||
<div class="line"><a id="l01153" name="l01153"></a><span class="lineno"> 1153</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacedl_1_1_math.html#aaf5f859bf7a1ed57578fbf040113fd37">Math::DistancePow2</a>(dt);</div>
|
||
<div class="line"><a id="l01154" name="l01154"></a><span class="lineno"> 1154</span> }</div>
|
||
</div>
|
||
<div class="line"><a id="l01155" name="l01155"></a><span class="lineno"> 1155</span></div>
|
||
<div class="foldopen" id="foldopen01159" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01159" name="l01159"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math_1_1_ring_x.html#a32df623ca07dfa74e90317936d5a18b9"> 1159</a></span> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code hl_function" href="namespacedl_1_1_math_1_1_ring_x.html#a32df623ca07dfa74e90317936d5a18b9">Distance</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af4b025efbd5dae0045cce4cbc9546416">Size</a>& size, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& a, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& b)</div>
|
||
<div class="line"><a id="l01160" name="l01160"></a><span class="lineno"> 1160</span> {</div>
|
||
<div class="line"><a id="l01161" name="l01161"></a><span class="lineno"> 1161</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a> aa = a;</div>
|
||
<div class="line"><a id="l01162" name="l01162"></a><span class="lineno"> 1162</span> <a class="code hl_function" href="namespacedl_1_1_math_1_1_ring_x.html#acbc1b190a9e4a3265ddde0d8668b9156">Clamp</a>(size, aa);</div>
|
||
<div class="line"><a id="l01163" name="l01163"></a><span class="lineno"> 1163</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a> bb = b;</div>
|
||
<div class="line"><a id="l01164" name="l01164"></a><span class="lineno"> 1164</span> <a class="code hl_function" href="namespacedl_1_1_math_1_1_ring_x.html#acbc1b190a9e4a3265ddde0d8668b9156">Clamp</a>(size, bb);</div>
|
||
<div class="line"><a id="l01165" name="l01165"></a><span class="lineno"> 1165</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a> dt;</div>
|
||
<div class="line"><a id="l01166" name="l01166"></a><span class="lineno"> 1166</span> dt.x = <a class="code hl_function" href="namespacedl_1_1_math.html#a834f4782bdd70e7034832d5b4c5ea87c">DisU</a>(aa.x, bb.x);</div>
|
||
<div class="line"><a id="l01167" name="l01167"></a><span class="lineno"> 1167</span> <span class="keywordflow">if</span> (dt.x > size.w / 2)</div>
|
||
<div class="line"><a id="l01168" name="l01168"></a><span class="lineno"> 1168</span> dt.x = size.w / 2 - dt.x;</div>
|
||
<div class="line"><a id="l01169" name="l01169"></a><span class="lineno"> 1169</span> dt.y = <a class="code hl_function" href="namespacedl_1_1_math.html#a834f4782bdd70e7034832d5b4c5ea87c">DisU</a>(aa.y, bb.y);</div>
|
||
<div class="line"><a id="l01170" name="l01170"></a><span class="lineno"> 1170</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a31ff00e50cd7649d37e469706827439b">Math::Distance</a>(dt);</div>
|
||
<div class="line"><a id="l01171" name="l01171"></a><span class="lineno"> 1171</span> }</div>
|
||
</div>
|
||
<div class="line"><a id="l01172" name="l01172"></a><span class="lineno"> 1172</span></div>
|
||
<div class="line"><a id="l01179" name="l01179"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math_1_1_ring_x.html#a4feac22c31658ec2f135018f23d53eec"> 1179</a></span> std::vector<PointU> <a class="code hl_function" href="namespacedl_1_1_math_1_1_ring_x.html#a4feac22c31658ec2f135018f23d53eec">GetCircle</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af4b025efbd5dae0045cce4cbc9546416">Size</a>& size, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& xy, <span class="keywordtype">unsigned</span> rad);</div>
|
||
<div class="line"><a id="l01180" name="l01180"></a><span class="lineno"> 1180</span> </div>
|
||
<div class="line"><a id="l01181" name="l01181"></a><span class="lineno"> 1181</span></div>
|
||
<div class="foldopen" id="foldopen01183" data-start="{" data-end="};">
|
||
<div class="line"><a id="l01183" name="l01183"></a><span class="lineno"><a class="line" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html"> 1183</a></span> <span class="keyword">class </span><a class="code hl_class" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html">MapLimit</a></div>
|
||
<div class="line"><a id="l01184" name="l01184"></a><span class="lineno"> 1184</span> {</div>
|
||
<div class="line"><a id="l01185" name="l01185"></a><span class="lineno"> 1185</span> <span class="keyword">public</span>:</div>
|
||
<div class="foldopen" id="foldopen01187" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01187" name="l01187"></a><span class="lineno"><a class="line" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a2efbc96f3f1cbfd0c54823674f005b26"> 1187</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a2efbc96f3f1cbfd0c54823674f005b26">SetSize</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af4b025efbd5dae0045cce4cbc9546416">Size</a>& size)</div>
|
||
<div class="line"><a id="l01188" name="l01188"></a><span class="lineno"> 1188</span> {</div>
|
||
<div class="line"><a id="l01189" name="l01189"></a><span class="lineno"> 1189</span> _size = size;</div>
|
||
<div class="line"><a id="l01190" name="l01190"></a><span class="lineno"> 1190</span> }</div>
|
||
</div>
|
||
<div class="line"><a id="l01191" name="l01191"></a><span class="lineno"> 1191</span></div>
|
||
<div class="line"><a id="l01192" name="l01192"></a><span class="lineno"> 1192</span> <span class="comment">// 失败会修改原值</span></div>
|
||
<div class="line"><a id="l01193" name="l01193"></a><span class="lineno"> 1193</span> </div>
|
||
<div class="foldopen" id="foldopen01194" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01194" name="l01194"></a><span class="lineno"><a class="line" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a0995d46dd55d0aef9247903dcd4f87c9"> 1194</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a0995d46dd55d0aef9247903dcd4f87c9">Left</a>(<a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& xy)</div>
|
||
<div class="line"><a id="l01195" name="l01195"></a><span class="lineno"> 1195</span> {</div>
|
||
<div class="line"><a id="l01196" name="l01196"></a><span class="lineno"> 1196</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a07cdae4f3e90ff18b8db859b9ac42f5b">CheckVaildY</a>(xy))</div>
|
||
<div class="line"><a id="l01197" name="l01197"></a><span class="lineno"> 1197</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l01198" name="l01198"></a><span class="lineno"> 1198</span> <span class="keywordflow">if</span> (xy.x == 0)</div>
|
||
<div class="line"><a id="l01199" name="l01199"></a><span class="lineno"> 1199</span> xy.x = _size.w - 1;</div>
|
||
<div class="line"><a id="l01200" name="l01200"></a><span class="lineno"> 1200</span> <span class="keywordflow">else</span></div>
|
||
<div class="line"><a id="l01201" name="l01201"></a><span class="lineno"> 1201</span> {</div>
|
||
<div class="line"><a id="l01202" name="l01202"></a><span class="lineno"> 1202</span> <span class="keywordflow">if</span> (xy.x - 1 >= _size.w)</div>
|
||
<div class="line"><a id="l01203" name="l01203"></a><span class="lineno"> 1203</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l01204" name="l01204"></a><span class="lineno"> 1204</span> --xy.x;</div>
|
||
<div class="line"><a id="l01205" name="l01205"></a><span class="lineno"> 1205</span> }</div>
|
||
<div class="line"><a id="l01206" name="l01206"></a><span class="lineno"> 1206</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a id="l01207" name="l01207"></a><span class="lineno"> 1207</span> }</div>
|
||
</div>
|
||
<div class="foldopen" id="foldopen01208" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01208" name="l01208"></a><span class="lineno"><a class="line" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a4c3ad714850b392e5b903a777481bbd8"> 1208</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a4c3ad714850b392e5b903a777481bbd8">Right</a>(<a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& xy)</div>
|
||
<div class="line"><a id="l01209" name="l01209"></a><span class="lineno"> 1209</span> {</div>
|
||
<div class="line"><a id="l01210" name="l01210"></a><span class="lineno"> 1210</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a07cdae4f3e90ff18b8db859b9ac42f5b">CheckVaildY</a>(xy))</div>
|
||
<div class="line"><a id="l01211" name="l01211"></a><span class="lineno"> 1211</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l01212" name="l01212"></a><span class="lineno"> 1212</span> <span class="keywordflow">if</span> (xy.x + 1 > _size.w)</div>
|
||
<div class="line"><a id="l01213" name="l01213"></a><span class="lineno"> 1213</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l01214" name="l01214"></a><span class="lineno"> 1214</span> </div>
|
||
<div class="line"><a id="l01215" name="l01215"></a><span class="lineno"> 1215</span> <span class="keywordflow">if</span> (xy.x + 1 == _size.w)</div>
|
||
<div class="line"><a id="l01216" name="l01216"></a><span class="lineno"> 1216</span> xy.x = 0;</div>
|
||
<div class="line"><a id="l01217" name="l01217"></a><span class="lineno"> 1217</span> <span class="keywordflow">else</span></div>
|
||
<div class="line"><a id="l01218" name="l01218"></a><span class="lineno"> 1218</span> ++xy.x;</div>
|
||
<div class="line"><a id="l01219" name="l01219"></a><span class="lineno"> 1219</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a id="l01220" name="l01220"></a><span class="lineno"> 1220</span> }</div>
|
||
</div>
|
||
<div class="foldopen" id="foldopen01221" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01221" name="l01221"></a><span class="lineno"><a class="line" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a611fdfd5c0577fc26a811ec7e0ad6f76"> 1221</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a611fdfd5c0577fc26a811ec7e0ad6f76">Top</a>(<a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& xy)</div>
|
||
<div class="line"><a id="l01222" name="l01222"></a><span class="lineno"> 1222</span> {</div>
|
||
<div class="line"><a id="l01223" name="l01223"></a><span class="lineno"> 1223</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a777b73f16b78618c6ae2cd1e1f3c0049">CheckVaildX</a>(xy))</div>
|
||
<div class="line"><a id="l01224" name="l01224"></a><span class="lineno"> 1224</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l01225" name="l01225"></a><span class="lineno"> 1225</span> <span class="keywordflow">if</span> (xy.y == 0)</div>
|
||
<div class="line"><a id="l01226" name="l01226"></a><span class="lineno"> 1226</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l01227" name="l01227"></a><span class="lineno"> 1227</span> <span class="keywordflow">if</span> (xy.y - 1 >= _size.h)</div>
|
||
<div class="line"><a id="l01228" name="l01228"></a><span class="lineno"> 1228</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l01229" name="l01229"></a><span class="lineno"> 1229</span> --xy.y;</div>
|
||
<div class="line"><a id="l01230" name="l01230"></a><span class="lineno"> 1230</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a id="l01231" name="l01231"></a><span class="lineno"> 1231</span> }</div>
|
||
</div>
|
||
<div class="foldopen" id="foldopen01232" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01232" name="l01232"></a><span class="lineno"><a class="line" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#ab3740c50df5a31965ee126383b99657a"> 1232</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#ab3740c50df5a31965ee126383b99657a">Bottom</a>(<a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& xy)</div>
|
||
<div class="line"><a id="l01233" name="l01233"></a><span class="lineno"> 1233</span> {</div>
|
||
<div class="line"><a id="l01234" name="l01234"></a><span class="lineno"> 1234</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a777b73f16b78618c6ae2cd1e1f3c0049">CheckVaildX</a>(xy))</div>
|
||
<div class="line"><a id="l01235" name="l01235"></a><span class="lineno"> 1235</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l01236" name="l01236"></a><span class="lineno"> 1236</span> <span class="keywordflow">if</span> (xy.y + 1 >= _size.h)</div>
|
||
<div class="line"><a id="l01237" name="l01237"></a><span class="lineno"> 1237</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l01238" name="l01238"></a><span class="lineno"> 1238</span> ++xy.y;</div>
|
||
<div class="line"><a id="l01239" name="l01239"></a><span class="lineno"> 1239</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a id="l01240" name="l01240"></a><span class="lineno"> 1240</span> }</div>
|
||
</div>
|
||
<div class="foldopen" id="foldopen01241" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01241" name="l01241"></a><span class="lineno"><a class="line" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#aaa0e70b35345b382c6e7c3277f4c2bc7"> 1241</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#aaa0e70b35345b382c6e7c3277f4c2bc7">LeftTop</a>(<a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& xy)</div>
|
||
<div class="line"><a id="l01242" name="l01242"></a><span class="lineno"> 1242</span> {</div>
|
||
<div class="line"><a id="l01243" name="l01243"></a><span class="lineno"> 1243</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a611fdfd5c0577fc26a811ec7e0ad6f76">Top</a>(xy))</div>
|
||
<div class="line"><a id="l01244" name="l01244"></a><span class="lineno"> 1244</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l01245" name="l01245"></a><span class="lineno"> 1245</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a0995d46dd55d0aef9247903dcd4f87c9">Left</a>(xy);</div>
|
||
<div class="line"><a id="l01246" name="l01246"></a><span class="lineno"> 1246</span> }</div>
|
||
</div>
|
||
<div class="foldopen" id="foldopen01247" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01247" name="l01247"></a><span class="lineno"><a class="line" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#ac3792e75396d2cb9578b067563074549"> 1247</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#ac3792e75396d2cb9578b067563074549">LeftBottom</a>(<a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& xy)</div>
|
||
<div class="line"><a id="l01248" name="l01248"></a><span class="lineno"> 1248</span> {</div>
|
||
<div class="line"><a id="l01249" name="l01249"></a><span class="lineno"> 1249</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#ab3740c50df5a31965ee126383b99657a">Bottom</a>(xy))</div>
|
||
<div class="line"><a id="l01250" name="l01250"></a><span class="lineno"> 1250</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l01251" name="l01251"></a><span class="lineno"> 1251</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a0995d46dd55d0aef9247903dcd4f87c9">Left</a>(xy);</div>
|
||
<div class="line"><a id="l01252" name="l01252"></a><span class="lineno"> 1252</span> }</div>
|
||
</div>
|
||
<div class="foldopen" id="foldopen01253" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01253" name="l01253"></a><span class="lineno"><a class="line" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a3f61a1a7a1cd577f2cb1edced23bef04"> 1253</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a3f61a1a7a1cd577f2cb1edced23bef04">RightTop</a>(<a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& xy)</div>
|
||
<div class="line"><a id="l01254" name="l01254"></a><span class="lineno"> 1254</span> {</div>
|
||
<div class="line"><a id="l01255" name="l01255"></a><span class="lineno"> 1255</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a611fdfd5c0577fc26a811ec7e0ad6f76">Top</a>(xy))</div>
|
||
<div class="line"><a id="l01256" name="l01256"></a><span class="lineno"> 1256</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l01257" name="l01257"></a><span class="lineno"> 1257</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a4c3ad714850b392e5b903a777481bbd8">Right</a>(xy);</div>
|
||
<div class="line"><a id="l01258" name="l01258"></a><span class="lineno"> 1258</span> }</div>
|
||
</div>
|
||
<div class="foldopen" id="foldopen01259" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01259" name="l01259"></a><span class="lineno"><a class="line" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a4091d2e622d396a0b5221861d155260c"> 1259</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a4091d2e622d396a0b5221861d155260c">RightBottom</a>(<a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& xy)</div>
|
||
<div class="line"><a id="l01260" name="l01260"></a><span class="lineno"> 1260</span> {</div>
|
||
<div class="line"><a id="l01261" name="l01261"></a><span class="lineno"> 1261</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#ab3740c50df5a31965ee126383b99657a">Bottom</a>(xy))</div>
|
||
<div class="line"><a id="l01262" name="l01262"></a><span class="lineno"> 1262</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a id="l01263" name="l01263"></a><span class="lineno"> 1263</span> <span class="keywordflow">return</span> <a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a4c3ad714850b392e5b903a777481bbd8">Right</a>(xy);</div>
|
||
<div class="line"><a id="l01264" name="l01264"></a><span class="lineno"> 1264</span> }</div>
|
||
</div>
|
||
<div class="foldopen" id="foldopen01265" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01265" name="l01265"></a><span class="lineno"><a class="line" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#adf835981e3fb774a108db50cda9166fa"> 1265</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#adf835981e3fb774a108db50cda9166fa">CheckVaild</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& xy)</div>
|
||
<div class="line"><a id="l01266" name="l01266"></a><span class="lineno"> 1266</span> {</div>
|
||
<div class="line"><a id="l01267" name="l01267"></a><span class="lineno"> 1267</span> <span class="keywordflow">return</span> xy.x < _size.w && xy.y < _size.h;</div>
|
||
<div class="line"><a id="l01268" name="l01268"></a><span class="lineno"> 1268</span> }</div>
|
||
</div>
|
||
<div class="foldopen" id="foldopen01269" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01269" name="l01269"></a><span class="lineno"><a class="line" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a777b73f16b78618c6ae2cd1e1f3c0049"> 1269</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a777b73f16b78618c6ae2cd1e1f3c0049">CheckVaildX</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& xy)</div>
|
||
<div class="line"><a id="l01270" name="l01270"></a><span class="lineno"> 1270</span> {</div>
|
||
<div class="line"><a id="l01271" name="l01271"></a><span class="lineno"> 1271</span> <span class="keywordflow">return</span> xy.x < _size.w;</div>
|
||
<div class="line"><a id="l01272" name="l01272"></a><span class="lineno"> 1272</span> }</div>
|
||
</div>
|
||
<div class="foldopen" id="foldopen01273" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01273" name="l01273"></a><span class="lineno"><a class="line" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a07cdae4f3e90ff18b8db859b9ac42f5b"> 1273</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a07cdae4f3e90ff18b8db859b9ac42f5b">CheckVaildY</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& xy)</div>
|
||
<div class="line"><a id="l01274" name="l01274"></a><span class="lineno"> 1274</span> {</div>
|
||
<div class="line"><a id="l01275" name="l01275"></a><span class="lineno"> 1275</span> <span class="keywordflow">return</span> xy.y < _size.h;</div>
|
||
<div class="line"><a id="l01276" name="l01276"></a><span class="lineno"> 1276</span> }</div>
|
||
</div>
|
||
<div class="line"><a id="l01277" name="l01277"></a><span class="lineno"> 1277</span> <span class="keyword">private</span>:</div>
|
||
<div class="line"><a id="l01278" name="l01278"></a><span class="lineno"> 1278</span> <a class="code hl_typedef" href="namespacedl.html#af4b025efbd5dae0045cce4cbc9546416">Size</a> _size;</div>
|
||
<div class="line"><a id="l01279" name="l01279"></a><span class="lineno"> 1279</span> };</div>
|
||
</div>
|
||
<div class="line"><a id="l01280" name="l01280"></a><span class="lineno"> 1280</span> </div>
|
||
<div class="line"><a id="l01281" name="l01281"></a><span class="lineno"> 1281</span> </div>
|
||
<div class="line"><a id="l01282" name="l01282"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math_1_1_ring_x.html#a07b9e99c326caecc01f26d472b3e8870"> 1282</a></span> <span class="keyword">using </span><a class="code hl_typedef" href="namespacedl_1_1_math_1_1_ring_x.html#a07b9e99c326caecc01f26d472b3e8870">FnDiffusionCheck</a> = std::function<bool(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& xy)>;</div>
|
||
<div class="line"><a id="l01283" name="l01283"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math_1_1_ring_x.html#ad76ae22760a1cebeca35dfed5f6e8270"> 1283</a></span> <span class="keyword">using </span><a class="code hl_typedef" href="namespacedl_1_1_math_1_1_ring_x.html#ad76ae22760a1cebeca35dfed5f6e8270">FnDiffusionCb</a> = std::function<void(<span class="keywordtype">unsigned</span>, <span class="keyword">const</span> std::list<PointU>& xy)>;</div>
|
||
<div class="line"><a id="l01284" name="l01284"></a><span class="lineno"> 1284</span></div>
|
||
<div class="line"><a id="l01294" name="l01294"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math_1_1_ring_x.html#ab72537541be2a87352d2302f10741590"> 1294</a></span> std::vector<PointU> <a class="code hl_function" href="namespacedl_1_1_math_1_1_ring_x.html#ab72537541be2a87352d2302f10741590">Diffusion</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af4b025efbd5dae0045cce4cbc9546416">Size</a>& size, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>& xy, <span class="keywordtype">unsigned</span> count,</div>
|
||
<div class="line"><a id="l01295" name="l01295"></a><span class="lineno"> 1295</span> <a class="code hl_typedef" href="namespacedl_1_1_math_1_1_ring_x.html#a07b9e99c326caecc01f26d472b3e8870">FnDiffusionCheck</a> func_valid, <a class="code hl_typedef" href="namespacedl_1_1_math_1_1_ring_x.html#ad76ae22760a1cebeca35dfed5f6e8270">FnDiffusionCb</a> func_cb);</div>
|
||
<div class="line"><a id="l01296" name="l01296"></a><span class="lineno"> 1296</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l01297" name="l01297"></a><span class="lineno"> 1297</span> </div>
|
||
<div class="line"><a id="l01298" name="l01298"></a><span class="lineno"> 1298</span> </div>
|
||
<div class="line"><a id="l01299" name="l01299"></a><span class="lineno"> 1299</span></div>
|
||
<div class="foldopen" id="foldopen01301" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01301" name="l01301"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a2b85f7602f7208f1bfa8b88936119e6a"> 1301</a></span><span class="keyword">constexpr</span> <span class="keywordtype">double</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a2b85f7602f7208f1bfa8b88936119e6a">DegreesToRadians</a>(<span class="keywordtype">double</span> deg)</div>
|
||
<div class="line"><a id="l01302" name="l01302"></a><span class="lineno"> 1302</span>{</div>
|
||
<div class="line"><a id="l01303" name="l01303"></a><span class="lineno"> 1303</span> <span class="keywordflow">return</span> deg * <a class="code hl_function" href="namespacedl_1_1_math.html#a6c4d5b783a36df0968baff39b508ec0b">PI</a>() / 180.0;</div>
|
||
<div class="line"><a id="l01304" name="l01304"></a><span class="lineno"> 1304</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l01305" name="l01305"></a><span class="lineno"> 1305</span></div>
|
||
<div class="foldopen" id="foldopen01307" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01307" name="l01307"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a0fd487fe9762b31e797e776c82097e51"> 1307</a></span><span class="keyword">constexpr</span> <span class="keywordtype">double</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a0fd487fe9762b31e797e776c82097e51">RadiansToDegrees</a>(<span class="keywordtype">double</span> rad)</div>
|
||
<div class="line"><a id="l01308" name="l01308"></a><span class="lineno"> 1308</span>{</div>
|
||
<div class="line"><a id="l01309" name="l01309"></a><span class="lineno"> 1309</span> <span class="keywordflow">return</span> rad * 180.0f / <a class="code hl_function" href="namespacedl_1_1_math.html#a6c4d5b783a36df0968baff39b508ec0b">PI</a>();</div>
|
||
<div class="line"><a id="l01310" name="l01310"></a><span class="lineno"> 1310</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l01311" name="l01311"></a><span class="lineno"> 1311</span> </div>
|
||
<div class="line"><a id="l01312" name="l01312"></a><span class="lineno"> 1312</span><span class="comment">//! 判断是否是闰年</span></div>
|
||
<div class="foldopen" id="foldopen01313" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01313" name="l01313"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a2e2a371e4b466cc477babf88aac97d4d"> 1313</a></span><span class="keyword">constexpr</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a2e2a371e4b466cc477babf88aac97d4d">IsLeapYear</a>(<span class="keywordtype">int</span> year)</div>
|
||
<div class="line"><a id="l01314" name="l01314"></a><span class="lineno"> 1314</span>{</div>
|
||
<div class="line"><a id="l01315" name="l01315"></a><span class="lineno"> 1315</span> <span class="comment">// 本质是一个无限的判断,但在短时间(几万年)内精度够用</span></div>
|
||
<div class="line"><a id="l01316" name="l01316"></a><span class="lineno"> 1316</span> <span class="keywordflow">return</span> (year % 4 == 0 && year % 100 != 0)</div>
|
||
<div class="line"><a id="l01317" name="l01317"></a><span class="lineno"> 1317</span> || year % 400 == 0;</div>
|
||
<div class="line"><a id="l01318" name="l01318"></a><span class="lineno"> 1318</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l01319" name="l01319"></a><span class="lineno"> 1319</span> </div>
|
||
<div class="line"><a id="l01320" name="l01320"></a><span class="lineno"> 1320</span><span class="comment">//! 获取某月的天数</span></div>
|
||
<div class="foldopen" id="foldopen01321" data-start="{" data-end="}">
|
||
<div class="line"><a id="l01321" name="l01321"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a85e38ecb1e29e1ef07c73b9f36b303f7"> 1321</a></span><span class="keyword">constexpr</span> <span class="keywordtype">int</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a85e38ecb1e29e1ef07c73b9f36b303f7">GetMouthDayNum</a>(<span class="keywordtype">int</span> year, <span class="keywordtype">int</span> mouth)</div>
|
||
<div class="line"><a id="l01322" name="l01322"></a><span class="lineno"> 1322</span>{</div>
|
||
<div class="line"><a id="l01323" name="l01323"></a><span class="lineno"> 1323</span> <span class="keywordflow">switch</span> (mouth)</div>
|
||
<div class="line"><a id="l01324" name="l01324"></a><span class="lineno"> 1324</span> {</div>
|
||
<div class="line"><a id="l01325" name="l01325"></a><span class="lineno"> 1325</span> <span class="keywordflow">case</span> 1:</div>
|
||
<div class="line"><a id="l01326" name="l01326"></a><span class="lineno"> 1326</span> <span class="keywordflow">case</span> 3:</div>
|
||
<div class="line"><a id="l01327" name="l01327"></a><span class="lineno"> 1327</span> <span class="keywordflow">case</span> 5:</div>
|
||
<div class="line"><a id="l01328" name="l01328"></a><span class="lineno"> 1328</span> <span class="keywordflow">case</span> 7:</div>
|
||
<div class="line"><a id="l01329" name="l01329"></a><span class="lineno"> 1329</span> <span class="keywordflow">case</span> 8:</div>
|
||
<div class="line"><a id="l01330" name="l01330"></a><span class="lineno"> 1330</span> <span class="keywordflow">case</span> 10:</div>
|
||
<div class="line"><a id="l01331" name="l01331"></a><span class="lineno"> 1331</span> <span class="keywordflow">case</span> 12:</div>
|
||
<div class="line"><a id="l01332" name="l01332"></a><span class="lineno"> 1332</span> <span class="keywordflow">return</span> 31;</div>
|
||
<div class="line"><a id="l01333" name="l01333"></a><span class="lineno"> 1333</span> <span class="keywordflow">case</span> 2:</div>
|
||
<div class="line"><a id="l01334" name="l01334"></a><span class="lineno"> 1334</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a2e2a371e4b466cc477babf88aac97d4d">IsLeapYear</a>(year) ? 29 : 28;</div>
|
||
<div class="line"><a id="l01335" name="l01335"></a><span class="lineno"> 1335</span> <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a id="l01336" name="l01336"></a><span class="lineno"> 1336</span> <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a id="l01337" name="l01337"></a><span class="lineno"> 1337</span> }</div>
|
||
<div class="line"><a id="l01338" name="l01338"></a><span class="lineno"> 1338</span> <span class="keywordflow">return</span> 30;</div>
|
||
<div class="line"><a id="l01339" name="l01339"></a><span class="lineno"> 1339</span>}</div>
|
||
</div>
|
||
<div class="line"><a id="l01340" name="l01340"></a><span class="lineno"> 1340</span> </div>
|
||
<div class="line"><a id="l01341" name="l01341"></a><span class="lineno"> 1341</span><span class="comment">//--------------------------------地理相关函数由ai生成,简单整理而成,非专业函数</span></div>
|
||
<div class="line"><a id="l01342" name="l01342"></a><span class="lineno"> 1342</span></div>
|
||
<div class="line"><a id="l01349" name="l01349"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#af9219f73426278a517068d993de93a87"> 1349</a></span><span class="keywordtype">double</span> <a class="code hl_function" href="namespacedl_1_1_math.html#af9219f73426278a517068d993de93a87">GetSolarDeclination</a>(<span class="keywordtype">int</span> day);</div>
|
||
<div class="line"><a id="l01350" name="l01350"></a><span class="lineno"> 1350</span></div>
|
||
<div class="line"><a id="l01357" name="l01357"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a2c4596cb6d991ed1e8f808328d4a85aa"> 1357</a></span><span class="keywordtype">double</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a2c4596cb6d991ed1e8f808328d4a85aa">GetSolarElevation</a>(<span class="keywordtype">double</span> latitude, <span class="keywordtype">double</span> declination);</div>
|
||
<div class="line"><a id="l01358" name="l01358"></a><span class="lineno"> 1358</span></div>
|
||
<div class="line"><a id="l01363" name="l01363"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#a06dfd459bb0cd598f8cf107a56ab8d75"> 1363</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="namespacedl_1_1_math.html#a06dfd459bb0cd598f8cf107a56ab8d75">GetSeason</a>(<span class="keywordtype">int</span> day, <span class="keywordtype">double</span> latitude);</div>
|
||
<div class="line"><a id="l01370" name="l01370"></a><span class="lineno"><a class="line" href="namespacedl_1_1_math.html#abb2b9b270b34ce11bcb23836b2580b0c"> 1370</a></span><span class="keywordtype">double</span> <a class="code hl_function" href="namespacedl_1_1_math.html#abb2b9b270b34ce11bcb23836b2580b0c">GetBaseTemperature</a>(<span class="keywordtype">double</span> latitude, <span class="keywordtype">int</span> day);</div>
|
||
<div class="line"><a id="l01371" name="l01371"></a><span class="lineno"> 1371</span> </div>
|
||
<div class="line"><a id="l01372" name="l01372"></a><span class="lineno"> 1372</span>}</div>
|
||
</div>
|
||
<div class="ttc" id="aclassdl_1_1_array_html"><div class="ttname"><a href="classdl_1_1_array.html">dl::Array</a></div><div class="ttdoc">Array</div><div class="ttdef"><b>定义</b> <a href="dl__array_8h_source.html#l00028">dl_array.h:29</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_math_1_1_ring_x_1_1_map_limit_html"><div class="ttname"><a href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html">dl::Math::RingX::MapLimit</a></div><div class="ttdoc">地图限制器(x轴为环状)</div><div class="ttdef"><b>定义</b> <a href="#l01183">dl_math.h:1184</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_math_1_1_ring_x_1_1_map_limit_html_a07cdae4f3e90ff18b8db859b9ac42f5b"><div class="ttname"><a href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a07cdae4f3e90ff18b8db859b9ac42f5b">dl::Math::RingX::MapLimit::CheckVaildY</a></div><div class="ttdeci">bool CheckVaildY(const PointU &xy)</div><div class="ttdef"><b>定义</b> <a href="#l01273">dl_math.h:1273</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_math_1_1_ring_x_1_1_map_limit_html_a0995d46dd55d0aef9247903dcd4f87c9"><div class="ttname"><a href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a0995d46dd55d0aef9247903dcd4f87c9">dl::Math::RingX::MapLimit::Left</a></div><div class="ttdeci">bool Left(PointU &xy)</div><div class="ttdoc">传入越界,但返回合法,也会返回true</div><div class="ttdef"><b>定义</b> <a href="#l01194">dl_math.h:1194</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_math_1_1_ring_x_1_1_map_limit_html_a2efbc96f3f1cbfd0c54823674f005b26"><div class="ttname"><a href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a2efbc96f3f1cbfd0c54823674f005b26">dl::Math::RingX::MapLimit::SetSize</a></div><div class="ttdeci">void SetSize(const Size &size)</div><div class="ttdoc">设置大小</div><div class="ttdef"><b>定义</b> <a href="#l01187">dl_math.h:1187</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_math_1_1_ring_x_1_1_map_limit_html_a3f61a1a7a1cd577f2cb1edced23bef04"><div class="ttname"><a href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a3f61a1a7a1cd577f2cb1edced23bef04">dl::Math::RingX::MapLimit::RightTop</a></div><div class="ttdeci">bool RightTop(PointU &xy)</div><div class="ttdef"><b>定义</b> <a href="#l01253">dl_math.h:1253</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_math_1_1_ring_x_1_1_map_limit_html_a4091d2e622d396a0b5221861d155260c"><div class="ttname"><a href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a4091d2e622d396a0b5221861d155260c">dl::Math::RingX::MapLimit::RightBottom</a></div><div class="ttdeci">bool RightBottom(PointU &xy)</div><div class="ttdef"><b>定义</b> <a href="#l01259">dl_math.h:1259</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_math_1_1_ring_x_1_1_map_limit_html_a4c3ad714850b392e5b903a777481bbd8"><div class="ttname"><a href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a4c3ad714850b392e5b903a777481bbd8">dl::Math::RingX::MapLimit::Right</a></div><div class="ttdeci">bool Right(PointU &xy)</div><div class="ttdef"><b>定义</b> <a href="#l01208">dl_math.h:1208</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_math_1_1_ring_x_1_1_map_limit_html_a611fdfd5c0577fc26a811ec7e0ad6f76"><div class="ttname"><a href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a611fdfd5c0577fc26a811ec7e0ad6f76">dl::Math::RingX::MapLimit::Top</a></div><div class="ttdeci">bool Top(PointU &xy)</div><div class="ttdef"><b>定义</b> <a href="#l01221">dl_math.h:1221</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_math_1_1_ring_x_1_1_map_limit_html_a777b73f16b78618c6ae2cd1e1f3c0049"><div class="ttname"><a href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#a777b73f16b78618c6ae2cd1e1f3c0049">dl::Math::RingX::MapLimit::CheckVaildX</a></div><div class="ttdeci">bool CheckVaildX(const PointU &xy)</div><div class="ttdef"><b>定义</b> <a href="#l01269">dl_math.h:1269</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_math_1_1_ring_x_1_1_map_limit_html_aaa0e70b35345b382c6e7c3277f4c2bc7"><div class="ttname"><a href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#aaa0e70b35345b382c6e7c3277f4c2bc7">dl::Math::RingX::MapLimit::LeftTop</a></div><div class="ttdeci">bool LeftTop(PointU &xy)</div><div class="ttdef"><b>定义</b> <a href="#l01241">dl_math.h:1241</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_math_1_1_ring_x_1_1_map_limit_html_ab3740c50df5a31965ee126383b99657a"><div class="ttname"><a href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#ab3740c50df5a31965ee126383b99657a">dl::Math::RingX::MapLimit::Bottom</a></div><div class="ttdeci">bool Bottom(PointU &xy)</div><div class="ttdef"><b>定义</b> <a href="#l01232">dl_math.h:1232</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_math_1_1_ring_x_1_1_map_limit_html_ac3792e75396d2cb9578b067563074549"><div class="ttname"><a href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#ac3792e75396d2cb9578b067563074549">dl::Math::RingX::MapLimit::LeftBottom</a></div><div class="ttdeci">bool LeftBottom(PointU &xy)</div><div class="ttdef"><b>定义</b> <a href="#l01247">dl_math.h:1247</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_math_1_1_ring_x_1_1_map_limit_html_adf835981e3fb774a108db50cda9166fa"><div class="ttname"><a href="classdl_1_1_math_1_1_ring_x_1_1_map_limit.html#adf835981e3fb774a108db50cda9166fa">dl::Math::RingX::MapLimit::CheckVaild</a></div><div class="ttdeci">bool CheckVaild(const PointU &xy)</div><div class="ttdef"><b>定义</b> <a href="#l01265">dl_math.h:1265</a></div></div>
|
||
<div class="ttc" id="adl__algorithm_8h_html"><div class="ttname"><a href="dl__algorithm_8h.html">dl_algorithm.h</a></div><div class="ttdoc">算法</div></div>
|
||
<div class="ttc" id="adl__concept_8h_html"><div class="ttname"><a href="dl__concept_8h.html">dl_concept.h</a></div><div class="ttdoc">用于模板限定,更好的报错信息</div></div>
|
||
<div class="ttc" id="adl__log_8h_html"><div class="ttname"><a href="dl__log_8h.html">dl_log.h</a></div><div class="ttdoc">日志系统</div></div>
|
||
<div class="ttc" id="adl__log_8h_html_a91583a8f2cf65e8c793fee9181900907"><div class="ttname"><a href="dl__log_8h.html#a91583a8f2cf65e8c793fee9181900907">log_</a></div><div class="ttdeci">#define log_(...)</div><div class="ttdef"><b>定义</b> <a href="dl__log_8h_source.html#l00277">dl_log.h:277</a></div></div>
|
||
<div class="ttc" id="adl__math_8h_html_a3a87be4fed7c6e217343b45caa13a4fa"><div class="ttname"><a href="dl__math_8h.html#a3a87be4fed7c6e217343b45caa13a4fa">DND_ARRAY_POW_LINE_32</a></div><div class="ttdeci">#define DND_ARRAY_POW_LINE_32(index)</div><div class="ttdef"><b>定义</b> <a href="#l00197">dl_math.h:197</a></div></div>
|
||
<div class="ttc" id="adl__math_8h_html_a7f10f79ab2a800deca6f26a688988e67"><div class="ttname"><a href="dl__math_8h.html#a7f10f79ab2a800deca6f26a688988e67">DND_ARRAY_POW_LINE</a></div><div class="ttdeci">#define DND_ARRAY_POW_LINE(index)</div><div class="ttdoc">向上取2的幂次</div><div class="ttdef"><b>定义</b> <a href="#l00182">dl_math.h:182</a></div></div>
|
||
<div class="ttc" id="adl__platform_8h_html"><div class="ttname"><a href="dl__platform_8h.html">dl_platform.h</a></div><div class="ttdoc">平台宏</div></div>
|
||
<div class="ttc" id="adl__range_8h_html"><div class="ttname"><a href="dl__range_8h.html">dl_range.h</a></div><div class="ttdoc">范围操作</div></div>
|
||
<div class="ttc" id="adl__type_8h_html"><div class="ttname"><a href="dl__type_8h.html">dl_type.h</a></div><div class="ttdoc">通用类型</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_each_html_a6b5526a0a09f78db19bc965c5514d0b6"><div class="ttname"><a href="namespacedl_1_1_each.html#a6b5526a0a09f78db19bc965c5514d0b6">dl::Each::Less</a></div><div class="ttdeci">constexpr bool Less(const Array< T, N > &a, const Array< T, N > &b)</div><div class="ttdoc">每个元素都小于返回真</div><div class="ttdef"><b>定义</b> <a href="dl__range__each_8h_source.html#l00079">dl_range_each.h:79</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_every_html_a852eafa5dbddaa40882e78eb2cf09bff"><div class="ttname"><a href="namespacedl_1_1_every.html#a852eafa5dbddaa40882e78eb2cf09bff">dl::Every::Abs</a></div><div class="ttdeci">void Abs(C &c)</div><div class="ttdoc">取绝对值</div><div class="ttdef"><b>定义</b> <a href="dl__range__every_8h_source.html#l00187">dl_range_every.h:187</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_1_1_ring_x_html"><div class="ttname"><a href="namespacedl_1_1_math_1_1_ring_x.html">dl::Math::RingX</a></div><div class="ttdef"><b>定义</b> <a href="#l01118">dl_math.h:1119</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_1_1_ring_x_html_a07b9e99c326caecc01f26d472b3e8870"><div class="ttname"><a href="namespacedl_1_1_math_1_1_ring_x.html#a07b9e99c326caecc01f26d472b3e8870">dl::Math::RingX::FnDiffusionCheck</a></div><div class="ttdeci">std::function< bool(const PointU &xy)> FnDiffusionCheck</div><div class="ttdef"><b>定义</b> <a href="#l01282">dl_math.h:1282</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_1_1_ring_x_html_a32df623ca07dfa74e90317936d5a18b9"><div class="ttname"><a href="namespacedl_1_1_math_1_1_ring_x.html#a32df623ca07dfa74e90317936d5a18b9">dl::Math::RingX::Distance</a></div><div class="ttdeci">unsigned Distance(const Size &size, const PointU &a, const PointU &b)</div><div class="ttdoc">返回 距离,x轴为环形</div><div class="ttdef"><b>定义</b> <a href="#l01159">dl_math.h:1159</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_1_1_ring_x_html_a4feac22c31658ec2f135018f23d53eec"><div class="ttname"><a href="namespacedl_1_1_math_1_1_ring_x.html#a4feac22c31658ec2f135018f23d53eec">dl::Math::RingX::GetCircle</a></div><div class="ttdeci">std::vector< PointU > GetCircle(const Size &size, const PointU &xy, unsigned rad)</div><div class="ttdoc">返回圆形范围的节点,x轴为环形</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_1_1_ring_x_html_a94d86a09de0c800af4b7b212c7cd34b8"><div class="ttname"><a href="namespacedl_1_1_math_1_1_ring_x.html#a94d86a09de0c800af4b7b212c7cd34b8">dl::Math::RingX::DistancePow2NoCheck</a></div><div class="ttdeci">unsigned DistancePow2NoCheck(const Size &size, const PointU &a, const PointU &b)</div><div class="ttdoc">返回 距离,x轴为环形</div><div class="ttdef"><b>定义</b> <a href="#l01146">dl_math.h:1146</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_1_1_ring_x_html_ab72537541be2a87352d2302f10741590"><div class="ttname"><a href="namespacedl_1_1_math_1_1_ring_x.html#ab72537541be2a87352d2302f10741590">dl::Math::RingX::Diffusion</a></div><div class="ttdeci">std::vector< PointU > Diffusion(const Size &size, const PointU &xy, unsigned count, FnDiffusionCheck func_valid, FnDiffusionCb func_cb)</div><div class="ttdoc">扩散遍历</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_1_1_ring_x_html_acbc1b190a9e4a3265ddde0d8668b9156"><div class="ttname"><a href="namespacedl_1_1_math_1_1_ring_x.html#acbc1b190a9e4a3265ddde0d8668b9156">dl::Math::RingX::Clamp</a></div><div class="ttdeci">void Clamp(const Size &size, PointU &xy)</div><div class="ttdoc">限制到大小内</div><div class="ttdef"><b>定义</b> <a href="#l01123">dl_math.h:1123</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_1_1_ring_x_html_ad76ae22760a1cebeca35dfed5f6e8270"><div class="ttname"><a href="namespacedl_1_1_math_1_1_ring_x.html#ad76ae22760a1cebeca35dfed5f6e8270">dl::Math::RingX::FnDiffusionCb</a></div><div class="ttdeci">std::function< void(unsigned, const std::list< PointU > &xy)> FnDiffusionCb</div><div class="ttdef"><b>定义</b> <a href="#l01283">dl_math.h:1283</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html"><div class="ttname"><a href="namespacedl_1_1_math.html">dl::Math</a></div><div class="ttdoc">2维装箱算法</div><div class="ttdef"><b>定义</b> <a href="#l00071">dl_math.h:72</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a0380237a8e9d81a1ee75916a12b836db"><div class="ttname"><a href="namespacedl_1_1_math.html#a0380237a8e9d81a1ee75916a12b836db">dl::Math::SubU</a></div><div class="ttdeci">T SubU(T a, T b)</div><div class="ttdoc">无符号类型相减,负数转为0</div><div class="ttdef"><b>定义</b> <a href="#l00326">dl_math.h:326</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a04458f7f2d5dac1e877fba42a141a51a"><div class="ttname"><a href="namespacedl_1_1_math.html#a04458f7f2d5dac1e877fba42a141a51a">dl::Math::ByteReverse</a></div><div class="ttdeci">uint32_t ByteReverse(uint32_t x)</div><div class="ttdoc">翻转字节序</div><div class="ttdef"><b>定义</b> <a href="#l00113">dl_math.h:113</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a059f5a13706b19d1097577c6a413a30a"><div class="ttname"><a href="namespacedl_1_1_math.html#a059f5a13706b19d1097577c6a413a30a">dl::Math::IsPow2</a></div><div class="ttdeci">constexpr unsigned IsPow2(unsigned x)</div><div class="ttdoc">是否2的幂</div><div class="ttdef"><b>定义</b> <a href="#l00608">dl_math.h:608</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a06dfd459bb0cd598f8cf107a56ab8d75"><div class="ttname"><a href="namespacedl_1_1_math.html#a06dfd459bb0cd598f8cf107a56ab8d75">dl::Math::GetSeason</a></div><div class="ttdeci">int GetSeason(int day, double latitude)</div><div class="ttdoc">返回季节</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a0b5e9bc843a048a64c962c2ed2838e7d"><div class="ttname"><a href="namespacedl_1_1_math.html#a0b5e9bc843a048a64c962c2ed2838e7d">dl::Math::DrawLineOrth</a></div><div class="ttdeci">std::vector< Point > DrawLineOrth(const Point &p0, const Point &p1)</div><div class="ttdoc">正交 画线算法</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a0fb9b2d9b508e046d83ed387a2ace051"><div class="ttname"><a href="namespacedl_1_1_math.html#a0fb9b2d9b508e046d83ed387a2ace051">dl::Math::IsXyInRect</a></div><div class="ttdeci">constexpr bool IsXyInRect(const Point &xy, const Rect &rect)</div><div class="ttdoc">判断 点是否在矩形内</div><div class="ttdef"><b>定义</b> <a href="#l00876">dl_math.h:876</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a0fd487fe9762b31e797e776c82097e51"><div class="ttname"><a href="namespacedl_1_1_math.html#a0fd487fe9762b31e797e776c82097e51">dl::Math::RadiansToDegrees</a></div><div class="ttdeci">constexpr double RadiansToDegrees(double rad)</div><div class="ttdoc">将弧度转为角度</div><div class="ttdef"><b>定义</b> <a href="#l01307">dl_math.h:1307</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a105a64a6e1c5f63f3510ddc57c676365"><div class="ttname"><a href="namespacedl_1_1_math.html#a105a64a6e1c5f63f3510ddc57c676365">dl::Math::Pow64</a></div><div class="ttdeci">constexpr uint64_t Pow64(uint64_t x, uint8_t n)</div><div class="ttdef"><b>定义</b> <a href="#l00140">dl_math.h:140</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a125c73a721ba7fffc381d396dd09cbe6"><div class="ttname"><a href="namespacedl_1_1_math.html#a125c73a721ba7fffc381d396dd09cbe6">dl::Math::DistancePow2U</a></div><div class="ttdeci">T DistancePow2U(const Array< T, 2 > &a, const Array< T, 2 > &b)</div><div class="ttdoc">返回 距离的平方</div><div class="ttdef"><b>定义</b> <a href="#l00434">dl_math.h:434</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a1274044c749de5cfee397f1faf1b0910"><div class="ttname"><a href="namespacedl_1_1_math.html#a1274044c749de5cfee397f1faf1b0910">dl::Math::PIF</a></div><div class="ttdeci">constexpr float PIF(unsigned n=1, unsigned d=1)</div><div class="ttdef"><b>定义</b> <a href="#l00497">dl_math.h:497</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a179e7cdae2c5e2721dcce18f539ba1dc"><div class="ttname"><a href="namespacedl_1_1_math.html#a179e7cdae2c5e2721dcce18f539ba1dc">dl::Math::IsOutRange</a></div><div class="ttdeci">constexpr bool IsOutRange(T x, T a, T b)</div><div class="ttdoc">判断数值是否越界(前闭后开)</div><div class="ttdef"><b>定义</b> <a href="#l00077">dl_math.h:77</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a19fda0cdde99bb9cdd07a0d4a7f27643"><div class="ttname"><a href="namespacedl_1_1_math.html#a19fda0cdde99bb9cdd07a0d4a7f27643">dl::Math::Align</a></div><div class="ttdeci">constexpr T Align(T x, T align)</div><div class="ttdoc">对齐align的倍数</div><div class="ttdef"><b>定义</b> <a href="#l00593">dl_math.h:593</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a1e09b79ab628cb0cafba38f6deb9e555"><div class="ttname"><a href="namespacedl_1_1_math.html#a1e09b79ab628cb0cafba38f6deb9e555">dl::Math::CrossProduct</a></div><div class="ttdeci">constexpr Float CrossProduct(const Position2 &a, const Position2 &b)</div><div class="ttdoc">叉乘(四指指向a,弯向b,大拇指指向c)</div><div class="ttdef"><b>定义</b> <a href="#l00674">dl_math.h:674</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a20d995298fa129d1082c4a3c6e30c18c"><div class="ttname"><a href="namespacedl_1_1_math.html#a20d995298fa129d1082c4a3c6e30c18c">dl::Math::IsTriangle</a></div><div class="ttdeci">constexpr bool IsTriangle(const Triangle &triangle)</div><div class="ttdoc">判断是否三角形</div><div class="ttdef"><b>定义</b> <a href="#l00887">dl_math.h:887</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a21b27263260ecfff829431dffe79db24"><div class="ttname"><a href="namespacedl_1_1_math.html#a21b27263260ecfff829431dffe79db24">dl::Math::AlignPow2</a></div><div class="ttdeci">constexpr unsigned AlignPow2(unsigned x, unsigned align)</div><div class="ttdoc">对齐align的倍数</div><div class="ttdef"><b>定义</b> <a href="#l00617">dl_math.h:617</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a267c9aeadb50488d8f0a3e8fe9d885f8"><div class="ttname"><a href="namespacedl_1_1_math.html#a267c9aeadb50488d8f0a3e8fe9d885f8">dl::Math::CreatePositionByRatioGoldW</a></div><div class="ttdeci">constexpr Position CreatePositionByRatioGoldW(Float w)</div><div class="ttdoc">判断点是否在凸四边形内</div><div class="ttdef"><b>定义</b> <a href="#l00939">dl_math.h:939</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a2b85f7602f7208f1bfa8b88936119e6a"><div class="ttname"><a href="namespacedl_1_1_math.html#a2b85f7602f7208f1bfa8b88936119e6a">dl::Math::DegreesToRadians</a></div><div class="ttdeci">constexpr double DegreesToRadians(double deg)</div><div class="ttdoc">将角度转为弧度</div><div class="ttdef"><b>定义</b> <a href="#l01301">dl_math.h:1301</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a2bae19c3ef6fe4dd56cbbcf6e5017011"><div class="ttname"><a href="namespacedl_1_1_math.html#a2bae19c3ef6fe4dd56cbbcf6e5017011">dl::Math::OffsetOrder</a></div><div class="ttdeci">constexpr float OffsetOrder(float order, int u=1, int v=0, int w=0)</div><div class="ttdoc">偏移order</div><div class="ttdef"><b>定义</b> <a href="#l00659">dl_math.h:659</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a2c4596cb6d991ed1e8f808328d4a85aa"><div class="ttname"><a href="namespacedl_1_1_math.html#a2c4596cb6d991ed1e8f808328d4a85aa">dl::Math::GetSolarElevation</a></div><div class="ttdeci">double GetSolarElevation(double latitude, double declination)</div><div class="ttdoc">计算正午太阳高度角</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a2c7a88eb88bf3bc12a95b9d3624add9e"><div class="ttname"><a href="namespacedl_1_1_math.html#a2c7a88eb88bf3bc12a95b9d3624add9e">dl::Math::DrawLineLerp</a></div><div class="ttdeci">std::vector< Point > DrawLineLerp(const Point &p0, const Point &p1)</div><div class="ttdoc">线性插值 画线算法</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a2e2a371e4b466cc477babf88aac97d4d"><div class="ttname"><a href="namespacedl_1_1_math.html#a2e2a371e4b466cc477babf88aac97d4d">dl::Math::IsLeapYear</a></div><div class="ttdeci">constexpr bool IsLeapYear(int year)</div><div class="ttdef"><b>定义</b> <a href="#l01313">dl_math.h:1313</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a30cec7b226756e813b19eca19cb38746"><div class="ttname"><a href="namespacedl_1_1_math.html#a30cec7b226756e813b19eca19cb38746">dl::Math::MergePathDirect</a></div><div class="ttdeci">void MergePathDirect(std::list< Point > &list_pos, F func_pass)</div><div class="ttdoc">路径合并(网格路径)</div><div class="ttdef"><b>定义</b> <a href="#l00769">dl_math.h:769</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a31ff00e50cd7649d37e469706827439b"><div class="ttname"><a href="namespacedl_1_1_math.html#a31ff00e50cd7649d37e469706827439b">dl::Math::Distance</a></div><div class="ttdeci">T Distance(const Array< T, 2 > &a)</div><div class="ttdef"><b>定义</b> <a href="#l00406">dl_math.h:406</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a35722e5e04b27ee4c5c1e9e29e190712"><div class="ttname"><a href="namespacedl_1_1_math.html#a35722e5e04b27ee4c5c1e9e29e190712">dl::Math::ARRAY_POW2_32</a></div><div class="ttdeci">constexpr uint32_t ARRAY_POW2_32[]</div><div class="ttdef"><b>定义</b> <a href="#l00171">dl_math.h:171</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a39a6c98b69fb6d8ca1462b5e200864db"><div class="ttname"><a href="namespacedl_1_1_math.html#a39a6c98b69fb6d8ca1462b5e200864db">dl::Math::AlignF</a></div><div class="ttdeci">constexpr T AlignF(T x, T align)</div><div class="ttdoc">RGP资源下标转方向</div><div class="ttdef"><b>定义</b> <a href="#l00564">dl_math.h:564</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a44e4357e81bf26026604eb39fd6bcf46"><div class="ttname"><a href="namespacedl_1_1_math.html#a44e4357e81bf26026604eb39fd6bcf46">dl::Math::GetCircle</a></div><div class="ttdeci">std::vector< PointU > GetCircle(const Size &size, const PointU &xy, unsigned rad)</div><div class="ttdoc">返回圆形范围的节点,考虑越界</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a459084245a9241c9c9d1c3600ce22c99"><div class="ttname"><a href="namespacedl_1_1_math.html#a459084245a9241c9c9d1c3600ce22c99">dl::Math::div_found</a></div><div class="ttdeci">constexpr unsigned div_found(unsigned n, unsigned d)</div><div class="ttdoc">无符号除法,返回四舍五入结果</div><div class="ttdef"><b>定义</b> <a href="#l00630">dl_math.h:630</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a45a957095c103eeab76b6aebbcc43b82"><div class="ttname"><a href="namespacedl_1_1_math.html#a45a957095c103eeab76b6aebbcc43b82">dl::Math::IsRectEmpty</a></div><div class="ttdeci">constexpr bool IsRectEmpty(const Array< T, 4 > &rect)</div><div class="ttdoc">判断 矩形 是否空</div><div class="ttdef"><b>定义</b> <a href="#l00840">dl_math.h:840</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a48d2083efe7e913aaec26ebf33e7e308"><div class="ttname"><a href="namespacedl_1_1_math.html#a48d2083efe7e913aaec26ebf33e7e308">dl::Math::IsXyInSize</a></div><div class="ttdeci">constexpr bool IsXyInSize(const Point &xy, const Size &size)</div><div class="ttdoc">判断 点是否在大小内</div><div class="ttdef"><b>定义</b> <a href="#l00864">dl_math.h:864</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a4a65e291f6c8fbee166a55652a2af6cd"><div class="ttname"><a href="namespacedl_1_1_math.html#a4a65e291f6c8fbee166a55652a2af6cd">dl::Math::GetQuadSize</a></div><div class="ttdeci">constexpr T GetQuadSize(const Array< T, 4 > &quad)</div><div class="ttdoc">返回 Quad 的大小</div><div class="ttdef"><b>定义</b> <a href="#l00804">dl_math.h:804</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a4c440b8fe617bc79637854455b4be336"><div class="ttname"><a href="namespacedl_1_1_math.html#a4c440b8fe617bc79637854455b4be336">dl::Math::Pow32</a></div><div class="ttdeci">constexpr uint32_t Pow32(uint32_t x, uint8_t n)</div><div class="ttdef"><b>定义</b> <a href="#l00149">dl_math.h:149</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a4ca0412804f8a0b02f64c9e17fcaaec5"><div class="ttname"><a href="namespacedl_1_1_math.html#a4ca0412804f8a0b02f64c9e17fcaaec5">dl::Math::Pow</a></div><div class="ttdeci">constexpr T Pow(T x, T n)</div><div class="ttdoc">返回x的n次方</div><div class="ttdef"><b>定义</b> <a href="#l00131">dl_math.h:131</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a4ee9f3ba35fa7a809016bf99b50f9665"><div class="ttname"><a href="namespacedl_1_1_math.html#a4ee9f3ba35fa7a809016bf99b50f9665">dl::Math::AddUCheck</a></div><div class="ttdeci">bool AddUCheck(T0 a, T1 b, T0 &ret)</div><div class="ttdoc">无符号 加 有符号,检查负数</div><div class="ttdef"><b>定义</b> <a href="#l00299">dl_math.h:299</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a5051ef44773c5f3f741cfb2a6c84d327"><div class="ttname"><a href="namespacedl_1_1_math.html#a5051ef44773c5f3f741cfb2a6c84d327">dl::Math::DrawLineCover</a></div><div class="ttdeci">std::vector< Point > DrawLineCover(const Point &p0, const Point &p1)</div><div class="ttdoc">覆盖 画线算法</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a58fa4763197d4ffe4d73c5f14db25ad3"><div class="ttname"><a href="namespacedl_1_1_math.html#a58fa4763197d4ffe4d73c5f14db25ad3">dl::Math::Normalize</a></div><div class="ttdeci">void Normalize(Array< T, N > &v)</div><div class="ttdoc">向量单位化</div><div class="ttdef"><b>定义</b> <a href="#l00453">dl_math.h:453</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a5ba4a5c06ba40d3d10f82c6edbea18db"><div class="ttname"><a href="namespacedl_1_1_math.html#a5ba4a5c06ba40d3d10f82c6edbea18db">dl::Math::ExtendRectRB</a></div><div class="ttdeci">void ExtendRectRB(const Array< T, 2 > &size, Array< T, 4 > &rect, T extend=1)</div><div class="ttdoc">向右下拓展矩形</div><div class="ttdef"><b>定义</b> <a href="#l01104">dl_math.h:1104</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a5ce9d978cb5f546c0c62a59cae7609d8"><div class="ttname"><a href="namespacedl_1_1_math.html#a5ce9d978cb5f546c0c62a59cae7609d8">dl::Math::div_found_fast</a></div><div class="ttdeci">constexpr unsigned div_found_fast(unsigned n, unsigned d)</div><div class="ttdoc">无符号除法,返回四舍五入结果</div><div class="ttdef"><b>定义</b> <a href="#l00643">dl_math.h:643</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a6237f1594b5aa5aadae8a33148a47cf5"><div class="ttname"><a href="namespacedl_1_1_math.html#a6237f1594b5aa5aadae8a33148a47cf5">dl::Math::GetCircleNumMax</a></div><div class="ttdeci">unsigned GetCircleNumMax(unsigned rad)</div><div class="ttdoc">返回圆所占格子数(GetCircle函数使用)</div><div class="ttdef"><b>定义</b> <a href="#l01112">dl_math.h:1112</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a65d9465077735120c1e2087908402e7b"><div class="ttname"><a href="namespacedl_1_1_math.html#a65d9465077735120c1e2087908402e7b">dl::Math::GetQuadTriangle0</a></div><div class="ttdeci">constexpr Array< T, 3 > GetQuadTriangle0(const Array< T, 4 > &quad)</div><div class="ttdoc">返回 Quad的三角形</div><div class="ttdef"><b>定义</b> <a href="#l00814">dl_math.h:814</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a6b4a57c034f58c7ba26105da97b21d22"><div class="ttname"><a href="namespacedl_1_1_math.html#a6b4a57c034f58c7ba26105da97b21d22">dl::Math::Slerp</a></div><div class="ttdeci">Position4 Slerp(const Position4 &q0, const Position4 &q1, const Float &t)</div><div class="ttdoc">球面线性插值</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a6c4d5b783a36df0968baff39b508ec0b"><div class="ttname"><a href="namespacedl_1_1_math.html#a6c4d5b783a36df0968baff39b508ec0b">dl::Math::PI</a></div><div class="ttdeci">constexpr double PI(unsigned n=1, unsigned d=1)</div><div class="ttdoc">返回PI的分数</div><div class="ttdef"><b>定义</b> <a href="#l00489">dl_math.h:489</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a6dd305713bb1ddac8c079a54529aed29"><div class="ttname"><a href="namespacedl_1_1_math.html#a6dd305713bb1ddac8c079a54529aed29">dl::Math::MergePath</a></div><div class="ttdeci">void MergePath(std::list< Point > &list_pos)</div><div class="ttdoc">路径合并(网格路径)</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a7317ab76cec9c98260f3cbb7f6530238"><div class="ttname"><a href="namespacedl_1_1_math.html#a7317ab76cec9c98260f3cbb7f6530238">dl::Math::RSqrt</a></div><div class="ttdeci">float RSqrt(float x)</div><div class="ttdoc">返回平方根的倒数</div><div class="ttdef"><b>定义</b> <a href="#l00230">dl_math.h:230</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a75a2214abf4b88f8ebec86ec1aa103fd"><div class="ttname"><a href="namespacedl_1_1_math.html#a75a2214abf4b88f8ebec86ec1aa103fd">dl::Math::ExtendRectLeft</a></div><div class="ttdeci">void ExtendRectLeft(T min_left, Array< T, 4 > &rect, T extend=1)</div><div class="ttdoc">向左拓展矩形</div><div class="ttdef"><b>定义</b> <a href="#l01032">dl_math.h:1032</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a7dd8ad32404788c594e14647d1299507"><div class="ttname"><a href="namespacedl_1_1_math.html#a7dd8ad32404788c594e14647d1299507">dl::Math::Radian2Angle</a></div><div class="ttdeci">constexpr float Radian2Angle(float radin)</div><div class="ttdoc">弧度转角度</div><div class="ttdef"><b>定义</b> <a href="#l00084">dl_math.h:84</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a834f4782bdd70e7034832d5b4c5ea87c"><div class="ttname"><a href="namespacedl_1_1_math.html#a834f4782bdd70e7034832d5b4c5ea87c">dl::Math::DisU</a></div><div class="ttdeci">T DisU(T a, T b)</div><div class="ttdoc">返回无符号类型的差值</div><div class="ttdef"><b>定义</b> <a href="#l00366">dl_math.h:366</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a85e38ecb1e29e1ef07c73b9f36b303f7"><div class="ttname"><a href="namespacedl_1_1_math.html#a85e38ecb1e29e1ef07c73b9f36b303f7">dl::Math::GetMouthDayNum</a></div><div class="ttdeci">constexpr int GetMouthDayNum(int year, int mouth)</div><div class="ttdef"><b>定义</b> <a href="#l01321">dl_math.h:1321</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a883b5ed41484062d5437ce662cf52319"><div class="ttname"><a href="namespacedl_1_1_math.html#a883b5ed41484062d5437ce662cf52319">dl::Math::NormalizeFast</a></div><div class="ttdeci">void NormalizeFast(Array< float, N > &v)</div><div class="ttdoc">向量单位化,精度低速度快</div><div class="ttdef"><b>定义</b> <a href="#l00250">dl_math.h:250</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a892c64e33fa5e4a0a334651b7cdfec2c"><div class="ttname"><a href="namespacedl_1_1_math.html#a892c64e33fa5e4a0a334651b7cdfec2c">dl::Math::ExtendRectBottom</a></div><div class="ttdeci">void ExtendRectBottom(T max_bottom, Array< T, 4 > &rect, T extend=1)</div><div class="ttdoc">向下拓展矩形</div><div class="ttdef"><b>定义</b> <a href="#l01065">dl_math.h:1065</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_aa99ad0951f499ce6eb4f8a2843311336"><div class="ttname"><a href="namespacedl_1_1_math.html#aa99ad0951f499ce6eb4f8a2843311336">dl::Math::GetRectTrim</a></div><div class="ttdeci">void GetRectTrim(F func, Array< T, 4 > &rect)</div><div class="ttdoc">裁切图像、网格</div><div class="ttdef"><b>定义</b> <a href="#l00950">dl_math.h:950</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_aac05b119f1bdc7c211f75cb83e943c02"><div class="ttname"><a href="namespacedl_1_1_math.html#aac05b119f1bdc7c211f75cb83e943c02">dl::Math::ARRAY_POW2</a></div><div class="ttdeci">constexpr uint64_t ARRAY_POW2[]</div><div class="ttdoc">2的整数次幂列表</div><div class="ttdef"><b>定义</b> <a href="#l00162">dl_math.h:162</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_aaf5f859bf7a1ed57578fbf040113fd37"><div class="ttname"><a href="namespacedl_1_1_math.html#aaf5f859bf7a1ed57578fbf040113fd37">dl::Math::DistancePow2</a></div><div class="ttdeci">T DistancePow2(const Array< T, 2 > &a)</div><div class="ttdoc">返回 向量 距离的平方</div><div class="ttdef"><b>定义</b> <a href="#l00389">dl_math.h:389</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_ab05d68f0f058aefa1d75608134517ce4"><div class="ttname"><a href="namespacedl_1_1_math.html#ab05d68f0f058aefa1d75608134517ce4">dl::Math::RangeRadian</a></div><div class="ttdeci">constexpr void RangeRadian(std::array< float, 2 > &arr)</div><div class="ttdef"><b>定义</b> <a href="#l00100">dl_math.h:100</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_ab26a0dcb4f301b3e099ae1a800297c91"><div class="ttname"><a href="namespacedl_1_1_math.html#ab26a0dcb4f301b3e099ae1a800297c91">dl::Math::ExtendRectRight</a></div><div class="ttdeci">void ExtendRectRight(T max_right, Array< T, 4 > &rect, T extend=1)</div><div class="ttdoc">向右拓展矩形</div><div class="ttdef"><b>定义</b> <a href="#l01054">dl_math.h:1054</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_ab3ac68a3f8ad937b643725f8fca0761c"><div class="ttname"><a href="namespacedl_1_1_math.html#ab3ac68a3f8ad937b643725f8fca0761c">dl::Math::ExtendRectTop</a></div><div class="ttdeci">void ExtendRectTop(T min_top, Array< T, 4 > &rect, T extend=1)</div><div class="ttdoc">向上拓展矩形</div><div class="ttdef"><b>定义</b> <a href="#l01043">dl_math.h:1043</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_abb2b9b270b34ce11bcb23836b2580b0c"><div class="ttname"><a href="namespacedl_1_1_math.html#abb2b9b270b34ce11bcb23836b2580b0c">dl::Math::GetBaseTemperature</a></div><div class="ttdeci">double GetBaseTemperature(double latitude, int day)</div><div class="ttdoc">基于纬度估算海平面基准温度(℃)</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_abe5d98c6dc17d29dda3b85262e5c1f62"><div class="ttname"><a href="namespacedl_1_1_math.html#abe5d98c6dc17d29dda3b85262e5c1f62">dl::Math::DrawLineBresenham</a></div><div class="ttdeci">std::vector< Point > DrawLineBresenham(const Point &p0, const Point &p1)</div><div class="ttdoc">bresenham 画线算法</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_ac646c4be3e3f82f16711b9c6fe342e76"><div class="ttname"><a href="namespacedl_1_1_math.html#ac646c4be3e3f82f16711b9c6fe342e76">dl::Math::DistanceDiagonal</a></div><div class="ttdeci">constexpr auto DistanceDiagonal(const C &p0, const C &p1)</div><div class="ttdoc">纹理区域转uv</div><div class="ttdef"><b>定义</b> <a href="#l00728">dl_math.h:728</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_acbf3faf5f923f308a154146ae2bcaef6"><div class="ttname"><a href="namespacedl_1_1_math.html#acbf3faf5f923f308a154146ae2bcaef6">dl::Math::DotProduct</a></div><div class="ttdeci">constexpr T DotProduct(const Array< T, N > &a, const Array< T, N > &b)</div><div class="ttdoc">点乘</div><div class="ttdef"><b>定义</b> <a href="#l00692">dl_math.h:692</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_ad9ee522cb0e0c82b1c642f0898b58f88"><div class="ttname"><a href="namespacedl_1_1_math.html#ad9ee522cb0e0c82b1c642f0898b58f88">dl::Math::ExtendRect</a></div><div class="ttdeci">void ExtendRect(const Array< T, 4 > &rect_big, Array< T, 4 > &rect, T extend=1)</div><div class="ttdoc">拓展矩形</div><div class="ttdef"><b>定义</b> <a href="#l01077">dl_math.h:1077</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_adbd4f647071ac06d6308428d50ba7d54"><div class="ttname"><a href="namespacedl_1_1_math.html#adbd4f647071ac06d6308428d50ba7d54">dl::Math::IsDotInQuad</a></div><div class="ttdeci">constexpr bool IsDotInQuad(const Position &dot, const Quad &quad)</div><div class="ttdoc">判断点是否在四边形内(包含边)</div><div class="ttdef"><b>定义</b> <a href="#l00920">dl_math.h:920</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_adddef243cf841007e5d654c2006829a7"><div class="ttname"><a href="namespacedl_1_1_math.html#adddef243cf841007e5d654c2006829a7">dl::Math::CeilToPow2</a></div><div class="ttdeci">constexpr uint64_t CeilToPow2(uint64_t &&x)</div><div class="ttdef"><b>定义</b> <a href="#l00183">dl_math.h:183</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_ae400ae778f11859dbe0b3eba018483b0"><div class="ttname"><a href="namespacedl_1_1_math.html#ae400ae778f11859dbe0b3eba018483b0">dl::Math::GetQuadTriangle1</a></div><div class="ttdeci">constexpr Array< T, 3 > GetQuadTriangle1(const Array< T, 4 > &quad)</div><div class="ttdef"><b>定义</b> <a href="#l00819">dl_math.h:819</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_ae4ea8b4e5f810327297dd5264056e03e"><div class="ttname"><a href="namespacedl_1_1_math.html#ae4ea8b4e5f810327297dd5264056e03e">dl::Math::DistanceU</a></div><div class="ttdeci">T DistanceU(const Array< T, 2 > &a, const Array< T, 2 > &b)</div><div class="ttdoc">返回 距离</div><div class="ttdef"><b>定义</b> <a href="#l00445">dl_math.h:445</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_ae767ab216cd5f9ae60549bfc2361b223"><div class="ttname"><a href="namespacedl_1_1_math.html#ae767ab216cd5f9ae60549bfc2361b223">dl::Math::IsRectValid</a></div><div class="ttdeci">constexpr bool IsRectValid(const Array< T, 4 > &rect)</div><div class="ttdoc">判断 矩形 是否有效</div><div class="ttdef"><b>定义</b> <a href="#l00830">dl_math.h:830</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_ae7d693ca46e7a9a3d26aaca78638b4b7"><div class="ttname"><a href="namespacedl_1_1_math.html#ae7d693ca46e7a9a3d26aaca78638b4b7">dl::Math::IsRectInSize</a></div><div class="ttdeci">constexpr bool IsRectInSize(const Array< T, 4 > &rect, const Size &size)</div><div class="ttdoc">判断 矩形 在 大小 内,首先它必须是有效的矩形</div><div class="ttdef"><b>定义</b> <a href="#l00851">dl_math.h:851</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_ae818648de6e0dc9cacee134bf6436d73"><div class="ttname"><a href="namespacedl_1_1_math.html#ae818648de6e0dc9cacee134bf6436d73">dl::Math::Angle2Radian</a></div><div class="ttdeci">constexpr float Angle2Radian(float angle)</div><div class="ttdoc">角度转弧度</div><div class="ttdef"><b>定义</b> <a href="#l00091">dl_math.h:91</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_af74bba51c5ae4f7eafe21b0d8b41dd77"><div class="ttname"><a href="namespacedl_1_1_math.html#af74bba51c5ae4f7eafe21b0d8b41dd77">dl::Math::AddU</a></div><div class="ttdeci">T0 AddU(T0 a, T1 b)</div><div class="ttdoc">无符号 加 有符号,防止小于0</div><div class="ttdef"><b>定义</b> <a href="#l00269">dl_math.h:269</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_af9219f73426278a517068d993de93a87"><div class="ttname"><a href="namespacedl_1_1_math.html#af9219f73426278a517068d993de93a87">dl::Math::GetSolarDeclination</a></div><div class="ttdeci">double GetSolarDeclination(int day)</div><div class="ttdoc">计算太阳赤纬(太阳直射点纬度)</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_af9c0efe2a1a602f28edae22000be7c26"><div class="ttname"><a href="namespacedl_1_1_math.html#af9c0efe2a1a602f28edae22000be7c26">dl::Math::IsDotInTriangle</a></div><div class="ttdeci">constexpr bool IsDotInTriangle(const Position &dot, const Triangle &triangle)</div><div class="ttdoc">判断点是否在三角形内(包含边)</div><div class="ttdef"><b>定义</b> <a href="#l00900">dl_math.h:900</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_numbers_html"><div class="ttname"><a href="namespacedl_1_1_numbers.html">dl::Numbers</a></div><div class="ttdoc">类似std::numbers的常数</div><div class="ttdef"><b>定义</b> <a href="#l00030">dl_math.h:31</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_numbers_html_a1075e2c18e33762256edcb857d9478a1"><div class="ttname"><a href="namespacedl_1_1_numbers.html#a1075e2c18e33762256edcb857d9478a1">dl::Numbers::EULER</a></div><div class="ttdeci">constexpr Float EULER</div><div class="ttdoc">自然常数</div><div class="ttdef"><b>定义</b> <a href="#l00034">dl_math.h:34</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_numbers_html_a27b365e4b15f0e772b45ad4384071191"><div class="ttname"><a href="namespacedl_1_1_numbers.html#a27b365e4b15f0e772b45ad4384071191">dl::Numbers::EARTH_fADIUS</a></div><div class="ttdeci">constexpr Float EARTH_fADIUS</div><div class="ttdoc">地球半径km</div><div class="ttdef"><b>定义</b> <a href="#l00032">dl_math.h:32</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_numbers_html_a489312a13766a274d4a6cb497f788b06"><div class="ttname"><a href="namespacedl_1_1_numbers.html#a489312a13766a274d4a6cb497f788b06">dl::Numbers::GRAVITY</a></div><div class="ttdeci">constexpr Float GRAVITY</div><div class="ttdoc">地球重力加速度(赤道最小)</div><div class="ttdef"><b>定义</b> <a href="#l00033">dl_math.h:33</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_numbers_html_a6975b404b22d21d0b22c469e8bc2bc9b"><div class="ttname"><a href="namespacedl_1_1_numbers.html#a6975b404b22d21d0b22c469e8bc2bc9b">dl::Numbers::PI</a></div><div class="ttdeci">constexpr Float PI</div><div class="ttdoc">圆周率</div><div class="ttdef"><b>定义</b> <a href="#l00037">dl_math.h:37</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_numbers_html_abe43b603e3b3d10b060f30f84c637c49"><div class="ttname"><a href="namespacedl_1_1_numbers.html#abe43b603e3b3d10b060f30f84c637c49">dl::Numbers::SQRT_2</a></div><div class="ttdeci">constexpr Float SQRT_2</div><div class="ttdoc">根号2</div><div class="ttdef"><b>定义</b> <a href="#l00036">dl_math.h:36</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_numbers_html_add20a4590c12a565e0ceb1304aa1fb11"><div class="ttname"><a href="namespacedl_1_1_numbers.html#add20a4590c12a565e0ceb1304aa1fb11">dl::Numbers::RATIO_GOLD</a></div><div class="ttdeci">constexpr Float RATIO_GOLD</div><div class="ttdoc">黄金比例</div><div class="ttdef"><b>定义</b> <a href="#l00035">dl_math.h:35</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_numeric_html"><div class="ttname"><a href="namespacedl_1_1_numeric.html">dl::Numeric</a></div><div class="ttdoc">类似numeric头文件的数值操作</div><div class="ttdef"><b>定义</b> <a href="#l00041">dl_math.h:42</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_numeric_html_a460b5258a3501aa49063917c6eb5bbfb"><div class="ttname"><a href="namespacedl_1_1_numeric.html#a460b5258a3501aa49063917c6eb5bbfb">dl::Numeric::Min</a></div><div class="ttdeci">void Min(Array< T, N > &container)</div><div class="ttdoc">返回的是最小正数(假设有符号)</div><div class="ttdef"><b>定义</b> <a href="#l00045">dl_math.h:45</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_numeric_html_aefaca7a8e14a5bf467788ca6d9b87564"><div class="ttname"><a href="namespacedl_1_1_numeric.html#aefaca7a8e14a5bf467788ca6d9b87564">dl::Numeric::Max</a></div><div class="ttdeci">void Max(Array< T, N > &container)</div><div class="ttdef"><b>定义</b> <a href="#l00053">dl_math.h:53</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_select_html_abd483aa59ad30cb9686888397615335a"><div class="ttname"><a href="namespacedl_1_1_select.html#abd483aa59ad30cb9686888397615335a">dl::Select::Max</a></div><div class="ttdeci">constexpr auto Max(const C &container)</div><div class="ttdoc">返回容器最大值</div><div class="ttdef"><b>定义</b> <a href="dl__range__select_8h_source.html#l00028">dl_range_select.h:28</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_a04611b2d3b24b5b4ad6569cdea6f62d4"><div class="ttname"><a href="namespacedl.html#a04611b2d3b24b5b4ad6569cdea6f62d4">dl::Position</a></div><div class="ttdeci">Position2 Position</div><div class="ttdef"><b>定义</b> <a href="dl__type__def_8h_source.html#l00044">dl_type_def.h:44</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_a2deb3e79723ed0c188c47443a48744b7"><div class="ttname"><a href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">dl::Float</a></div><div class="ttdeci">float Float</div><div class="ttdef"><b>定义</b> <a href="dl__type__def_8h_source.html#l00038">dl_type_def.h:38</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_a38a0162879cdbfbbe99ba16e7a170132a0d61f8370cad1d412f80b84d143e1257"><div class="ttname"><a href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a0d61f8370cad1d412f80b84d143e1257">dl::KeyCode::C</a></div><div class="ttdeci">@ C</div><div class="ttdef"><b>定义</b> <a href="dl__input_8h_source.html#l00104">dl_input.h:104</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_a38a0162879cdbfbbe99ba16e7a170132a800618943025315f869e4e1f09471012"><div class="ttname"><a href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a800618943025315f869e4e1f09471012">dl::KeyCode::F</a></div><div class="ttdeci">@ F</div><div class="ttdef"><b>定义</b> <a href="dl__input_8h_source.html#l00107">dl_input.h:107</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_a38a0162879cdbfbbe99ba16e7a170132a8d9c307cb7f3c4a32822a51922d1ceaa"><div class="ttname"><a href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a8d9c307cb7f3c4a32822a51922d1ceaa">dl::KeyCode::N</a></div><div class="ttdeci">@ N</div><div class="ttdef"><b>定义</b> <a href="dl__input_8h_source.html#l00115">dl_input.h:115</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3"><div class="ttname"><a href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">dl::KeyCode::T</a></div><div class="ttdeci">@ T</div><div class="ttdef"><b>定义</b> <a href="dl__input_8h_source.html#l00121">dl_input.h:121</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_a4c82201e93e408f5c14a674144a375b5"><div class="ttname"><a href="namespacedl.html#a4c82201e93e408f5c14a674144a375b5">dl::toSizeDefault</a></div><div class="ttdeci">constexpr Array< PointU::value_type, N > toSizeDefault(const Array< T, N > &a)</div><div class="ttdoc">有符号转无符号,直接转换,负数会直接转为大正数</div><div class="ttdef"><b>定义</b> <a href="dl__type__convert_8h_source.html#l00147">dl_type_convert.h:147</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_a50cf03966b4ef57c19c125108102ac6a"><div class="ttname"><a href="namespacedl.html#a50cf03966b4ef57c19c125108102ac6a">dl::Position2</a></div><div class="ttdeci">Array< Float, 2 > Position2</div><div class="ttdef"><b>定义</b> <a href="dl__type__def_8h_source.html#l00041">dl_type_def.h:41</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_a52d151a5836974d062fad33e4d6dad3f"><div class="ttname"><a href="namespacedl.html#a52d151a5836974d062fad33e4d6dad3f">dl::is_saturate</a></div><div class="ttdeci">constexpr T is_saturate(const T &x)</div><div class="ttdoc">是否数值在[0, 1]</div><div class="ttdef"><b>定义</b> <a href="dl__algorithm_8h_source.html#l00058">dl_algorithm.h:58</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_a5ab03b7215d3aa1c91c31befb442b33d"><div class="ttname"><a href="namespacedl.html#a5ab03b7215d3aa1c91c31befb442b33d">dl::Triangle</a></div><div class="ttdeci">Array< Position, 3 > Triangle</div><div class="ttdef"><b>定义</b> <a href="dl__type__def_8h_source.html#l00054">dl_type_def.h:54</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_a5bb9ee10db5338251b4bb854939b69b3"><div class="ttname"><a href="namespacedl.html#a5bb9ee10db5338251b4bb854939b69b3">dl::log</a></div><div class="ttdeci">void log(std::string_view str, DL_SOURCE_LOCATION)</div><div class="ttdoc">以当前设置输出</div></div>
|
||
<div class="ttc" id="anamespacedl_html_a6347394cca146fd6b8fedf1d3545de59"><div class="ttname"><a href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">dl::PointU</a></div><div class="ttdeci">Point2U PointU</div><div class="ttdef"><b>定义</b> <a href="dl__type__def_8h_source.html#l00034">dl_type_def.h:34</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_a8caf4bcf54955de2e79b95811306b841"><div class="ttname"><a href="namespacedl.html#a8caf4bcf54955de2e79b95811306b841">dl::Position3</a></div><div class="ttdeci">Array< Float, 3 > Position3</div><div class="ttdef"><b>定义</b> <a href="dl__type__def_8h_source.html#l00042">dl_type_def.h:42</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_aa4bb00cad84e587e46364ac39f4d3d4a"><div class="ttname"><a href="namespacedl.html#aa4bb00cad84e587e46364ac39f4d3d4a">dl::Position4</a></div><div class="ttdeci">Array< Float, 4 > Position4</div><div class="ttdef"><b>定义</b> <a href="dl__type__def_8h_source.html#l00043">dl_type_def.h:43</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_ab5903c381116ba61ce724dc9390e3722"><div class="ttname"><a href="namespacedl.html#ab5903c381116ba61ce724dc9390e3722">dl::saturate</a></div><div class="ttdeci">constexpr T saturate(const T &x)</div><div class="ttdoc">限制数值到 [0, 1]</div><div class="ttdef"><b>定义</b> <a href="dl__algorithm_8h_source.html#l00045">dl_algorithm.h:45</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_ac239c3e197b60bee840b9583cf35db65"><div class="ttname"><a href="namespacedl.html#ac239c3e197b60bee840b9583cf35db65">dl::Rect</a></div><div class="ttdeci">Point4 Rect</div><div class="ttdef"><b>定义</b> <a href="dl__type__def_8h_source.html#l00050">dl_type_def.h:50</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_ae4f29e205fdc73953f8757963a2731fd"><div class="ttname"><a href="namespacedl.html#ae4f29e205fdc73953f8757963a2731fd">dl::Quad</a></div><div class="ttdeci">Array< Position, 4 > Quad</div><div class="ttdef"><b>定义</b> <a href="dl__type__def_8h_source.html#l00055">dl_type_def.h:55</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_af4b025efbd5dae0045cce4cbc9546416"><div class="ttname"><a href="namespacedl.html#af4b025efbd5dae0045cce4cbc9546416">dl::Size</a></div><div class="ttdeci">PointU Size</div><div class="ttdef"><b>定义</b> <a href="dl__type__def_8h_source.html#l00035">dl_type_def.h:35</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_af6ec361004784c4eabc4ee2b9e85d603"><div class="ttname"><a href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">dl::Point</a></div><div class="ttdeci">Point2 Point</div><div class="ttdef"><b>定义</b> <a href="dl__type__def_8h_source.html#l00026">dl_type_def.h:26</a></div></div>
|
||
</div><!-- fragment --></div><!-- contents -->
|
||
<!-- start footer part -->
|
||
<hr class="footer"/><address class="footer"><small>
|
||
制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.1
|
||
</small></address>
|
||
</div><!-- doc-content -->
|
||
</body>
|
||
</html>
|