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

488 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: vde::curves::BSplineSurface类 参考</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('classvde_1_1curves_1_1BSplineSurface.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="#pub-methods">Public 成员函数</a> &#124;
<a href="classvde_1_1curves_1_1BSplineSurface-members.html">所有成员列表</a> </div>
<div class="headertitle">
<div class="title">vde::curves::BSplineSurface类 参考<div class="ingroups"><a class="el" href="group__curves.html">曲线曲面模块 (vde::curves)</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>B 样条张量积曲面(非有理)
<a href="classvde_1_1curves_1_1BSplineSurface.html#details">更多...</a></p>
<p><code>#include &lt;<a class="el" href="bspline__surface_8h_source.html">bspline_surface.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:af674886573f10e61ce32ff773fa33bcf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1curves_1_1BSplineSurface.html#af674886573f10e61ce32ff773fa33bcf">BSplineSurface</a> (std::vector&lt; std::vector&lt; Point3D &gt;&gt; control_grid, std::vector&lt; double &gt; <a class="el" href="classvde_1_1curves_1_1BSplineSurface.html#a38c7007e3d83f222939a2f3137920c43">knots_u</a>, std::vector&lt; double &gt; <a class="el" href="classvde_1_1curves_1_1BSplineSurface.html#a56bf525943ae92ffe09d864a0f34dc1e">knots_v</a>, int <a class="el" href="classvde_1_1curves_1_1BSplineSurface.html#a9b638cc5360344fe904290deb4dc6893">degree_u</a>, int <a class="el" href="classvde_1_1curves_1_1BSplineSurface.html#a0d30fde10aa2fc8afd5c4ae84e457b14">degree_v</a>)</td></tr>
<tr class="memdesc:af674886573f10e61ce32ff773fa33bcf"><td class="mdescLeft">&#160;</td><td class="mdescRight">构造 B 样条曲面 <a href="classvde_1_1curves_1_1BSplineSurface.html#af674886573f10e61ce32ff773fa33bcf">更多...</a><br /></td></tr>
<tr class="separator:af674886573f10e61ce32ff773fa33bcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeda5aa809291b7aebe7d99d51c5952ed"><td class="memItemLeft" align="right" valign="top">Point3D&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1curves_1_1BSplineSurface.html#aeda5aa809291b7aebe7d99d51c5952ed">evaluate</a> (double u, double v) const</td></tr>
<tr class="memdesc:aeda5aa809291b7aebe7d99d51c5952ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">求曲面点 S(u,v) <a href="classvde_1_1curves_1_1BSplineSurface.html#aeda5aa809291b7aebe7d99d51c5952ed">更多...</a><br /></td></tr>
<tr class="separator:aeda5aa809291b7aebe7d99d51c5952ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9417fa9d0c3021689cec08d7a1c2b01"><td class="memItemLeft" align="right" valign="top">Vector3D&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1curves_1_1BSplineSurface.html#ad9417fa9d0c3021689cec08d7a1c2b01">derivative_u</a> (double u, double v) const</td></tr>
<tr class="memdesc:ad9417fa9d0c3021689cec08d7a1c2b01"><td class="mdescLeft">&#160;</td><td class="mdescRight">u 向偏导数 ∂S/∂u <a href="classvde_1_1curves_1_1BSplineSurface.html#ad9417fa9d0c3021689cec08d7a1c2b01">更多...</a><br /></td></tr>
<tr class="separator:ad9417fa9d0c3021689cec08d7a1c2b01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad91f03172292a8d2496b125583f553e9"><td class="memItemLeft" align="right" valign="top">Vector3D&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1curves_1_1BSplineSurface.html#ad91f03172292a8d2496b125583f553e9">derivative_v</a> (double u, double v) const</td></tr>
<tr class="memdesc:ad91f03172292a8d2496b125583f553e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">v 向偏导数 ∂S/∂v <a href="classvde_1_1curves_1_1BSplineSurface.html#ad91f03172292a8d2496b125583f553e9">更多...</a><br /></td></tr>
<tr class="separator:ad91f03172292a8d2496b125583f553e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8973c014d5f99d11d583de509628ec68"><td class="memItemLeft" align="right" valign="top">Vector3D&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1curves_1_1BSplineSurface.html#a8973c014d5f99d11d583de509628ec68">normal</a> (double u, double v) const</td></tr>
<tr class="memdesc:a8973c014d5f99d11d583de509628ec68"><td class="mdescLeft">&#160;</td><td class="mdescRight">单位法向量 <a href="classvde_1_1curves_1_1BSplineSurface.html#a8973c014d5f99d11d583de509628ec68">更多...</a><br /></td></tr>
<tr class="separator:a8973c014d5f99d11d583de509628ec68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b638cc5360344fe904290deb4dc6893"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1curves_1_1BSplineSurface.html#a9b638cc5360344fe904290deb4dc6893">degree_u</a> () const</td></tr>
<tr class="memdesc:a9b638cc5360344fe904290deb4dc6893"><td class="mdescLeft">&#160;</td><td class="mdescRight">u 向阶次 <a href="classvde_1_1curves_1_1BSplineSurface.html#a9b638cc5360344fe904290deb4dc6893">更多...</a><br /></td></tr>
<tr class="separator:a9b638cc5360344fe904290deb4dc6893"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d30fde10aa2fc8afd5c4ae84e457b14"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1curves_1_1BSplineSurface.html#a0d30fde10aa2fc8afd5c4ae84e457b14">degree_v</a> () const</td></tr>
<tr class="memdesc:a0d30fde10aa2fc8afd5c4ae84e457b14"><td class="mdescLeft">&#160;</td><td class="mdescRight">v 向阶次 <a href="classvde_1_1curves_1_1BSplineSurface.html#a0d30fde10aa2fc8afd5c4ae84e457b14">更多...</a><br /></td></tr>
<tr class="separator:a0d30fde10aa2fc8afd5c4ae84e457b14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38c7007e3d83f222939a2f3137920c43"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; double &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1curves_1_1BSplineSurface.html#a38c7007e3d83f222939a2f3137920c43">knots_u</a> () const</td></tr>
<tr class="memdesc:a38c7007e3d83f222939a2f3137920c43"><td class="mdescLeft">&#160;</td><td class="mdescRight">u 向节点向量 <a href="classvde_1_1curves_1_1BSplineSurface.html#a38c7007e3d83f222939a2f3137920c43">更多...</a><br /></td></tr>
<tr class="separator:a38c7007e3d83f222939a2f3137920c43"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56bf525943ae92ffe09d864a0f34dc1e"><td class="memItemLeft" align="right" valign="top">const std::vector&lt; double &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1curves_1_1BSplineSurface.html#a56bf525943ae92ffe09d864a0f34dc1e">knots_v</a> () const</td></tr>
<tr class="memdesc:a56bf525943ae92ffe09d864a0f34dc1e"><td class="mdescLeft">&#160;</td><td class="mdescRight">v 向节点向量 <a href="classvde_1_1curves_1_1BSplineSurface.html#a56bf525943ae92ffe09d864a0f34dc1e">更多...</a><br /></td></tr>
<tr class="separator:a56bf525943ae92ffe09d864a0f34dc1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><p>B 样条张量积曲面(非有理) </p>
<p>由 (nu+1)×(nv+1) 控制点网格、u/v 向各一个节点向量以及两个阶次定义。 参数域 (u,v) ∈ [knots_u[pu], knots_u[nu+1]] × [knots_v[pv], knots_v[nv+1]]。</p>
<p>求值公式:S(u,v) = Σ_i Σ_j P_{ij} · N_{i,pu}(u) · N_{j,pv}(v)</p>
<p>具有局部控制性:修改单个控制点仅影响相邻 pu×pv 个节点区间的曲面区域。 </p>
<p class="definition">在文件 <a class="el" href="bspline__surface_8h_source.html">bspline_surface.h</a><a class="el" href="bspline__surface_8h_source.html#l00022">22</a> 行定义.</p>
</div><h2 class="groupheader">构造及析构函数说明</h2>
<a id="af674886573f10e61ce32ff773fa33bcf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af674886573f10e61ce32ff773fa33bcf">&#9670;&nbsp;</a></span>BSplineSurface()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">vde::curves::BSplineSurface::BSplineSurface </td>
<td>(</td>
<td class="paramtype">std::vector&lt; std::vector&lt; Point3D &gt;&gt;&#160;</td>
<td class="paramname"><em>control_grid</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; double &gt;&#160;</td>
<td class="paramname"><em>knots_u</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; double &gt;&#160;</td>
<td class="paramname"><em>knots_v</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>degree_u</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>degree_v</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>构造 B 样条曲面 </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">control_grid</td><td>(nu+1)×(nv+1) 控制点网格 </td></tr>
<tr><td class="paramname">knots_u</td><td>u 向节点向量,长度 = nu + pu + 1 </td></tr>
<tr><td class="paramname">knots_v</td><td>v 向节点向量,长度 = nv + pv + 1 </td></tr>
<tr><td class="paramname">degree_u</td><td>u 向阶次 pu </td></tr>
<tr><td class="paramname">degree_v</td><td>v 向阶次 pv <div class="fragment"><div class="line"><a class="code" href="classvde_1_1curves_1_1BSplineSurface.html#af674886573f10e61ce32ff773fa33bcf">BSplineSurface</a> surf(grid,</div>
<div class="line"> {0,0,0,0, 0.5, 1,1,1,1}, <span class="comment">// u knots (三次,5 个控制点)</span></div>
<div class="line"> {0,0,0, 0.5, 1,1,1}, <span class="comment">// v knots (二次,4 个控制点)</span></div>
<div class="line"> 3, 2);</div>
<div class="ttc" id="aclassvde_1_1curves_1_1BSplineSurface_html_af674886573f10e61ce32ff773fa33bcf"><div class="ttname"><a href="classvde_1_1curves_1_1BSplineSurface.html#af674886573f10e61ce32ff773fa33bcf">vde::curves::BSplineSurface::BSplineSurface</a></div><div class="ttdeci">BSplineSurface(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, int degree_u, int degree_v)</div><div class="ttdoc">构造 B 样条曲面</div></div>
</div><!-- fragment --> </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
<a id="a9b638cc5360344fe904290deb4dc6893"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b638cc5360344fe904290deb4dc6893">&#9670;&nbsp;</a></span>degree_u()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int vde::curves::BSplineSurface::degree_u </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>u 向阶次 </p>
<dl class="section return"><dt>返回</dt><dd>pu </dd></dl>
<p class="definition">在文件 <a class="el" href="bspline__surface_8h_source.html">bspline_surface.h</a><a class="el" href="bspline__surface_8h_source.html#l00079">79</a> 行定义.</p>
</div>
</div>
<a id="a0d30fde10aa2fc8afd5c4ae84e457b14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d30fde10aa2fc8afd5c4ae84e457b14">&#9670;&nbsp;</a></span>degree_v()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int vde::curves::BSplineSurface::degree_v </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>v 向阶次 </p>
<dl class="section return"><dt>返回</dt><dd>pv </dd></dl>
<p class="definition">在文件 <a class="el" href="bspline__surface_8h_source.html">bspline_surface.h</a><a class="el" href="bspline__surface_8h_source.html#l00085">85</a> 行定义.</p>
</div>
</div>
<a id="ad9417fa9d0c3021689cec08d7a1c2b01"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad9417fa9d0c3021689cec08d7a1c2b01">&#9670;&nbsp;</a></span>derivative_u()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Vector3D vde::curves::BSplineSurface::derivative_u </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>u</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>v</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>u 向偏导数 ∂S/∂u </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">u</td><td>u 参数 </td></tr>
<tr><td class="paramname">v</td><td>v 参数 </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>u 向切向量 </dd></dl>
</div>
</div>
<a id="ad91f03172292a8d2496b125583f553e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad91f03172292a8d2496b125583f553e9">&#9670;&nbsp;</a></span>derivative_v()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Vector3D vde::curves::BSplineSurface::derivative_v </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>u</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>v</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>v 向偏导数 ∂S/∂v </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">u</td><td>u 参数 </td></tr>
<tr><td class="paramname">v</td><td>v 参数 </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>v 向切向量 </dd></dl>
</div>
</div>
<a id="aeda5aa809291b7aebe7d99d51c5952ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeda5aa809291b7aebe7d99d51c5952ed">&#9670;&nbsp;</a></span>evaluate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Point3D vde::curves::BSplineSurface::evaluate </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>u</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>v</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>求曲面点 S(u,v) </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">u</td><td>u 参数 </td></tr>
<tr><td class="paramname">v</td><td>v 参数 </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>曲面上的 3D 点 </dd></dl>
<dl class="section note"><dt>注解</dt><dd>张量积分解:先行后列(或先列后行)做两次 B 样条求值 </dd></dl>
</div>
</div>
<a id="a38c7007e3d83f222939a2f3137920c43"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38c7007e3d83f222939a2f3137920c43">&#9670;&nbsp;</a></span>knots_u()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::vector&lt;double&gt;&amp; vde::curves::BSplineSurface::knots_u </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>u 向节点向量 </p>
<dl class="section return"><dt>返回</dt><dd>只读引用 </dd></dl>
<p class="definition">在文件 <a class="el" href="bspline__surface_8h_source.html">bspline_surface.h</a><a class="el" href="bspline__surface_8h_source.html#l00091">91</a> 行定义.</p>
</div>
</div>
<a id="a56bf525943ae92ffe09d864a0f34dc1e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56bf525943ae92ffe09d864a0f34dc1e">&#9670;&nbsp;</a></span>knots_v()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::vector&lt;double&gt;&amp; vde::curves::BSplineSurface::knots_v </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>v 向节点向量 </p>
<dl class="section return"><dt>返回</dt><dd>只读引用 </dd></dl>
<p class="definition">在文件 <a class="el" href="bspline__surface_8h_source.html">bspline_surface.h</a><a class="el" href="bspline__surface_8h_source.html#l00097">97</a> 行定义.</p>
</div>
</div>
<a id="a8973c014d5f99d11d583de509628ec68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8973c014d5f99d11d583de509628ec68">&#9670;&nbsp;</a></span>normal()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Vector3D vde::curves::BSplineSurface::normal </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>u</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>v</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>单位法向量 </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">u</td><td>u 参数 </td></tr>
<tr><td class="paramname">v</td><td>v 参数 </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>N(u,v) = (∂S/∂u × ∂S/∂v) / |…| </dd></dl>
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>include/vde/curves/<a class="el" href="bspline__surface_8h_source.html">bspline_surface.h</a></li>
</ul>
</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="namespacevde.html">vde</a></li><li class="navelem"><a class="el" href="namespacevde_1_1curves.html">curves</a></li><li class="navelem"><a class="el" href="classvde_1_1curves_1_1BSplineSurface.html">BSplineSurface</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>