Files
ViewDesignEngine/docs/api/html/sdf__tree_8h_source.html
T
茂之钳 2f111edcd5
CI / Build & Test (push) Failing after 33s
CI / Release Build (push) Failing after 31s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
docs: generated API documentation (483 pages)
2026-07-24 11:55:47 +00:00

373 lines
88 KiB
HTML
Raw 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">
<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_tree.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
&#160;<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&amp;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&amp;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&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('sdf__tree_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_tree.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="sdf__tree_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="sdf__primitives_8h.html">vde/sdf/sdf_primitives.h</a>&quot;</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="sdf__operations_8h.html">vde/sdf/sdf_operations.h</a>&quot;</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="point_8h.html">vde/core/point.h</a>&quot;</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; </div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacevde_1_1sdf.html">vde::sdf</a> {</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">using</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">core::Point3D</a>;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">using</span> <a class="code" href="namespacevde_1_1core.html#ab763c018d19e10e91a6c6d6ab2ccc8e0">core::Vector3D</a>;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">// Forward declaration</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">class </span>SdfNode;</div>
<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d"> 48</a></span>&#160;<span class="keyword">using</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> = std::shared_ptr&lt;SdfNode&gt;;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; </div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1"> 60</a></span>&#160;<span class="keyword">enum class</span> <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1">SdfOp</a> : uint8_t {</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="comment">// Primitives</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1ab7095f057db3fefa7325ad93a04e14fd">Sphere</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a3cfce651e667ab85486dd42a8185f98a">Box</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1aaa93268be1d4bdbd54161ce80ebbcd4a">RoundBox</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a5c22b826138634df6ddf1e22fdb7e66e">Torus</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a4880c0f12c06dd6d142e7a40b041bf1a">Capsule</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a2ec2c2961c7ce5a114d969c1f562a563">Cylinder</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1acd2c8bc6e5f1ea17c918ccaf89660104">Cone</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a0d3adee051531c15b3509b4d4d75ce7b">Plane</a>,</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1aeee5397cecd880d16ef7244819aa383d">Ellipsoid</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a6902c1182f48fb6ef52bcaf772a0a497">TriangularPrism</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a353772bb59a548d2ebe04618d4771f2e">HexPrism</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a97e7c9a7d06eac006a28bf05467fcc8b">Link</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a0e9bb3a0eff96690b1e9badd73b99219">Wedge</a>,</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment">// Boolean CSG</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1aaef12e903e606a4895a16b393bfdec8c">Union</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1aa06d31c2ee920b4d53e8c9c06d90ba24">Intersection</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a28ed2ac6c29f64a3692c956004b8ff7a">Difference</a>,</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a80e758c6bbd5c38be05d5feee002a83e">SmoothUnion</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a3ccde23d9a8f92e5e5f7c782079cded7">SmoothIntersection</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a75005e4bb7beb34ecfe5067ccba5a958">SmoothDifference</a>,</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="comment">// Modifiers</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1ab7f41fc1412ad2ee75e9b2635d3b9d5c">Round</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a8eaa10d1a33a28200a7c7684919b66c7">Onion</a>,</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="comment">// Domain transforms</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a7020426cfb0a204051be4b3053d2acc8">Repeat</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a8ee36c9c42f877feee31aaf4b0883546">MirrorX</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1ac81ac223c7946d2dd3872e591c6988f5">MirrorY</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a6824e17f0c6d79093e95c24c80af97f6">MirrorZ</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1adeccbe4e9083c3b5f7cd2632722765bb">Translate</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a8d2de5368588552fbae54044ac5c7b3d">Rotate</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a85a7cd587d6142dbfc1a4de05af7b75d">Scale</a>,</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1aa80d865c12c4d5d9986c33ae4390e1f6">Twist</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1adcef3e264a0eecc2a9eadd4478c67a1f">Bend</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a1aaedf458e4a63162c7771e2bd8c1ff7">Elongate</a>, <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a14da42d903ea0348b07f70e0ac73fa34">CheapBend</a>,</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">// Displacement</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a508f64e1623cf34c9040a219077301ba">Displace</a></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;};</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; </div>
<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html"> 100</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structvde_1_1sdf_1_1SdfParams.html">SdfParams</a> {</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="comment">// ── Primitive parameters ──</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#a760d4fbf2cd25017427ce04603eefd73"> 102</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#a760d4fbf2cd25017427ce04603eefd73">radius</a> = 1.0; </div>
<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#a504abb24b59d5b16fb34453fba033b50"> 103</a></span>&#160; <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#a504abb24b59d5b16fb34453fba033b50">extents</a> = <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(1, 1, 1); </div>
<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#a28799acdc10136cb7aa5c5f28b8faa5d"> 104</a></span>&#160; <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#a28799acdc10136cb7aa5c5f28b8faa5d">pt_a</a> = <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(0, -1, 0); </div>
<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#a49b083433d14965d24253423b42183c5"> 105</a></span>&#160; <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#a49b083433d14965d24253423b42183c5">pt_b</a> = <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(0, 1, 0); </div>
<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#a6cee29181d03f880b7ded4114c5d579d"> 106</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#a6cee29181d03f880b7ded4114c5d579d">major_radius</a> = 1.0; </div>
<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#a2aecc5c15b0cd00545d917850ea9f4ae"> 107</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#a2aecc5c15b0cd00545d917850ea9f4ae">minor_radius</a> = 0.3; </div>
<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#a0f2982663961743f67586cf2dab834fc"> 108</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#a0f2982663961743f67586cf2dab834fc">angle_rad</a> = 0.5; </div>
<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#aa8f6e831e3d458cc5331bcb5cf0aca7a"> 109</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#aa8f6e831e3d458cc5331bcb5cf0aca7a">height</a> = 2.0; </div>
<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#a706914d404026bd7e56e2189ffd0c569"> 110</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#a706914d404026bd7e56e2189ffd0c569">thickness</a> = 0.1; </div>
<div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#a1b8aae16cabe8d6bc48791c04bfd76eb"> 111</a></span>&#160; <a class="code" href="namespacevde_1_1core.html#ab763c018d19e10e91a6c6d6ab2ccc8e0">Vector3D</a> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#a1b8aae16cabe8d6bc48791c04bfd76eb">normal</a> = <a class="code" href="namespacevde_1_1core.html#ab763c018d19e10e91a6c6d6ab2ccc8e0">Vector3D</a>(0, 1, 0); </div>
<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#adc57313e2d7166c7c7d6e8d3d85401f3"> 112</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#adc57313e2d7166c7c7d6e8d3d85401f3">offset</a> = 0.0; </div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">// ── Operation parameters ──</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#a5eb41fe0a1195fd82fe44152895f817a"> 115</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#a5eb41fe0a1195fd82fe44152895f817a">blend_k</a> = 0.2; </div>
<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#aff4edc45464d4ae56f9535ddd19d0ebc"> 116</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#aff4edc45464d4ae56f9535ddd19d0ebc">amount</a> = 0.5; </div>
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#aba9169119b31ca1bbbde5daef364a824"> 117</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#aba9169119b31ca1bbbde5daef364a824">amplitude</a> = 0.1; </div>
<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#af79a6d085579d32a669860b9547e9a5b"> 118</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#af79a6d085579d32a669860b9547e9a5b">frequency</a> = 1.0; </div>
<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#ab0704cc4f1aa746c071741b8d3797db7"> 119</a></span>&#160; <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#ab0704cc4f1aa746c071741b8d3797db7">repeat_cell</a> = <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(2, 2, 2); </div>
<div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#a719c51f05137b17a6212a704f60df74c"> 120</a></span>&#160; <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#a719c51f05137b17a6212a704f60df74c">translate_offset</a> = <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(0, 0, 0); </div>
<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfParams.html#ae653a432ea03eab100148acb91e859cd"> 121</a></span>&#160; <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="structvde_1_1sdf_1_1SdfParams.html#ae653a432ea03eab100148acb91e859cd">scale_factors</a> = <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(1, 1, 1); </div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;};</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; </div>
<div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html"> 138</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvde_1_1sdf_1_1SdfNode.html">SdfNode</a> {</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a2101f4cd1fe1501bfbc3eb01d2d41b7a"> 140</a></span>&#160; <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1">SdfOp</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a2101f4cd1fe1501bfbc3eb01d2d41b7a">op</a>; </div>
<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#af2fa935cf472d0342004899bb026948b"> 141</a></span>&#160; <a class="code" href="structvde_1_1sdf_1_1SdfParams.html">SdfParams</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#af2fa935cf472d0342004899bb026948b">params</a>; </div>
<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#adbc6ef724b470accb19ec89d401c15d2"> 142</a></span>&#160; std::vector&lt;SdfNodePtr&gt; <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#adbc6ef724b470accb19ec89d401c15d2">children</a>; </div>
<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a490f682beb59248e6a8dafef33a1351e"> 143</a></span>&#160; std::string <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a490f682beb59248e6a8dafef33a1351e">name</a>; </div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; </div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// ── Primitive factories ──</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; </div>
<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a16d3b639322d4a665e71ab43fe8434eb"> 148</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a16d3b639322d4a665e71ab43fe8434eb">sphere</a>(<span class="keywordtype">double</span> r);</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; </div>
<div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a1496b0260273ed9d2d924a8653870eeb"> 151</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a1496b0260273ed9d2d924a8653870eeb">box</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>&amp; half_extents);</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; </div>
<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a1fe12d760980bdc5d14518beaa028bb9"> 154</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a1fe12d760980bdc5d14518beaa028bb9">round_box</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>&amp; half_extents, <span class="keywordtype">double</span> r);</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; </div>
<div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a40b93f8a746aacb45ceea5692a1c86f3"> 157</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a40b93f8a746aacb45ceea5692a1c86f3">cylinder</a>(<span class="keywordtype">double</span> r, <span class="keywordtype">double</span> h);</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; </div>
<div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#aedf6cf743d580f31c6de061e963fe6ba"> 160</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#aedf6cf743d580f31c6de061e963fe6ba">torus</a>(<span class="keywordtype">double</span> major_r, <span class="keywordtype">double</span> minor_r);</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; </div>
<div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a675480c096c5736ae52eef3edd96c9d1"> 163</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a675480c096c5736ae52eef3edd96c9d1">capsule</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>&amp; a, <span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>&amp; b, <span class="keywordtype">double</span> r);</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; </div>
<div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#ab7df9528d921c258dbab0a58e8b8f14f"> 166</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#ab7df9528d921c258dbab0a58e8b8f14f">cone</a>(<span class="keywordtype">double</span> angle_rad, <span class="keywordtype">double</span> h);</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; </div>
<div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a6ee1ebca74ca3477c46328dbc5d352e5"> 169</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a6ee1ebca74ca3477c46328dbc5d352e5">plane</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ab763c018d19e10e91a6c6d6ab2ccc8e0">Vector3D</a>&amp; normal, <span class="keywordtype">double</span> offset);</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; </div>
<div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#af91df19df212ae7e49c361548050c80c"> 172</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#af91df19df212ae7e49c361548050c80c">ellipsoid</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>&amp; radii);</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; </div>
<div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a535419dd0ff9bdbf1ca2c478e7d1fb06"> 175</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a535419dd0ff9bdbf1ca2c478e7d1fb06">triangular_prism</a>(<span class="keywordtype">double</span> h);</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; </div>
<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a5b8dbaea6851931748e8839131c94c7e"> 178</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a5b8dbaea6851931748e8839131c94c7e">hex_prism</a>(<span class="keywordtype">double</span> h);</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; </div>
<div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a5ec23a2962891d329b16ca55bae76f69"> 181</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a5ec23a2962891d329b16ca55bae76f69">link</a>(<span class="keywordtype">double</span> r, <span class="keywordtype">double</span> length, <span class="keywordtype">double</span> thickness);</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; </div>
<div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a6f02fba6c0fad7d9bbb9488f55a39781"> 184</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a6f02fba6c0fad7d9bbb9488f55a39781">wedge</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>&amp; extents);</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; </div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="comment">// ── Boolean CSG factories (two children) ──</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; </div>
<div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#aa07a64ef52e92a5b3d78da3822b84f68"> 189</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#aa07a64ef52e92a5b3d78da3822b84f68">op_union</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> a, <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> b);</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; </div>
<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a2f4c5fd04ad2f8189cdc870c103d37f8"> 192</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a2f4c5fd04ad2f8189cdc870c103d37f8">op_intersection</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> a, <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> b);</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; </div>
<div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a3b60c2cc16e9227d0e6b7f2ac5fe0d79"> 195</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a3b60c2cc16e9227d0e6b7f2ac5fe0d79">op_difference</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> a, <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> b);</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; </div>
<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#ab0ab8ea44deb6758a2368881f75be887"> 198</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#ab0ab8ea44deb6758a2368881f75be887">smooth_union</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> a, <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> b, <span class="keywordtype">double</span> k);</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; </div>
<div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a247eb701eb8bd4d73c9655eaeedfe8b4"> 201</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a247eb701eb8bd4d73c9655eaeedfe8b4">smooth_intersection</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> a, <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> b, <span class="keywordtype">double</span> k);</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; </div>
<div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#ae12ebb0f8ab9e0af8f82359a528c7b9f"> 204</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#ae12ebb0f8ab9e0af8f82359a528c7b9f">smooth_difference</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> a, <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> b, <span class="keywordtype">double</span> k);</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; </div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="comment">// ── Modifier factories (one child) ──</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; </div>
<div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a86c9a3919f907c78785f6d348a9bd491"> 209</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a86c9a3919f907c78785f6d348a9bd491">round</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> child, <span class="keywordtype">double</span> r);</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; </div>
<div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#af6d47f8b5264618f982a4fd56928826f"> 212</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#af6d47f8b5264618f982a4fd56928826f">onion</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> child, <span class="keywordtype">double</span> thickness);</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; </div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// ── Domain transform factories (one child) ──</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; </div>
<div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#acf81d1025273d14f269204ad5dea4c07"> 217</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#acf81d1025273d14f269204ad5dea4c07">repeat</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> child, <span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>&amp; cell);</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
<div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#acaa223f67e00918c35606ebc4f321f36"> 220</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#acaa223f67e00918c35606ebc4f321f36">mirror_x</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> child);</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; </div>
<div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a25886eb80a70a4572bb5426cd49714f9"> 223</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a25886eb80a70a4572bb5426cd49714f9">mirror_y</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> child);</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; </div>
<div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a4b2258e979415f50ef1cb1f9932896b3"> 226</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a4b2258e979415f50ef1cb1f9932896b3">mirror_z</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> child);</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; </div>
<div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a42dce89f95014bdf1cf9cec696f12eb8"> 229</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a42dce89f95014bdf1cf9cec696f12eb8">translate</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> child, <span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>&amp; offset);</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; </div>
<div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a248bd2e4d04dcf48d18be1a37e0a7191"> 232</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a248bd2e4d04dcf48d18be1a37e0a7191">rotate</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> child, <span class="keywordtype">double</span> angle_rad);</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; </div>
<div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a152ab0faaf971186cd2e24ebb5ecd120"> 235</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a152ab0faaf971186cd2e24ebb5ecd120">scale</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> child, <span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>&amp; factors);</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; </div>
<div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#ad8c56a74327269439bd223511c23c2f6"> 238</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#ad8c56a74327269439bd223511c23c2f6">twist</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> child, <span class="keywordtype">double</span> amount);</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; </div>
<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a1234f49d65f073d9243cad4cb1a0550f"> 241</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a1234f49d65f073d9243cad4cb1a0550f">bend</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> child, <span class="keywordtype">double</span> amount);</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; </div>
<div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#acca7ee38f76735bd1099b1f7012dfdfd"> 244</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#acca7ee38f76735bd1099b1f7012dfdfd">elongate</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> child, <span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>&amp; h);</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; </div>
<div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a56a0f33b5d64e3633463cfc70368206a"> 247</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a56a0f33b5d64e3633463cfc70368206a">cheap_bend</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> child, <span class="keywordtype">double</span> amount);</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; </div>
<div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a6b5ca7b5e4a4b7c525e8dd2b6096bed0"> 250</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a6b5ca7b5e4a4b7c525e8dd2b6096bed0">displace</a>(<a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a> child, <span class="keywordtype">double</span> amplitude, <span class="keywordtype">double</span> frequency);</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; </div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Fn&gt;</div>
<div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#ad546c349c0b0b459e899a8fb47d5c392"> 267</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#ad546c349c0b0b459e899a8fb47d5c392">visit</a>(Fn&amp;&amp; fn) {</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; fn(*<span class="keyword">this</span>);</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; c : <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#adbc6ef724b470accb19ec89d401c15d2">children</a>) c-&gt;visit(std::forward&lt;Fn&gt;(fn));</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; </div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Fn&gt;</div>
<div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a747ab57aa413aa8da85a3ce77bd580de"> 279</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a747ab57aa413aa8da85a3ce77bd580de">visit</a>(Fn&amp;&amp; fn)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; fn(*<span class="keyword">this</span>);</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; c : <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#adbc6ef724b470accb19ec89d401c15d2">children</a>) c-&gt;visit(std::forward&lt;Fn&gt;(fn));</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; }</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; </div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classvde_1_1sdf_1_1SdfNode.html#a110ea1ad7bed07fd4e3a68b5f5db10dd"> 289</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a110ea1ad7bed07fd4e3a68b5f5db10dd">SdfNode</a>(<a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1">SdfOp</a> o) : <a class="code" href="classvde_1_1sdf_1_1SdfNode.html#a2101f4cd1fe1501bfbc3eb01d2d41b7a">op</a>(o) {}</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;};</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; </div>
<div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#a30bd88dc6f714962cb14ec76a5ca5365"> 314</a></span>&#160;[[nodiscard]] <span class="keywordtype">double</span> <a class="code" href="namespacevde_1_1sdf.html#a30bd88dc6f714962cb14ec76a5ca5365">evaluate</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a>&amp; root, <span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>&amp; p);</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; </div>
<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#ae6bcbe30bdd5180fd6cb7a6818969c4d"> 330</a></span>&#160;[[nodiscard]] <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="namespacevde_1_1sdf.html#ae6bcbe30bdd5180fd6cb7a6818969c4d">estimate_bounds</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a>&amp; root, <span class="keywordtype">double</span> margin = 1.0);</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; </div>
<div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfBBox.html"> 337</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structvde_1_1sdf_1_1SdfBBox.html">SdfBBox</a> {</div>
<div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfBBox.html#aa7458f07e4e3ec09e4a05c4b1529218d"> 338</a></span>&#160; <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="structvde_1_1sdf_1_1SdfBBox.html#aa7458f07e4e3ec09e4a05c4b1529218d">min</a>; </div>
<div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="structvde_1_1sdf_1_1SdfBBox.html#a4bb507271494ca7a9576b4af3b7f49a9"> 339</a></span>&#160; <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="structvde_1_1sdf_1_1SdfBBox.html#a4bb507271494ca7a9576b4af3b7f49a9">max</a>; </div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;};</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; </div>
<div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="namespacevde_1_1sdf.html#a06d4ae274cd858e331cf56f497a545bb"> 357</a></span>&#160;[[nodiscard]] <a class="code" href="structvde_1_1sdf_1_1SdfBBox.html">SdfBBox</a> <a class="code" href="namespacevde_1_1sdf.html#a06d4ae274cd858e331cf56f497a545bb">estimate_bbox</a>(<span class="keyword">const</span> <a class="code" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">SdfNodePtr</a>&amp; root, <span class="keywordtype">double</span> margin = 1.0);</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; </div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;} <span class="comment">// namespace vde::sdf</span></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html">vde::sdf::SdfNode</a></div><div class="ttdoc">SDF 表达式树节点</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00138">sdf_tree.h:138</a></div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a110ea1ad7bed07fd4e3a68b5f5db10dd"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a110ea1ad7bed07fd4e3a68b5f5db10dd">vde::sdf::SdfNode::SdfNode</a></div><div class="ttdeci">SdfNode(SdfOp o)</div><div class="ttdoc">构造 SDF 节点</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00289">sdf_tree.h:289</a></div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a1234f49d65f073d9243cad4cb1a0550f"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a1234f49d65f073d9243cad4cb1a0550f">vde::sdf::SdfNode::bend</a></div><div class="ttdeci">static SdfNodePtr bend(SdfNodePtr child, double amount)</div><div class="ttdoc">创建弯曲节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a1496b0260273ed9d2d924a8653870eeb"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a1496b0260273ed9d2d924a8653870eeb">vde::sdf::SdfNode::box</a></div><div class="ttdeci">static SdfNodePtr box(const Point3D &amp;half_extents)</div><div class="ttdoc">创建轴对齐长方体节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a152ab0faaf971186cd2e24ebb5ecd120"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a152ab0faaf971186cd2e24ebb5ecd120">vde::sdf::SdfNode::scale</a></div><div class="ttdeci">static SdfNodePtr scale(SdfNodePtr child, const Point3D &amp;factors)</div><div class="ttdoc">创建缩放节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a16d3b639322d4a665e71ab43fe8434eb"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a16d3b639322d4a665e71ab43fe8434eb">vde::sdf::SdfNode::sphere</a></div><div class="ttdeci">static SdfNodePtr sphere(double r)</div><div class="ttdoc">创建球体节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a1fe12d760980bdc5d14518beaa028bb9"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a1fe12d760980bdc5d14518beaa028bb9">vde::sdf::SdfNode::round_box</a></div><div class="ttdeci">static SdfNodePtr round_box(const Point3D &amp;half_extents, double r)</div><div class="ttdoc">创建圆角长方体节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a2101f4cd1fe1501bfbc3eb01d2d41b7a"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a2101f4cd1fe1501bfbc3eb01d2d41b7a">vde::sdf::SdfNode::op</a></div><div class="ttdeci">SdfOp op</div><div class="ttdoc">操作类型</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00140">sdf_tree.h:140</a></div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a247eb701eb8bd4d73c9655eaeedfe8b4"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a247eb701eb8bd4d73c9655eaeedfe8b4">vde::sdf::SdfNode::smooth_intersection</a></div><div class="ttdeci">static SdfNodePtr smooth_intersection(SdfNodePtr a, SdfNodePtr b, double k)</div><div class="ttdoc">创建平滑交集节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a248bd2e4d04dcf48d18be1a37e0a7191"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a248bd2e4d04dcf48d18be1a37e0a7191">vde::sdf::SdfNode::rotate</a></div><div class="ttdeci">static SdfNodePtr rotate(SdfNodePtr child, double angle_rad)</div><div class="ttdoc">创建旋转节点(绕 Y 轴)</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a25886eb80a70a4572bb5426cd49714f9"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a25886eb80a70a4572bb5426cd49714f9">vde::sdf::SdfNode::mirror_y</a></div><div class="ttdeci">static SdfNodePtr mirror_y(SdfNodePtr child)</div><div class="ttdoc">创建 Y 镜像节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a2f4c5fd04ad2f8189cdc870c103d37f8"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a2f4c5fd04ad2f8189cdc870c103d37f8">vde::sdf::SdfNode::op_intersection</a></div><div class="ttdeci">static SdfNodePtr op_intersection(SdfNodePtr a, SdfNodePtr b)</div><div class="ttdoc">创建交集节点: A ∩ B</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a3b60c2cc16e9227d0e6b7f2ac5fe0d79"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a3b60c2cc16e9227d0e6b7f2ac5fe0d79">vde::sdf::SdfNode::op_difference</a></div><div class="ttdeci">static SdfNodePtr op_difference(SdfNodePtr a, SdfNodePtr b)</div><div class="ttdoc">创建差集节点: A \ B</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a40b93f8a746aacb45ceea5692a1c86f3"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a40b93f8a746aacb45ceea5692a1c86f3">vde::sdf::SdfNode::cylinder</a></div><div class="ttdeci">static SdfNodePtr cylinder(double r, double h)</div><div class="ttdoc">创建圆柱体节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a42dce89f95014bdf1cf9cec696f12eb8"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a42dce89f95014bdf1cf9cec696f12eb8">vde::sdf::SdfNode::translate</a></div><div class="ttdeci">static SdfNodePtr translate(SdfNodePtr child, const Point3D &amp;offset)</div><div class="ttdoc">创建平移节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a490f682beb59248e6a8dafef33a1351e"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a490f682beb59248e6a8dafef33a1351e">vde::sdf::SdfNode::name</a></div><div class="ttdeci">std::string name</div><div class="ttdoc">节点名(调试用)</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00143">sdf_tree.h:143</a></div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a4b2258e979415f50ef1cb1f9932896b3"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a4b2258e979415f50ef1cb1f9932896b3">vde::sdf::SdfNode::mirror_z</a></div><div class="ttdeci">static SdfNodePtr mirror_z(SdfNodePtr child)</div><div class="ttdoc">创建 Z 镜像节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a535419dd0ff9bdbf1ca2c478e7d1fb06"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a535419dd0ff9bdbf1ca2c478e7d1fb06">vde::sdf::SdfNode::triangular_prism</a></div><div class="ttdeci">static SdfNodePtr triangular_prism(double h)</div><div class="ttdoc">创建三角棱柱节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a56a0f33b5d64e3633463cfc70368206a"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a56a0f33b5d64e3633463cfc70368206a">vde::sdf::SdfNode::cheap_bend</a></div><div class="ttdeci">static SdfNodePtr cheap_bend(SdfNodePtr child, double amount)</div><div class="ttdoc">创建简化弯曲节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a5b8dbaea6851931748e8839131c94c7e"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a5b8dbaea6851931748e8839131c94c7e">vde::sdf::SdfNode::hex_prism</a></div><div class="ttdeci">static SdfNodePtr hex_prism(double h)</div><div class="ttdoc">创建六棱柱节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a5ec23a2962891d329b16ca55bae76f69"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a5ec23a2962891d329b16ca55bae76f69">vde::sdf::SdfNode::link</a></div><div class="ttdeci">static SdfNodePtr link(double r, double length, double thickness)</div><div class="ttdoc">创建双环链接节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a675480c096c5736ae52eef3edd96c9d1"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a675480c096c5736ae52eef3edd96c9d1">vde::sdf::SdfNode::capsule</a></div><div class="ttdeci">static SdfNodePtr capsule(const Point3D &amp;a, const Point3D &amp;b, double r)</div><div class="ttdoc">创建胶囊体节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a6b5ca7b5e4a4b7c525e8dd2b6096bed0"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a6b5ca7b5e4a4b7c525e8dd2b6096bed0">vde::sdf::SdfNode::displace</a></div><div class="ttdeci">static SdfNodePtr displace(SdfNodePtr child, double amplitude, double frequency)</div><div class="ttdoc">创建位移扰动节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a6ee1ebca74ca3477c46328dbc5d352e5"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a6ee1ebca74ca3477c46328dbc5d352e5">vde::sdf::SdfNode::plane</a></div><div class="ttdeci">static SdfNodePtr plane(const Vector3D &amp;normal, double offset)</div><div class="ttdoc">创建平面节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a6f02fba6c0fad7d9bbb9488f55a39781"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a6f02fba6c0fad7d9bbb9488f55a39781">vde::sdf::SdfNode::wedge</a></div><div class="ttdeci">static SdfNodePtr wedge(const Point3D &amp;extents)</div><div class="ttdoc">创建楔形体节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a747ab57aa413aa8da85a3ce77bd580de"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a747ab57aa413aa8da85a3ce77bd580de">vde::sdf::SdfNode::visit</a></div><div class="ttdeci">void visit(Fn &amp;&amp;fn) const</div><div class="ttdoc">前序遍历(const 版本)</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00279">sdf_tree.h:279</a></div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_a86c9a3919f907c78785f6d348a9bd491"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#a86c9a3919f907c78785f6d348a9bd491">vde::sdf::SdfNode::round</a></div><div class="ttdeci">static SdfNodePtr round(SdfNodePtr child, double r)</div><div class="ttdoc">创建圆角偏移节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_aa07a64ef52e92a5b3d78da3822b84f68"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#aa07a64ef52e92a5b3d78da3822b84f68">vde::sdf::SdfNode::op_union</a></div><div class="ttdeci">static SdfNodePtr op_union(SdfNodePtr a, SdfNodePtr b)</div><div class="ttdoc">创建并集节点: A B</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_ab0ab8ea44deb6758a2368881f75be887"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#ab0ab8ea44deb6758a2368881f75be887">vde::sdf::SdfNode::smooth_union</a></div><div class="ttdeci">static SdfNodePtr smooth_union(SdfNodePtr a, SdfNodePtr b, double k)</div><div class="ttdoc">创建平滑并集节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_ab7df9528d921c258dbab0a58e8b8f14f"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#ab7df9528d921c258dbab0a58e8b8f14f">vde::sdf::SdfNode::cone</a></div><div class="ttdeci">static SdfNodePtr cone(double angle_rad, double h)</div><div class="ttdoc">创建圆锥台节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_acaa223f67e00918c35606ebc4f321f36"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#acaa223f67e00918c35606ebc4f321f36">vde::sdf::SdfNode::mirror_x</a></div><div class="ttdeci">static SdfNodePtr mirror_x(SdfNodePtr child)</div><div class="ttdoc">创建 X 镜像节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_acca7ee38f76735bd1099b1f7012dfdfd"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#acca7ee38f76735bd1099b1f7012dfdfd">vde::sdf::SdfNode::elongate</a></div><div class="ttdeci">static SdfNodePtr elongate(SdfNodePtr child, const Point3D &amp;h)</div><div class="ttdoc">创建拉伸节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_acf81d1025273d14f269204ad5dea4c07"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#acf81d1025273d14f269204ad5dea4c07">vde::sdf::SdfNode::repeat</a></div><div class="ttdeci">static SdfNodePtr repeat(SdfNodePtr child, const Point3D &amp;cell)</div><div class="ttdoc">创建周期重复节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_ad546c349c0b0b459e899a8fb47d5c392"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#ad546c349c0b0b459e899a8fb47d5c392">vde::sdf::SdfNode::visit</a></div><div class="ttdeci">void visit(Fn &amp;&amp;fn)</div><div class="ttdoc">前序遍历所有节点</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00267">sdf_tree.h:267</a></div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_ad8c56a74327269439bd223511c23c2f6"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#ad8c56a74327269439bd223511c23c2f6">vde::sdf::SdfNode::twist</a></div><div class="ttdeci">static SdfNodePtr twist(SdfNodePtr child, double amount)</div><div class="ttdoc">创建扭曲节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_adbc6ef724b470accb19ec89d401c15d2"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#adbc6ef724b470accb19ec89d401c15d2">vde::sdf::SdfNode::children</a></div><div class="ttdeci">std::vector&lt; SdfNodePtr &gt; children</div><div class="ttdoc">子节点</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00142">sdf_tree.h:142</a></div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_ae12ebb0f8ab9e0af8f82359a528c7b9f"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#ae12ebb0f8ab9e0af8f82359a528c7b9f">vde::sdf::SdfNode::smooth_difference</a></div><div class="ttdeci">static SdfNodePtr smooth_difference(SdfNodePtr a, SdfNodePtr b, double k)</div><div class="ttdoc">创建平滑差集节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_aedf6cf743d580f31c6de061e963fe6ba"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#aedf6cf743d580f31c6de061e963fe6ba">vde::sdf::SdfNode::torus</a></div><div class="ttdeci">static SdfNodePtr torus(double major_r, double minor_r)</div><div class="ttdoc">创建圆环体节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_af2fa935cf472d0342004899bb026948b"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#af2fa935cf472d0342004899bb026948b">vde::sdf::SdfNode::params</a></div><div class="ttdeci">SdfParams params</div><div class="ttdoc">参数值</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00141">sdf_tree.h:141</a></div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_af6d47f8b5264618f982a4fd56928826f"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#af6d47f8b5264618f982a4fd56928826f">vde::sdf::SdfNode::onion</a></div><div class="ttdeci">static SdfNodePtr onion(SdfNodePtr child, double thickness)</div><div class="ttdoc">创建壳层修饰节点</div></div>
<div class="ttc" id="aclassvde_1_1sdf_1_1SdfNode_html_af91df19df212ae7e49c361548050c80c"><div class="ttname"><a href="classvde_1_1sdf_1_1SdfNode.html#af91df19df212ae7e49c361548050c80c">vde::sdf::SdfNode::ellipsoid</a></div><div class="ttdeci">static SdfNodePtr ellipsoid(const Point3D &amp;radii)</div><div class="ttdoc">创建椭球体节点</div></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_a06d4ae274cd858e331cf56f497a545bb"><div class="ttname"><a href="namespacevde_1_1sdf.html#a06d4ae274cd858e331cf56f497a545bb">vde::sdf::estimate_bbox</a></div><div class="ttdeci">SdfBBox estimate_bbox(const SdfNodePtr &amp;root, double margin=1.0)</div><div class="ttdoc">估算 SDF 树的完整轴对齐包围盒</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a30bd88dc6f714962cb14ec76a5ca5365"><div class="ttname"><a href="namespacevde_1_1sdf.html#a30bd88dc6f714962cb14ec76a5ca5365">vde::sdf::evaluate</a></div><div class="ttdeci">double evaluate(const SdfNodePtr &amp;root, const Point3D &amp;p)</div><div class="ttdoc">在空间点 p 处求值 SDF 树</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a8fdcf277d6327c0b1413373ae82f9d5d"><div class="ttname"><a href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">vde::sdf::SdfNodePtr</a></div><div class="ttdeci">std::shared_ptr&lt; SdfNode &gt; SdfNodePtr</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00048">sdf_tree.h:48</a></div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1">vde::sdf::SdfOp</a></div><div class="ttdeci">SdfOp</div><div class="ttdoc">CSG 树的所有节点类型</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00060">sdf_tree.h:60</a></div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a0d3adee051531c15b3509b4d4d75ce7b"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a0d3adee051531c15b3509b4d4d75ce7b">vde::sdf::SdfOp::Plane</a></div><div class="ttdeci">@ Plane</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a0e9bb3a0eff96690b1e9badd73b99219"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a0e9bb3a0eff96690b1e9badd73b99219">vde::sdf::SdfOp::Wedge</a></div><div class="ttdeci">@ Wedge</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a14da42d903ea0348b07f70e0ac73fa34"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a14da42d903ea0348b07f70e0ac73fa34">vde::sdf::SdfOp::CheapBend</a></div><div class="ttdeci">@ CheapBend</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a1aaedf458e4a63162c7771e2bd8c1ff7"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a1aaedf458e4a63162c7771e2bd8c1ff7">vde::sdf::SdfOp::Elongate</a></div><div class="ttdeci">@ Elongate</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a28ed2ac6c29f64a3692c956004b8ff7a"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a28ed2ac6c29f64a3692c956004b8ff7a">vde::sdf::SdfOp::Difference</a></div><div class="ttdeci">@ Difference</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a2ec2c2961c7ce5a114d969c1f562a563"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a2ec2c2961c7ce5a114d969c1f562a563">vde::sdf::SdfOp::Cylinder</a></div><div class="ttdeci">@ Cylinder</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a353772bb59a548d2ebe04618d4771f2e"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a353772bb59a548d2ebe04618d4771f2e">vde::sdf::SdfOp::HexPrism</a></div><div class="ttdeci">@ HexPrism</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a3ccde23d9a8f92e5e5f7c782079cded7"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a3ccde23d9a8f92e5e5f7c782079cded7">vde::sdf::SdfOp::SmoothIntersection</a></div><div class="ttdeci">@ SmoothIntersection</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a3cfce651e667ab85486dd42a8185f98a"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a3cfce651e667ab85486dd42a8185f98a">vde::sdf::SdfOp::Box</a></div><div class="ttdeci">@ Box</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a4880c0f12c06dd6d142e7a40b041bf1a"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a4880c0f12c06dd6d142e7a40b041bf1a">vde::sdf::SdfOp::Capsule</a></div><div class="ttdeci">@ Capsule</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a508f64e1623cf34c9040a219077301ba"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a508f64e1623cf34c9040a219077301ba">vde::sdf::SdfOp::Displace</a></div><div class="ttdeci">@ Displace</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a5c22b826138634df6ddf1e22fdb7e66e"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a5c22b826138634df6ddf1e22fdb7e66e">vde::sdf::SdfOp::Torus</a></div><div class="ttdeci">@ Torus</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a6824e17f0c6d79093e95c24c80af97f6"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a6824e17f0c6d79093e95c24c80af97f6">vde::sdf::SdfOp::MirrorZ</a></div><div class="ttdeci">@ MirrorZ</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a6902c1182f48fb6ef52bcaf772a0a497"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a6902c1182f48fb6ef52bcaf772a0a497">vde::sdf::SdfOp::TriangularPrism</a></div><div class="ttdeci">@ TriangularPrism</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a7020426cfb0a204051be4b3053d2acc8"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a7020426cfb0a204051be4b3053d2acc8">vde::sdf::SdfOp::Repeat</a></div><div class="ttdeci">@ Repeat</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a75005e4bb7beb34ecfe5067ccba5a958"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a75005e4bb7beb34ecfe5067ccba5a958">vde::sdf::SdfOp::SmoothDifference</a></div><div class="ttdeci">@ SmoothDifference</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a80e758c6bbd5c38be05d5feee002a83e"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a80e758c6bbd5c38be05d5feee002a83e">vde::sdf::SdfOp::SmoothUnion</a></div><div class="ttdeci">@ SmoothUnion</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a85a7cd587d6142dbfc1a4de05af7b75d"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a85a7cd587d6142dbfc1a4de05af7b75d">vde::sdf::SdfOp::Scale</a></div><div class="ttdeci">@ Scale</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a8d2de5368588552fbae54044ac5c7b3d"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a8d2de5368588552fbae54044ac5c7b3d">vde::sdf::SdfOp::Rotate</a></div><div class="ttdeci">@ Rotate</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a8eaa10d1a33a28200a7c7684919b66c7"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a8eaa10d1a33a28200a7c7684919b66c7">vde::sdf::SdfOp::Onion</a></div><div class="ttdeci">@ Onion</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a8ee36c9c42f877feee31aaf4b0883546"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a8ee36c9c42f877feee31aaf4b0883546">vde::sdf::SdfOp::MirrorX</a></div><div class="ttdeci">@ MirrorX</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1a97e7c9a7d06eac006a28bf05467fcc8b"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a97e7c9a7d06eac006a28bf05467fcc8b">vde::sdf::SdfOp::Link</a></div><div class="ttdeci">@ Link</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1aa06d31c2ee920b4d53e8c9c06d90ba24"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1aa06d31c2ee920b4d53e8c9c06d90ba24">vde::sdf::SdfOp::Intersection</a></div><div class="ttdeci">@ Intersection</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1aa80d865c12c4d5d9986c33ae4390e1f6"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1aa80d865c12c4d5d9986c33ae4390e1f6">vde::sdf::SdfOp::Twist</a></div><div class="ttdeci">@ Twist</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1aaa93268be1d4bdbd54161ce80ebbcd4a"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1aaa93268be1d4bdbd54161ce80ebbcd4a">vde::sdf::SdfOp::RoundBox</a></div><div class="ttdeci">@ RoundBox</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1aaef12e903e606a4895a16b393bfdec8c"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1aaef12e903e606a4895a16b393bfdec8c">vde::sdf::SdfOp::Union</a></div><div class="ttdeci">@ Union</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1ab7095f057db3fefa7325ad93a04e14fd"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1ab7095f057db3fefa7325ad93a04e14fd">vde::sdf::SdfOp::Sphere</a></div><div class="ttdeci">@ Sphere</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1ab7f41fc1412ad2ee75e9b2635d3b9d5c"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1ab7f41fc1412ad2ee75e9b2635d3b9d5c">vde::sdf::SdfOp::Round</a></div><div class="ttdeci">@ Round</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1ac81ac223c7946d2dd3872e591c6988f5"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1ac81ac223c7946d2dd3872e591c6988f5">vde::sdf::SdfOp::MirrorY</a></div><div class="ttdeci">@ MirrorY</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1acd2c8bc6e5f1ea17c918ccaf89660104"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1acd2c8bc6e5f1ea17c918ccaf89660104">vde::sdf::SdfOp::Cone</a></div><div class="ttdeci">@ Cone</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1adcef3e264a0eecc2a9eadd4478c67a1f"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1adcef3e264a0eecc2a9eadd4478c67a1f">vde::sdf::SdfOp::Bend</a></div><div class="ttdeci">@ Bend</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1adeccbe4e9083c3b5f7cd2632722765bb"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1adeccbe4e9083c3b5f7cd2632722765bb">vde::sdf::SdfOp::Translate</a></div><div class="ttdeci">@ Translate</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_a9ba4992806c82a0737f72c23bd0b76a1aeee5397cecd880d16ef7244819aa383d"><div class="ttname"><a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1aeee5397cecd880d16ef7244819aa383d">vde::sdf::SdfOp::Ellipsoid</a></div><div class="ttdeci">@ Ellipsoid</div></div>
<div class="ttc" id="anamespacevde_1_1sdf_html_ae6bcbe30bdd5180fd6cb7a6818969c4d"><div class="ttname"><a href="namespacevde_1_1sdf.html#ae6bcbe30bdd5180fd6cb7a6818969c4d">vde::sdf::estimate_bounds</a></div><div class="ttdeci">Point3D estimate_bounds(const SdfNodePtr &amp;root, double margin=1.0)</div><div class="ttdoc">估算 SDF 树的包围半尺寸</div></div>
<div class="ttc" id="apoint_8h_html"><div class="ttname"><a href="point_8h.html">point.h</a></div></div>
<div class="ttc" id="asdf__operations_8h_html"><div class="ttname"><a href="sdf__operations_8h.html">sdf_operations.h</a></div><div class="ttdoc">SDF 布尔运算、修饰算子与域变形</div></div>
<div class="ttc" id="asdf__primitives_8h_html"><div class="ttname"><a href="sdf__primitives_8h.html">sdf_primitives.h</a></div><div class="ttdoc">有符号距离函数(SDF)基础图元</div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfBBox_html"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfBBox.html">vde::sdf::SdfBBox</a></div><div class="ttdoc">SDF 树的包围盒(AABB</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00337">sdf_tree.h:337</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfBBox_html_a4bb507271494ca7a9576b4af3b7f49a9"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfBBox.html#a4bb507271494ca7a9576b4af3b7f49a9">vde::sdf::SdfBBox::max</a></div><div class="ttdeci">Point3D max</div><div class="ttdoc">最大角点</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00339">sdf_tree.h:339</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfBBox_html_aa7458f07e4e3ec09e4a05c4b1529218d"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfBBox.html#aa7458f07e4e3ec09e4a05c4b1529218d">vde::sdf::SdfBBox::min</a></div><div class="ttdeci">Point3D min</div><div class="ttdoc">最小角点</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00338">sdf_tree.h:338</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html">vde::sdf::SdfParams</a></div><div class="ttdoc">SDF 节点参数联合体</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00100">sdf_tree.h:100</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_a0f2982663961743f67586cf2dab834fc"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#a0f2982663961743f67586cf2dab834fc">vde::sdf::SdfParams::angle_rad</a></div><div class="ttdeci">double angle_rad</div><div class="ttdoc">锥体半角(弧度)</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00108">sdf_tree.h:108</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_a1b8aae16cabe8d6bc48791c04bfd76eb"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#a1b8aae16cabe8d6bc48791c04bfd76eb">vde::sdf::SdfParams::normal</a></div><div class="ttdeci">Vector3D normal</div><div class="ttdoc">平面法向量</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00111">sdf_tree.h:111</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_a28799acdc10136cb7aa5c5f28b8faa5d"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#a28799acdc10136cb7aa5c5f28b8faa5d">vde::sdf::SdfParams::pt_a</a></div><div class="ttdeci">Point3D pt_a</div><div class="ttdoc">胶囊端点 A</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00104">sdf_tree.h:104</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_a2aecc5c15b0cd00545d917850ea9f4ae"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#a2aecc5c15b0cd00545d917850ea9f4ae">vde::sdf::SdfParams::minor_radius</a></div><div class="ttdeci">double minor_radius</div><div class="ttdoc">圆环副半径</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00107">sdf_tree.h:107</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_a49b083433d14965d24253423b42183c5"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#a49b083433d14965d24253423b42183c5">vde::sdf::SdfParams::pt_b</a></div><div class="ttdeci">Point3D pt_b</div><div class="ttdoc">胶囊端点 B</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00105">sdf_tree.h:105</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_a504abb24b59d5b16fb34453fba033b50"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#a504abb24b59d5b16fb34453fba033b50">vde::sdf::SdfParams::extents</a></div><div class="ttdeci">Point3D extents</div><div class="ttdoc">盒子的半边长</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00103">sdf_tree.h:103</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_a5eb41fe0a1195fd82fe44152895f817a"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#a5eb41fe0a1195fd82fe44152895f817a">vde::sdf::SdfParams::blend_k</a></div><div class="ttdeci">double blend_k</div><div class="ttdoc">平滑 CSG 混合参数</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00115">sdf_tree.h:115</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_a6cee29181d03f880b7ded4114c5d579d"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#a6cee29181d03f880b7ded4114c5d579d">vde::sdf::SdfParams::major_radius</a></div><div class="ttdeci">double major_radius</div><div class="ttdoc">圆环主半径</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00106">sdf_tree.h:106</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_a706914d404026bd7e56e2189ffd0c569"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#a706914d404026bd7e56e2189ffd0c569">vde::sdf::SdfParams::thickness</a></div><div class="ttdeci">double thickness</div><div class="ttdoc">壳层厚度(Onion</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00110">sdf_tree.h:110</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_a719c51f05137b17a6212a704f60df74c"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#a719c51f05137b17a6212a704f60df74c">vde::sdf::SdfParams::translate_offset</a></div><div class="ttdeci">Point3D translate_offset</div><div class="ttdoc">平移量</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00120">sdf_tree.h:120</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_a760d4fbf2cd25017427ce04603eefd73"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#a760d4fbf2cd25017427ce04603eefd73">vde::sdf::SdfParams::radius</a></div><div class="ttdeci">double radius</div><div class="ttdoc">球体/圆柱/胶囊/圆角半径</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00102">sdf_tree.h:102</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_aa8f6e831e3d458cc5331bcb5cf0aca7a"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#aa8f6e831e3d458cc5331bcb5cf0aca7a">vde::sdf::SdfParams::height</a></div><div class="ttdeci">double height</div><div class="ttdoc">柱体/锥体/挤出高度</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00109">sdf_tree.h:109</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_ab0704cc4f1aa746c071741b8d3797db7"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#ab0704cc4f1aa746c071741b8d3797db7">vde::sdf::SdfParams::repeat_cell</a></div><div class="ttdeci">Point3D repeat_cell</div><div class="ttdoc">重复晶格尺寸</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00119">sdf_tree.h:119</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_aba9169119b31ca1bbbde5daef364a824"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#aba9169119b31ca1bbbde5daef364a824">vde::sdf::SdfParams::amplitude</a></div><div class="ttdeci">double amplitude</div><div class="ttdoc">位移扰动幅值</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00117">sdf_tree.h:117</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_adc57313e2d7166c7c7d6e8d3d85401f3"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#adc57313e2d7166c7c7d6e8d3d85401f3">vde::sdf::SdfParams::offset</a></div><div class="ttdeci">double offset</div><div class="ttdoc">平面偏移 / 通用偏移</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00112">sdf_tree.h:112</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_ae653a432ea03eab100148acb91e859cd"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#ae653a432ea03eab100148acb91e859cd">vde::sdf::SdfParams::scale_factors</a></div><div class="ttdeci">Point3D scale_factors</div><div class="ttdoc">缩放因子</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00121">sdf_tree.h:121</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_af79a6d085579d32a669860b9547e9a5b"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#af79a6d085579d32a669860b9547e9a5b">vde::sdf::SdfParams::frequency</a></div><div class="ttdeci">double frequency</div><div class="ttdoc">位移扰动频率</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00118">sdf_tree.h:118</a></div></div>
<div class="ttc" id="astructvde_1_1sdf_1_1SdfParams_html_aff4edc45464d4ae56f9535ddd19d0ebc"><div class="ttname"><a href="structvde_1_1sdf_1_1SdfParams.html#aff4edc45464d4ae56f9535ddd19d0ebc">vde::sdf::SdfParams::amount</a></div><div class="ttdeci">double amount</div><div class="ttdoc">扭曲/弯曲量</div><div class="ttdef"><b>Definition:</b> <a href="sdf__tree_8h_source.html#l00116">sdf_tree.h:116</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__tree_8h.html">sdf_tree.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>