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

182 lines
27 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/curves/nurbs_surface.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('nurbs__surface_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">nurbs_surface.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="nurbs__surface_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="l00002"></a><span class="lineno"> 2</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="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="bspline__curve_8h.html">vde/curves/bspline_curve.h</a>&quot;</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="nurbs__curve_8h.html">vde/curves/nurbs_curve.h</a>&quot;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &lt;array&gt;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160; </div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacevde_1_1curves.html">vde::curves</a> {</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</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="l00010"></a><span class="lineno"> 10</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="l00011"></a><span class="lineno"> 11</span>&#160; </div>
<div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="classvde_1_1curves_1_1NurbsSurface.html"> 24</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvde_1_1curves_1_1NurbsSurface.html">NurbsSurface</a> {</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classvde_1_1curves_1_1NurbsSurface.html#aec7b5095337d5a19831d10c70a2f3e23"> 38</a></span>&#160; <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#aec7b5095337d5a19831d10c70a2f3e23">NurbsSurface</a>(std::vector&lt;std::vector&lt;Point3D&gt;&gt; control_grid,</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; std::vector&lt;double&gt; <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#aaf8908988e144edfc6597792299c66bc">knots_u</a>, std::vector&lt;double&gt; <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#a41faea6ee8c5af45774fb7d4ce5241a9">knots_v</a>,</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; std::vector&lt;std::vector&lt;double&gt;&gt; <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#a64bb35b6d22edb50bd08e40a5d343cff">weights</a>,</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#a33f6783b3b8f9a94cbc67715023cc34a">degree_u</a>, <span class="keywordtype">int</span> <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#a9521000400b99d6198cee4023c46ca9f">degree_v</a>);</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; </div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classvde_1_1curves_1_1NurbsSurface.html#a63a1b12f9e6efca9b3b7bc1bb69661bf"> 49</a></span>&#160; [[nodiscard]] <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a> <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#a63a1b12f9e6efca9b3b7bc1bb69661bf">evaluate</a>(<span class="keywordtype">double</span> u, <span class="keywordtype">double</span> v) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; </div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classvde_1_1curves_1_1NurbsSurface.html#a6a7c1b3493bf5ac9303ee8c008541147"> 57</a></span>&#160; [[nodiscard]] <a class="code" href="namespacevde_1_1core.html#ab763c018d19e10e91a6c6d6ab2ccc8e0">Vector3D</a> <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#a6a7c1b3493bf5ac9303ee8c008541147">derivative_u</a>(<span class="keywordtype">double</span> u, <span class="keywordtype">double</span> v) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; </div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classvde_1_1curves_1_1NurbsSurface.html#afbcf23fc3c7308bd734a4371e9b71bba"> 65</a></span>&#160; [[nodiscard]] <a class="code" href="namespacevde_1_1core.html#ab763c018d19e10e91a6c6d6ab2ccc8e0">Vector3D</a> <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#afbcf23fc3c7308bd734a4371e9b71bba">derivative_v</a>(<span class="keywordtype">double</span> u, <span class="keywordtype">double</span> v) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; </div>
<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classvde_1_1curves_1_1NurbsSurface.html#a2db98f16640f9413d1d46d2569073aa4"> 73</a></span>&#160; [[nodiscard]] <a class="code" href="namespacevde_1_1core.html#ab763c018d19e10e91a6c6d6ab2ccc8e0">Vector3D</a> <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#a2db98f16640f9413d1d46d2569073aa4">normal</a>(<span class="keywordtype">double</span> u, <span class="keywordtype">double</span> v) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classvde_1_1curves_1_1NurbsSurface.html#a33f6783b3b8f9a94cbc67715023cc34a"> 79</a></span>&#160; [[nodiscard]] <span class="keywordtype">int</span> <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#a33f6783b3b8f9a94cbc67715023cc34a">degree_u</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> degree_u_; }</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classvde_1_1curves_1_1NurbsSurface.html#a9521000400b99d6198cee4023c46ca9f"> 85</a></span>&#160; [[nodiscard]] <span class="keywordtype">int</span> <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#a9521000400b99d6198cee4023c46ca9f">degree_v</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> degree_v_; }</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classvde_1_1curves_1_1NurbsSurface.html#aed017258f17d108c3086010822313f83"> 91</a></span>&#160; [[nodiscard]] std::array&lt;int, 2&gt; <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#aed017258f17d108c3086010822313f83">num_control_points</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span> {<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(cp_.size()), <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(cp_.empty()?0:cp_[0].size())};</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; </div>
<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classvde_1_1curves_1_1NurbsSurface.html#aaf8908988e144edfc6597792299c66bc"> 99</a></span>&#160; [[nodiscard]] <span class="keyword">const</span> std::vector&lt;double&gt;&amp; <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#aaf8908988e144edfc6597792299c66bc">knots_u</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> knots_u_; }</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classvde_1_1curves_1_1NurbsSurface.html#a41faea6ee8c5af45774fb7d4ce5241a9"> 105</a></span>&#160; [[nodiscard]] <span class="keyword">const</span> std::vector&lt;double&gt;&amp; <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#a41faea6ee8c5af45774fb7d4ce5241a9">knots_v</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> knots_v_; }</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; </div>
<div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classvde_1_1curves_1_1NurbsSurface.html#ab0bf95cc9ca6f2297fe455f982703f31"> 111</a></span>&#160; [[nodiscard]] <span class="keyword">const</span> std::vector&lt;std::vector&lt;Point3D&gt;&gt;&amp; <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#ab0bf95cc9ca6f2297fe455f982703f31">control_points</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cp_; }</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; </div>
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classvde_1_1curves_1_1NurbsSurface.html#a64bb35b6d22edb50bd08e40a5d343cff"> 117</a></span>&#160; [[nodiscard]] <span class="keyword">const</span> std::vector&lt;std::vector&lt;double&gt;&gt;&amp; <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#a64bb35b6d22edb50bd08e40a5d343cff">weights</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> weights_; }</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; </div>
<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classvde_1_1curves_1_1NurbsSurface.html#af53b490ee6741cbe9f59dd529e9deeeb"> 127</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html">NurbsSurface</a> <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#af53b490ee6741cbe9f59dd529e9deeeb">ruled</a>(<span class="keyword">const</span> <a class="code" href="classvde_1_1curves_1_1NurbsCurve.html">NurbsCurve</a>&amp; c1, <span class="keyword">const</span> <a class="code" href="classvde_1_1curves_1_1NurbsCurve.html">NurbsCurve</a>&amp; c2);</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; </div>
<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classvde_1_1curves_1_1NurbsSurface.html#a7bdac10dc5fccfce9390818f9abe9440"> 141</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html">NurbsSurface</a> <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#a7bdac10dc5fccfce9390818f9abe9440">revolve</a>(<span class="keyword">const</span> <a class="code" href="classvde_1_1curves_1_1NurbsCurve.html">NurbsCurve</a>&amp; profile, <span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">Point3D</a>&amp; axis_origin,</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacevde_1_1core.html#ab763c018d19e10e91a6c6d6ab2ccc8e0">Vector3D</a>&amp; axis_dir, <span class="keywordtype">double</span> angle_rad);</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; </div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; [[nodiscard]] std::pair&lt;std::vector&lt;Point3D&gt;, std::vector&lt;std::array&lt;int,3&gt;&gt;&gt;</div>
<div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classvde_1_1curves_1_1NurbsSurface.html#ac8fcef290d2fadee4822514380889291"> 153</a></span>&#160; <a class="code" href="classvde_1_1curves_1_1NurbsSurface.html#ac8fcef290d2fadee4822514380889291">tessellate</a>(<span class="keywordtype">int</span> res_u, <span class="keywordtype">int</span> res_v) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; </div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; std::vector&lt;std::vector&lt;Point3D&gt;&gt; cp_; </div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; std::vector&lt;double&gt; knots_u_, knots_v_; </div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; std::vector&lt;std::vector&lt;double&gt;&gt; weights_; </div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordtype">int</span> degree_u_, degree_v_; </div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;};</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; </div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;} <span class="comment">// namespace vde::curves</span></div>
<div class="ttc" id="abspline__curve_8h_html"><div class="ttname"><a href="bspline__curve_8h.html">bspline_curve.h</a></div></div>
<div class="ttc" id="aclassvde_1_1curves_1_1NurbsCurve_html"><div class="ttname"><a href="classvde_1_1curves_1_1NurbsCurve.html">vde::curves::NurbsCurve</a></div><div class="ttdoc">NURBS 曲线(Non-Uniform Rational B-Spline</div><div class="ttdef"><b>Definition:</b> <a href="nurbs__curve_8h_source.html#l00026">nurbs_curve.h:26</a></div></div>
<div class="ttc" id="aclassvde_1_1curves_1_1NurbsSurface_html"><div class="ttname"><a href="classvde_1_1curves_1_1NurbsSurface.html">vde::curves::NurbsSurface</a></div><div class="ttdoc">NURBS 张量积曲面</div><div class="ttdef"><b>Definition:</b> <a href="nurbs__surface_8h_source.html#l00024">nurbs_surface.h:24</a></div></div>
<div class="ttc" id="aclassvde_1_1curves_1_1NurbsSurface_html_a2db98f16640f9413d1d46d2569073aa4"><div class="ttname"><a href="classvde_1_1curves_1_1NurbsSurface.html#a2db98f16640f9413d1d46d2569073aa4">vde::curves::NurbsSurface::normal</a></div><div class="ttdeci">Vector3D normal(double u, double v) const</div><div class="ttdoc">单位法向量</div></div>
<div class="ttc" id="aclassvde_1_1curves_1_1NurbsSurface_html_a33f6783b3b8f9a94cbc67715023cc34a"><div class="ttname"><a href="classvde_1_1curves_1_1NurbsSurface.html#a33f6783b3b8f9a94cbc67715023cc34a">vde::curves::NurbsSurface::degree_u</a></div><div class="ttdeci">int degree_u() const</div><div class="ttdoc">u 向阶次</div><div class="ttdef"><b>Definition:</b> <a href="nurbs__surface_8h_source.html#l00079">nurbs_surface.h:79</a></div></div>
<div class="ttc" id="aclassvde_1_1curves_1_1NurbsSurface_html_a41faea6ee8c5af45774fb7d4ce5241a9"><div class="ttname"><a href="classvde_1_1curves_1_1NurbsSurface.html#a41faea6ee8c5af45774fb7d4ce5241a9">vde::curves::NurbsSurface::knots_v</a></div><div class="ttdeci">const std::vector&lt; double &gt; &amp; knots_v() const</div><div class="ttdoc">v 向节点向量</div><div class="ttdef"><b>Definition:</b> <a href="nurbs__surface_8h_source.html#l00105">nurbs_surface.h:105</a></div></div>
<div class="ttc" id="aclassvde_1_1curves_1_1NurbsSurface_html_a63a1b12f9e6efca9b3b7bc1bb69661bf"><div class="ttname"><a href="classvde_1_1curves_1_1NurbsSurface.html#a63a1b12f9e6efca9b3b7bc1bb69661bf">vde::curves::NurbsSurface::evaluate</a></div><div class="ttdeci">Point3D evaluate(double u, double v) const</div><div class="ttdoc">求曲面点 S(u,v)</div></div>
<div class="ttc" id="aclassvde_1_1curves_1_1NurbsSurface_html_a64bb35b6d22edb50bd08e40a5d343cff"><div class="ttname"><a href="classvde_1_1curves_1_1NurbsSurface.html#a64bb35b6d22edb50bd08e40a5d343cff">vde::curves::NurbsSurface::weights</a></div><div class="ttdeci">const std::vector&lt; std::vector&lt; double &gt; &gt; &amp; weights() const</div><div class="ttdoc">权重网格访问</div><div class="ttdef"><b>Definition:</b> <a href="nurbs__surface_8h_source.html#l00117">nurbs_surface.h:117</a></div></div>
<div class="ttc" id="aclassvde_1_1curves_1_1NurbsSurface_html_a6a7c1b3493bf5ac9303ee8c008541147"><div class="ttname"><a href="classvde_1_1curves_1_1NurbsSurface.html#a6a7c1b3493bf5ac9303ee8c008541147">vde::curves::NurbsSurface::derivative_u</a></div><div class="ttdeci">Vector3D derivative_u(double u, double v) const</div><div class="ttdoc">u 向偏导数</div></div>
<div class="ttc" id="aclassvde_1_1curves_1_1NurbsSurface_html_a7bdac10dc5fccfce9390818f9abe9440"><div class="ttname"><a href="classvde_1_1curves_1_1NurbsSurface.html#a7bdac10dc5fccfce9390818f9abe9440">vde::curves::NurbsSurface::revolve</a></div><div class="ttdeci">static NurbsSurface revolve(const NurbsCurve &amp;profile, const Point3D &amp;axis_origin, const Vector3D &amp;axis_dir, double angle_rad)</div><div class="ttdoc">由截面曲线旋转生成旋转曲面</div></div>
<div class="ttc" id="aclassvde_1_1curves_1_1NurbsSurface_html_a9521000400b99d6198cee4023c46ca9f"><div class="ttname"><a href="classvde_1_1curves_1_1NurbsSurface.html#a9521000400b99d6198cee4023c46ca9f">vde::curves::NurbsSurface::degree_v</a></div><div class="ttdeci">int degree_v() const</div><div class="ttdoc">v 向阶次</div><div class="ttdef"><b>Definition:</b> <a href="nurbs__surface_8h_source.html#l00085">nurbs_surface.h:85</a></div></div>
<div class="ttc" id="aclassvde_1_1curves_1_1NurbsSurface_html_aaf8908988e144edfc6597792299c66bc"><div class="ttname"><a href="classvde_1_1curves_1_1NurbsSurface.html#aaf8908988e144edfc6597792299c66bc">vde::curves::NurbsSurface::knots_u</a></div><div class="ttdeci">const std::vector&lt; double &gt; &amp; knots_u() const</div><div class="ttdoc">u 向节点向量</div><div class="ttdef"><b>Definition:</b> <a href="nurbs__surface_8h_source.html#l00099">nurbs_surface.h:99</a></div></div>
<div class="ttc" id="aclassvde_1_1curves_1_1NurbsSurface_html_ab0bf95cc9ca6f2297fe455f982703f31"><div class="ttname"><a href="classvde_1_1curves_1_1NurbsSurface.html#ab0bf95cc9ca6f2297fe455f982703f31">vde::curves::NurbsSurface::control_points</a></div><div class="ttdeci">const std::vector&lt; std::vector&lt; Point3D &gt; &gt; &amp; control_points() const</div><div class="ttdoc">控制点网格访问</div><div class="ttdef"><b>Definition:</b> <a href="nurbs__surface_8h_source.html#l00111">nurbs_surface.h:111</a></div></div>
<div class="ttc" id="aclassvde_1_1curves_1_1NurbsSurface_html_ac8fcef290d2fadee4822514380889291"><div class="ttname"><a href="classvde_1_1curves_1_1NurbsSurface.html#ac8fcef290d2fadee4822514380889291">vde::curves::NurbsSurface::tessellate</a></div><div class="ttdeci">std::pair&lt; std::vector&lt; Point3D &gt;, std::vector&lt; std::array&lt; int, 3 &gt; &gt; &gt; tessellate(int res_u, int res_v) const</div><div class="ttdoc">将 NURBS 曲面三角化</div></div>
<div class="ttc" id="aclassvde_1_1curves_1_1NurbsSurface_html_aec7b5095337d5a19831d10c70a2f3e23"><div class="ttname"><a href="classvde_1_1curves_1_1NurbsSurface.html#aec7b5095337d5a19831d10c70a2f3e23">vde::curves::NurbsSurface::NurbsSurface</a></div><div class="ttdeci">NurbsSurface(std::vector&lt; std::vector&lt; Point3D &gt;&gt; control_grid, std::vector&lt; double &gt; knots_u, std::vector&lt; double &gt; knots_v, std::vector&lt; std::vector&lt; double &gt;&gt; weights, int degree_u, int degree_v)</div><div class="ttdoc">构造 NURBS 曲面</div></div>
<div class="ttc" id="aclassvde_1_1curves_1_1NurbsSurface_html_aed017258f17d108c3086010822313f83"><div class="ttname"><a href="classvde_1_1curves_1_1NurbsSurface.html#aed017258f17d108c3086010822313f83">vde::curves::NurbsSurface::num_control_points</a></div><div class="ttdeci">std::array&lt; int, 2 &gt; num_control_points() const</div><div class="ttdoc">控制点数量</div><div class="ttdef"><b>Definition:</b> <a href="nurbs__surface_8h_source.html#l00091">nurbs_surface.h:91</a></div></div>
<div class="ttc" id="aclassvde_1_1curves_1_1NurbsSurface_html_af53b490ee6741cbe9f59dd529e9deeeb"><div class="ttname"><a href="classvde_1_1curves_1_1NurbsSurface.html#af53b490ee6741cbe9f59dd529e9deeeb">vde::curves::NurbsSurface::ruled</a></div><div class="ttdeci">static NurbsSurface ruled(const NurbsCurve &amp;c1, const NurbsCurve &amp;c2)</div><div class="ttdoc">由两条 NURBS 曲线创建直纹面</div></div>
<div class="ttc" id="aclassvde_1_1curves_1_1NurbsSurface_html_afbcf23fc3c7308bd734a4371e9b71bba"><div class="ttname"><a href="classvde_1_1curves_1_1NurbsSurface.html#afbcf23fc3c7308bd734a4371e9b71bba">vde::curves::NurbsSurface::derivative_v</a></div><div class="ttdeci">Vector3D derivative_v(double u, double v) const</div><div class="ttdoc">v 向偏导数</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_1curves_html"><div class="ttname"><a href="namespacevde_1_1curves.html">vde::curves</a></div><div class="ttdef"><b>Definition:</b> <a href="bezier__curve_8h_source.html#l00005">bezier_curve.h:5</a></div></div>
<div class="ttc" id="anurbs__curve_8h_html"><div class="ttname"><a href="nurbs__curve_8h.html">nurbs_curve.h</a></div></div>
<div class="ttc" id="apoint_8h_html"><div class="ttname"><a href="point_8h.html">point.h</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_36dfe8171299c47a6036082559f11ede.html">vde</a></li><li class="navelem"><a class="el" href="dir_5ddc9b1922ae02936e09a62cf700143d.html">curves</a></li><li class="navelem"><a class="el" href="nurbs__surface_8h.html">nurbs_surface.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>