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

846 lines
42 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::mesh::HalfedgeMesh类 参考</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_1mesh_1_1HalfedgeMesh.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_1mesh_1_1HalfedgeMesh-members.html">所有成员列表</a> </div>
<div class="headertitle">
<div class="title">vde::mesh::HalfedgeMesh类 参考<div class="ingroups"><a class="el" href="group__mesh.html">网格模块 (vde::mesh)</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>半边数据结构三角网格
<a href="classvde_1_1mesh_1_1HalfedgeMesh.html#details">更多...</a></p>
<p><code>#include &lt;<a class="el" href="halfedge__mesh_8h_source.html">halfedge_mesh.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:a3cf3f997b8a91cf9ce7305f1643c6715"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a3cf3f997b8a91cf9ce7305f1643c6715">HalfedgeMesh</a> ()=default</td></tr>
<tr class="separator:a3cf3f997b8a91cf9ce7305f1643c6715"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7341a74f7a154092a5c8b74efae23878"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a7341a74f7a154092a5c8b74efae23878">clear</a> ()</td></tr>
<tr class="memdesc:a7341a74f7a154092a5c8b74efae23878"><td class="mdescLeft">&#160;</td><td class="mdescRight">清空所有数据 <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a7341a74f7a154092a5c8b74efae23878">更多...</a><br /></td></tr>
<tr class="separator:a7341a74f7a154092a5c8b74efae23878"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1827a1364d3f1cb07a740050c0a0ed8e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a1827a1364d3f1cb07a740050c0a0ed8e">add_vertex</a> (const Point3D &amp;p)</td></tr>
<tr class="memdesc:a1827a1364d3f1cb07a740050c0a0ed8e"><td class="mdescLeft">&#160;</td><td class="mdescRight">添加顶点 <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a1827a1364d3f1cb07a740050c0a0ed8e">更多...</a><br /></td></tr>
<tr class="separator:a1827a1364d3f1cb07a740050c0a0ed8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a753347dbfdd15ed01ce2b73b9d05ebd5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a753347dbfdd15ed01ce2b73b9d05ebd5">add_face</a> (const std::vector&lt; int &gt; &amp;vertex_indices)</td></tr>
<tr class="memdesc:a753347dbfdd15ed01ce2b73b9d05ebd5"><td class="mdescLeft">&#160;</td><td class="mdescRight">添加面 <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a753347dbfdd15ed01ce2b73b9d05ebd5">更多...</a><br /></td></tr>
<tr class="separator:a753347dbfdd15ed01ce2b73b9d05ebd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0bd4ed920cc52017f730a56069f80bcb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a0bd4ed920cc52017f730a56069f80bcb">build_from_triangles</a> (const std::vector&lt; Point3D &gt; &amp;verts, const std::vector&lt; std::array&lt; int, 3 &gt;&gt; &amp;tris)</td></tr>
<tr class="memdesc:a0bd4ed920cc52017f730a56069f80bcb"><td class="mdescLeft">&#160;</td><td class="mdescRight">从三角形列表批量构建半边形网格 <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a0bd4ed920cc52017f730a56069f80bcb">更多...</a><br /></td></tr>
<tr class="separator:a0bd4ed920cc52017f730a56069f80bcb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16c2789f302c8b12e721f6b963fad98e"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a16c2789f302c8b12e721f6b963fad98e">num_vertices</a> () const</td></tr>
<tr class="memdesc:a16c2789f302c8b12e721f6b963fad98e"><td class="mdescLeft">&#160;</td><td class="mdescRight">顶点数量 <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a16c2789f302c8b12e721f6b963fad98e">更多...</a><br /></td></tr>
<tr class="separator:a16c2789f302c8b12e721f6b963fad98e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43505aa1d6b8896645578b21fd2949d3"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a43505aa1d6b8896645578b21fd2949d3">num_faces</a> () const</td></tr>
<tr class="memdesc:a43505aa1d6b8896645578b21fd2949d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">面数量 <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a43505aa1d6b8896645578b21fd2949d3">更多...</a><br /></td></tr>
<tr class="separator:a43505aa1d6b8896645578b21fd2949d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8658d9c869ab257d8324f0251713d50b"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a8658d9c869ab257d8324f0251713d50b">num_edges</a> () const</td></tr>
<tr class="memdesc:a8658d9c869ab257d8324f0251713d50b"><td class="mdescLeft">&#160;</td><td class="mdescRight">边数量 <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a8658d9c869ab257d8324f0251713d50b">更多...</a><br /></td></tr>
<tr class="separator:a8658d9c869ab257d8324f0251713d50b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a488d7ea74c00ed137f068ffd31e43eb6"><td class="memItemLeft" align="right" valign="top">const Point3D &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a488d7ea74c00ed137f068ffd31e43eb6">vertex</a> (size_t idx) const</td></tr>
<tr class="memdesc:a488d7ea74c00ed137f068ffd31e43eb6"><td class="mdescLeft">&#160;</td><td class="mdescRight">访问顶点 <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a488d7ea74c00ed137f068ffd31e43eb6">更多...</a><br /></td></tr>
<tr class="separator:a488d7ea74c00ed137f068ffd31e43eb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a5a696eb308fe8db188c71919e7f1f1"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structvde_1_1mesh_1_1Face.html">Face</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a0a5a696eb308fe8db188c71919e7f1f1">face</a> (size_t idx) const</td></tr>
<tr class="memdesc:a0a5a696eb308fe8db188c71919e7f1f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">访问面 <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a0a5a696eb308fe8db188c71919e7f1f1">更多...</a><br /></td></tr>
<tr class="separator:a0a5a696eb308fe8db188c71919e7f1f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c33da9af30c271abc0cb2a47f2a2a6e"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structvde_1_1mesh_1_1Halfedge.html">Halfedge</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a6c33da9af30c271abc0cb2a47f2a2a6e">halfedge</a> (size_t idx) const</td></tr>
<tr class="memdesc:a6c33da9af30c271abc0cb2a47f2a2a6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">访问半边 <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a6c33da9af30c271abc0cb2a47f2a2a6e">更多...</a><br /></td></tr>
<tr class="separator:a6c33da9af30c271abc0cb2a47f2a2a6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71f6edeaaf7df460a055d075befca4bb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a71f6edeaaf7df460a055d075befca4bb">set_vertex</a> (size_t idx, const Point3D &amp;p)</td></tr>
<tr class="memdesc:a71f6edeaaf7df460a055d075befca4bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">更新顶点位置 <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a71f6edeaaf7df460a055d075befca4bb">更多...</a><br /></td></tr>
<tr class="separator:a71f6edeaaf7df460a055d075befca4bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab19df827e90175685988545f40033f09"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#ab19df827e90175685988545f40033f09">face_vertices</a> (int fi) const</td></tr>
<tr class="memdesc:ab19df827e90175685988545f40033f09"><td class="mdescLeft">&#160;</td><td class="mdescRight">获取面的所有顶点索引(按环绕顺序) <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#ab19df827e90175685988545f40033f09">更多...</a><br /></td></tr>
<tr class="separator:ab19df827e90175685988545f40033f09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf64a1f6d143d248754469793dbc6277"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#abf64a1f6d143d248754469793dbc6277">vertex_faces</a> (int vi) const</td></tr>
<tr class="memdesc:abf64a1f6d143d248754469793dbc6277"><td class="mdescLeft">&#160;</td><td class="mdescRight">获取顶点的邻面索引环 <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#abf64a1f6d143d248754469793dbc6277">更多...</a><br /></td></tr>
<tr class="separator:abf64a1f6d143d248754469793dbc6277"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9354f080cadd2e039565abd919aff9fc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a9354f080cadd2e039565abd919aff9fc">is_boundary_edge</a> (int hei) const</td></tr>
<tr class="memdesc:a9354f080cadd2e039565abd919aff9fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">是否为边界半边 <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a9354f080cadd2e039565abd919aff9fc">更多...</a><br /></td></tr>
<tr class="separator:a9354f080cadd2e039565abd919aff9fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a89748143178c22c4c1e320edf2bee126"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a89748143178c22c4c1e320edf2bee126">is_boundary_vertex</a> (int vi) const</td></tr>
<tr class="memdesc:a89748143178c22c4c1e320edf2bee126"><td class="mdescLeft">&#160;</td><td class="mdescRight">是否为边界顶点 <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a89748143178c22c4c1e320edf2bee126">更多...</a><br /></td></tr>
<tr class="separator:a89748143178c22c4c1e320edf2bee126"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf4fa00d52c46f9b0b0f0498efc4142f"><td class="memItemLeft" align="right" valign="top">Vector3D&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#abf4fa00d52c46f9b0b0f0498efc4142f">face_normal</a> (int fi) const</td></tr>
<tr class="memdesc:abf4fa00d52c46f9b0b0f0498efc4142f"><td class="mdescLeft">&#160;</td><td class="mdescRight">面法向(几何法向,非归一化?由实现决定) <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#abf4fa00d52c46f9b0b0f0498efc4142f">更多...</a><br /></td></tr>
<tr class="separator:abf4fa00d52c46f9b0b0f0498efc4142f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a127647036280c96e22296fcb89566bc6"><td class="memItemLeft" align="right" valign="top">Vector3D&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a127647036280c96e22296fcb89566bc6">vertex_normal</a> (int vi) const</td></tr>
<tr class="memdesc:a127647036280c96e22296fcb89566bc6"><td class="mdescLeft">&#160;</td><td class="mdescRight">顶点法向(邻面法向的面积加权平均) <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a127647036280c96e22296fcb89566bc6">更多...</a><br /></td></tr>
<tr class="separator:a127647036280c96e22296fcb89566bc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4853a3874d9d74ff7cdf8047821adeda"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a4853a3874d9d74ff7cdf8047821adeda">update_normals</a> ()</td></tr>
<tr class="memdesc:a4853a3874d9d74ff7cdf8047821adeda"><td class="mdescLeft">&#160;</td><td class="mdescRight">重新计算所有面法向和顶点法向 <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a4853a3874d9d74ff7cdf8047821adeda">更多...</a><br /></td></tr>
<tr class="separator:a4853a3874d9d74ff7cdf8047821adeda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19ee3427d89d178f863e116e8eb275ef"><td class="memItemLeft" align="right" valign="top">AABB3D&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a19ee3427d89d178f863e116e8eb275ef">bounds</a> () const</td></tr>
<tr class="memdesc:a19ee3427d89d178f863e116e8eb275ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">网格包围盒 <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a19ee3427d89d178f863e116e8eb275ef">更多...</a><br /></td></tr>
<tr class="separator:a19ee3427d89d178f863e116e8eb275ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a526514ecf176c23e38b9a8bbe75f40e3"><td class="memItemLeft" align="right" valign="top">FaceRange&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a526514ecf176c23e38b9a8bbe75f40e3">faces_range</a> () const</td></tr>
<tr class="memdesc:a526514ecf176c23e38b9a8bbe75f40e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">获取所有面范围(range-based for 支持) <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a526514ecf176c23e38b9a8bbe75f40e3">更多...</a><br /></td></tr>
<tr class="separator:a526514ecf176c23e38b9a8bbe75f40e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa03581ac1863757b3989902dfb3d2879"><td class="memItemLeft" align="right" valign="top">VertexOneRing&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#aa03581ac1863757b3989902dfb3d2879">vertex_one_ring</a> (int vi) const</td></tr>
<tr class="memdesc:aa03581ac1863757b3989902dfb3d2879"><td class="mdescLeft">&#160;</td><td class="mdescRight">获取顶点的 1-ring 邻域迭代器 <a href="classvde_1_1mesh_1_1HalfedgeMesh.html#aa03581ac1863757b3989902dfb3d2879">更多...</a><br /></td></tr>
<tr class="separator:aa03581ac1863757b3989902dfb3d2879"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><p>半边数据结构三角网格 </p>
<p>核心拓扑数据结构,支持 O(1) 访问面的邻面、顶点的邻面环、 边界检测等拓扑查询。数据内部一致性由构造方法保证。</p>
<p>数据成员:</p><ul>
<li>vertices_: 顶点位置数组</li>
<li>halfedges_: 半边数组,相邻索引为对侧半边(0↔1, 2↔3, ...)</li>
<li>faces_: 面数组,每个面对应一条起始半边</li>
<li>face_normals_ / vertex_normals_: 延迟计算的法向缓存 </li>
</ul>
<p class="definition">在文件 <a class="el" href="halfedge__mesh_8h_source.html">halfedge_mesh.h</a><a class="el" href="halfedge__mesh_8h_source.html#l00054">54</a> 行定义.</p>
</div><h2 class="groupheader">构造及析构函数说明</h2>
<a id="a3cf3f997b8a91cf9ce7305f1643c6715"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3cf3f997b8a91cf9ce7305f1643c6715">&#9670;&nbsp;</a></span>HalfedgeMesh()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">vde::mesh::HalfedgeMesh::HalfedgeMesh </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
<a id="a753347dbfdd15ed01ce2b73b9d05ebd5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a753347dbfdd15ed01ce2b73b9d05ebd5">&#9670;&nbsp;</a></span>add_face()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int vde::mesh::HalfedgeMesh::add_face </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>vertex_indices</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>添加面 </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">vertex_indices</td><td>按逆时针顺序排列的顶点索引(至少 3 个) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>新面的索引,失败返回 -1 </dd></dl>
<dl class="section note"><dt>注解</dt><dd>自动创建/查找半边并设置对侧关系;面法向遵循右手定则 </dd></dl>
</div>
</div>
<a id="a1827a1364d3f1cb07a740050c0a0ed8e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1827a1364d3f1cb07a740050c0a0ed8e">&#9670;&nbsp;</a></span>add_vertex()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int vde::mesh::HalfedgeMesh::add_vertex </td>
<td>(</td>
<td class="paramtype">const Point3D &amp;&#160;</td>
<td class="paramname"><em>p</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>添加顶点 </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>3D 坐标 </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>新顶点的索引(0-based </dd></dl>
</div>
</div>
<a id="a19ee3427d89d178f863e116e8eb275ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19ee3427d89d178f863e116e8eb275ef">&#9670;&nbsp;</a></span>bounds()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">AABB3D vde::mesh::HalfedgeMesh::bounds </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>网格包围盒 </p>
<dl class="section return"><dt>返回</dt><dd>AABB3D 轴对齐包围盒 </dd></dl>
</div>
</div>
<a id="a0bd4ed920cc52017f730a56069f80bcb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0bd4ed920cc52017f730a56069f80bcb">&#9670;&nbsp;</a></span>build_from_triangles()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void vde::mesh::HalfedgeMesh::build_from_triangles </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; Point3D &gt; &amp;&#160;</td>
<td class="paramname"><em>verts</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::array&lt; int, 3 &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>tris</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>从三角形列表批量构建半边形网格 </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">verts</td><td>顶点位置数组 </td></tr>
<tr><td class="paramname">tris</td><td>三角形索引数组,每个 {i0,i1,i2} </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>注解</dt><dd>等价于反复调用 add_vertex + add_face,但内部做批处理优化 <div class="fragment"><div class="line"><a class="code" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a3cf3f997b8a91cf9ce7305f1643c6715">HalfedgeMesh</a> mesh;</div>
<div class="line">mesh.build_from_triangles(vertices, triangles);</div>
<div class="ttc" id="aclassvde_1_1mesh_1_1HalfedgeMesh_html_a3cf3f997b8a91cf9ce7305f1643c6715"><div class="ttname"><a href="classvde_1_1mesh_1_1HalfedgeMesh.html#a3cf3f997b8a91cf9ce7305f1643c6715">vde::mesh::HalfedgeMesh::HalfedgeMesh</a></div><div class="ttdeci">HalfedgeMesh()=default</div></div>
</div><!-- fragment --> </dd></dl>
</div>
</div>
<a id="a7341a74f7a154092a5c8b74efae23878"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7341a74f7a154092a5c8b74efae23878">&#9670;&nbsp;</a></span>clear()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void vde::mesh::HalfedgeMesh::clear </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>清空所有数据 </p>
</div>
</div>
<a id="a0a5a696eb308fe8db188c71919e7f1f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a5a696eb308fe8db188c71919e7f1f1">&#9670;&nbsp;</a></span>face()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="structvde_1_1mesh_1_1Face.html">Face</a>&amp; vde::mesh::HalfedgeMesh::face </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>idx</em></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>访问面 </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">idx</td><td>面索引 </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd><a class="el" href="structvde_1_1mesh_1_1Face.html" title="面元素">Face</a> 只读引用 </dd></dl>
<p class="definition">在文件 <a class="el" href="halfedge__mesh_8h_source.html">halfedge_mesh.h</a><a class="el" href="halfedge__mesh_8h_source.html#l00125">125</a> 行定义.</p>
</div>
</div>
<a id="abf4fa00d52c46f9b0b0f0498efc4142f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf4fa00d52c46f9b0b0f0498efc4142f">&#9670;&nbsp;</a></span>face_normal()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Vector3D vde::mesh::HalfedgeMesh::face_normal </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>fi</em></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">fi</td><td>面索引 </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>(v1-v0)×(v2-v0) 归一化结果 </dd></dl>
</div>
</div>
<a id="ab19df827e90175685988545f40033f09"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab19df827e90175685988545f40033f09">&#9670;&nbsp;</a></span>face_vertices()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;int&gt; vde::mesh::HalfedgeMesh::face_vertices </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>fi</em></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">fi</td><td>面索引 </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>顶点索引序列 </dd></dl>
</div>
</div>
<a id="a526514ecf176c23e38b9a8bbe75f40e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a526514ecf176c23e38b9a8bbe75f40e3">&#9670;&nbsp;</a></span>faces_range()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FaceRange vde::mesh::HalfedgeMesh::faces_range </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>获取所有面范围(range-based for 支持) </p>
<dl class="section return"><dt>返回</dt><dd>FaceRange 对象 <div class="fragment"><div class="line"><span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; f : mesh.faces_range()) { ... }</div>
</div><!-- fragment --> </dd></dl>
</div>
</div>
<a id="a6c33da9af30c271abc0cb2a47f2a2a6e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6c33da9af30c271abc0cb2a47f2a2a6e">&#9670;&nbsp;</a></span>halfedge()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="structvde_1_1mesh_1_1Halfedge.html">Halfedge</a>&amp; vde::mesh::HalfedgeMesh::halfedge </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>idx</em></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>访问半边 </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">idx</td><td>半边索引 </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd><a class="el" href="structvde_1_1mesh_1_1Halfedge.html" title="半边数据结构元素">Halfedge</a> 只读引用 </dd></dl>
<p class="definition">在文件 <a class="el" href="halfedge__mesh_8h_source.html">halfedge_mesh.h</a><a class="el" href="halfedge__mesh_8h_source.html#l00132">132</a> 行定义.</p>
</div>
</div>
<a id="a9354f080cadd2e039565abd919aff9fc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9354f080cadd2e039565abd919aff9fc">&#9670;&nbsp;</a></span>is_boundary_edge()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool vde::mesh::HalfedgeMesh::is_boundary_edge </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>hei</em></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>是否为边界半边 </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">hei</td><td>半边索引 </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>没有所属面时为 true </dd></dl>
<p class="definition">在文件 <a class="el" href="halfedge__mesh_8h_source.html">halfedge_mesh.h</a><a class="el" href="halfedge__mesh_8h_source.html#l00163">163</a> 行定义.</p>
</div>
</div>
<a id="a89748143178c22c4c1e320edf2bee126"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a89748143178c22c4c1e320edf2bee126">&#9670;&nbsp;</a></span>is_boundary_vertex()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool vde::mesh::HalfedgeMesh::is_boundary_vertex </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>vi</em></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">vi</td><td>顶点索引 </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>邻接任何边界半边时为 true </dd></dl>
</div>
</div>
<a id="a8658d9c869ab257d8324f0251713d50b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8658d9c869ab257d8324f0251713d50b">&#9670;&nbsp;</a></span>num_edges()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t vde::mesh::HalfedgeMesh::num_edges </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>边数量 </p>
<dl class="section return"><dt>返回</dt><dd>halfedges_.size() / 2 </dd></dl>
<p class="definition">在文件 <a class="el" href="halfedge__mesh_8h_source.html">halfedge_mesh.h</a><a class="el" href="halfedge__mesh_8h_source.html#l00111">111</a> 行定义.</p>
</div>
</div>
<a id="a43505aa1d6b8896645578b21fd2949d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a43505aa1d6b8896645578b21fd2949d3">&#9670;&nbsp;</a></span>num_faces()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t vde::mesh::HalfedgeMesh::num_faces </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>面数量 </p>
<dl class="section return"><dt>返回</dt><dd>faces_ 大小 </dd></dl>
<p class="definition">在文件 <a class="el" href="halfedge__mesh_8h_source.html">halfedge_mesh.h</a><a class="el" href="halfedge__mesh_8h_source.html#l00105">105</a> 行定义.</p>
</div>
</div>
<a id="a16c2789f302c8b12e721f6b963fad98e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a16c2789f302c8b12e721f6b963fad98e">&#9670;&nbsp;</a></span>num_vertices()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t vde::mesh::HalfedgeMesh::num_vertices </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>顶点数量 </p>
<dl class="section return"><dt>返回</dt><dd>vertices_ 大小 </dd></dl>
<p class="definition">在文件 <a class="el" href="halfedge__mesh_8h_source.html">halfedge_mesh.h</a><a class="el" href="halfedge__mesh_8h_source.html#l00099">99</a> 行定义.</p>
</div>
</div>
<a id="a71f6edeaaf7df460a055d075befca4bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71f6edeaaf7df460a055d075befca4bb">&#9670;&nbsp;</a></span>set_vertex()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void vde::mesh::HalfedgeMesh::set_vertex </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const Point3D &amp;&#160;</td>
<td class="paramname"><em>p</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></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>更新顶点位置 </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">idx</td><td>顶点索引 </td></tr>
<tr><td class="paramname">p</td><td>新坐标 </td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>注解</dt><dd>标记法向缓存为脏,下次查询时重新计算 </dd></dl>
<p class="definition">在文件 <a class="el" href="halfedge__mesh_8h_source.html">halfedge_mesh.h</a><a class="el" href="halfedge__mesh_8h_source.html#l00140">140</a> 行定义.</p>
</div>
</div>
<a id="a4853a3874d9d74ff7cdf8047821adeda"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4853a3874d9d74ff7cdf8047821adeda">&#9670;&nbsp;</a></span>update_normals()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void vde::mesh::HalfedgeMesh::update_normals </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>重新计算所有面法向和顶点法向 </p>
<dl class="section note"><dt>注解</dt><dd>修改顶点位置后自动标记脏位,调用此方法触发重新计算 </dd></dl>
</div>
</div>
<a id="a488d7ea74c00ed137f068ffd31e43eb6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a488d7ea74c00ed137f068ffd31e43eb6">&#9670;&nbsp;</a></span>vertex()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const Point3D&amp; vde::mesh::HalfedgeMesh::vertex </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>idx</em></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>访问顶点 </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">idx</td><td>顶点索引,0 ≤ idx &lt; <a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a16c2789f302c8b12e721f6b963fad98e" title="顶点数量">num_vertices()</a> </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>顶点坐标只读引用 </dd></dl>
<p class="definition">在文件 <a class="el" href="halfedge__mesh_8h_source.html">halfedge_mesh.h</a><a class="el" href="halfedge__mesh_8h_source.html#l00118">118</a> 行定义.</p>
</div>
</div>
<a id="abf64a1f6d143d248754469793dbc6277"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf64a1f6d143d248754469793dbc6277">&#9670;&nbsp;</a></span>vertex_faces()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;int&gt; vde::mesh::HalfedgeMesh::vertex_faces </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>vi</em></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">vi</td><td>顶点索引 </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>所有以 vi 为顶点的面索引 </dd></dl>
</div>
</div>
<a id="a127647036280c96e22296fcb89566bc6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a127647036280c96e22296fcb89566bc6">&#9670;&nbsp;</a></span>vertex_normal()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Vector3D vde::mesh::HalfedgeMesh::vertex_normal </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>vi</em></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">vi</td><td>顶点索引 </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>归一化顶点法向 </dd></dl>
</div>
</div>
<a id="aa03581ac1863757b3989902dfb3d2879"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa03581ac1863757b3989902dfb3d2879">&#9670;&nbsp;</a></span>vertex_one_ring()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">VertexOneRing vde::mesh::HalfedgeMesh::vertex_one_ring </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>vi</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>获取顶点的 1-ring 邻域迭代器 </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">vi</td><td>顶点索引 </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>VertexOneRing 对象 <div class="fragment"><div class="line"><span class="keywordflow">for</span> (<span class="keywordtype">int</span> vj : mesh.vertex_one_ring(vi)) {</div>
<div class="line"> <span class="comment">// vj 是 vi 的直接邻居</span></div>
<div class="line">}</div>
</div><!-- fragment --> </dd></dl>
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>include/vde/mesh/<a class="el" href="halfedge__mesh_8h_source.html">halfedge_mesh.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_1mesh.html">mesh</a></li><li class="navelem"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html">HalfedgeMesh</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>