846 lines
42 KiB
HTML
846 lines
42 KiB
HTML
<!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
|
||
 <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&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&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&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> |
|
||
<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 <<a class="el" href="halfedge__mesh_8h_source.html">halfedge_mesh.h</a>></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"> </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"> </td></tr>
|
||
<tr class="memitem:a7341a74f7a154092a5c8b74efae23878"><td class="memItemLeft" align="right" valign="top">void </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"> </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"> </td></tr>
|
||
<tr class="memitem:a1827a1364d3f1cb07a740050c0a0ed8e"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a1827a1364d3f1cb07a740050c0a0ed8e">add_vertex</a> (const Point3D &p)</td></tr>
|
||
<tr class="memdesc:a1827a1364d3f1cb07a740050c0a0ed8e"><td class="mdescLeft"> </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"> </td></tr>
|
||
<tr class="memitem:a753347dbfdd15ed01ce2b73b9d05ebd5"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a753347dbfdd15ed01ce2b73b9d05ebd5">add_face</a> (const std::vector< int > &vertex_indices)</td></tr>
|
||
<tr class="memdesc:a753347dbfdd15ed01ce2b73b9d05ebd5"><td class="mdescLeft"> </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"> </td></tr>
|
||
<tr class="memitem:a0bd4ed920cc52017f730a56069f80bcb"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html#a0bd4ed920cc52017f730a56069f80bcb">build_from_triangles</a> (const std::vector< Point3D > &verts, const std::vector< std::array< int, 3 >> &tris)</td></tr>
|
||
<tr class="memdesc:a0bd4ed920cc52017f730a56069f80bcb"><td class="mdescLeft"> </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"> </td></tr>
|
||
<tr class="memitem:a16c2789f302c8b12e721f6b963fad98e"><td class="memItemLeft" align="right" valign="top">size_t </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"> </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"> </td></tr>
|
||
<tr class="memitem:a43505aa1d6b8896645578b21fd2949d3"><td class="memItemLeft" align="right" valign="top">size_t </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"> </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"> </td></tr>
|
||
<tr class="memitem:a8658d9c869ab257d8324f0251713d50b"><td class="memItemLeft" align="right" valign="top">size_t </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"> </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"> </td></tr>
|
||
<tr class="memitem:a488d7ea74c00ed137f068ffd31e43eb6"><td class="memItemLeft" align="right" valign="top">const Point3D & </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"> </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"> </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> & </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"> </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"> </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> & </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"> </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"> </td></tr>
|
||
<tr class="memitem:a71f6edeaaf7df460a055d075befca4bb"><td class="memItemLeft" align="right" valign="top">void </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 &p)</td></tr>
|
||
<tr class="memdesc:a71f6edeaaf7df460a055d075befca4bb"><td class="mdescLeft"> </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"> </td></tr>
|
||
<tr class="memitem:ab19df827e90175685988545f40033f09"><td class="memItemLeft" align="right" valign="top">std::vector< int > </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"> </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"> </td></tr>
|
||
<tr class="memitem:abf64a1f6d143d248754469793dbc6277"><td class="memItemLeft" align="right" valign="top">std::vector< int > </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"> </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"> </td></tr>
|
||
<tr class="memitem:a9354f080cadd2e039565abd919aff9fc"><td class="memItemLeft" align="right" valign="top">bool </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"> </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"> </td></tr>
|
||
<tr class="memitem:a89748143178c22c4c1e320edf2bee126"><td class="memItemLeft" align="right" valign="top">bool </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"> </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"> </td></tr>
|
||
<tr class="memitem:abf4fa00d52c46f9b0b0f0498efc4142f"><td class="memItemLeft" align="right" valign="top">Vector3D </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"> </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"> </td></tr>
|
||
<tr class="memitem:a127647036280c96e22296fcb89566bc6"><td class="memItemLeft" align="right" valign="top">Vector3D </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"> </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"> </td></tr>
|
||
<tr class="memitem:a4853a3874d9d74ff7cdf8047821adeda"><td class="memItemLeft" align="right" valign="top">void </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"> </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"> </td></tr>
|
||
<tr class="memitem:a19ee3427d89d178f863e116e8eb275ef"><td class="memItemLeft" align="right" valign="top">AABB3D </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"> </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"> </td></tr>
|
||
<tr class="memitem:a526514ecf176c23e38b9a8bbe75f40e3"><td class="memItemLeft" align="right" valign="top">FaceRange </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"> </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"> </td></tr>
|
||
<tr class="memitem:aa03581ac1863757b3989902dfb3d2879"><td class="memItemLeft" align="right" valign="top">VertexOneRing </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"> </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"> </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">◆ </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">◆ </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< int > & </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">◆ </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 & </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">◆ </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">◆ </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< Point3D > & </td>
|
||
<td class="paramname"><em>verts</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const std::vector< std::array< int, 3 >> & </td>
|
||
<td class="paramname"><em>tris</em> </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">◆ </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">◆ </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>& vde::mesh::HalfedgeMesh::face </td>
|
||
<td>(</td>
|
||
<td class="paramtype">size_t </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">◆ </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 </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">◆ </a></span>face_vertices()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::vector<int> vde::mesh::HalfedgeMesh::face_vertices </td>
|
||
<td>(</td>
|
||
<td class="paramtype">int </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">◆ </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>& f : mesh.faces_range()) { ... }</div>
|
||
</div><!-- fragment --> </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a6c33da9af30c271abc0cb2a47f2a2a6e"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a6c33da9af30c271abc0cb2a47f2a2a6e">◆ </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>& vde::mesh::HalfedgeMesh::halfedge </td>
|
||
<td>(</td>
|
||
<td class="paramtype">size_t </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">◆ </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 </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">◆ </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 </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">◆ </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">◆ </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">◆ </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">◆ </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 </td>
|
||
<td class="paramname"><em>idx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const Point3D & </td>
|
||
<td class="paramname"><em>p</em> </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">◆ </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">◆ </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& vde::mesh::HalfedgeMesh::vertex </td>
|
||
<td>(</td>
|
||
<td class="paramtype">size_t </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 < <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">◆ </a></span>vertex_faces()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">std::vector<int> vde::mesh::HalfedgeMesh::vertex_faces </td>
|
||
<td>(</td>
|
||
<td class="paramtype">int </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">◆ </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 </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">◆ </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 </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>
|