250 lines
40 KiB
HTML
250 lines
40 KiB
HTML
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|||
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|||
|
|
<head>
|
|||
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|||
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|||
|
|
<meta name="generator" content="Doxygen 1.9.1"/>
|
|||
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|||
|
|
<title>ViewDesignEngine: include/vde/sdf/sdf_operations.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>
|
|||
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|||
|
|
<script type="text/javascript" src="resize.js"></script>
|
|||
|
|
<script type="text/javascript" src="navtreedata.js"></script>
|
|||
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|||
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|||
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|||
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|||
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|||
|
|
</head>
|
|||
|
|
<body>
|
|||
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|||
|
|
<div id="titlearea">
|
|||
|
|
<table cellspacing="0" cellpadding="0">
|
|||
|
|
<tbody>
|
|||
|
|
<tr style="height: 56px;">
|
|||
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|||
|
|
<div id="projectname">ViewDesignEngine
|
|||
|
|
 <span id="projectnumber">3.1.0</span>
|
|||
|
|
</div>
|
|||
|
|
<div id="projectbrief">高性能 CAD 计算几何引擎</div>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
</tbody>
|
|||
|
|
</table>
|
|||
|
|
</div>
|
|||
|
|
<!-- end header part -->
|
|||
|
|
<!-- 制作者 Doxygen 1.9.1 -->
|
|||
|
|
<script type="text/javascript">
|
|||
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|||
|
|
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
|
|||
|
|
/* @license-end */
|
|||
|
|
</script>
|
|||
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|||
|
|
<script type="text/javascript" src="menu.js"></script>
|
|||
|
|
<script type="text/javascript">
|
|||
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|||
|
|
$(function() {
|
|||
|
|
initMenu('',true,false,'search.php','搜索');
|
|||
|
|
$(document).ready(function() { init_search(); });
|
|||
|
|
});
|
|||
|
|
/* @license-end */</script>
|
|||
|
|
<div id="main-nav"></div>
|
|||
|
|
</div><!-- top -->
|
|||
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|||
|
|
<div id="nav-tree">
|
|||
|
|
<div id="nav-tree-contents">
|
|||
|
|
<div id="nav-sync" class="sync"></div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|||
|
|
class="ui-resizable-handle">
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<script type="text/javascript">
|
|||
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|||
|
|
$(document).ready(function(){initNavTree('sdf__operations_8h_source.html',''); initResizable(); });
|
|||
|
|
/* @license-end */
|
|||
|
|
</script>
|
|||
|
|
<div id="doc-content">
|
|||
|
|
<!-- window showing the filter options -->
|
|||
|
|
<div id="MSearchSelectWindow"
|
|||
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|||
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|||
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<!-- iframe showing the search results (closed by default) -->
|
|||
|
|
<div id="MSearchResultsWindow">
|
|||
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|||
|
|
name="MSearchResults" id="MSearchResults">
|
|||
|
|
</iframe>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<div class="header">
|
|||
|
|
<div class="headertitle">
|
|||
|
|
<div class="title">sdf_operations.h</div> </div>
|
|||
|
|
</div><!--header-->
|
|||
|
|
<div class="contents">
|
|||
|
|
<a href="sdf__operations_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#pragma once</span></div>
|
|||
|
|
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "<a class="code" href="point_8h.html">vde/core/point.h</a>"</span></div>
|
|||
|
|
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <cmath></span></div>
|
|||
|
|
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <algorithm></span></div>
|
|||
|
|
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  </div>
|
|||
|
|
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">namespace </span><a class="code" href="namespacevde_1_1sdf.html">vde::sdf</a> {</div>
|
|||
|
|
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  </div>
|
|||
|
|
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">using</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">core::Point3D</a>;</div>
|
|||
|
|
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">using</span> <a class="code" href="namespacevde_1_1core.html#ab763c018d19e10e91a6c6d6ab2ccc8e0">core::Vector3D</a>;</div>
|
|||
|
|
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  </div>
|
|||
|
|
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// ── Boolean operations on distance values ──</span></div>
|
|||
|
|
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  </div>
|
|||
|
|
<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#a93c4506583db122c5b657d39d6d2bb62"> 48</a></span> [[nodiscard]] <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="namespacevde_1_1sdf.html#a93c4506583db122c5b657d39d6d2bb62">op_union</a>(<span class="keywordtype">double</span> d1, <span class="keywordtype">double</span> d2) {</div>
|
|||
|
|
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">return</span> std::min(d1, d2);</div>
|
|||
|
|
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div>
|
|||
|
|
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div>
|
|||
|
|
<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#a00a754cf7c486ad311e6c3221b9d56de"> 70</a></span> [[nodiscard]] <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="namespacevde_1_1sdf.html#a00a754cf7c486ad311e6c3221b9d56de">op_intersection</a>(<span class="keywordtype">double</span> d1, <span class="keywordtype">double</span> d2) {</div>
|
|||
|
|
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> std::max(d1, d2);</div>
|
|||
|
|
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> }</div>
|
|||
|
|
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  </div>
|
|||
|
|
<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#a316369d0cdc7dafbe2af5dd6cb58955b"> 94</a></span> [[nodiscard]] <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="namespacevde_1_1sdf.html#a316369d0cdc7dafbe2af5dd6cb58955b">op_difference</a>(<span class="keywordtype">double</span> d1, <span class="keywordtype">double</span> d2) {</div>
|
|||
|
|
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> std::max(d1, -d2);</div>
|
|||
|
|
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> }</div>
|
|||
|
|
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  </div>
|
|||
|
|
<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#af6c1da88edd1032340478a9d31fee04d"> 126</a></span> [[nodiscard]] <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="namespacevde_1_1sdf.html#af6c1da88edd1032340478a9d31fee04d">op_smooth_union</a>(<span class="keywordtype">double</span> d1, <span class="keywordtype">double</span> d2, <span class="keywordtype">double</span> k) {</div>
|
|||
|
|
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span> (k <= 0.0) <span class="keywordflow">return</span> std::min(d1, d2);</div>
|
|||
|
|
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordtype">double</span> h = std::clamp(0.5 + 0.5 * (d1 - d2) / k, 0.0, 1.0);</div>
|
|||
|
|
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> d1 * (1.0 - h) + d2 * h - k * h * (1.0 - h);</div>
|
|||
|
|
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div>
|
|||
|
|
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  </div>
|
|||
|
|
<div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#afdef99b133742cf60abd412240f86e21"> 149</a></span> [[nodiscard]] <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="namespacevde_1_1sdf.html#afdef99b133742cf60abd412240f86e21">op_smooth_intersection</a>(<span class="keywordtype">double</span> d1, <span class="keywordtype">double</span> d2, <span class="keywordtype">double</span> k) {</div>
|
|||
|
|
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">if</span> (k <= 0.0) <span class="keywordflow">return</span> std::max(d1, d2);</div>
|
|||
|
|
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordtype">double</span> h = std::clamp(0.5 - 0.5 * (d1 - d2) / k, 0.0, 1.0);</div>
|
|||
|
|
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">return</span> d1 * (1.0 - h) + d2 * h + k * h * (1.0 - h);</div>
|
|||
|
|
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> }</div>
|
|||
|
|
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  </div>
|
|||
|
|
<div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#a943524bd6d441649f241702b484c5edb"> 172</a></span> [[nodiscard]] <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="namespacevde_1_1sdf.html#a943524bd6d441649f241702b484c5edb">op_smooth_difference</a>(<span class="keywordtype">double</span> d1, <span class="keywordtype">double</span> d2, <span class="keywordtype">double</span> k) {</div>
|
|||
|
|
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">if</span> (k <= 0.0) <span class="keywordflow">return</span> std::max(d1, -d2);</div>
|
|||
|
|
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordtype">double</span> h = std::clamp(0.5 - 0.5 * (d2 + d1) / k, 0.0, 1.0);</div>
|
|||
|
|
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">return</span> d1 * (1.0 - h) + (-d2) * h + k * h * (1.0 - h);</div>
|
|||
|
|
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> }</div>
|
|||
|
|
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  </div>
|
|||
|
|
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="comment">// ── Modifiers (operate on a distance value) ──</span></div>
|
|||
|
|
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  </div>
|
|||
|
|
<div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#ae59893f12b9e88076f07164209208158"> 200</a></span> [[nodiscard]] <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="namespacevde_1_1sdf.html#ae59893f12b9e88076f07164209208158">op_round</a>(<span class="keywordtype">double</span> d, <span class="keywordtype">double</span> r) {</div>
|
|||
|
|
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">return</span> d - r;</div>
|
|||
|
|
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> }</div>
|
|||
|
|
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  </div>
|
|||
|
|
<div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#a563ec8e0c6486c28c572ccb5f594fa85"> 223</a></span> [[nodiscard]] <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="namespacevde_1_1sdf.html#a563ec8e0c6486c28c572ccb5f594fa85">op_onion</a>(<span class="keywordtype">double</span> d, <span class="keywordtype">double</span> thickness) {</div>
|
|||
|
|
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">return</span> std::abs(d) - thickness;</div>
|
|||
|
|
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> }</div>
|
|||
|
|
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  </div>
|
|||
|
|
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="comment">// ── Domain deformation operators (transform point space) ──</span></div>
|
|||
|
|
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  </div>
|
|||
|
|
<div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#a9355bc4b4ef7090f7bdcbe9843f8e1a7"> 251</a></span> [[nodiscard]] <span class="keyword">inline</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="namespacevde_1_1sdf.html#a9355bc4b4ef7090f7bdcbe9843f8e1a7">op_repeat</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>& p, <span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>& cell) {</div>
|
|||
|
|
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keyword">auto</span> wrap = [](<span class="keywordtype">double</span> v, <span class="keywordtype">double</span> c) {</div>
|
|||
|
|
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">return</span> c > 0.0 ? v - c * std::round(v / c) : v;</div>
|
|||
|
|
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  };</div>
|
|||
|
|
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">return</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(wrap(p.x(), cell.x()),</div>
|
|||
|
|
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  wrap(p.y(), cell.y()),</div>
|
|||
|
|
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  wrap(p.z(), cell.z()));</div>
|
|||
|
|
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> }</div>
|
|||
|
|
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  </div>
|
|||
|
|
<div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#ab58d71cf3656077b0fb628f67b904e37"> 279</a></span> [[nodiscard]] <span class="keyword">inline</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="namespacevde_1_1sdf.html#ab58d71cf3656077b0fb628f67b904e37">op_mirror_x</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>& p, <span class="keywordtype">double</span> offset = 0.0) {</div>
|
|||
|
|
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">return</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(offset + std::abs(p.x() - offset), p.y(), p.z());</div>
|
|||
|
|
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> }</div>
|
|||
|
|
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  </div>
|
|||
|
|
<div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#a6538e7ff0033a1a9288cc2d15f4a03a1"> 299</a></span> [[nodiscard]] <span class="keyword">inline</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="namespacevde_1_1sdf.html#a6538e7ff0033a1a9288cc2d15f4a03a1">op_mirror_y</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>& p) {</div>
|
|||
|
|
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">return</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(p.x(), std::abs(p.y()), p.z());</div>
|
|||
|
|
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> }</div>
|
|||
|
|
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  </div>
|
|||
|
|
<div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#aacbb86f73cd6f9c47e4fbbb4c13a9925"> 313</a></span> [[nodiscard]] <span class="keyword">inline</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="namespacevde_1_1sdf.html#aacbb86f73cd6f9c47e4fbbb4c13a9925">op_mirror_z</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>& p) {</div>
|
|||
|
|
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">return</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(p.x(), p.y(), std::abs(p.z()));</div>
|
|||
|
|
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> }</div>
|
|||
|
|
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  </div>
|
|||
|
|
<div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#abfa3300d4dfaab3011ff58140eee0f5e"> 339</a></span> [[nodiscard]] <span class="keyword">inline</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="namespacevde_1_1sdf.html#abfa3300d4dfaab3011ff58140eee0f5e">op_translate</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>& p, <span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>& offset) {</div>
|
|||
|
|
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">return</span> p - offset;</div>
|
|||
|
|
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> }</div>
|
|||
|
|
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  </div>
|
|||
|
|
<div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#a0a6712d3a66703859659125e494a9495"> 368</a></span> [[nodiscard]] <span class="keyword">inline</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="namespacevde_1_1sdf.html#a0a6712d3a66703859659125e494a9495">op_rotate</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>& p, <span class="keywordtype">double</span> angle_rad) {</div>
|
|||
|
|
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordtype">double</span> c = std::cos(-angle_rad);</div>
|
|||
|
|
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordtype">double</span> s = std::sin(-angle_rad);</div>
|
|||
|
|
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">return</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(p.x() * c - p.z() * s, p.y(), p.x() * s + p.z() * c);</div>
|
|||
|
|
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span> }</div>
|
|||
|
|
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  </div>
|
|||
|
|
<div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#a19c90581792b7a18ec7d29abf01c0db4"> 397</a></span> [[nodiscard]] <span class="keyword">inline</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="namespacevde_1_1sdf.html#a19c90581792b7a18ec7d29abf01c0db4">op_scale</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>& p, <span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>& s) {</div>
|
|||
|
|
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">return</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(p.x() / s.x(), p.y() / s.y(), p.z() / s.z());</div>
|
|||
|
|
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span> }</div>
|
|||
|
|
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  </div>
|
|||
|
|
<div class="line"><a name="l00426"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#a31a4e410f7c183d57b1e934906c3a312"> 426</a></span> [[nodiscard]] <span class="keyword">inline</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="namespacevde_1_1sdf.html#a31a4e410f7c183d57b1e934906c3a312">op_twist</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>& p, <span class="keywordtype">double</span> amount) {</div>
|
|||
|
|
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordtype">double</span> c = std::cos(amount * p.y());</div>
|
|||
|
|
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordtype">double</span> s = std::sin(amount * p.y());</div>
|
|||
|
|
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">return</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(p.x() * c - p.z() * s, p.y(), p.x() * s + p.z() * c);</div>
|
|||
|
|
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span> }</div>
|
|||
|
|
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  </div>
|
|||
|
|
<div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#a597742c134fb3ea329343f830a55d953"> 457</a></span> [[nodiscard]] <span class="keyword">inline</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="namespacevde_1_1sdf.html#a597742c134fb3ea329343f830a55d953">op_bend</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>& p, <span class="keywordtype">double</span> k) {</div>
|
|||
|
|
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordtype">double</span> c = std::cos(k * p.x());</div>
|
|||
|
|
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordtype">double</span> s = std::sin(k * p.x());</div>
|
|||
|
|
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">return</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(c * p.x() - s * p.y(), s * p.x() + c * p.y(), p.z());</div>
|
|||
|
|
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span> }</div>
|
|||
|
|
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  </div>
|
|||
|
|
<div class="line"><a name="l00486"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#aa0da23488d5275d8185e452a449bd8c2"> 486</a></span> [[nodiscard]] <span class="keyword">inline</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="namespacevde_1_1sdf.html#aa0da23488d5275d8185e452a449bd8c2">op_elongate</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>& p, <span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>& h) {</div>
|
|||
|
|
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> q = p.cwiseAbs() - h;</div>
|
|||
|
|
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">return</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(</div>
|
|||
|
|
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  q.x() > 0.0 ? p.x() - std::copysign(h.x(), p.x()) : 0.0,</div>
|
|||
|
|
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  q.y() > 0.0 ? p.y() - std::copysign(h.y(), p.y()) : 0.0,</div>
|
|||
|
|
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  q.z() > 0.0 ? p.z() - std::copysign(h.z(), p.z()) : 0.0</div>
|
|||
|
|
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  );</div>
|
|||
|
|
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span> }</div>
|
|||
|
|
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  </div>
|
|||
|
|
<div class="line"><a name="l00515"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#a4976ece321c496be9e3a4c90c1ebd064"> 515</a></span> [[nodiscard]] <span class="keyword">inline</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="namespacevde_1_1sdf.html#a4976ece321c496be9e3a4c90c1ebd064">op_cheap_bend</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>& p, <span class="keywordtype">double</span> k) {</div>
|
|||
|
|
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordtype">double</span> c = std::cos(k * p.x());</div>
|
|||
|
|
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordtype">double</span> s = std::sin(k * p.x());</div>
|
|||
|
|
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">return</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(p.x(), p.y() * c - p.z() * s, p.y() * s + p.z() * c);</div>
|
|||
|
|
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span> }</div>
|
|||
|
|
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  </div>
|
|||
|
|
<div class="line"><a name="l00545"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#acc0f043de0b30ecf426f17602de1a53a"> 545</a></span> [[nodiscard]] <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="namespacevde_1_1sdf.html#acc0f043de0b30ecf426f17602de1a53a">op_displace</a>(<span class="keywordtype">double</span> d, <span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>& p,</div>
|
|||
|
|
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordtype">double</span> amplitude, <span class="keywordtype">double</span> frequency) {</div>
|
|||
|
|
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keywordtype">double</span> noise = std::sin(p.x() * frequency) *</div>
|
|||
|
|
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  std::sin(p.y() * frequency) *</div>
|
|||
|
|
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  std::sin(p.z() * frequency);</div>
|
|||
|
|
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">return</span> d + amplitude * noise;</div>
|
|||
|
|
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span> }</div>
|
|||
|
|
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  </div>
|
|||
|
|
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span> } <span class="comment">// namespace vde::sdf</span></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1core_html_ab763c018d19e10e91a6c6d6ab2ccc8e0"><div class="ttname"><a href="namespacevde_1_1core.html#ab763c018d19e10e91a6c6d6ab2ccc8e0">vde::core::Vector3D</a></div><div class="ttdeci">foundation::Vector3D Vector3D</div><div class="ttdoc">双精度三维向量(重新导出)</div><div class="ttdef"><b>Definition:</b> <a href="point_8h_source.html#l00049">point.h:49</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1core_html_ac6aed70c4b90d13f10217267cd7a1952"><div class="ttname"><a href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">vde::core::Point3D</a></div><div class="ttdeci">foundation::Point3D Point3D</div><div class="ttdoc">双精度三维点(重新导出)</div><div class="ttdef"><b>Definition:</b> <a href="point_8h_source.html#l00031">point.h:31</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html"><div class="ttname"><a href="namespacevde_1_1sdf.html">vde::sdf</a></div><div class="ttdef"><b>Definition:</b> <a href="sdf__gradient_8h_source.html#l00032">sdf_gradient.h:32</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_a00a754cf7c486ad311e6c3221b9d56de"><div class="ttname"><a href="namespacevde_1_1sdf.html#a00a754cf7c486ad311e6c3221b9d56de">vde::sdf::op_intersection</a></div><div class="ttdeci">double op_intersection(double d1, double d2)</div><div class="ttdoc">布尔交集: A ∩ B</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00070">sdf_operations.h:70</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_a0a6712d3a66703859659125e494a9495"><div class="ttname"><a href="namespacevde_1_1sdf.html#a0a6712d3a66703859659125e494a9495">vde::sdf::op_rotate</a></div><div class="ttdeci">Point3D op_rotate(const Point3D &p, double angle_rad)</div><div class="ttdoc">绕 Y 轴旋转(逆变换)</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00368">sdf_operations.h:368</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_a19c90581792b7a18ec7d29abf01c0db4"><div class="ttname"><a href="namespacevde_1_1sdf.html#a19c90581792b7a18ec7d29abf01c0db4">vde::sdf::op_scale</a></div><div class="ttdeci">Point3D op_scale(const Point3D &p, const Point3D &s)</div><div class="ttdoc">非均匀缩放(逆变换)</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00397">sdf_operations.h:397</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_a316369d0cdc7dafbe2af5dd6cb58955b"><div class="ttname"><a href="namespacevde_1_1sdf.html#a316369d0cdc7dafbe2af5dd6cb58955b">vde::sdf::op_difference</a></div><div class="ttdeci">double op_difference(double d1, double d2)</div><div class="ttdoc">布尔差集: A \ B</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00094">sdf_operations.h:94</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_a31a4e410f7c183d57b1e934906c3a312"><div class="ttname"><a href="namespacevde_1_1sdf.html#a31a4e410f7c183d57b1e934906c3a312">vde::sdf::op_twist</a></div><div class="ttdeci">Point3D op_twist(const Point3D &p, double amount)</div><div class="ttdoc">绕 Y 轴的扭曲变换</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00426">sdf_operations.h:426</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_a4976ece321c496be9e3a4c90c1ebd064"><div class="ttname"><a href="namespacevde_1_1sdf.html#a4976ece321c496be9e3a4c90c1ebd064">vde::sdf::op_cheap_bend</a></div><div class="ttdeci">Point3D op_cheap_bend(const Point3D &p, double k)</div><div class="ttdoc">简化弯曲变换(绕 X 轴弯曲 YZ 平面)</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00515">sdf_operations.h:515</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_a563ec8e0c6486c28c572ccb5f594fa85"><div class="ttname"><a href="namespacevde_1_1sdf.html#a563ec8e0c6486c28c572ccb5f594fa85">vde::sdf::op_onion</a></div><div class="ttdeci">double op_onion(double d, double thickness)</div><div class="ttdoc">洋葱皮/壳层修饰: 取绝对值后减去厚度</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00223">sdf_operations.h:223</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_a597742c134fb3ea329343f830a55d953"><div class="ttname"><a href="namespacevde_1_1sdf.html#a597742c134fb3ea329343f830a55d953">vde::sdf::op_bend</a></div><div class="ttdeci">Point3D op_bend(const Point3D &p, double k)</div><div class="ttdoc">弯曲变换(绕 Z 轴弯曲 XZ 平面)</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00457">sdf_operations.h:457</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_a6538e7ff0033a1a9288cc2d15f4a03a1"><div class="ttname"><a href="namespacevde_1_1sdf.html#a6538e7ff0033a1a9288cc2d15f4a03a1">vde::sdf::op_mirror_y</a></div><div class="ttdeci">Point3D op_mirror_y(const Point3D &p)</div><div class="ttdoc">镜像对称(Y=0 平面)</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00299">sdf_operations.h:299</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_a9355bc4b4ef7090f7bdcbe9843f8e1a7"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9355bc4b4ef7090f7bdcbe9843f8e1a7">vde::sdf::op_repeat</a></div><div class="ttdeci">Point3D op_repeat(const Point3D &p, const Point3D &cell)</div><div class="ttdoc">无限重复(周期复制)</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00251">sdf_operations.h:251</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_a93c4506583db122c5b657d39d6d2bb62"><div class="ttname"><a href="namespacevde_1_1sdf.html#a93c4506583db122c5b657d39d6d2bb62">vde::sdf::op_union</a></div><div class="ttdeci">double op_union(double d1, double d2)</div><div class="ttdoc">布尔并集: A ∪ B</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00048">sdf_operations.h:48</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_a943524bd6d441649f241702b484c5edb"><div class="ttname"><a href="namespacevde_1_1sdf.html#a943524bd6d441649f241702b484c5edb">vde::sdf::op_smooth_difference</a></div><div class="ttdeci">double op_smooth_difference(double d1, double d2, double k)</div><div class="ttdoc">平滑差集(带混合过渡)</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00172">sdf_operations.h:172</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_aa0da23488d5275d8185e452a449bd8c2"><div class="ttname"><a href="namespacevde_1_1sdf.html#aa0da23488d5275d8185e452a449bd8c2">vde::sdf::op_elongate</a></div><div class="ttdeci">Point3D op_elongate(const Point3D &p, const Point3D &h)</div><div class="ttdoc">拉伸/压扁域变形(消除拉伸方向上的内部体积)</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00486">sdf_operations.h:486</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_aacbb86f73cd6f9c47e4fbbb4c13a9925"><div class="ttname"><a href="namespacevde_1_1sdf.html#aacbb86f73cd6f9c47e4fbbb4c13a9925">vde::sdf::op_mirror_z</a></div><div class="ttdeci">Point3D op_mirror_z(const Point3D &p)</div><div class="ttdoc">镜像对称(Z=0 平面)</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00313">sdf_operations.h:313</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_ab58d71cf3656077b0fb628f67b904e37"><div class="ttname"><a href="namespacevde_1_1sdf.html#ab58d71cf3656077b0fb628f67b904e37">vde::sdf::op_mirror_x</a></div><div class="ttdeci">Point3D op_mirror_x(const Point3D &p, double offset=0.0)</div><div class="ttdoc">镜像对称(X=0 平面),可选偏移</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00279">sdf_operations.h:279</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_abfa3300d4dfaab3011ff58140eee0f5e"><div class="ttname"><a href="namespacevde_1_1sdf.html#abfa3300d4dfaab3011ff58140eee0f5e">vde::sdf::op_translate</a></div><div class="ttdeci">Point3D op_translate(const Point3D &p, const Point3D &offset)</div><div class="ttdoc">空间平移(逆变换)</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00339">sdf_operations.h:339</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_acc0f043de0b30ecf426f17602de1a53a"><div class="ttname"><a href="namespacevde_1_1sdf.html#acc0f043de0b30ecf426f17602de1a53a">vde::sdf::op_displace</a></div><div class="ttdeci">double op_displace(double d, const Point3D &p, double amplitude, double frequency)</div><div class="ttdoc">正弦波位移扰动</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00545">sdf_operations.h:545</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_ae59893f12b9e88076f07164209208158"><div class="ttname"><a href="namespacevde_1_1sdf.html#ae59893f12b9e88076f07164209208158">vde::sdf::op_round</a></div><div class="ttdeci">double op_round(double d, double r)</div><div class="ttdoc">圆角偏移: 将等值面向外扩展 r 单位</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00200">sdf_operations.h:200</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_af6c1da88edd1032340478a9d31fee04d"><div class="ttname"><a href="namespacevde_1_1sdf.html#af6c1da88edd1032340478a9d31fee04d">vde::sdf::op_smooth_union</a></div><div class="ttdeci">double op_smooth_union(double d1, double d2, double k)</div><div class="ttdoc">平滑并集(带混合过渡)</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00126">sdf_operations.h:126</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1sdf_html_afdef99b133742cf60abd412240f86e21"><div class="ttname"><a href="namespacevde_1_1sdf.html#afdef99b133742cf60abd412240f86e21">vde::sdf::op_smooth_intersection</a></div><div class="ttdeci">double op_smooth_intersection(double d1, double d2, double k)</div><div class="ttdoc">平滑交集(带混合过渡)</div><div class="ttdef"><b>Definition:</b> <a href="sdf__operations_8h_source.html#l00149">sdf_operations.h:149</a></div></div>
|
|||
|
|
<div class="ttc" id="apoint_8h_html"><div class="ttname"><a href="point_8h.html">point.h</a></div></div>
|
|||
|
|
</div><!-- fragment --></div><!-- contents -->
|
|||
|
|
</div><!-- doc-content -->
|
|||
|
|
<!-- start footer part -->
|
|||
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|||
|
|
<ul>
|
|||
|
|
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_36dfe8171299c47a6036082559f11ede.html">vde</a></li><li class="navelem"><a class="el" href="dir_865941a50ed007925fcdd14642daadc9.html">sdf</a></li><li class="navelem"><a class="el" href="sdf__operations_8h.html">sdf_operations.h</a></li>
|
|||
|
|
<li class="footer">生成于 2026年 七月 24日 星期五 11:21:23 , 为 ViewDesignEngine使用 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
|
|||
|
|
</ul>
|
|||
|
|
</div>
|
|||
|
|
</body>
|
|||
|
|
</html>
|