Files
dl/document/html/dl__math_8h_source.html
2026-09-16 14:07:40 +08:00

1458 lines
272 KiB
HTML
Vendored
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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&amp;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&amp;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&amp;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 &lt;numeric&gt;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include &lt;list&gt;</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &lt;version&gt;</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &lt;functional&gt;</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 &quot;<a class="code" href="dl__type_8h.html">dl_type.h</a>&quot;</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include &quot;<a class="code" href="dl__log_8h.html">io/dl_log.h</a>&quot;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="preprocessor">#include &quot;<a class="code" href="dl__concept_8h.html">base/dl_concept.h</a>&quot;</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#include &quot;<a class="code" href="dl__algorithm_8h.html">dl_algorithm.h</a>&quot;</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#include &quot;<a class="code" href="dl__range_8h.html">dl_range.h</a>&quot;</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 &quot;<a class="code" href="dl__platform_8h.html">system/dl_platform.h</a>&quot;</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 &lt;numbers&gt;</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>&lt;<span class="keyword">typename</span> T, <span class="keywordtype">size_t</span> N&gt;</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&lt;T, N&gt;</a>&amp; 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 &lt; <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&lt;T&gt;::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>&lt;<span class="keyword">typename</span> T, <span class="keywordtype">size_t</span> N&gt;</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&lt;T, N&gt;</a>&amp; 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 &lt; <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&lt;T&gt;::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&amp; size, list&lt;&gt;&amp; map_fect, map&lt;size_t, RectU&gt;&amp; 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>&lt;<span class="keyword">typename</span> T&gt;</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 &lt; a || b &lt; 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&lt;float, 2&gt;&amp; 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] &gt; 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>&lt;<span class="keyword">typename</span> T&gt;</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 &lt; 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 &lt; 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 &lt; 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 &lt;= 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&amp;&amp; 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">&quot;数值过大,超过2^63&quot;</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 &lt;= 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&amp;&amp; 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">&quot;数值过大,超过2^31&quot;</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> &lt;<span class="keyword">typename</span> T&gt;</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>&amp; 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>*)&amp;y;</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> i = 0x5f3759df - (i &gt;&gt; 1);</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> y = *(<span class="keywordtype">float</span>*)&amp;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>&lt;<span class="keywordtype">size_t</span> N&gt;</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&lt;float, N&gt;</a>&amp; 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 &lt; <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 &lt; <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> &lt;IsUn<span class="keywordtype">signed</span> T0, IsSigned T1&gt;</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 &gt;= 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 &lt; 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> &lt;IsUn<span class="keywordtype">signed</span> T0, IsSigned T1, <span class="keywordtype">size_t</span> N&gt;</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&lt;T0, N&gt;</a>&amp; a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array&lt;T1, N&gt;</a>&amp; 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 &lt; <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> &lt;IsUn<span class="keywordtype">signed</span> T0, IsSigned T1, <span class="keywordtype">size_t</span> N&gt;</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&lt;T0, N&gt;</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&lt;T0, N&gt;</a>&amp; a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array&lt;T1, N&gt;</a>&amp; 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&lt;T0, N&gt;</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 &lt; <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> &lt;IsUn<span class="keywordtype">signed</span> T0, IsSigned T1&gt;</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&amp; 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 &gt;= 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 &gt; 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> &lt;IsUn<span class="keywordtype">signed</span> T0, IsSigned T1, <span class="keywordtype">size_t</span> N&gt;</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&lt;T0, N&gt;</a>&amp; a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array&lt;T1, N&gt;</a>&amp; b, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array&lt;T0, N&gt;</a>&amp; 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 &lt; <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> &lt;IsUn<span class="keywordtype">signed</span> T&gt;</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 &gt; 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> &lt;IsUn<span class="keywordtype">signed</span> T0, IsSigned T1&gt;</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 &lt;= 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> &lt;IsUn<span class="keywordtype">signed</span> T, <span class="keywordtype">size_t</span> N&gt;</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&lt;T, N&gt;</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&lt;T, N&gt;</a>&amp; a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array&lt;T, N&gt;</a>&amp; 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&lt;T, N&gt;</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 &lt; <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> &lt;IsUn<span class="keywordtype">signed</span> T0, IsSigned T1, <span class="keywordtype">size_t</span> N&gt;</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&lt;T0, N&gt;</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&lt;T0, N&gt;</a>&amp; a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array&lt;T1, N&gt;</a>&amp; 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&lt;T0, N&gt;</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 &lt; <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> &lt;IsUn<span class="keywordtype">signed</span> T&gt;</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 &lt; 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> &lt;IsUn<span class="keywordtype">signed</span> T, <span class="keywordtype">size_t</span> N&gt;</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&lt;T, N&gt;</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&lt;T, N&gt;</a>&amp; a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array&lt;T, N&gt;</a>&amp; 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&lt;T, N&gt;</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 &lt; <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> &lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 2&gt;</a>&amp; 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> &lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 3&gt;</a>&amp; 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> &lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 4&gt;</a>&amp; 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> &lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 2&gt;</a>&amp; 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&lt;</span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a><span class="keyword">&gt;</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> &lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 3&gt;</a>&amp; 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&lt;</span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a><span class="keyword">&gt;</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> &lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 4&gt;</a>&amp; 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&lt;</span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a><span class="keyword">&gt;</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> &lt;IsSigned T&gt;</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&lt;T, 2&gt;</a>&amp; a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array&lt;T, 2&gt;</a>&amp; 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> &lt;IsUn<span class="keywordtype">signed</span> T&gt;</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&lt;T, 2&gt;</a>&amp; a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array&lt;T, 2&gt;</a>&amp; 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> &lt;IsUn<span class="keywordtype">signed</span> T&gt;</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&lt;T, 2&gt;</a>&amp; a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array&lt;T, 2&gt;</a>&amp; 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&lt;</span><a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132ab9ece18c950afbfa6b0fdbfa4ff731d3">T</a><span class="keyword">&gt;</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> &lt;IsSigned T, <span class="keywordtype">size_t</span> N&gt;</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&lt;T, N&gt;</a>&amp; 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> &lt;IsSigned T, <span class="keywordtype">size_t</span> N&gt;</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&lt;T, N&gt;</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&lt;T, N&gt;</a>&amp; 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&lt;T, N&gt;</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&lt;PointU&gt; <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>&amp; size, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>&amp; 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&lt;Point&gt; <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>&amp; 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(&quot;错误的下标![0, 3]&quot;);</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&amp; 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 &lt; 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 &gt;= 0 &amp;&amp; index &lt;= 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>&lt;IsReal T&gt;</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 &gt; 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 &lt; 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 &lt; 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 &gt; 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>&lt;IsUn<span class="keywordtype">signed</span> T&gt;</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 &gt; 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 &amp;&amp; !(x &amp; (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) &amp; ~(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 &gt;= (d &gt;&gt; 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 &gt;&gt; 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&lt;float&gt;::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">&quot;order超出范围:{}&quot;</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>&amp; a, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a50cf03966b4ef57c19c125108102ac6a">Position2</a>&amp; 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>&amp; a, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a8caf4bcf54955de2e79b95811306b841">Position3</a>&amp; 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>&lt;<span class="keyword">typename</span> T, <span class="keywordtype">size_t</span> N&gt;</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&lt;T, N&gt;</a>&amp; a, <span class="keyword">const</span> <a class="code hl_class" href="classdl_1_1_array.html">Array&lt;T, N&gt;</a>&amp; 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 &lt; <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>&amp; q0, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#aa4bb00cad84e587e46364ac39f4d3d4a">Position4</a>&amp; q1, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a2deb3e79723ed0c188c47443a48744b7">Float</a>&amp; 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&amp; tex_size, const RectU&amp; 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>&lt;<span class="keyword">typename</span> C&gt;</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>&amp; p0, <span class="keyword">const</span> <a class="code hl_enumvalue" href="namespacedl.html#a38a0162879cdbfbbe99ba16e7a170132a0d61f8370cad1d412f80b84d143e1257">C</a>&amp; 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&lt;Point&gt; <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>&amp; p0, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a>&amp; 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&lt;Point&gt; <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>&amp; p0, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a>&amp; 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&lt;Point&gt; <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>&amp; p0, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a>&amp; 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&lt;Point&gt; <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>&amp; p0, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a>&amp; 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&lt;Point&gt;&amp; 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>&lt;<span class="keyword">typename</span> F&gt;</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&lt;Point&gt;&amp; 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() &lt; 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>&lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 4&gt;</a>&amp; 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>&lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 3&gt;</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&lt;T, 4&gt;</a>&amp; 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>&lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 3&gt;</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&lt;T, 4&gt;</a>&amp; 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>&lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 4&gt;</a>&amp; 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] &lt;= rect[2]</div>
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno"> 833</span> &amp;&amp; rect[1] &lt;= 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>&lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 4&gt;</a>&amp; 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> &amp;&amp; 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>&lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 4&gt;</a>&amp; rect, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af4b025efbd5dae0045cce4cbc9546416">Size</a>&amp; 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] &gt;= 0</div>
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno"> 856</span> &amp;&amp; rect[1] &gt;= 0</div>
<div class="line"><a id="l00857" name="l00857"></a><span class="lineno"> 857</span> &amp;&amp; rect[2] &lt;= size[0]</div>
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno"> 858</span> &amp;&amp; rect[3] &lt;= 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>&amp; xy, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#af4b025efbd5dae0045cce4cbc9546416">Size</a>&amp; 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]) &lt; size[0]</div>
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno"> 869</span> &amp;&amp; unsigned(xy[1]) &lt; 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>&amp; xy, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#ac239c3e197b60bee840b9583cf35db65">Rect</a>&amp; 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] &gt;= rect[0]</div>
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno"> 879</span> &amp;&amp; xy[1] &gt;= rect[1]</div>
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno"> 880</span> &amp;&amp; xy[0] &lt; rect[2]</div>
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno"> 881</span> &amp;&amp; xy[1] &lt; 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>&amp; 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>&amp; dot, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a5ab03b7215d3aa1c91c31befb442b33d">Triangle</a>&amp; 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 &gt;= 0 &amp;&amp;</div>
<div class="line"><a id="l00911" name="l00911"></a><span class="lineno"> 911</span> t1 * t3 &gt;= 0 &amp;&amp;</div>
<div class="line"><a id="l00912" name="l00912"></a><span class="lineno"> 912</span> t2 * t3 &gt;= 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>&amp; dot, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#ae4f29e205fdc73953f8757963a2731fd">Quad</a>&amp; 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&amp; dot, const Quad&amp; 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>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> F&gt;</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&lt;T, 4&gt;</a>&amp; 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 &lt; 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 &lt; 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 &gt; 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 &lt; 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 &lt; 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 &lt; 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 &gt; 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 &lt; 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>&lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 4&gt;</a>&amp; 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 &gt;= 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>&lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 4&gt;</a>&amp; 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 &gt;= 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>&lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 4&gt;</a>&amp; 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 &lt;= 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>&lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 4&gt;</a>&amp; 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 &lt;= 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>&lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 4&gt;</a>&amp; rect_big, <a class="code hl_class" href="classdl_1_1_array.html">Array&lt;T, 4&gt;</a>&amp; 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>&lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 2&gt;</a>&amp; size, <a class="code hl_class" href="classdl_1_1_array.html">Array&lt;T, 4&gt;</a>&amp; 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>&lt;<span class="keyword">typename</span> T&gt;</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&lt;T, 2&gt;</a>&amp; size, <a class="code hl_class" href="classdl_1_1_array.html">Array&lt;T, 4&gt;</a>&amp; 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>&amp; size, <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>&amp; 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 &gt;= 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 &gt;= 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>&amp; size, <a class="code hl_typedef" href="namespacedl.html#af6ec361004784c4eabc4ee2b9e85d603">Point</a> xy, <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>&amp; 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 &lt; 0 || xy.y &gt;= (<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 &lt; 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 &gt;= (<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>&amp; size, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>&amp; a, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>&amp; 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 &gt; 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>&amp; size, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>&amp; a, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>&amp; 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 &gt; 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&lt;PointU&gt; <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>&amp; size, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>&amp; 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>&amp; 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>&amp; 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 &gt;= _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>&amp; 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 &gt; _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>&amp; 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 &gt;= _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>&amp; 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 &gt;= _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>&amp; 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>&amp; 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>&amp; 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>&amp; 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>&amp; 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 &lt; _size.w &amp;&amp; xy.y &lt; _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>&amp; 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 &lt; _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>&amp; 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 &lt; _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&lt;bool(<span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>&amp; xy)&gt;;</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&lt;void(<span class="keywordtype">unsigned</span>, <span class="keyword">const</span> std::list&lt;PointU&gt;&amp; xy)&gt;;</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&lt;PointU&gt; <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>&amp; size, <span class="keyword">const</span> <a class="code hl_typedef" href="namespacedl.html#a6347394cca146fd6b8fedf1d3545de59">PointU</a>&amp; 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 &amp;&amp; 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 &amp;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 &amp;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 &amp;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 &amp;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 &amp;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 &amp;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 &amp;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 &amp;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 &amp;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 &amp;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 &amp;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 &amp;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&lt; T, N &gt; &amp;a, const Array&lt; T, N &gt; &amp;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 &amp;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&lt; bool(const PointU &amp;xy)&gt; 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 &amp;size, const PointU &amp;a, const PointU &amp;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&lt; PointU &gt; GetCircle(const Size &amp;size, const PointU &amp;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 &amp;size, const PointU &amp;a, const PointU &amp;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&lt; PointU &gt; Diffusion(const Size &amp;size, const PointU &amp;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 &amp;size, PointU &amp;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&lt; void(unsigned, const std::list&lt; PointU &gt; &amp;xy)&gt; 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&lt; Point &gt; DrawLineOrth(const Point &amp;p0, const Point &amp;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 &amp;xy, const Rect &amp;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&lt; T, 2 &gt; &amp;a, const Array&lt; T, 2 &gt; &amp;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 &amp;a, const Position2 &amp;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 &amp;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&lt; Point &gt; DrawLineLerp(const Point &amp;p0, const Point &amp;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&lt; Point &gt; &amp;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&lt; T, 2 &gt; &amp;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&lt; PointU &gt; GetCircle(const Size &amp;size, const PointU &amp;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&lt; T, 4 &gt; &amp;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 &amp;xy, const Size &amp;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&lt; T, 4 &gt; &amp;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 &amp;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&lt; Point &gt; DrawLineCover(const Point &amp;p0, const Point &amp;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&lt; T, N &gt; &amp;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&lt; T, 2 &gt; &amp;size, Array&lt; T, 4 &gt; &amp;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&lt; T, 3 &gt; GetQuadTriangle0(const Array&lt; T, 4 &gt; &amp;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 &amp;q0, const Position4 &amp;q1, const Float &amp;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&lt; Point &gt; &amp;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&lt; T, 4 &gt; &amp;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&lt; float, N &gt; &amp;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&lt; T, 4 &gt; &amp;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&lt; T, 4 &gt; &amp;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&lt; T, 2 &gt; &amp;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&lt; float, 2 &gt; &amp;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&lt; T, 4 &gt; &amp;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&lt; T, 4 &gt; &amp;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&lt; Point &gt; DrawLineBresenham(const Point &amp;p0, const Point &amp;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 &amp;p0, const C &amp;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&lt; T, N &gt; &amp;a, const Array&lt; T, N &gt; &amp;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&lt; T, 4 &gt; &amp;rect_big, Array&lt; T, 4 &gt; &amp;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 &amp;dot, const Quad &amp;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 &amp;&amp;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&lt; T, 3 &gt; GetQuadTriangle1(const Array&lt; T, 4 &gt; &amp;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&lt; T, 2 &gt; &amp;a, const Array&lt; T, 2 &gt; &amp;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&lt; T, 4 &gt; &amp;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&lt; T, 4 &gt; &amp;rect, const Size &amp;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 &amp;dot, const Triangle &amp;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&lt; T, N &gt; &amp;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&lt; T, N &gt; &amp;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 &amp;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&lt; PointU::value_type, N &gt; toSizeDefault(const Array&lt; T, N &gt; &amp;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&lt; Float, 2 &gt; 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 &amp;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&lt; Position, 3 &gt; 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&lt; Float, 3 &gt; 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&lt; Float, 4 &gt; 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 &amp;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&lt; Position, 4 &gt; 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>
制作者&#160;<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>