Files
ViewDesignEngine/docs/api/sdf__tree_8h.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

268 lines
24 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.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="summary">
<a href="#nested-classes"></a> &#124;
<a href="#namespaces">命名空间</a> &#124;
<a href="#typedef-members">类型定义</a> &#124;
<a href="#enum-members">枚举</a> &#124;
<a href="#func-members">函数</a> </div>
<div class="headertitle">
<div class="title">sdf_tree.h 文件参考<div class="ingroups"><a class="el" href="group__sdf.html">SDF 模块 (vde::sdf)</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>SDF 表达式树结构
<a href="#details">更多...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="sdf__primitives_8h_source.html">vde/sdf/sdf_primitives.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="sdf__operations_8h_source.html">vde/sdf/sdf_operations.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="point_8h_source.html">vde/core/point.h</a>&quot;</code><br />
<code>#include &lt;memory&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
sdf_tree.h 的引用(Include)关系图:</div>
<div class="dyncontent">
<div class="center"><img src="sdf__tree_8h__incl.png" border="0" usemap="#ainclude_2vde_2sdf_2sdf__tree_8h" alt=""/></div>
<map name="ainclude_2vde_2sdf_2sdf__tree_8h" id="ainclude_2vde_2sdf_2sdf__tree_8h">
<area shape="rect" title="SDF 表达式树结构" alt="" coords="641,5,787,47"/>
<area shape="rect" href="sdf__primitives_8h.html" title="有符号距离函数(SDF)基础图元" alt="" coords="562,95,741,121"/>
<area shape="rect" href="point_8h.html" title=" " alt="" coords="331,169,457,196"/>
<area shape="rect" title=" " alt="" coords="667,333,729,360"/>
<area shape="rect" href="sdf__operations_8h.html" title="SDF 布尔运算、修饰算子与域变形" alt="" coords="355,95,537,121"/>
<area shape="rect" title=" " alt="" coords="815,95,893,121"/>
<area shape="rect" title=" " alt="" coords="917,95,975,121"/>
<area shape="rect" title=" " alt="" coords="499,333,561,360"/>
<area shape="rect" title=" " alt="" coords="567,169,653,196"/>
<area shape="rect" href="math__types_8h.html" title=" " alt="" coords="112,244,271,285"/>
<area shape="rect" href="tolerance_8h.html" title=" " alt="" coords="295,251,493,278"/>
<area shape="rect" title=" " alt="" coords="251,333,343,360"/>
<area shape="rect" title=" " alt="" coords="5,333,132,360"/>
<area shape="rect" title=" " alt="" coords="156,333,227,360"/>
<area shape="rect" title=" " alt="" coords="367,333,426,360"/>
</map>
</div>
</div><div class="textblock"><div class="dynheader">
此图展示该文件直接或间接的被哪些文件引用了:</div>
<div class="dyncontent">
<div class="center"><img src="sdf__tree_8h__dep__incl.png" border="0" usemap="#ainclude_2vde_2sdf_2sdf__tree_8hdep" alt=""/></div>
<map name="ainclude_2vde_2sdf_2sdf__tree_8hdep" id="ainclude_2vde_2sdf_2sdf__tree_8hdep">
<area shape="rect" title="SDF 表达式树结构" alt="" coords="175,5,320,47"/>
<area shape="rect" href="sdf__optimize_8h.html" title="基于梯度的 SDF 形状优化" alt="" coords="5,95,151,136"/>
<area shape="rect" href="sdf__to__mesh_8h.html" title="SDF 到三角网格的转换" alt="" coords="175,95,320,136"/>
<area shape="rect" href="sdf__torch_8h.html" title="SDF 批量求值与梯度计算(CPU 后端)" alt="" coords="344,95,489,136"/>
</map>
</div>
</div>
<p><a href="sdf__tree_8h_source.html">浏览源代码.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvde_1_1sdf_1_1SdfParams.html">vde::sdf::SdfParams</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">SDF 节点参数联合体 <a href="structvde_1_1sdf_1_1SdfParams.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1sdf_1_1SdfNode.html">vde::sdf::SdfNode</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">SDF 表达式树节点 <a href="classvde_1_1sdf_1_1SdfNode.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvde_1_1sdf_1_1SdfBBox.html">vde::sdf::SdfBBox</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">SDF 树的包围盒(AABB <a href="structvde_1_1sdf_1_1SdfBBox.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
命名空间</h2></td></tr>
<tr class="memitem:namespacevde"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevde.html">vde</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacevde_1_1sdf"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevde_1_1sdf.html">vde::sdf</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
类型定义</h2></td></tr>
<tr class="memitem:a8fdcf277d6327c0b1413373ae82f9d5d"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevde_1_1sdf.html#a8fdcf277d6327c0b1413373ae82f9d5d">vde::sdf::SdfNodePtr</a> = std::shared_ptr&lt; SdfNode &gt;</td></tr>
<tr class="separator:a8fdcf277d6327c0b1413373ae82f9d5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
枚举</h2></td></tr>
<tr class="memitem:a9ba4992806c82a0737f72c23bd0b76a1"><td class="memItemLeft" align="right" valign="top">enum class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1">vde::sdf::SdfOp</a> : uint8_t { <br />
&#160;&#160;<a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1ab7095f057db3fefa7325ad93a04e14fd">vde::sdf::Sphere</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a3cfce651e667ab85486dd42a8185f98a">vde::sdf::Box</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1aaa93268be1d4bdbd54161ce80ebbcd4a">vde::sdf::RoundBox</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a5c22b826138634df6ddf1e22fdb7e66e">vde::sdf::Torus</a>
, <br />
&#160;&#160;<a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a4880c0f12c06dd6d142e7a40b041bf1a">vde::sdf::Capsule</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a2ec2c2961c7ce5a114d969c1f562a563">vde::sdf::Cylinder</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1acd2c8bc6e5f1ea17c918ccaf89660104">vde::sdf::Cone</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a0d3adee051531c15b3509b4d4d75ce7b">vde::sdf::Plane</a>
, <br />
&#160;&#160;<a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1aeee5397cecd880d16ef7244819aa383d">vde::sdf::Ellipsoid</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a6902c1182f48fb6ef52bcaf772a0a497">vde::sdf::TriangularPrism</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a353772bb59a548d2ebe04618d4771f2e">vde::sdf::HexPrism</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a97e7c9a7d06eac006a28bf05467fcc8b">vde::sdf::Link</a>
, <br />
&#160;&#160;<a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a0e9bb3a0eff96690b1e9badd73b99219">vde::sdf::Wedge</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1aaef12e903e606a4895a16b393bfdec8c">vde::sdf::Union</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1aa06d31c2ee920b4d53e8c9c06d90ba24">vde::sdf::Intersection</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a28ed2ac6c29f64a3692c956004b8ff7a">vde::sdf::Difference</a>
, <br />
&#160;&#160;<a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a80e758c6bbd5c38be05d5feee002a83e">vde::sdf::SmoothUnion</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a3ccde23d9a8f92e5e5f7c782079cded7">vde::sdf::SmoothIntersection</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a75005e4bb7beb34ecfe5067ccba5a958">vde::sdf::SmoothDifference</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1ab7f41fc1412ad2ee75e9b2635d3b9d5c">vde::sdf::Round</a>
, <br />
&#160;&#160;<a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a8eaa10d1a33a28200a7c7684919b66c7">vde::sdf::Onion</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a7020426cfb0a204051be4b3053d2acc8">vde::sdf::Repeat</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a8ee36c9c42f877feee31aaf4b0883546">vde::sdf::MirrorX</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1ac81ac223c7946d2dd3872e591c6988f5">vde::sdf::MirrorY</a>
, <br />
&#160;&#160;<a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a6824e17f0c6d79093e95c24c80af97f6">vde::sdf::MirrorZ</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1adeccbe4e9083c3b5f7cd2632722765bb">vde::sdf::Translate</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a8d2de5368588552fbae54044ac5c7b3d">vde::sdf::Rotate</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a85a7cd587d6142dbfc1a4de05af7b75d">vde::sdf::Scale</a>
, <br />
&#160;&#160;<a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1aa80d865c12c4d5d9986c33ae4390e1f6">vde::sdf::Twist</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1adcef3e264a0eecc2a9eadd4478c67a1f">vde::sdf::Bend</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a1aaedf458e4a63162c7771e2bd8c1ff7">vde::sdf::Elongate</a>
, <a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a14da42d903ea0348b07f70e0ac73fa34">vde::sdf::CheapBend</a>
, <br />
&#160;&#160;<a class="el" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1a508f64e1623cf34c9040a219077301ba">vde::sdf::Displace</a>
<br />
}</td></tr>
<tr class="memdesc:a9ba4992806c82a0737f72c23bd0b76a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">CSG 树的所有节点类型 <a href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1">更多...</a><br /></td></tr>
<tr class="separator:a9ba4992806c82a0737f72c23bd0b76a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
函数</h2></td></tr>
<tr class="memitem:a30bd88dc6f714962cb14ec76a5ca5365"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevde_1_1sdf.html#a30bd88dc6f714962cb14ec76a5ca5365">vde::sdf::evaluate</a> (const SdfNodePtr &amp;root, const Point3D &amp;p)</td></tr>
<tr class="memdesc:a30bd88dc6f714962cb14ec76a5ca5365"><td class="mdescLeft">&#160;</td><td class="mdescRight">在空间点 p 处求值 SDF 树 <a href="namespacevde_1_1sdf.html#a30bd88dc6f714962cb14ec76a5ca5365">更多...</a><br /></td></tr>
<tr class="separator:a30bd88dc6f714962cb14ec76a5ca5365"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6bcbe30bdd5180fd6cb7a6818969c4d"><td class="memItemLeft" align="right" valign="top">Point3D&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevde_1_1sdf.html#ae6bcbe30bdd5180fd6cb7a6818969c4d">vde::sdf::estimate_bounds</a> (const SdfNodePtr &amp;root, double margin=1.0)</td></tr>
<tr class="memdesc:ae6bcbe30bdd5180fd6cb7a6818969c4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">估算 SDF 树的包围半尺寸 <a href="namespacevde_1_1sdf.html#ae6bcbe30bdd5180fd6cb7a6818969c4d">更多...</a><br /></td></tr>
<tr class="separator:ae6bcbe30bdd5180fd6cb7a6818969c4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06d4ae274cd858e331cf56f497a545bb"><td class="memItemLeft" align="right" valign="top">SdfBBox&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacevde_1_1sdf.html#a06d4ae274cd858e331cf56f497a545bb">vde::sdf::estimate_bbox</a> (const SdfNodePtr &amp;root, double margin=1.0)</td></tr>
<tr class="memdesc:a06d4ae274cd858e331cf56f497a545bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">估算 SDF 树的完整轴对齐包围盒 <a href="namespacevde_1_1sdf.html#a06d4ae274cd858e331cf56f497a545bb">更多...</a><br /></td></tr>
<tr class="separator:a06d4ae274cd858e331cf56f497a545bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><p>SDF 表达式树结构 </p>
<p>将 SDF 原语和 CSG 操作以树形数据结构表示,支持树遍历、求值和包围盒估算。</p>
<h2><a class="anchor" id="autotoc_md35"></a>
架构层级</h2>
<div class="fragment"><div class="line">SdfNode (树节点) — 单节点,含操作类型+参数+子节点</div>
<div class="line"> ├─ <span class="keyword">enum</span> <a class="code" href="namespacevde_1_1sdf.html#a9ba4992806c82a0737f72c23bd0b76a1">SdfOp</a> — 操作枚举(图元/CSG/修饰/变形)</div>
<div class="line"> ├─ <span class="keyword">struct </span>SdfParams — 参数联合体</div>
<div class="line"> ├─ 静态工厂方法 — 创建各类型节点</div>
<div class="line"> └─ visit() — 前序遍历</div>
<div class="line"> </div>
<div class="line"><a class="code" href="namespacevde_1_1sdf.html#a30bd88dc6f714962cb14ec76a5ca5365">evaluate</a>() — 递归求值</div>
<div class="line"><a class="code" href="namespacevde_1_1sdf.html#ae6bcbe30bdd5180fd6cb7a6818969c4d">estimate_bounds</a>() / <a class="code" href="namespacevde_1_1sdf.html#a06d4ae274cd858e331cf56f497a545bb">estimate_bbox</a>() — 包围盒估算</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_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_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><!-- fragment --><h2><a class="anchor" id="autotoc_md36"></a>
使用模式</h2>
<p>通过静态工厂方法构建节点树,然后调用 <a class="el" href="namespacevde_1_1sdf.html#a30bd88dc6f714962cb14ec76a5ca5365" title="在空间点 p 处求值 SDF 树">evaluate()</a> 进行求值:</p>
<div class="fragment"><div class="line"><span class="keyword">auto</span> root = <a class="code" href="namespacevde_1_1sdf.html#a93c4506583db122c5b657d39d6d2bb62">SdfNode::op_union</a>(</div>
<div class="line"> <a class="code" href="namespacevde_1_1sdf.html#ab544a3ebc4c0844b322b73bbbe4efb3f">SdfNode::sphere</a>(1.0),</div>
<div class="line"> <a class="code" href="namespacevde_1_1sdf.html#a380ebfe1b3b65d5ecc4efcb946b21834">SdfNode::box</a>(<a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(0.5, 0.5, 0.5))</div>
<div class="line">);</div>
<div class="line"><span class="keywordtype">double</span> d = <a class="code" href="namespacevde_1_1sdf.html#a30bd88dc6f714962cb14ec76a5ca5365">evaluate</a>(root, <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>(1.0, 0.0, 0.0));</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_a380ebfe1b3b65d5ecc4efcb946b21834"><div class="ttname"><a href="namespacevde_1_1sdf.html#a380ebfe1b3b65d5ecc4efcb946b21834">vde::sdf::box</a></div><div class="ttdeci">double box(const Point3D &amp;p, const Point3D &amp;half_extents)</div><div class="ttdoc">轴对齐立方体的 SDF</div><div class="ttdef"><b>Definition:</b> <a href="sdf__primitives_8h_source.html#l00096">sdf_primitives.h:96</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_ab544a3ebc4c0844b322b73bbbe4efb3f"><div class="ttname"><a href="namespacevde_1_1sdf.html#ab544a3ebc4c0844b322b73bbbe4efb3f">vde::sdf::sphere</a></div><div class="ttdeci">double sphere(const Point3D &amp;p, double radius)</div><div class="ttdoc">球体的 SDF</div><div class="ttdef"><b>Definition:</b> <a href="sdf__primitives_8h_source.html#l00068">sdf_primitives.h:68</a></div></div>
</div><!-- fragment -->
<p class="definition">在文件 <a class="el" href="sdf__tree_8h_source.html">sdf_tree.h</a> 中定义.</p>
</div></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>