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

390 lines
19 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::BezierSurface类 参考</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_1BezierSurface.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_1BezierSurface-members.html">所有成员列表</a> </div>
<div class="headertitle">
<div class="title">vde::curves::BezierSurface类 参考<div class="ingroups"><a class="el" href="group__curves.html">曲线曲面模块 (vde::curves)</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>Bézier 张量积曲面
<a href="classvde_1_1curves_1_1BezierSurface.html#details">更多...</a></p>
<p><code>#include &lt;<a class="el" href="bezier__surface_8h_source.html">bezier_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:a42924a75e61094ca1c9179f69407735a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1curves_1_1BezierSurface.html#a42924a75e61094ca1c9179f69407735a">BezierSurface</a> (std::vector&lt; std::vector&lt; Point3D &gt;&gt; control_grid)</td></tr>
<tr class="memdesc:a42924a75e61094ca1c9179f69407735a"><td class="mdescLeft">&#160;</td><td class="mdescRight">构造 Bézier 曲面 <a href="classvde_1_1curves_1_1BezierSurface.html#a42924a75e61094ca1c9179f69407735a">更多...</a><br /></td></tr>
<tr class="separator:a42924a75e61094ca1c9179f69407735a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a449f820a43c4b3ed267ed50bf3d523c6"><td class="memItemLeft" align="right" valign="top">Point3D&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1curves_1_1BezierSurface.html#a449f820a43c4b3ed267ed50bf3d523c6">evaluate</a> (double u, double v) const</td></tr>
<tr class="memdesc:a449f820a43c4b3ed267ed50bf3d523c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">求曲面点 S(u,v) <a href="classvde_1_1curves_1_1BezierSurface.html#a449f820a43c4b3ed267ed50bf3d523c6">更多...</a><br /></td></tr>
<tr class="separator:a449f820a43c4b3ed267ed50bf3d523c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afccb4ed65d78f483d1bf159ec82bbb79"><td class="memItemLeft" align="right" valign="top">Vector3D&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1curves_1_1BezierSurface.html#afccb4ed65d78f483d1bf159ec82bbb79">derivative_u</a> (double u, double v) const</td></tr>
<tr class="memdesc:afccb4ed65d78f483d1bf159ec82bbb79"><td class="mdescLeft">&#160;</td><td class="mdescRight">u 方向偏导数 ∂S/∂u <a href="classvde_1_1curves_1_1BezierSurface.html#afccb4ed65d78f483d1bf159ec82bbb79">更多...</a><br /></td></tr>
<tr class="separator:afccb4ed65d78f483d1bf159ec82bbb79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a388ce9dbb5cc9487e5c33d681ee990fc"><td class="memItemLeft" align="right" valign="top">Vector3D&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1curves_1_1BezierSurface.html#a388ce9dbb5cc9487e5c33d681ee990fc">derivative_v</a> (double u, double v) const</td></tr>
<tr class="memdesc:a388ce9dbb5cc9487e5c33d681ee990fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">v 方向偏导数 ∂S/∂v <a href="classvde_1_1curves_1_1BezierSurface.html#a388ce9dbb5cc9487e5c33d681ee990fc">更多...</a><br /></td></tr>
<tr class="separator:a388ce9dbb5cc9487e5c33d681ee990fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8880613cba401e5a1416c23cefecab22"><td class="memItemLeft" align="right" valign="top">Vector3D&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1curves_1_1BezierSurface.html#a8880613cba401e5a1416c23cefecab22">normal</a> (double u, double v) const</td></tr>
<tr class="memdesc:a8880613cba401e5a1416c23cefecab22"><td class="mdescLeft">&#160;</td><td class="mdescRight">单位法向量 N(u,v) = (∂S/∂u × ∂S/∂v) / |…| <a href="classvde_1_1curves_1_1BezierSurface.html#a8880613cba401e5a1416c23cefecab22">更多...</a><br /></td></tr>
<tr class="separator:a8880613cba401e5a1416c23cefecab22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a13c65b10bc2dc6b09742e178e0bb5955"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1curves_1_1BezierSurface.html#a13c65b10bc2dc6b09742e178e0bb5955">degree_u</a> () const</td></tr>
<tr class="memdesc:a13c65b10bc2dc6b09742e178e0bb5955"><td class="mdescLeft">&#160;</td><td class="mdescRight">u 向阶次 <a href="classvde_1_1curves_1_1BezierSurface.html#a13c65b10bc2dc6b09742e178e0bb5955">更多...</a><br /></td></tr>
<tr class="separator:a13c65b10bc2dc6b09742e178e0bb5955"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a175dd533c3cc9ff6bf08c1d257cd5c8f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1curves_1_1BezierSurface.html#a175dd533c3cc9ff6bf08c1d257cd5c8f">degree_v</a> () const</td></tr>
<tr class="memdesc:a175dd533c3cc9ff6bf08c1d257cd5c8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">v 向阶次 <a href="classvde_1_1curves_1_1BezierSurface.html#a175dd533c3cc9ff6bf08c1d257cd5c8f">更多...</a><br /></td></tr>
<tr class="separator:a175dd533c3cc9ff6bf08c1d257cd5c8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><p>Bézier 张量积曲面 </p>
<p>由 (m+1)×(n+1) 控制点网格定义,m = degree_un = degree_v。 参数域 (u,v) ∈ [0,1]×[0,1],四个角点插值网格四角。</p>
<p>求值公式:S(u,v) = Σ_i Σ_j P_{ij} · B_i^m(u) · B_j^n(v) </p>
<p class="definition">在文件 <a class="el" href="bezier__surface_8h_source.html">bezier_surface.h</a><a class="el" href="bezier__surface_8h_source.html#l00019">19</a> 行定义.</p>
</div><h2 class="groupheader">构造及析构函数说明</h2>
<a id="a42924a75e61094ca1c9179f69407735a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a42924a75e61094ca1c9179f69407735a">&#9670;&nbsp;</a></span>BezierSurface()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">vde::curves::BezierSurface::BezierSurface </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><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>构造 Bézier 曲面 </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">control_grid</td><td>控制点网格,grid[i][j] 对应 u 方向第 i 个、v 方向第 j 个控制点 </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>注解</dt><dd>grid 必须矩整(所有行等长);grid.size() = degree_u+1, grid[0].size() = degree_v+1 <div class="fragment"><div class="line"><span class="comment">// 3x3 控制网格 → 双二次 Bézier 曲面</span></div>
<div class="line"><a class="code" href="classvde_1_1curves_1_1BezierSurface.html#a42924a75e61094ca1c9179f69407735a">BezierSurface</a> surf({{p00,p01,p02}, {p10,p11,p12}, {p20,p21,p22}});</div>
<div class="ttc" id="aclassvde_1_1curves_1_1BezierSurface_html_a42924a75e61094ca1c9179f69407735a"><div class="ttname"><a href="classvde_1_1curves_1_1BezierSurface.html#a42924a75e61094ca1c9179f69407735a">vde::curves::BezierSurface::BezierSurface</a></div><div class="ttdeci">BezierSurface(std::vector&lt; std::vector&lt; Point3D &gt;&gt; control_grid)</div><div class="ttdoc">构造 Bézier 曲面</div></div>
</div><!-- fragment --> </dd></dl>
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
<a id="a13c65b10bc2dc6b09742e178e0bb5955"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a13c65b10bc2dc6b09742e178e0bb5955">&#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::BezierSurface::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>u 方向阶次(控制点行数 - 1 </dd></dl>
<p class="definition">在文件 <a class="el" href="bezier__surface_8h_source.html">bezier_surface.h</a><a class="el" href="bezier__surface_8h_source.html#l00071">71</a> 行定义.</p>
</div>
</div>
<a id="a175dd533c3cc9ff6bf08c1d257cd5c8f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a175dd533c3cc9ff6bf08c1d257cd5c8f">&#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::BezierSurface::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>v 方向阶次(控制点列数 - 1 </dd></dl>
<p class="definition">在文件 <a class="el" href="bezier__surface_8h_source.html">bezier_surface.h</a><a class="el" href="bezier__surface_8h_source.html#l00077">77</a> 行定义.</p>
</div>
</div>
<a id="afccb4ed65d78f483d1bf159ec82bbb79"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afccb4ed65d78f483d1bf159ec82bbb79">&#9670;&nbsp;</a></span>derivative_u()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Vector3D vde::curves::BezierSurface::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>
<dl class="section note"><dt>注解</dt><dd>通过降阶 Bézier 曲线计算:对 v 求值后沿 u 求导 </dd></dl>
</div>
</div>
<a id="a388ce9dbb5cc9487e5c33d681ee990fc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a388ce9dbb5cc9487e5c33d681ee990fc">&#9670;&nbsp;</a></span>derivative_v()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Vector3D vde::curves::BezierSurface::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="a449f820a43c4b3ed267ed50bf3d523c6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a449f820a43c4b3ed267ed50bf3d523c6">&#9670;&nbsp;</a></span>evaluate()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Point3D vde::curves::BezierSurface::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 参数,范围 [0, 1] </td></tr>
<tr><td class="paramname">v</td><td>v 参数,范围 [0, 1] </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>曲面上对应 (u,v) 的 3D 坐标 </dd></dl>
<dl class="section note"><dt>注解</dt><dd>张量积求值:先按 v 方向对每行做 de Casteljau,再沿 u 方向对结果做一次 </dd></dl>
</div>
</div>
<a id="a8880613cba401e5a1416c23cefecab22"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8880613cba401e5a1416c23cefecab22">&#9670;&nbsp;</a></span>normal()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Vector3D vde::curves::BezierSurface::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>单位法向量 N(u,v) = (∂S/∂u × ∂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>归一化法向量(指向曲面的特选侧) </dd></dl>
<dl class="section note"><dt>注解</dt><dd>当两个偏导数平行时返回零向量(奇异点) </dd></dl>
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>include/vde/curves/<a class="el" href="bezier__surface_8h_source.html">bezier_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_1BezierSurface.html">BezierSurface</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>