1665 lines
112 KiB
HTML
1665 lines
112 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: 基础模块</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('group__foundation.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="#nested-classes">类</a> |
|
|||
|
|
<a href="#typedef-members">类型定义</a> |
|
|||
|
|
<a href="#enum-members">枚举</a> |
|
|||
|
|
<a href="#func-members">函数</a> </div>
|
|||
|
|
<div class="headertitle">
|
|||
|
|
<div class="title">基础模块</div> </div>
|
|||
|
|
</div><!--header-->
|
|||
|
|
<div class="contents">
|
|||
|
|
|
|||
|
|
<p>数学类型、公差系统、精确谓词、文件 I/O、序列化
|
|||
|
|
<a href="#details">更多...</a></p>
|
|||
|
|
<table class="memberdecls">
|
|||
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
|
|||
|
|
类</h2></td></tr>
|
|||
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1foundation_1_1Interval.html">vde::foundation::Interval</a></td></tr>
|
|||
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">双精度区间算术类 <a href="classvde_1_1foundation_1_1Interval.html#details">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structvde_1_1foundation_1_1GltfOptions.html">vde::foundation::GltfOptions</a></td></tr>
|
|||
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">glTF 2.0 导出选项 <a href="structvde_1_1foundation_1_1GltfOptions.html#details">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structvde_1_1foundation_1_1ObjMeshData.html">vde::foundation::ObjMeshData</a></td></tr>
|
|||
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">OBJ 文件解析结果数据结构 <a href="structvde_1_1foundation_1_1ObjMeshData.html#details">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structvde_1_1foundation_1_1StlTriangle.html">vde::foundation::StlTriangle</a></td></tr>
|
|||
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">STL 三角形面片 <a href="structvde_1_1foundation_1_1StlTriangle.html#details">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1foundation_1_1MemoryPool.html">vde::foundation::MemoryPool< T ></a></td></tr>
|
|||
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">固定块大小的内存池 <a href="classvde_1_1foundation_1_1MemoryPool.html#details">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structvde_1_1foundation_1_1Predicates.html">vde::foundation::Predicates</a></td></tr>
|
|||
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">统一谓词接口 — 编译时选择 GMP 或自适应双精度后端 <a href="structvde_1_1foundation_1_1Predicates.html#details">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structvde_1_1foundation_1_1SerializedMesh.html">vde::foundation::SerializedMesh</a></td></tr>
|
|||
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">二进制序列化格式的网格数据结构 <a href="structvde_1_1foundation_1_1SerializedMesh.html#details">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1foundation_1_1BinarySerializer.html">vde::foundation::BinarySerializer</a></td></tr>
|
|||
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">二进制序列化器 <a href="classvde_1_1foundation_1_1BinarySerializer.html#details">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1foundation_1_1Tolerance.html">vde::foundation::Tolerance</a></td></tr>
|
|||
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">分层容差管理类 <a href="classvde_1_1foundation_1_1Tolerance.html#details">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classvde_1_1foundation_1_1ToleranceScope.html">vde::foundation::ToleranceScope</a></td></tr>
|
|||
|
|
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">局部容差作用域(RAII) <a href="classvde_1_1foundation_1_1ToleranceScope.html#details">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
</table><table class="memberdecls">
|
|||
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
|
|||
|
|
类型定义</h2></td></tr>
|
|||
|
|
<tr class="memitem:gad0fa8cf732073ffea1e2d10400ec8d26"><td class="memTemplParams" colspan="2">template<typename T , size_t Dim> </td></tr>
|
|||
|
|
<tr class="memitem:gad0fa8cf732073ffea1e2d10400ec8d26"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__foundation.html#gad0fa8cf732073ffea1e2d10400ec8d26">vde::foundation::Point</a> = Eigen::Matrix< T, Dim, 1 ></td></tr>
|
|||
|
|
<tr class="memdesc:gad0fa8cf732073ffea1e2d10400ec8d26"><td class="mdescLeft"> </td><td class="mdescRight">通用 N 维点类型(使用 Eigen 列向量) <a href="group__foundation.html#gad0fa8cf732073ffea1e2d10400ec8d26">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:gad0fa8cf732073ffea1e2d10400ec8d26"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga835975ee722dbebc123fdff3c95728c2"><td class="memTemplParams" colspan="2">template<typename T , size_t Dim> </td></tr>
|
|||
|
|
<tr class="memitem:ga835975ee722dbebc123fdff3c95728c2"><td class="memTemplItemLeft" align="right" valign="top">using </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga835975ee722dbebc123fdff3c95728c2">vde::foundation::Vector</a> = Eigen::Matrix< T, Dim, 1 ></td></tr>
|
|||
|
|
<tr class="memdesc:ga835975ee722dbebc123fdff3c95728c2"><td class="mdescLeft"> </td><td class="mdescRight">通用 N 维向量类型(与 Point 相同的列向量表示) <a href="group__foundation.html#ga835975ee722dbebc123fdff3c95728c2">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga835975ee722dbebc123fdff3c95728c2"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
</table><table class="memberdecls">
|
|||
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
|
|||
|
|
枚举</h2></td></tr>
|
|||
|
|
<tr class="memitem:ga856bcf915448b737fbb1d73db2c10a85"><td class="memItemLeft" align="right" valign="top">enum class  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga856bcf915448b737fbb1d73db2c10a85">vde::foundation::ErrorCode</a> : int32_t { <br />
|
|||
|
|
  <a class="el" href="group__foundation.html#gga856bcf915448b737fbb1d73db2c10a85a8c632159fa131f09d04f94e3cbcd8782">vde::foundation::kSuccess</a> = 0
|
|||
|
|
, <a class="el" href="group__foundation.html#gga856bcf915448b737fbb1d73db2c10a85a80fdc050363ea6925fa2e7eb7f0a94a0">vde::foundation::kInvalidArgument</a>
|
|||
|
|
, <a class="el" href="group__foundation.html#gga856bcf915448b737fbb1d73db2c10a85ac4283c91ae25b26dd77c5030baca028e">vde::foundation::kInvalidGeometry</a>
|
|||
|
|
, <a class="el" href="group__foundation.html#gga856bcf915448b737fbb1d73db2c10a85af8c2095f04b60f2ec0ca8fb825a94bf0">vde::foundation::kDegenerateCase</a>
|
|||
|
|
, <br />
|
|||
|
|
  <a class="el" href="group__foundation.html#gga856bcf915448b737fbb1d73db2c10a85ae8024a6eeff9d90cc3babff8acaec9c9">vde::foundation::kNotImplemented</a>
|
|||
|
|
, <a class="el" href="group__foundation.html#gga856bcf915448b737fbb1d73db2c10a85a631fe1d70108dee6ae7d6acde27f76ef">vde::foundation::kNumericalError</a>
|
|||
|
|
, <a class="el" href="group__foundation.html#gga856bcf915448b737fbb1d73db2c10a85ab681eacb215899549d45805f02eeb40c">vde::foundation::kOutOfMemory</a>
|
|||
|
|
, <a class="el" href="group__foundation.html#gga856bcf915448b737fbb1d73db2c10a85afcd417a134c251034b0d61b07c826394">vde::foundation::kInternalError</a>
|
|||
|
|
<br />
|
|||
|
|
}</td></tr>
|
|||
|
|
<tr class="memdesc:ga856bcf915448b737fbb1d73db2c10a85"><td class="mdescLeft"> </td><td class="mdescRight">全局错误码枚举 <a href="group__foundation.html#ga856bcf915448b737fbb1d73db2c10a85">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga856bcf915448b737fbb1d73db2c10a85"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:gae42a60a99e11250a45ab0de45970c95f"><td class="memItemLeft" align="right" valign="top">enum class  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#gae42a60a99e11250a45ab0de45970c95f">vde::foundation::exact::Orientation</a> { <a class="el" href="group__foundation.html#ggae42a60a99e11250a45ab0de45970c95faba360a794737bcc8657a5b6e870d7ba8">vde::foundation::exact::Clockwise</a>
|
|||
|
|
, <a class="el" href="group__foundation.html#ggae42a60a99e11250a45ab0de45970c95fa8f23635f9ec49db2161fc5cddf033a79">vde::foundation::exact::CounterClockwise</a>
|
|||
|
|
, <a class="el" href="group__foundation.html#ggae42a60a99e11250a45ab0de45970c95fa817d9fd9977363770196b7b64da74bbb">vde::foundation::exact::Collinear</a>
|
|||
|
|
}</td></tr>
|
|||
|
|
<tr class="memdesc:gae42a60a99e11250a45ab0de45970c95f"><td class="mdescLeft"> </td><td class="mdescRight">二维定向测试结果 <a href="group__foundation.html#gae42a60a99e11250a45ab0de45970c95f">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:gae42a60a99e11250a45ab0de45970c95f"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:gaf44d45ba6402f725ee5d2cf828e25588"><td class="memItemLeft" align="right" valign="top">enum class  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#gaf44d45ba6402f725ee5d2cf828e25588">vde::foundation::exact::CircleTest</a> { <a class="el" href="group__foundation.html#ggaf44d45ba6402f725ee5d2cf828e25588a9b6d3000134648fc9f1e71094ae0847d">vde::foundation::exact::Inside</a>
|
|||
|
|
, <a class="el" href="group__foundation.html#ggaf44d45ba6402f725ee5d2cf828e25588a521c36a31c2762741cf0f8890cbe05e3">vde::foundation::exact::On</a>
|
|||
|
|
, <a class="el" href="group__foundation.html#ggaf44d45ba6402f725ee5d2cf828e25588a76fbf0ccd7fcd64879c2ff2119dc15a4">vde::foundation::exact::Outside</a>
|
|||
|
|
}</td></tr>
|
|||
|
|
<tr class="memdesc:gaf44d45ba6402f725ee5d2cf828e25588"><td class="mdescLeft"> </td><td class="mdescRight">圆测试结果 <a href="group__foundation.html#gaf44d45ba6402f725ee5d2cf828e25588">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:gaf44d45ba6402f725ee5d2cf828e25588"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
</table><table class="memberdecls">
|
|||
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
|||
|
|
函数</h2></td></tr>
|
|||
|
|
<tr class="memitem:ga828aee5891f4f4059932951e63f116e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__foundation.html#gae42a60a99e11250a45ab0de45970c95f">Orientation</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga828aee5891f4f4059932951e63f116e9">vde::foundation::exact::orient_2d</a> (const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> &a, const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> &b, const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> &c)</td></tr>
|
|||
|
|
<tr class="memdesc:ga828aee5891f4f4059932951e63f116e9"><td class="mdescLeft"> </td><td class="mdescRight">自适应精度二维定向测试(Shewchuk 算法) <a href="group__foundation.html#ga828aee5891f4f4059932951e63f116e9">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga828aee5891f4f4059932951e63f116e9"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga2047f44bf458da6b9ea19fdda1a7a2a7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__foundation.html#gae42a60a99e11250a45ab0de45970c95f">Orientation</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga2047f44bf458da6b9ea19fdda1a7a2a7">vde::foundation::exact::orient_3d</a> (const <a class="el" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> &a, const <a class="el" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> &b, const <a class="el" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> &c, const <a class="el" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> &d)</td></tr>
|
|||
|
|
<tr class="memdesc:ga2047f44bf458da6b9ea19fdda1a7a2a7"><td class="mdescLeft"> </td><td class="mdescRight">自适应精度三维定向测试 <a href="group__foundation.html#ga2047f44bf458da6b9ea19fdda1a7a2a7">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga2047f44bf458da6b9ea19fdda1a7a2a7"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:gadc741ceaf8679847e2c220c5c1b1dc77"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__foundation.html#gaf44d45ba6402f725ee5d2cf828e25588">CircleTest</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#gadc741ceaf8679847e2c220c5c1b1dc77">vde::foundation::exact::in_circle</a> (const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> &a, const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> &b, const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> &c, const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> &d)</td></tr>
|
|||
|
|
<tr class="memdesc:gadc741ceaf8679847e2c220c5c1b1dc77"><td class="mdescLeft"> </td><td class="mdescRight">自适应精度圆内测试(In-Circle Test) <a href="group__foundation.html#gadc741ceaf8679847e2c220c5c1b1dc77">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:gadc741ceaf8679847e2c220c5c1b1dc77"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:gabe62e4bbbb46304e5df75cf773269029"><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#gabe62e4bbbb46304e5df75cf773269029">vde::foundation::fmt_double</a> (double v, int precision=12)</td></tr>
|
|||
|
|
<tr class="memdesc:gabe62e4bbbb46304e5df75cf773269029"><td class="mdescLeft"> </td><td class="mdescRight">以 CAD 级别精度格式化双精度浮点数 <a href="group__foundation.html#gabe62e4bbbb46304e5df75cf773269029">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:gabe62e4bbbb46304e5df75cf773269029"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:gab2f1e3f24e1a358c3edabfb4fd3eb8a5"><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#gab2f1e3f24e1a358c3edabfb4fd3eb8a5">vde::foundation::fmt_iges_real</a> (double v, int=12)</td></tr>
|
|||
|
|
<tr class="memdesc:gab2f1e3f24e1a358c3edabfb4fd3eb8a5"><td class="mdescLeft"> </td><td class="mdescRight">IGES 格式实数输出 <a href="group__foundation.html#gab2f1e3f24e1a358c3edabfb4fd3eb8a5">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:gab2f1e3f24e1a358c3edabfb4fd3eb8a5"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga28a1536a709ef0b632f301375e081c98"><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga28a1536a709ef0b632f301375e081c98">vde::foundation::fmt_point</a> (const <a class="el" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">core::Point3D</a> &p, bool use_d=false)</td></tr>
|
|||
|
|
<tr class="memdesc:ga28a1536a709ef0b632f301375e081c98"><td class="mdescLeft"> </td><td class="mdescRight">格式化三维点为逗号分隔字符串 <a href="group__foundation.html#ga28a1536a709ef0b632f301375e081c98">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga28a1536a709ef0b632f301375e081c98"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga0966ff9f82904704cbf6fb6325179ec5"><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga0966ff9f82904704cbf6fb6325179ec5">vde::foundation::pad72</a> (const std::string &s)</td></tr>
|
|||
|
|
<tr class="memdesc:ga0966ff9f82904704cbf6fb6325179ec5"><td class="mdescLeft"> </td><td class="mdescRight">将字符串填充到恰好 72 个字符 <a href="group__foundation.html#ga0966ff9f82904704cbf6fb6325179ec5">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga0966ff9f82904704cbf6fb6325179ec5"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga4c722653de4d2a636ec36840bf570d9b"><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga4c722653de4d2a636ec36840bf570d9b">vde::foundation::format_iges_line</a> (const std::string &data, char section_char, int seq)</td></tr>
|
|||
|
|
<tr class="memdesc:ga4c722653de4d2a636ec36840bf570d9b"><td class="mdescLeft"> </td><td class="mdescRight">格式化 IGES 段落行 <a href="group__foundation.html#ga4c722653de4d2a636ec36840bf570d9b">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga4c722653de4d2a636ec36840bf570d9b"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga4082e53f9e3afe884a6ea7b2005abfd1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvde_1_1foundation_1_1Interval.html">Interval</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga4082e53f9e3afe884a6ea7b2005abfd1">vde::foundation::orient_2d_interval</a> (double ax, double ay, double bx, double by, double cx, double cy)</td></tr>
|
|||
|
|
<tr class="memdesc:ga4082e53f9e3afe884a6ea7b2005abfd1"><td class="mdescLeft"> </td><td class="mdescRight">二维定向行列式的区间验证 <a href="group__foundation.html#ga4082e53f9e3afe884a6ea7b2005abfd1">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga4082e53f9e3afe884a6ea7b2005abfd1"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga90b3b7375e3ad4e30cf60a286515d95b"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga90b3b7375e3ad4e30cf60a286515d95b">vde::foundation::orient_2d_verified</a> (double ax, double ay, double bx, double by, double cx, double cy)</td></tr>
|
|||
|
|
<tr class="memdesc:ga90b3b7375e3ad4e30cf60a286515d95b"><td class="mdescLeft"> </td><td class="mdescRight">使用区间算术验证 orient_2d 结果 <a href="group__foundation.html#ga90b3b7375e3ad4e30cf60a286515d95b">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga90b3b7375e3ad4e30cf60a286515d95b"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga51de361e7a704ba10d0d34e006b9b1fd"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga51de361e7a704ba10d0d34e006b9b1fd">vde::foundation::write_gltf</a> (const std::string &filepath, const <a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html">mesh::HalfedgeMesh</a> &mesh, const <a class="el" href="structvde_1_1foundation_1_1GltfOptions.html">GltfOptions</a> &options=<a class="el" href="structvde_1_1foundation_1_1GltfOptions.html">GltfOptions</a>{})</td></tr>
|
|||
|
|
<tr class="memdesc:ga51de361e7a704ba10d0d34e006b9b1fd"><td class="mdescLeft"> </td><td class="mdescRight">导出网格为 glTF 2.0 / GLB 格式 <a href="group__foundation.html#ga51de361e7a704ba10d0d34e006b9b1fd">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga51de361e7a704ba10d0d34e006b9b1fd"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga05a128dbc89f2e7ee633bdc640df6fe5"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga05a128dbc89f2e7ee633bdc640df6fe5">vde::foundation::write_brep_gltf</a> (const std::string &filepath, const <a class="el" href="classvde_1_1brep_1_1BrepModel.html">brep::BrepModel</a> &model, int tessellation_res=32)</td></tr>
|
|||
|
|
<tr class="memdesc:ga05a128dbc89f2e7ee633bdc640df6fe5"><td class="mdescLeft"> </td><td class="mdescRight">导出 B-Rep 模型为 GLB 格式(通过面片化) <a href="group__foundation.html#ga05a128dbc89f2e7ee633bdc640df6fe5">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga05a128dbc89f2e7ee633bdc640df6fe5"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga27a7d806cf76dc23ad6ac73ae3ce0338"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structvde_1_1foundation_1_1ObjMeshData.html">ObjMeshData</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga27a7d806cf76dc23ad6ac73ae3ce0338">vde::foundation::read_obj</a> (const std::string &filepath)</td></tr>
|
|||
|
|
<tr class="memdesc:ga27a7d806cf76dc23ad6ac73ae3ce0338"><td class="mdescLeft"> </td><td class="mdescRight">读取 Wavefront OBJ 文件 <a href="group__foundation.html#ga27a7d806cf76dc23ad6ac73ae3ce0338">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga27a7d806cf76dc23ad6ac73ae3ce0338"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga3f00800cc4a2d9901744427c0920f1b1"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga3f00800cc4a2d9901744427c0920f1b1">vde::foundation::write_obj</a> (const std::string &filepath, const <a class="el" href="structvde_1_1foundation_1_1ObjMeshData.html">ObjMeshData</a> &data)</td></tr>
|
|||
|
|
<tr class="memdesc:ga3f00800cc4a2d9901744427c0920f1b1"><td class="mdescLeft"> </td><td class="mdescRight">写入 Wavefront OBJ 文件 <a href="group__foundation.html#ga3f00800cc4a2d9901744427c0920f1b1">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga3f00800cc4a2d9901744427c0920f1b1"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga2f3d702e9426a55baf9da37244d26483"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html">mesh::HalfedgeMesh</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga2f3d702e9426a55baf9da37244d26483">vde::foundation::read_ply</a> (const std::string &filepath)</td></tr>
|
|||
|
|
<tr class="memdesc:ga2f3d702e9426a55baf9da37244d26483"><td class="mdescLeft"> </td><td class="mdescRight">读取 PLY 文件(Stanford Polygon Format) <a href="group__foundation.html#ga2f3d702e9426a55baf9da37244d26483">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga2f3d702e9426a55baf9da37244d26483"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga5601dbe30446f41c9a8f033b0b4f39ed"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga5601dbe30446f41c9a8f033b0b4f39ed">vde::foundation::write_ply</a> (const std::string &filepath, const <a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html">mesh::HalfedgeMesh</a> &mesh)</td></tr>
|
|||
|
|
<tr class="memdesc:ga5601dbe30446f41c9a8f033b0b4f39ed"><td class="mdescLeft"> </td><td class="mdescRight">写入 PLY 文件(ASCII 格式) <a href="group__foundation.html#ga5601dbe30446f41c9a8f033b0b4f39ed">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga5601dbe30446f41c9a8f033b0b4f39ed"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga19bedcf026cfa80bbe7700f25891ca36"><td class="memItemLeft" align="right" valign="top">std::vector< <a class="el" href="structvde_1_1foundation_1_1StlTriangle.html">StlTriangle</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga19bedcf026cfa80bbe7700f25891ca36">vde::foundation::read_stl</a> (const std::string &filepath)</td></tr>
|
|||
|
|
<tr class="memdesc:ga19bedcf026cfa80bbe7700f25891ca36"><td class="mdescLeft"> </td><td class="mdescRight">读取 STL 文件(自动检测格式) <a href="group__foundation.html#ga19bedcf026cfa80bbe7700f25891ca36">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga19bedcf026cfa80bbe7700f25891ca36"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga47f7c33cd0e2a2f82cad758517a388a7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga47f7c33cd0e2a2f82cad758517a388a7">vde::foundation::write_stl</a> (const std::string &filepath, const std::vector< <a class="el" href="structvde_1_1foundation_1_1StlTriangle.html">StlTriangle</a> > &tris)</td></tr>
|
|||
|
|
<tr class="memdesc:ga47f7c33cd0e2a2f82cad758517a388a7"><td class="mdescLeft"> </td><td class="mdescRight">写入二进制 STL 文件 <a href="group__foundation.html#ga47f7c33cd0e2a2f82cad758517a388a7">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga47f7c33cd0e2a2f82cad758517a388a7"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga3357e1dfba02250f2c6b85d276997253"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga3357e1dfba02250f2c6b85d276997253">vde::foundation::write_stl_ascii</a> (const std::string &filepath, const std::vector< <a class="el" href="structvde_1_1foundation_1_1StlTriangle.html">StlTriangle</a> > &tris)</td></tr>
|
|||
|
|
<tr class="memdesc:ga3357e1dfba02250f2c6b85d276997253"><td class="mdescLeft"> </td><td class="mdescRight">写入 ASCII STL 文件 <a href="group__foundation.html#ga3357e1dfba02250f2c6b85d276997253">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga3357e1dfba02250f2c6b85d276997253"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga1841f29d20da233610d643a5725179bc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__foundation.html#gae42a60a99e11250a45ab0de45970c95f">exact::Orientation</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga1841f29d20da233610d643a5725179bc">vde::foundation::orient</a> (const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> &a, const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> &b, const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> &c)</td></tr>
|
|||
|
|
<tr class="memdesc:ga1841f29d20da233610d643a5725179bc"><td class="mdescLeft"> </td><td class="mdescRight">二维定向测试便捷封装 <a href="group__foundation.html#ga1841f29d20da233610d643a5725179bc">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga1841f29d20da233610d643a5725179bc"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga0de768376e4db52c1549ae6c046e9909"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__foundation.html#gae42a60a99e11250a45ab0de45970c95f">exact::Orientation</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga0de768376e4db52c1549ae6c046e9909">vde::foundation::orient</a> (const <a class="el" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> &a, const <a class="el" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> &b, const <a class="el" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> &c, const <a class="el" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> &d)</td></tr>
|
|||
|
|
<tr class="memdesc:ga0de768376e4db52c1549ae6c046e9909"><td class="mdescLeft"> </td><td class="mdescRight">三维定向测试便捷封装 <a href="group__foundation.html#ga0de768376e4db52c1549ae6c046e9909">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga0de768376e4db52c1549ae6c046e9909"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
<tr class="memitem:ga0742be5b7fbe28e2dca498afb9ec99af"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__foundation.html#gaf44d45ba6402f725ee5d2cf828e25588">exact::CircleTest</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__foundation.html#ga0742be5b7fbe28e2dca498afb9ec99af">vde::foundation::in_circle</a> (const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> &a, const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> &b, const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> &c, const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> &d)</td></tr>
|
|||
|
|
<tr class="memdesc:ga0742be5b7fbe28e2dca498afb9ec99af"><td class="mdescLeft"> </td><td class="mdescRight">圆内测试便捷封装 <a href="group__foundation.html#ga0742be5b7fbe28e2dca498afb9ec99af">更多...</a><br /></td></tr>
|
|||
|
|
<tr class="separator:ga0742be5b7fbe28e2dca498afb9ec99af"><td class="memSeparator" colspan="2"> </td></tr>
|
|||
|
|
</table>
|
|||
|
|
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
|
|||
|
|
<p>数学类型、公差系统、精确谓词、文件 I/O、序列化 </p>
|
|||
|
|
<p>基础模块提供 VDE 引擎的核心基础设施:</p><ul>
|
|||
|
|
<li>数学类型定义(点、向量、矩阵)</li>
|
|||
|
|
<li>精确几何谓词(自适应双精度 + GMP 可选后端)</li>
|
|||
|
|
<li>区间算术验证</li>
|
|||
|
|
<li>分层容差管理</li>
|
|||
|
|
<li>内存池分配</li>
|
|||
|
|
<li>文件 I/O(STL、OBJ、PLY、glTF)</li>
|
|||
|
|
<li>格式化工具与序列化</li>
|
|||
|
|
</ul>
|
|||
|
|
<p>提供整个引擎使用的底层基础设施。 </p>
|
|||
|
|
<h2 class="groupheader">类型定义说明</h2>
|
|||
|
|
<a id="gad0fa8cf732073ffea1e2d10400ec8d26"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#gad0fa8cf732073ffea1e2d10400ec8d26">◆ </a></span>Point</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<div class="memtemplate">
|
|||
|
|
template<typename T , size_t Dim> </div>
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">using <a class="el" href="group__foundation.html#gad0fa8cf732073ffea1e2d10400ec8d26">vde::foundation::Point</a> = typedef Eigen::Matrix<T, Dim, 1></td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</div><div class="memdoc">
|
|||
|
|
|
|||
|
|
<p>通用 N 维点类型(使用 Eigen 列向量) </p>
|
|||
|
|
<dl class="tparams"><dt>模板参数</dt><dd>
|
|||
|
|
<table class="tparams">
|
|||
|
|
<tr><td class="paramname">T</td><td>标量类型(double, float 等) </td></tr>
|
|||
|
|
<tr><td class="paramname">Dim</td><td>维度 </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
|
|||
|
|
<p class="definition">在文件 <a class="el" href="math__types_8h_source.html">math_types.h</a> 第 <a class="el" href="math__types_8h_source.html#l00017">17</a> 行定义.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga835975ee722dbebc123fdff3c95728c2"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga835975ee722dbebc123fdff3c95728c2">◆ </a></span>Vector</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<div class="memtemplate">
|
|||
|
|
template<typename T , size_t Dim> </div>
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">using <a class="el" href="group__foundation.html#ga835975ee722dbebc123fdff3c95728c2">vde::foundation::Vector</a> = typedef Eigen::Matrix<T, Dim, 1></td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</div><div class="memdoc">
|
|||
|
|
|
|||
|
|
<p>通用 N 维向量类型(与 Point 相同的列向量表示) </p>
|
|||
|
|
<p>虽然类型相同,但语义上区分几何点(位置)和向量(方向/位移)。</p>
|
|||
|
|
<dl class="tparams"><dt>模板参数</dt><dd>
|
|||
|
|
<table class="tparams">
|
|||
|
|
<tr><td class="paramname">T</td><td>标量类型 </td></tr>
|
|||
|
|
<tr><td class="paramname">Dim</td><td>维度 </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
|
|||
|
|
<p class="definition">在文件 <a class="el" href="math__types_8h_source.html">math_types.h</a> 第 <a class="el" href="math__types_8h_source.html#l00030">30</a> 行定义.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<h2 class="groupheader">枚举类型说明</h2>
|
|||
|
|
<a id="gaf44d45ba6402f725ee5d2cf828e25588"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#gaf44d45ba6402f725ee5d2cf828e25588">◆ </a></span>CircleTest</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="mlabels">
|
|||
|
|
<tr>
|
|||
|
|
<td class="mlabels-left">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">enum <a class="el" href="group__foundation.html#gaf44d45ba6402f725ee5d2cf828e25588">vde::foundation::exact::CircleTest</a></td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</td>
|
|||
|
|
<td class="mlabels-right">
|
|||
|
|
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</div><div class="memdoc">
|
|||
|
|
|
|||
|
|
<p>圆测试结果 </p>
|
|||
|
|
<p>判断点 d 相对于三角形 abc 外接圆的位置。 </p>
|
|||
|
|
<table class="fieldtable">
|
|||
|
|
<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a id="ggaf44d45ba6402f725ee5d2cf828e25588a9b6d3000134648fc9f1e71094ae0847d"></a>Inside </td><td class="fielddoc"></td></tr>
|
|||
|
|
<tr><td class="fieldname"><a id="ggaf44d45ba6402f725ee5d2cf828e25588a521c36a31c2762741cf0f8890cbe05e3"></a>On </td><td class="fielddoc"></td></tr>
|
|||
|
|
<tr><td class="fieldname"><a id="ggaf44d45ba6402f725ee5d2cf828e25588a76fbf0ccd7fcd64879c2ff2119dc15a4"></a>Outside </td><td class="fielddoc"></td></tr>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
<p class="definition">在文件 <a class="el" href="exact__predicates_8h_source.html">exact_predicates.h</a> 第 <a class="el" href="exact__predicates_8h_source.html#l00022">22</a> 行定义.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga856bcf915448b737fbb1d73db2c10a85"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga856bcf915448b737fbb1d73db2c10a85">◆ </a></span>ErrorCode</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="mlabels">
|
|||
|
|
<tr>
|
|||
|
|
<td class="mlabels-left">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">enum <a class="el" href="group__foundation.html#ga856bcf915448b737fbb1d73db2c10a85">vde::foundation::ErrorCode</a> : int32_t</td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</td>
|
|||
|
|
<td class="mlabels-right">
|
|||
|
|
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</div><div class="memdoc">
|
|||
|
|
|
|||
|
|
<p>全局错误码枚举 </p>
|
|||
|
|
<p>VDE 引擎中所有函数可能返回的错误状态码。 成功用 kSuccess(0) 表示,非零值表示各类错误。 </p>
|
|||
|
|
<table class="fieldtable">
|
|||
|
|
<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a id="gga856bcf915448b737fbb1d73db2c10a85a8c632159fa131f09d04f94e3cbcd8782"></a>kSuccess </td><td class="fielddoc"><p>操作成功完成,无错误 </p>
|
|||
|
|
</td></tr>
|
|||
|
|
<tr><td class="fieldname"><a id="gga856bcf915448b737fbb1d73db2c10a85a80fdc050363ea6925fa2e7eb7f0a94a0"></a>kInvalidArgument </td><td class="fielddoc"><p>传入参数无效(空指针、越界、非法值等) </p>
|
|||
|
|
</td></tr>
|
|||
|
|
<tr><td class="fieldname"><a id="gga856bcf915448b737fbb1d73db2c10a85ac4283c91ae25b26dd77c5030baca028e"></a>kInvalidGeometry </td><td class="fielddoc"><p>输入几何数据不合法(自交、非流形、退化等) </p>
|
|||
|
|
</td></tr>
|
|||
|
|
<tr><td class="fieldname"><a id="gga856bcf915448b737fbb1d73db2c10a85af8c2095f04b60f2ec0ca8fb825a94bf0"></a>kDegenerateCase </td><td class="fielddoc"><p>退化情况(共线、共面等导致无法确定唯一解) </p>
|
|||
|
|
</td></tr>
|
|||
|
|
<tr><td class="fieldname"><a id="gga856bcf915448b737fbb1d73db2c10a85ae8024a6eeff9d90cc3babff8acaec9c9"></a>kNotImplemented </td><td class="fielddoc"><p>功能尚未实现 </p>
|
|||
|
|
</td></tr>
|
|||
|
|
<tr><td class="fieldname"><a id="gga856bcf915448b737fbb1d73db2c10a85a631fe1d70108dee6ae7d6acde27f76ef"></a>kNumericalError </td><td class="fielddoc"><p>数值计算误差超出容差范围 </p>
|
|||
|
|
</td></tr>
|
|||
|
|
<tr><td class="fieldname"><a id="gga856bcf915448b737fbb1d73db2c10a85ab681eacb215899549d45805f02eeb40c"></a>kOutOfMemory </td><td class="fielddoc"><p>内存分配失败 </p>
|
|||
|
|
</td></tr>
|
|||
|
|
<tr><td class="fieldname"><a id="gga856bcf915448b737fbb1d73db2c10a85afcd417a134c251034b0d61b07c826394"></a>kInternalError </td><td class="fielddoc"><p>内部逻辑错误(不应出现的情况) </p>
|
|||
|
|
</td></tr>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
<p class="definition">在文件 <a class="el" href="error__codes_8h_source.html">error_codes.h</a> 第 <a class="el" href="error__codes_8h_source.html#l00014">14</a> 行定义.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="gae42a60a99e11250a45ab0de45970c95f"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#gae42a60a99e11250a45ab0de45970c95f">◆ </a></span>Orientation</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="mlabels">
|
|||
|
|
<tr>
|
|||
|
|
<td class="mlabels-left">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">enum <a class="el" href="group__foundation.html#gae42a60a99e11250a45ab0de45970c95f">vde::foundation::exact::Orientation</a></td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</td>
|
|||
|
|
<td class="mlabels-right">
|
|||
|
|
<span class="mlabels"><span class="mlabel">strong</span></span> </td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</div><div class="memdoc">
|
|||
|
|
|
|||
|
|
<p>二维定向测试结果 </p>
|
|||
|
|
<p>判断三点构成的三角形的定向(顺时针 / 逆时针 / 共线)。 </p>
|
|||
|
|
<table class="fieldtable">
|
|||
|
|
<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a id="ggae42a60a99e11250a45ab0de45970c95faba360a794737bcc8657a5b6e870d7ba8"></a>Clockwise </td><td class="fielddoc"></td></tr>
|
|||
|
|
<tr><td class="fieldname"><a id="ggae42a60a99e11250a45ab0de45970c95fa8f23635f9ec49db2161fc5cddf033a79"></a>CounterClockwise </td><td class="fielddoc"></td></tr>
|
|||
|
|
<tr><td class="fieldname"><a id="ggae42a60a99e11250a45ab0de45970c95fa817d9fd9977363770196b7b64da74bbb"></a>Collinear </td><td class="fielddoc"></td></tr>
|
|||
|
|
</table>
|
|||
|
|
|
|||
|
|
<p class="definition">在文件 <a class="el" href="exact__predicates_8h_source.html">exact_predicates.h</a> 第 <a class="el" href="exact__predicates_8h_source.html#l00013">13</a> 行定义.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<h2 class="groupheader">函数说明</h2>
|
|||
|
|
<a id="gabe62e4bbbb46304e5df75cf773269029"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#gabe62e4bbbb46304e5df75cf773269029">◆ </a></span>fmt_double()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="mlabels">
|
|||
|
|
<tr>
|
|||
|
|
<td class="mlabels-left">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">std::string vde::foundation::fmt_double </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">double </td>
|
|||
|
|
<td class="paramname"><em>v</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">int </td>
|
|||
|
|
<td class="paramname"><em>precision</em> = <code>12</code> </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>以 CAD 级别精度格式化双精度浮点数 </p>
|
|||
|
|
<p>输出科学计数法字符串,保证 12 位有效数字,满足 CAD 数据交换精度要求。 NaN 被格式化为 "0.0",Inf/ -Inf 被裁剪为安全边界值。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">v</td><td>要格式化的双精度数 </td></tr>
|
|||
|
|
<tr><td class="paramname">precision</td><td>有效数字位数(默认 12) </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd>格式化后的字符串,如 "1.234567890123e+02"</dd></dl>
|
|||
|
|
<dl class="section note"><dt>注解</dt><dd>总是确保指数部分带符号(如 "e+00" 而非 "e00"),便于解析器统一处理</dd></dl>
|
|||
|
|
<div class="fragment"><div class="line"><span class="keyword">auto</span> s = <a class="code" href="group__foundation.html#gabe62e4bbbb46304e5df75cf773269029">fmt_double</a>(3.14159265358979);</div>
|
|||
|
|
<div class="line"><span class="comment">// s == "3.141592653590e+00"</span></div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_gabe62e4bbbb46304e5df75cf773269029"><div class="ttname"><a href="group__foundation.html#gabe62e4bbbb46304e5df75cf773269029">vde::foundation::fmt_double</a></div><div class="ttdeci">std::string fmt_double(double v, int precision=12)</div><div class="ttdoc">以 CAD 级别精度格式化双精度浮点数</div><div class="ttdef"><b>Definition:</b> <a href="format__utils_8h_source.html#l00031">format_utils.h:31</a></div></div>
|
|||
|
|
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#gab2f1e3f24e1a358c3edabfb4fd3eb8a5" title="IGES 格式实数输出">fmt_iges_real</a>, <a class="el" href="group__foundation.html#ga28a1536a709ef0b632f301375e081c98" title="格式化三维点为逗号分隔字符串">fmt_point</a> </dd></dl>
|
|||
|
|
|
|||
|
|
<p class="definition">在文件 <a class="el" href="format__utils_8h_source.html">format_utils.h</a> 第 <a class="el" href="format__utils_8h_source.html#l00031">31</a> 行定义.</p>
|
|||
|
|
|
|||
|
|
<p class="reference">被这些函数引用 <a class="el" href="format__utils_8h_source.html#l00063">vde::foundation::fmt_iges_real()</a> , 以及 <a class="el" href="format__utils_8h_source.html#l00088">vde::foundation::fmt_point()</a>.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="gab2f1e3f24e1a358c3edabfb4fd3eb8a5"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#gab2f1e3f24e1a358c3edabfb4fd3eb8a5">◆ </a></span>fmt_iges_real()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="mlabels">
|
|||
|
|
<tr>
|
|||
|
|
<td class="mlabels-left">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">std::string vde::foundation::fmt_iges_real </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">double </td>
|
|||
|
|
<td class="paramname"><em>v</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">int </td>
|
|||
|
|
<td class="paramname"> = <code>12</code> </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>IGES 格式实数输出 </p>
|
|||
|
|
<p>与 <a class="el" href="group__foundation.html#gabe62e4bbbb46304e5df75cf773269029" title="以 CAD 级别精度格式化双精度浮点数">fmt_double()</a> 相同,但使用 IGES 标准的 'D' 指数标记代替 'E'。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">v</td><td>要格式化的双精度数 </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd>IGES 格式字符串,如 "3.141592653590D+00"</dd></dl>
|
|||
|
|
<div class="fragment"><div class="line"><span class="keyword">auto</span> s = <a class="code" href="group__foundation.html#gab2f1e3f24e1a358c3edabfb4fd3eb8a5">fmt_iges_real</a>(3.14159265358979);</div>
|
|||
|
|
<div class="line"><span class="comment">// s == "3.141592653590D+00"</span></div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_gab2f1e3f24e1a358c3edabfb4fd3eb8a5"><div class="ttname"><a href="group__foundation.html#gab2f1e3f24e1a358c3edabfb4fd3eb8a5">vde::foundation::fmt_iges_real</a></div><div class="ttdeci">std::string fmt_iges_real(double v, int=12)</div><div class="ttdoc">IGES 格式实数输出</div><div class="ttdef"><b>Definition:</b> <a href="format__utils_8h_source.html#l00063">format_utils.h:63</a></div></div>
|
|||
|
|
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#gabe62e4bbbb46304e5df75cf773269029" title="以 CAD 级别精度格式化双精度浮点数">fmt_double</a> </dd></dl>
|
|||
|
|
|
|||
|
|
<p class="definition">在文件 <a class="el" href="format__utils_8h_source.html">format_utils.h</a> 第 <a class="el" href="format__utils_8h_source.html#l00063">63</a> 行定义.</p>
|
|||
|
|
|
|||
|
|
<p class="reference">引用了 <a class="el" href="format__utils_8h_source.html#l00031">vde::foundation::fmt_double()</a>.</p>
|
|||
|
|
|
|||
|
|
<p class="reference">被这些函数引用 <a class="el" href="format__utils_8h_source.html#l00088">vde::foundation::fmt_point()</a>.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga28a1536a709ef0b632f301375e081c98"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga28a1536a709ef0b632f301375e081c98">◆ </a></span>fmt_point()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="mlabels">
|
|||
|
|
<tr>
|
|||
|
|
<td class="mlabels-left">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">std::string vde::foundation::fmt_point </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1core.html#ac6aed70c4b90d13f10217267cd7a1952">core::Point3D</a> & </td>
|
|||
|
|
<td class="paramname"><em>p</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">bool </td>
|
|||
|
|
<td class="paramname"><em>use_d</em> = <code>false</code> </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>
|
|||
|
|
<p>输出 "x,y,z" 形式,常用于 IGES/STEP/OBJ 等文本格式的顶点坐标行。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">p</td><td>三维点 </td></tr>
|
|||
|
|
<tr><td class="paramname">use_d</td><td>若为 true,使用 IGES 风格 D 指数标记 </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd>逗号分隔的坐标字符串</dd></dl>
|
|||
|
|
<div class="fragment"><div class="line"><a class="code" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> p(1.0, 2.5, -3.14);</div>
|
|||
|
|
<div class="line"><span class="keyword">auto</span> s = <a class="code" href="group__foundation.html#ga28a1536a709ef0b632f301375e081c98">fmt_point</a>(p);</div>
|
|||
|
|
<div class="line"><span class="comment">// s == "1.000000000000e+00,2.500000000000e+00,-3.140000000000e+00"</span></div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_ga28a1536a709ef0b632f301375e081c98"><div class="ttname"><a href="group__foundation.html#ga28a1536a709ef0b632f301375e081c98">vde::foundation::fmt_point</a></div><div class="ttdeci">std::string fmt_point(const core::Point3D &p, bool use_d=false)</div><div class="ttdoc">格式化三维点为逗号分隔字符串</div><div class="ttdef"><b>Definition:</b> <a href="format__utils_8h_source.html#l00088">format_utils.h:88</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1foundation_html_a5897423053feaa32d249be526e9a1850"><div class="ttname"><a href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">vde::foundation::Point3D</a></div><div class="ttdeci">Point< double, 3 > Point3D</div><div class="ttdoc">双精度三维点</div><div class="ttdef"><b>Definition:</b> <a href="math__types_8h_source.html#l00043">math_types.h:43</a></div></div>
|
|||
|
|
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#gabe62e4bbbb46304e5df75cf773269029" title="以 CAD 级别精度格式化双精度浮点数">fmt_double</a>, <a class="el" href="group__foundation.html#gab2f1e3f24e1a358c3edabfb4fd3eb8a5" title="IGES 格式实数输出">fmt_iges_real</a> </dd></dl>
|
|||
|
|
|
|||
|
|
<p class="definition">在文件 <a class="el" href="format__utils_8h_source.html">format_utils.h</a> 第 <a class="el" href="format__utils_8h_source.html#l00088">88</a> 行定义.</p>
|
|||
|
|
|
|||
|
|
<p class="reference">引用了 <a class="el" href="format__utils_8h_source.html#l00031">vde::foundation::fmt_double()</a> , 以及 <a class="el" href="format__utils_8h_source.html#l00063">vde::foundation::fmt_iges_real()</a>.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga4c722653de4d2a636ec36840bf570d9b"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga4c722653de4d2a636ec36840bf570d9b">◆ </a></span>format_iges_line()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="mlabels">
|
|||
|
|
<tr>
|
|||
|
|
<td class="mlabels-left">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">std::string vde::foundation::format_iges_line </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const std::string & </td>
|
|||
|
|
<td class="paramname"><em>data</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">char </td>
|
|||
|
|
<td class="paramname"><em>section_char</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">int </td>
|
|||
|
|
<td class="paramname"><em>seq</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>格式化 IGES 段落行 </p>
|
|||
|
|
<p>生成一条完整的 IGES 80 列记录行:72 列数据 + 8 列序号(section_char + 7 位数字)。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">data</td><td>数据内容(最多 72 字符,超出截断) </td></tr>
|
|||
|
|
<tr><td class="paramname">section_char</td><td>段落标识符(如 'P' 参数段, 'D' 目录段) </td></tr>
|
|||
|
|
<tr><td class="paramname">seq</td><td>行序号(1-based) </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd>完整 IGES 行(含换行符),共 81 字符</dd></dl>
|
|||
|
|
<div class="fragment"><div class="line"><span class="keyword">auto</span> line = <a class="code" href="group__foundation.html#ga4c722653de4d2a636ec36840bf570d9b">format_iges_line</a>(<span class="stringliteral">"110,1.0,2.0,3.0;"</span>, <span class="charliteral">'P'</span>, 1);</div>
|
|||
|
|
<div class="line"><span class="comment">// 输出: "110,1.0,2.0,3.0; P0000001\n"</span></div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_ga4c722653de4d2a636ec36840bf570d9b"><div class="ttname"><a href="group__foundation.html#ga4c722653de4d2a636ec36840bf570d9b">vde::foundation::format_iges_line</a></div><div class="ttdeci">std::string format_iges_line(const std::string &data, char section_char, int seq)</div><div class="ttdoc">格式化 IGES 段落行</div><div class="ttdef"><b>Definition:</b> <a href="format__utils_8h_source.html#l00130">format_utils.h:130</a></div></div>
|
|||
|
|
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#ga0966ff9f82904704cbf6fb6325179ec5" title="将字符串填充到恰好 72 个字符">pad72</a> </dd></dl>
|
|||
|
|
|
|||
|
|
<p class="definition">在文件 <a class="el" href="format__utils_8h_source.html">format_utils.h</a> 第 <a class="el" href="format__utils_8h_source.html#l00130">130</a> 行定义.</p>
|
|||
|
|
|
|||
|
|
<p class="reference">引用了 <a class="el" href="format__utils_8h_source.html#l00105">vde::foundation::pad72()</a>.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="gadc741ceaf8679847e2c220c5c1b1dc77"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#gadc741ceaf8679847e2c220c5c1b1dc77">◆ </a></span>in_circle() <span class="overload">[1/2]</span></h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname"><a class="el" href="group__foundation.html#gaf44d45ba6402f725ee5d2cf828e25588">CircleTest</a> vde::foundation::exact::in_circle </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> & </td>
|
|||
|
|
<td class="paramname"><em>a</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> & </td>
|
|||
|
|
<td class="paramname"><em>b</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> & </td>
|
|||
|
|
<td class="paramname"><em>c</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> & </td>
|
|||
|
|
<td class="paramname"><em>d</em> </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td></td>
|
|||
|
|
<td>)</td>
|
|||
|
|
<td></td><td></td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</div><div class="memdoc">
|
|||
|
|
|
|||
|
|
<p>自适应精度圆内测试(In-Circle Test) </p>
|
|||
|
|
<p>判断点 d 是否在三角形 abc 的外接圆内部、边界上或外部。 等价于计算 4×4 行列式的符号。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">a</td><td>三角形第一个顶点 </td></tr>
|
|||
|
|
<tr><td class="paramname">b</td><td>三角形第二个顶点 </td></tr>
|
|||
|
|
<tr><td class="paramname">c</td><td>三角形第三个顶点 </td></tr>
|
|||
|
|
<tr><td class="paramname">d</td><td>待测试点 </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd><a class="el" href="group__foundation.html#ggaf44d45ba6402f725ee5d2cf828e25588a9b6d3000134648fc9f1e71094ae0847d">CircleTest::Inside</a> 若 d 在三角形外接圆内部 </dd>
|
|||
|
|
<dd>
|
|||
|
|
<a class="el" href="group__foundation.html#ggaf44d45ba6402f725ee5d2cf828e25588a521c36a31c2762741cf0f8890cbe05e3">CircleTest::On</a> 若 d 恰好在三角形外接圆上 </dd>
|
|||
|
|
<dd>
|
|||
|
|
<a class="el" href="group__foundation.html#ggaf44d45ba6402f725ee5d2cf828e25588a76fbf0ccd7fcd64879c2ff2119dc15a4">CircleTest::Outside</a> 若 d 在三角形外接圆外部</dd></dl>
|
|||
|
|
<dl class="section note"><dt>注解</dt><dd>Delaunay 三角剖分的空圆性质检查核心原语 </dd></dl>
|
|||
|
|
<dl class="section pre"><dt>前置条件</dt><dd>三点 a、b、c 不共线</dd></dl>
|
|||
|
|
<div class="fragment"><div class="line"><a class="code" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> a(0,0), b(2,0), c(0,2);</div>
|
|||
|
|
<div class="line"><a class="code" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> d(0.5, 0.5); <span class="comment">// 在外接圆内部</span></div>
|
|||
|
|
<div class="line"><span class="keyword">auto</span> result = <a class="code" href="group__foundation.html#gadc741ceaf8679847e2c220c5c1b1dc77">exact::in_circle</a>(a, b, c, d);</div>
|
|||
|
|
<div class="line"><span class="comment">// result == CircleTest::Inside</span></div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_gadc741ceaf8679847e2c220c5c1b1dc77"><div class="ttname"><a href="group__foundation.html#gadc741ceaf8679847e2c220c5c1b1dc77">vde::foundation::exact::in_circle</a></div><div class="ttdeci">CircleTest in_circle(const Point2D &a, const Point2D &b, const Point2D &c, const Point2D &d)</div><div class="ttdoc">自适应精度圆内测试(In-Circle Test)</div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1foundation_html_a1f8d721ed8c88d2b5716941d311f5945"><div class="ttname"><a href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">vde::foundation::Point2D</a></div><div class="ttdeci">Point< double, 2 > Point2D</div><div class="ttdoc">双精度二维点</div><div class="ttdef"><b>Definition:</b> <a href="math__types_8h_source.html#l00041">math_types.h:41</a></div></div>
|
|||
|
|
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#ga828aee5891f4f4059932951e63f116e9" title="自适应精度二维定向测试(Shewchuk 算法)">orient_2d</a>, <a class="el" href="group__foundation.html#ga2047f44bf458da6b9ea19fdda1a7a2a7" title="自适应精度三维定向测试">orient_3d</a> </dd></dl>
|
|||
|
|
|
|||
|
|
<p class="reference">被这些函数引用 <a class="el" href="exact__predicates_8h_source.html#l00147">vde::foundation::AdaptiveDouble::in_circle()</a>.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga0742be5b7fbe28e2dca498afb9ec99af"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga0742be5b7fbe28e2dca498afb9ec99af">◆ </a></span>in_circle() <span class="overload">[2/2]</span></h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="mlabels">
|
|||
|
|
<tr>
|
|||
|
|
<td class="mlabels-left">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname"><a class="el" href="group__foundation.html#gaf44d45ba6402f725ee5d2cf828e25588">exact::CircleTest</a> vde::foundation::in_circle </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> & </td>
|
|||
|
|
<td class="paramname"><em>a</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> & </td>
|
|||
|
|
<td class="paramname"><em>b</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> & </td>
|
|||
|
|
<td class="paramname"><em>c</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> & </td>
|
|||
|
|
<td class="paramname"><em>d</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">a,b,c</td><td>三角形三顶点 </td></tr>
|
|||
|
|
<tr><td class="paramname">d</td><td>测试点 </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd>CircleTest::Inside / On / Outside </dd></dl>
|
|||
|
|
|
|||
|
|
<p class="definition">在文件 <a class="el" href="predicates_8h_source.html">predicates.h</a> 第 <a class="el" href="predicates_8h_source.html#l00100">100</a> 行定义.</p>
|
|||
|
|
|
|||
|
|
<p class="reference">引用了 <a class="el" href="predicates_8h_source.html#l00049">vde::foundation::Predicates::in_circle()</a>.</p>
|
|||
|
|
|
|||
|
|
<p class="reference">被这些函数引用 <a class="el" href="predicates_8h_source.html#l00049">vde::foundation::Predicates::in_circle()</a>.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga1841f29d20da233610d643a5725179bc"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga1841f29d20da233610d643a5725179bc">◆ </a></span>orient() <span class="overload">[1/2]</span></h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="mlabels">
|
|||
|
|
<tr>
|
|||
|
|
<td class="mlabels-left">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname"><a class="el" href="group__foundation.html#gae42a60a99e11250a45ab0de45970c95f">exact::Orientation</a> vde::foundation::orient </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> & </td>
|
|||
|
|
<td class="paramname"><em>a</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> & </td>
|
|||
|
|
<td class="paramname"><em>b</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> & </td>
|
|||
|
|
<td class="paramname"><em>c</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>
|
|||
|
|
<p>使用 Predicates::orient_2d,无需指定后端。 这是推荐的对外 API。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">a,b,c</td><td>三个二维点 </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd>Orientation::Clockwise / CounterClockwise / Collinear</dd></dl>
|
|||
|
|
<div class="fragment"><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacevde_1_1foundation.html">vde::foundation</a>;</div>
|
|||
|
|
<div class="line"><a class="code" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> a(0,0), b(1,0), c(0,1);</div>
|
|||
|
|
<div class="line"><span class="keyword">auto</span> result = <a class="code" href="group__foundation.html#ga1841f29d20da233610d643a5725179bc">orient</a>(a, b, c); <span class="comment">// CounterClockwise</span></div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_ga1841f29d20da233610d643a5725179bc"><div class="ttname"><a href="group__foundation.html#ga1841f29d20da233610d643a5725179bc">vde::foundation::orient</a></div><div class="ttdeci">exact::Orientation orient(const Point2D &a, const Point2D &b, const Point2D &c)</div><div class="ttdoc">二维定向测试便捷封装</div><div class="ttdef"><b>Definition:</b> <a href="predicates_8h_source.html#l00074">predicates.h:74</a></div></div>
|
|||
|
|
<div class="ttc" id="anamespacevde_1_1foundation_html"><div class="ttname"><a href="namespacevde_1_1foundation.html">vde::foundation</a></div><div class="ttdoc">自适应双精度谓词后端(默认)</div><div class="ttdef"><b>Definition:</b> <a href="error__codes_8h_source.html#l00004">error_codes.h:4</a></div></div>
|
|||
|
|
</div><!-- fragment -->
|
|||
|
|
<p class="definition">在文件 <a class="el" href="predicates_8h_source.html">predicates.h</a> 第 <a class="el" href="predicates_8h_source.html#l00074">74</a> 行定义.</p>
|
|||
|
|
|
|||
|
|
<p class="reference">引用了 <a class="el" href="predicates_8h_source.html#l00031">vde::foundation::Predicates::orient_2d()</a>.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga0de768376e4db52c1549ae6c046e9909"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga0de768376e4db52c1549ae6c046e9909">◆ </a></span>orient() <span class="overload">[2/2]</span></h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="mlabels">
|
|||
|
|
<tr>
|
|||
|
|
<td class="mlabels-left">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname"><a class="el" href="group__foundation.html#gae42a60a99e11250a45ab0de45970c95f">exact::Orientation</a> vde::foundation::orient </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> & </td>
|
|||
|
|
<td class="paramname"><em>a</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> & </td>
|
|||
|
|
<td class="paramname"><em>b</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> & </td>
|
|||
|
|
<td class="paramname"><em>c</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> & </td>
|
|||
|
|
<td class="paramname"><em>d</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">a,b,c</td><td>定义平面的三点 </td></tr>
|
|||
|
|
<tr><td class="paramname">d</td><td>测试点 </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd>Orientation::Clockwise / CounterClockwise / Collinear </dd></dl>
|
|||
|
|
|
|||
|
|
<p class="definition">在文件 <a class="el" href="predicates_8h_source.html">predicates.h</a> 第 <a class="el" href="predicates_8h_source.html#l00087">87</a> 行定义.</p>
|
|||
|
|
|
|||
|
|
<p class="reference">引用了 <a class="el" href="predicates_8h_source.html#l00039">vde::foundation::Predicates::orient_3d()</a>.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga828aee5891f4f4059932951e63f116e9"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga828aee5891f4f4059932951e63f116e9">◆ </a></span>orient_2d()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname"><a class="el" href="group__foundation.html#gae42a60a99e11250a45ab0de45970c95f">Orientation</a> vde::foundation::exact::orient_2d </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> & </td>
|
|||
|
|
<td class="paramname"><em>a</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> & </td>
|
|||
|
|
<td class="paramname"><em>b</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> & </td>
|
|||
|
|
<td class="paramname"><em>c</em> </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td></td>
|
|||
|
|
<td>)</td>
|
|||
|
|
<td></td><td></td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</div><div class="memdoc">
|
|||
|
|
|
|||
|
|
<p>自适应精度二维定向测试(Shewchuk 算法) </p>
|
|||
|
|
<p>判断点 a, b, c 的定向。使用自适应浮点精度: 先用双精度计算行列式,若结果不可靠则逐步提高精度,直至确定符号。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">a</td><td>第一个点 </td></tr>
|
|||
|
|
<tr><td class="paramname">b</td><td>第二个点 </td></tr>
|
|||
|
|
<tr><td class="paramname">c</td><td>第三个点 </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd><a class="el" href="group__foundation.html#ggae42a60a99e11250a45ab0de45970c95faba360a794737bcc8657a5b6e870d7ba8">Orientation::Clockwise</a> 若 a→b→c 顺时针 </dd>
|
|||
|
|
<dd>
|
|||
|
|
<a class="el" href="group__foundation.html#ggae42a60a99e11250a45ab0de45970c95fa8f23635f9ec49db2161fc5cddf033a79">Orientation::CounterClockwise</a> 若 a→b→c 逆时针 </dd>
|
|||
|
|
<dd>
|
|||
|
|
<a class="el" href="group__foundation.html#ggae42a60a99e11250a45ab0de45970c95fa817d9fd9977363770196b7b64da74bbb">Orientation::Collinear</a> 若三点共线</dd></dl>
|
|||
|
|
<dl class="section note"><dt>注解</dt><dd>Delaunay 三角剖分、凸包计算等几何算法的核心原语 </dd></dl>
|
|||
|
|
<dl class="section warning"><dt>警告</dt><dd>输入点坐标必须为有限值,NaN/Inf 会导致未定义行为</dd></dl>
|
|||
|
|
<div class="fragment"><div class="line"><a class="code" href="namespacevde_1_1foundation.html#a1f8d721ed8c88d2b5716941d311f5945">Point2D</a> a(0,0), b(1,0), c(0,1);</div>
|
|||
|
|
<div class="line"><span class="keyword">auto</span> ori = <a class="code" href="group__foundation.html#ga828aee5891f4f4059932951e63f116e9">exact::orient_2d</a>(a, b, c);</div>
|
|||
|
|
<div class="line"><span class="comment">// ori == Orientation::CounterClockwise</span></div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_ga828aee5891f4f4059932951e63f116e9"><div class="ttname"><a href="group__foundation.html#ga828aee5891f4f4059932951e63f116e9">vde::foundation::exact::orient_2d</a></div><div class="ttdeci">Orientation orient_2d(const Point2D &a, const Point2D &b, const Point2D &c)</div><div class="ttdoc">自适应精度二维定向测试(Shewchuk 算法)</div></div>
|
|||
|
|
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#ga2047f44bf458da6b9ea19fdda1a7a2a7" title="自适应精度三维定向测试">orient_3d</a>, <a class="el" href="group__foundation.html#gadc741ceaf8679847e2c220c5c1b1dc77" title="自适应精度圆内测试(In-Circle Test)">in_circle</a> </dd></dl>
|
|||
|
|
|
|||
|
|
<p class="reference">被这些函数引用 <a class="el" href="exact__predicates_8h_source.html#l00127">vde::foundation::AdaptiveDouble::orient_2d()</a> , 以及 <a class="el" href="predicates_8h_source.html#l00031">vde::foundation::Predicates::orient_2d()</a>.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga4082e53f9e3afe884a6ea7b2005abfd1"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga4082e53f9e3afe884a6ea7b2005abfd1">◆ </a></span>orient_2d_interval()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="mlabels">
|
|||
|
|
<tr>
|
|||
|
|
<td class="mlabels-left">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname"><a class="el" href="classvde_1_1foundation_1_1Interval.html">Interval</a> vde::foundation::orient_2d_interval </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">double </td>
|
|||
|
|
<td class="paramname"><em>ax</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">double </td>
|
|||
|
|
<td class="paramname"><em>ay</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">double </td>
|
|||
|
|
<td class="paramname"><em>bx</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">double </td>
|
|||
|
|
<td class="paramname"><em>by</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">double </td>
|
|||
|
|
<td class="paramname"><em>cx</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">double </td>
|
|||
|
|
<td class="paramname"><em>cy</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>
|
|||
|
|
<p>用区间算术计算 orient_2d 行列式,结果区间用于判断双精度是否可靠。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">ax,ay</td><td>点 a 的坐标 </td></tr>
|
|||
|
|
<tr><td class="paramname">bx,by</td><td>点 b 的坐标 </td></tr>
|
|||
|
|
<tr><td class="paramname">cx,cy</td><td>点 c 的坐标 </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd>行列式的区间值</dd></dl>
|
|||
|
|
<dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#ga90b3b7375e3ad4e30cf60a286515d95b" title="使用区间算术验证 orient_2d 结果">orient_2d_verified</a> </dd></dl>
|
|||
|
|
|
|||
|
|
<p class="definition">在文件 <a class="el" href="interval_8h_source.html">interval.h</a> 第 <a class="el" href="interval_8h_source.html#l00200">200</a> 行定义.</p>
|
|||
|
|
|
|||
|
|
<p class="reference">引用了 <a class="el" href="interval_8h_source.html#l00181">vde::foundation::Interval::from_coord()</a>.</p>
|
|||
|
|
|
|||
|
|
<p class="reference">被这些函数引用 <a class="el" href="interval_8h_source.html#l00232">vde::foundation::orient_2d_verified()</a>.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga90b3b7375e3ad4e30cf60a286515d95b"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga90b3b7375e3ad4e30cf60a286515d95b">◆ </a></span>orient_2d_verified()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="mlabels">
|
|||
|
|
<tr>
|
|||
|
|
<td class="mlabels-left">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">int vde::foundation::orient_2d_verified </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">double </td>
|
|||
|
|
<td class="paramname"><em>ax</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">double </td>
|
|||
|
|
<td class="paramname"><em>ay</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">double </td>
|
|||
|
|
<td class="paramname"><em>bx</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">double </td>
|
|||
|
|
<td class="paramname"><em>by</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">double </td>
|
|||
|
|
<td class="paramname"><em>cx</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">double </td>
|
|||
|
|
<td class="paramname"><em>cy</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>使用区间算术验证 orient_2d 结果 </p>
|
|||
|
|
<p>若双精度计算结果接近零,调用此函数进行区间验证。 若区间不跨越零,则结果可靠;否则需要升级到精确算术。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">ax,ay</td><td>点 a 的坐标 </td></tr>
|
|||
|
|
<tr><td class="paramname">bx,by</td><td>点 b 的坐标 </td></tr>
|
|||
|
|
<tr><td class="paramname">cx,cy</td><td>点 c 的坐标 </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd>-1 确认 Clockwise </dd>
|
|||
|
|
<dd>
|
|||
|
|
0 无法确定(需升级到 GMP / 自适应精度) </dd>
|
|||
|
|
<dd>
|
|||
|
|
1 确认 CounterClockwise</dd></dl>
|
|||
|
|
<div class="fragment"><div class="line"><span class="keywordtype">int</span> result = <a class="code" href="group__foundation.html#ga90b3b7375e3ad4e30cf60a286515d95b">orient_2d_verified</a>(0.0, 0.0, 1.0, 1e-16, 2.0, 2e-16);</div>
|
|||
|
|
<div class="line"><span class="keywordflow">if</span> (result == 0) {</div>
|
|||
|
|
<div class="line"> <span class="comment">// 双精度不可靠,需要精确算术</span></div>
|
|||
|
|
<div class="line"> <span class="keyword">auto</span> ori = <a class="code" href="group__foundation.html#ga828aee5891f4f4059932951e63f116e9">GmpExact::orient_2d</a>(a, b, c);</div>
|
|||
|
|
<div class="line">}</div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_ga90b3b7375e3ad4e30cf60a286515d95b"><div class="ttname"><a href="group__foundation.html#ga90b3b7375e3ad4e30cf60a286515d95b">vde::foundation::orient_2d_verified</a></div><div class="ttdeci">int orient_2d_verified(double ax, double ay, double bx, double by, double cx, double cy)</div><div class="ttdoc">使用区间算术验证 orient_2d 结果</div><div class="ttdef"><b>Definition:</b> <a href="interval_8h_source.html#l00232">interval.h:232</a></div></div>
|
|||
|
|
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#ga4082e53f9e3afe884a6ea7b2005abfd1" title="二维定向行列式的区间验证">orient_2d_interval</a>, <a class="el" href="classvde_1_1foundation_1_1Interval.html#abf6c26f19ac4454879cdc7191e7e0b8b" title="确定性区间比较">Interval::cmp</a> </dd></dl>
|
|||
|
|
|
|||
|
|
<p class="definition">在文件 <a class="el" href="interval_8h_source.html">interval.h</a> 第 <a class="el" href="interval_8h_source.html#l00232">232</a> 行定义.</p>
|
|||
|
|
|
|||
|
|
<p class="reference">引用了 <a class="el" href="interval_8h_source.html#l00096">vde::foundation::Interval::cmp()</a> , 以及 <a class="el" href="interval_8h_source.html#l00200">vde::foundation::orient_2d_interval()</a>.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga2047f44bf458da6b9ea19fdda1a7a2a7"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga2047f44bf458da6b9ea19fdda1a7a2a7">◆ </a></span>orient_3d()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname"><a class="el" href="group__foundation.html#gae42a60a99e11250a45ab0de45970c95f">Orientation</a> vde::foundation::exact::orient_3d </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> & </td>
|
|||
|
|
<td class="paramname"><em>a</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> & </td>
|
|||
|
|
<td class="paramname"><em>b</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> & </td>
|
|||
|
|
<td class="paramname"><em>c</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> & </td>
|
|||
|
|
<td class="paramname"><em>d</em> </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td></td>
|
|||
|
|
<td>)</td>
|
|||
|
|
<td></td><td></td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</div><div class="memdoc">
|
|||
|
|
|
|||
|
|
<p>自适应精度三维定向测试 </p>
|
|||
|
|
<p>判断点 a, b, c, d 的定向(即点 d 在平面 abc 的哪一侧)。 等价于计算四面体 abcd 的有向体积的符号。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">a</td><td>第一个点 </td></tr>
|
|||
|
|
<tr><td class="paramname">b</td><td>第二个点 </td></tr>
|
|||
|
|
<tr><td class="paramname">c</td><td>第三个点 </td></tr>
|
|||
|
|
<tr><td class="paramname">d</td><td>第四个点(测试点) </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd><a class="el" href="group__foundation.html#ggae42a60a99e11250a45ab0de45970c95fa8f23635f9ec49db2161fc5cddf033a79">Orientation::CounterClockwise</a> 若 d 在平面 abc 上方(按右手法则) </dd>
|
|||
|
|
<dd>
|
|||
|
|
<a class="el" href="group__foundation.html#ggae42a60a99e11250a45ab0de45970c95faba360a794737bcc8657a5b6e870d7ba8">Orientation::Clockwise</a> 若 d 在平面 abc 下方 </dd>
|
|||
|
|
<dd>
|
|||
|
|
<a class="el" href="group__foundation.html#ggae42a60a99e11250a45ab0de45970c95fa817d9fd9977363770196b7b64da74bbb">Orientation::Collinear</a> 若四点共面</dd></dl>
|
|||
|
|
<dl class="section note"><dt>注解</dt><dd>三维 Delaunay 剖分和凸包计算的核心原语</dd></dl>
|
|||
|
|
<div class="fragment"><div class="line"><a class="code" href="namespacevde_1_1foundation.html#a5897423053feaa32d249be526e9a1850">Point3D</a> a(0,0,0), b(1,0,0), c(0,1,0), d(0,0,1);</div>
|
|||
|
|
<div class="line"><span class="keyword">auto</span> ori = <a class="code" href="group__foundation.html#ga2047f44bf458da6b9ea19fdda1a7a2a7">exact::orient_3d</a>(a, b, c, d);</div>
|
|||
|
|
<div class="line"><span class="comment">// ori == Orientation::CounterClockwise</span></div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_ga2047f44bf458da6b9ea19fdda1a7a2a7"><div class="ttname"><a href="group__foundation.html#ga2047f44bf458da6b9ea19fdda1a7a2a7">vde::foundation::exact::orient_3d</a></div><div class="ttdeci">Orientation orient_3d(const Point3D &a, const Point3D &b, const Point3D &c, const Point3D &d)</div><div class="ttdoc">自适应精度三维定向测试</div></div>
|
|||
|
|
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#ga828aee5891f4f4059932951e63f116e9" title="自适应精度二维定向测试(Shewchuk 算法)">orient_2d</a>, <a class="el" href="group__foundation.html#gadc741ceaf8679847e2c220c5c1b1dc77" title="自适应精度圆内测试(In-Circle Test)">in_circle</a> </dd></dl>
|
|||
|
|
|
|||
|
|
<p class="reference">被这些函数引用 <a class="el" href="exact__predicates_8h_source.html#l00136">vde::foundation::AdaptiveDouble::orient_3d()</a> , 以及 <a class="el" href="predicates_8h_source.html#l00039">vde::foundation::Predicates::orient_3d()</a>.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga0966ff9f82904704cbf6fb6325179ec5"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga0966ff9f82904704cbf6fb6325179ec5">◆ </a></span>pad72()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="mlabels">
|
|||
|
|
<tr>
|
|||
|
|
<td class="mlabels-left">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">std::string vde::foundation::pad72 </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const std::string & </td>
|
|||
|
|
<td class="paramname"><em>s</em></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>将字符串填充到恰好 72 个字符 </p>
|
|||
|
|
<p>IGES 格式中每条数据行固定为 72 字符宽。不足用空格补齐,超出则截断。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">s</td><td>输入字符串 </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd>恰好 72 字符的字符串(不足右侧补空格,超出截断)</dd></dl>
|
|||
|
|
<dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#ga4c722653de4d2a636ec36840bf570d9b" title="格式化 IGES 段落行">format_iges_line</a> </dd></dl>
|
|||
|
|
|
|||
|
|
<p class="definition">在文件 <a class="el" href="format__utils_8h_source.html">format_utils.h</a> 第 <a class="el" href="format__utils_8h_source.html#l00105">105</a> 行定义.</p>
|
|||
|
|
|
|||
|
|
<p class="reference">被这些函数引用 <a class="el" href="format__utils_8h_source.html#l00130">vde::foundation::format_iges_line()</a>.</p>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga27a7d806cf76dc23ad6ac73ae3ce0338"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga27a7d806cf76dc23ad6ac73ae3ce0338">◆ </a></span>read_obj()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname"><a class="el" href="structvde_1_1foundation_1_1ObjMeshData.html">ObjMeshData</a> vde::foundation::read_obj </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const std::string & </td>
|
|||
|
|
<td class="paramname"><em>filepath</em></td><td>)</td>
|
|||
|
|
<td></td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</div><div class="memdoc">
|
|||
|
|
|
|||
|
|
<p>读取 Wavefront OBJ 文件 </p>
|
|||
|
|
<p>解析 ASCII OBJ 文件,支持以下 OBJ 特性:</p><ul>
|
|||
|
|
<li>v(顶点)、vt(纹理坐标)、vn(法线)</li>
|
|||
|
|
<li>f(面):支持三角面和任意多边形面</li>
|
|||
|
|
<li>usemtl(材质名称)、g(组名)、o(对象名)</li>
|
|||
|
|
<li># 注释行</li>
|
|||
|
|
</ul>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">filepath</td><td>OBJ 文件路径 </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd>解析后的 <a class="el" href="structvde_1_1foundation_1_1ObjMeshData.html" title="OBJ 文件解析结果数据结构">ObjMeshData</a></dd></dl>
|
|||
|
|
<dl class="exception"><dt>异常</dt><dd>
|
|||
|
|
<table class="exception">
|
|||
|
|
<tr><td class="paramname">std::runtime_error</td><td>若文件无法打开或格式错误</td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section note"><dt>注解</dt><dd>不解析 MTL 材质文件,仅记录 usemtl 指令中的材质名称 </dd>
|
|||
|
|
<dd>
|
|||
|
|
面索引在内部转换为 0-based;若文件中使用相对索引(负值),自动转换为正向</dd></dl>
|
|||
|
|
<div class="fragment"><div class="line"><span class="keyword">auto</span> data = <a class="code" href="group__foundation.html#ga27a7d806cf76dc23ad6ac73ae3ce0338">read_obj</a>(<span class="stringliteral">"model.obj"</span>);</div>
|
|||
|
|
<div class="line">std::cout << <span class="stringliteral">"Vertices: "</span> << data.vertices.size() << <span class="stringliteral">"\n"</span>;</div>
|
|||
|
|
<div class="line">std::cout << <span class="stringliteral">"Faces: "</span> << data.faces.size() << <span class="stringliteral">"\n"</span>;</div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_ga27a7d806cf76dc23ad6ac73ae3ce0338"><div class="ttname"><a href="group__foundation.html#ga27a7d806cf76dc23ad6ac73ae3ce0338">vde::foundation::read_obj</a></div><div class="ttdeci">ObjMeshData read_obj(const std::string &filepath)</div><div class="ttdoc">读取 Wavefront OBJ 文件</div></div>
|
|||
|
|
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#ga3f00800cc4a2d9901744427c0920f1b1" title="写入 Wavefront OBJ 文件">write_obj</a>, <a class="el" href="structvde_1_1foundation_1_1ObjMeshData.html" title="OBJ 文件解析结果数据结构">ObjMeshData</a> </dd></dl>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga2f3d702e9426a55baf9da37244d26483"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga2f3d702e9426a55baf9da37244d26483">◆ </a></span>read_ply()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname"><a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html">mesh::HalfedgeMesh</a> vde::foundation::read_ply </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const std::string & </td>
|
|||
|
|
<td class="paramname"><em>filepath</em></td><td>)</td>
|
|||
|
|
<td></td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</div><div class="memdoc">
|
|||
|
|
|
|||
|
|
<p>读取 PLY 文件(Stanford Polygon Format) </p>
|
|||
|
|
<p>解析 PLY 格式文件,支持 ASCII 和二进制(小端序)两种编码。 支持的 PLY 元素:vertex(位置、法线、颜色)、face(顶点索引列表)。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">filepath</td><td>PLY 文件路径 </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd>解析后的半边网格</dd></dl>
|
|||
|
|
<dl class="exception"><dt>异常</dt><dd>
|
|||
|
|
<table class="exception">
|
|||
|
|
<tr><td class="paramname">std::runtime_error</td><td>若文件无法打开、格式不支持或数据损坏</td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section note"><dt>注解</dt><dd>自动检测文件头部 magic number 判断 ASCII / 二进制格式 </dd>
|
|||
|
|
<dd>
|
|||
|
|
二进制格式仅支持小端序(little-endian) </dd>
|
|||
|
|
<dd>
|
|||
|
|
返回类型为 HalfedgeMesh,内部自动建立半边拓扑</dd></dl>
|
|||
|
|
<div class="fragment"><div class="line"><span class="keyword">auto</span> mesh = <a class="code" href="group__foundation.html#ga2f3d702e9426a55baf9da37244d26483">read_ply</a>(<span class="stringliteral">"scan.ply"</span>);</div>
|
|||
|
|
<div class="line">std::cout << <span class="stringliteral">"Vertices: "</span> << mesh.vertex_count() << <span class="stringliteral">"\n"</span>;</div>
|
|||
|
|
<div class="line">std::cout << <span class="stringliteral">"Faces: "</span> << mesh.face_count() << <span class="stringliteral">"\n"</span>;</div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_ga2f3d702e9426a55baf9da37244d26483"><div class="ttname"><a href="group__foundation.html#ga2f3d702e9426a55baf9da37244d26483">vde::foundation::read_ply</a></div><div class="ttdeci">mesh::HalfedgeMesh read_ply(const std::string &filepath)</div><div class="ttdoc">读取 PLY 文件(Stanford Polygon Format)</div></div>
|
|||
|
|
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#ga5601dbe30446f41c9a8f033b0b4f39ed" title="写入 PLY 文件(ASCII 格式)">write_ply</a> </dd></dl>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga19bedcf026cfa80bbe7700f25891ca36"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga19bedcf026cfa80bbe7700f25891ca36">◆ </a></span>read_stl()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">std::vector<<a class="el" href="structvde_1_1foundation_1_1StlTriangle.html">StlTriangle</a>> vde::foundation::read_stl </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const std::string & </td>
|
|||
|
|
<td class="paramname"><em>filepath</em></td><td>)</td>
|
|||
|
|
<td></td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</div><div class="memdoc">
|
|||
|
|
|
|||
|
|
<p>读取 STL 文件(自动检测格式) </p>
|
|||
|
|
<p>通过检查文件头部的 80 字节判断二进制(含 triangle count) 还是 ASCII(以 "solid" 开头)格式,然后选择对应解析器。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">filepath</td><td>STL 文件路径 </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd>三角形面片列表</dd></dl>
|
|||
|
|
<dl class="exception"><dt>异常</dt><dd>
|
|||
|
|
<table class="exception">
|
|||
|
|
<tr><td class="paramname">std::runtime_error</td><td>若文件无法打开或格式无效</td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section note"><dt>注解</dt><dd>自动格式检测:二进制 STL 的 80 字节头后跟 4 字节三角形数量 </dd>
|
|||
|
|
<dd>
|
|||
|
|
ASCII STL 以 "solid name" 开头</dd></dl>
|
|||
|
|
<div class="fragment"><div class="line"><span class="keyword">auto</span> tris = <a class="code" href="group__foundation.html#ga19bedcf026cfa80bbe7700f25891ca36">read_stl</a>(<span class="stringliteral">"part.stl"</span>);</div>
|
|||
|
|
<div class="line">std::cout << <span class="stringliteral">"Triangles: "</span> << tris.size() << <span class="stringliteral">"\n"</span>;</div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_ga19bedcf026cfa80bbe7700f25891ca36"><div class="ttname"><a href="group__foundation.html#ga19bedcf026cfa80bbe7700f25891ca36">vde::foundation::read_stl</a></div><div class="ttdeci">std::vector< StlTriangle > read_stl(const std::string &filepath)</div><div class="ttdoc">读取 STL 文件(自动检测格式)</div></div>
|
|||
|
|
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#ga47f7c33cd0e2a2f82cad758517a388a7" title="写入二进制 STL 文件">write_stl</a>, <a class="el" href="group__foundation.html#ga3357e1dfba02250f2c6b85d276997253" title="写入 ASCII STL 文件">write_stl_ascii</a> </dd></dl>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga05a128dbc89f2e7ee633bdc640df6fe5"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga05a128dbc89f2e7ee633bdc640df6fe5">◆ </a></span>write_brep_gltf()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">bool vde::foundation::write_brep_gltf </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const std::string & </td>
|
|||
|
|
<td class="paramname"><em>filepath</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="classvde_1_1brep_1_1BrepModel.html">brep::BrepModel</a> & </td>
|
|||
|
|
<td class="paramname"><em>model</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">int </td>
|
|||
|
|
<td class="paramname"><em>tessellation_res</em> = <code>32</code> </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td></td>
|
|||
|
|
<td>)</td>
|
|||
|
|
<td></td><td></td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</div><div class="memdoc">
|
|||
|
|
|
|||
|
|
<p>导出 B-Rep 模型为 GLB 格式(通过面片化) </p>
|
|||
|
|
<p>将 B-Rep 模型的参数曲面离散化为三角网格后导出为 GLB。 曲面通过 tessellation_res 控制离散精度。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">filepath</td><td>输出文件路径(建议 .glb) </td></tr>
|
|||
|
|
<tr><td class="paramname">model</td><td>要导出的 B-Rep 模型 </td></tr>
|
|||
|
|
<tr><td class="paramname">tessellation_res</td><td>每条边的离散段数(默认 32),越大越精确 </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd>true 导出成功 </dd>
|
|||
|
|
<dd>
|
|||
|
|
false 导出失败</dd></dl>
|
|||
|
|
<div class="fragment"><div class="line">brep::BrepModel model = <span class="comment">// ...;</span></div>
|
|||
|
|
<div class="line"><span class="comment">// 高精度曲面导出</span></div>
|
|||
|
|
<div class="line"><span class="keywordtype">bool</span> ok = <a class="code" href="group__foundation.html#ga05a128dbc89f2e7ee633bdc640df6fe5">write_brep_gltf</a>(<span class="stringliteral">"model.glb"</span>, model, 64);</div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_ga05a128dbc89f2e7ee633bdc640df6fe5"><div class="ttname"><a href="group__foundation.html#ga05a128dbc89f2e7ee633bdc640df6fe5">vde::foundation::write_brep_gltf</a></div><div class="ttdeci">bool write_brep_gltf(const std::string &filepath, const brep::BrepModel &model, int tessellation_res=32)</div><div class="ttdoc">导出 B-Rep 模型为 GLB 格式(通过面片化)</div></div>
|
|||
|
|
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#ga51de361e7a704ba10d0d34e006b9b1fd" title="导出网格为 glTF 2.0 / GLB 格式">write_gltf</a> </dd></dl>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga51de361e7a704ba10d0d34e006b9b1fd"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga51de361e7a704ba10d0d34e006b9b1fd">◆ </a></span>write_gltf()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">bool vde::foundation::write_gltf </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const std::string & </td>
|
|||
|
|
<td class="paramname"><em>filepath</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html">mesh::HalfedgeMesh</a> & </td>
|
|||
|
|
<td class="paramname"><em>mesh</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="structvde_1_1foundation_1_1GltfOptions.html">GltfOptions</a> & </td>
|
|||
|
|
<td class="paramname"><em>options</em> = <code><a class="el" href="structvde_1_1foundation_1_1GltfOptions.html">GltfOptions</a>{}</code> </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td></td>
|
|||
|
|
<td>)</td>
|
|||
|
|
<td></td><td></td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</div><div class="memdoc">
|
|||
|
|
|
|||
|
|
<p>导出网格为 glTF 2.0 / GLB 格式 </p>
|
|||
|
|
<p>将 HalfedgeMesh 写入 glTF 2.0 规范文件。默认输出单文件 GLB 二进制格式, 可通过 <a class="el" href="structvde_1_1foundation_1_1GltfOptions.html" title="glTF 2.0 导出选项">GltfOptions</a> 控制输出格式和包含的属性。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">filepath</td><td>输出文件路径(.glb 或 .gltf) </td></tr>
|
|||
|
|
<tr><td class="paramname">mesh</td><td>要导出的半边网格 </td></tr>
|
|||
|
|
<tr><td class="paramname">options</td><td>导出选项(格式、法线、颜色等) </td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section return"><dt>返回</dt><dd>true 导出成功 </dd>
|
|||
|
|
<dd>
|
|||
|
|
false 导出失败(文件无法创建等)</dd></dl>
|
|||
|
|
<dl class="section note"><dt>注解</dt><dd>生成的 glTF 符合 2.0 规范,兼容 Blender、three.js、Unreal Engine 等工具</dd></dl>
|
|||
|
|
<div class="fragment"><div class="line">mesh::HalfedgeMesh mesh = <span class="comment">// ...;</span></div>
|
|||
|
|
<div class="line">GltfOptions opts;</div>
|
|||
|
|
<div class="line">opts.binary = <span class="keyword">true</span>;</div>
|
|||
|
|
<div class="line">opts.include_normals = <span class="keyword">true</span>;</div>
|
|||
|
|
<div class="line"><span class="keywordtype">bool</span> ok = <a class="code" href="group__foundation.html#ga51de361e7a704ba10d0d34e006b9b1fd">write_gltf</a>(<span class="stringliteral">"output.glb"</span>, mesh, opts);</div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_ga51de361e7a704ba10d0d34e006b9b1fd"><div class="ttname"><a href="group__foundation.html#ga51de361e7a704ba10d0d34e006b9b1fd">vde::foundation::write_gltf</a></div><div class="ttdeci">bool write_gltf(const std::string &filepath, const mesh::HalfedgeMesh &mesh, const GltfOptions &options=GltfOptions{})</div><div class="ttdoc">导出网格为 glTF 2.0 / GLB 格式</div></div>
|
|||
|
|
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#ga05a128dbc89f2e7ee633bdc640df6fe5" title="导出 B-Rep 模型为 GLB 格式(通过面片化)">write_brep_gltf</a>, <a class="el" href="structvde_1_1foundation_1_1GltfOptions.html" title="glTF 2.0 导出选项">GltfOptions</a> </dd></dl>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga3f00800cc4a2d9901744427c0920f1b1"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga3f00800cc4a2d9901744427c0920f1b1">◆ </a></span>write_obj()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">void vde::foundation::write_obj </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const std::string & </td>
|
|||
|
|
<td class="paramname"><em>filepath</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="structvde_1_1foundation_1_1ObjMeshData.html">ObjMeshData</a> & </td>
|
|||
|
|
<td class="paramname"><em>data</em> </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td></td>
|
|||
|
|
<td>)</td>
|
|||
|
|
<td></td><td></td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</div><div class="memdoc">
|
|||
|
|
|
|||
|
|
<p>写入 Wavefront OBJ 文件 </p>
|
|||
|
|
<p>将 <a class="el" href="structvde_1_1foundation_1_1ObjMeshData.html" title="OBJ 文件解析结果数据结构">ObjMeshData</a> 以 ASCII OBJ 格式写出,包含顶点、纹理坐标、 法线和面信息。材质名称通过注释嵌入。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">filepath</td><td>输出文件路径 </td></tr>
|
|||
|
|
<tr><td class="paramname">data</td><td>要写出的网格数据</td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section note"><dt>注解</dt><dd>输出的面索引为 1-based(OBJ 标准)</dd></dl>
|
|||
|
|
<div class="fragment"><div class="line">ObjMeshData data;</div>
|
|||
|
|
<div class="line"><span class="comment">// ... 填充 data ...</span></div>
|
|||
|
|
<div class="line"><a class="code" href="group__foundation.html#ga3f00800cc4a2d9901744427c0920f1b1">write_obj</a>(<span class="stringliteral">"output.obj"</span>, data);</div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_ga3f00800cc4a2d9901744427c0920f1b1"><div class="ttname"><a href="group__foundation.html#ga3f00800cc4a2d9901744427c0920f1b1">vde::foundation::write_obj</a></div><div class="ttdeci">void write_obj(const std::string &filepath, const ObjMeshData &data)</div><div class="ttdoc">写入 Wavefront OBJ 文件</div></div>
|
|||
|
|
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#ga27a7d806cf76dc23ad6ac73ae3ce0338" title="读取 Wavefront OBJ 文件">read_obj</a> </dd></dl>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga5601dbe30446f41c9a8f033b0b4f39ed"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga5601dbe30446f41c9a8f033b0b4f39ed">◆ </a></span>write_ply()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">void vde::foundation::write_ply </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const std::string & </td>
|
|||
|
|
<td class="paramname"><em>filepath</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const <a class="el" href="classvde_1_1mesh_1_1HalfedgeMesh.html">mesh::HalfedgeMesh</a> & </td>
|
|||
|
|
<td class="paramname"><em>mesh</em> </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td></td>
|
|||
|
|
<td>)</td>
|
|||
|
|
<td></td><td></td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
</div><div class="memdoc">
|
|||
|
|
|
|||
|
|
<p>写入 PLY 文件(ASCII 格式) </p>
|
|||
|
|
<p>将半边网格以 ASCII PLY 格式写出,包含顶点位置和面信息。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">filepath</td><td>输出文件路径 </td></tr>
|
|||
|
|
<tr><td class="paramname">mesh</td><td>要导出的半边网格</td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section note"><dt>注解</dt><dd>输出的 PLY 为 ASCII 编码,易于人工阅读和编辑 </dd>
|
|||
|
|
<dd>
|
|||
|
|
若需要二进制输出以提高性能,请使用 <a class="el" href="classvde_1_1foundation_1_1BinarySerializer.html" title="二进制序列化器">BinarySerializer</a></dd></dl>
|
|||
|
|
<div class="fragment"><div class="line">mesh::HalfedgeMesh mesh = <span class="comment">// ...;</span></div>
|
|||
|
|
<div class="line"><a class="code" href="group__foundation.html#ga5601dbe30446f41c9a8f033b0b4f39ed">write_ply</a>(<span class="stringliteral">"output.ply"</span>, mesh);</div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_ga5601dbe30446f41c9a8f033b0b4f39ed"><div class="ttname"><a href="group__foundation.html#ga5601dbe30446f41c9a8f033b0b4f39ed">vde::foundation::write_ply</a></div><div class="ttdeci">void write_ply(const std::string &filepath, const mesh::HalfedgeMesh &mesh)</div><div class="ttdoc">写入 PLY 文件(ASCII 格式)</div></div>
|
|||
|
|
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#ga2f3d702e9426a55baf9da37244d26483" title="读取 PLY 文件(Stanford Polygon Format)">read_ply</a>, <a class="el" href="classvde_1_1foundation_1_1BinarySerializer.html" title="二进制序列化器">BinarySerializer</a> </dd></dl>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga47f7c33cd0e2a2f82cad758517a388a7"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga47f7c33cd0e2a2f82cad758517a388a7">◆ </a></span>write_stl()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">void vde::foundation::write_stl </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const std::string & </td>
|
|||
|
|
<td class="paramname"><em>filepath</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const std::vector< <a class="el" href="structvde_1_1foundation_1_1StlTriangle.html">StlTriangle</a> > & </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>写入二进制 STL 文件 </p>
|
|||
|
|
<p>以紧凑的二进制格式写出 STL 三角形列表。 二进制 STL 为业界标准交换格式,文件体积小、读写快。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">filepath</td><td>输出文件路径 </td></tr>
|
|||
|
|
<tr><td class="paramname">tris</td><td>三角形面片列表</td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section note"><dt>注解</dt><dd>二进制 STL 格式:80 字节头 + 4 字节三角形数 + 每三角形 50 字节 </dd>
|
|||
|
|
<dd>
|
|||
|
|
法向量在写入时自动归一化</dd></dl>
|
|||
|
|
<div class="fragment"><div class="line">std::vector<StlTriangle> tris = <span class="comment">// ...;</span></div>
|
|||
|
|
<div class="line"><a class="code" href="group__foundation.html#ga47f7c33cd0e2a2f82cad758517a388a7">write_stl</a>(<span class="stringliteral">"output.stl"</span>, tris); <span class="comment">// 二进制,体积小</span></div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_ga47f7c33cd0e2a2f82cad758517a388a7"><div class="ttname"><a href="group__foundation.html#ga47f7c33cd0e2a2f82cad758517a388a7">vde::foundation::write_stl</a></div><div class="ttdeci">void write_stl(const std::string &filepath, const std::vector< StlTriangle > &tris)</div><div class="ttdoc">写入二进制 STL 文件</div></div>
|
|||
|
|
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#ga19bedcf026cfa80bbe7700f25891ca36" title="读取 STL 文件(自动检测格式)">read_stl</a>, <a class="el" href="group__foundation.html#ga3357e1dfba02250f2c6b85d276997253" title="写入 ASCII STL 文件">write_stl_ascii</a> </dd></dl>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<a id="ga3357e1dfba02250f2c6b85d276997253"></a>
|
|||
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga3357e1dfba02250f2c6b85d276997253">◆ </a></span>write_stl_ascii()</h2>
|
|||
|
|
|
|||
|
|
<div class="memitem">
|
|||
|
|
<div class="memproto">
|
|||
|
|
<table class="memname">
|
|||
|
|
<tr>
|
|||
|
|
<td class="memname">void vde::foundation::write_stl_ascii </td>
|
|||
|
|
<td>(</td>
|
|||
|
|
<td class="paramtype">const std::string & </td>
|
|||
|
|
<td class="paramname"><em>filepath</em>, </td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td class="paramkey"></td>
|
|||
|
|
<td></td>
|
|||
|
|
<td class="paramtype">const std::vector< <a class="el" href="structvde_1_1foundation_1_1StlTriangle.html">StlTriangle</a> > & </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>写入 ASCII STL 文件 </p>
|
|||
|
|
<p>以人类可读的 ASCII 文本格式写出 STL,便于调试和手动编辑。</p>
|
|||
|
|
<dl class="params"><dt>参数</dt><dd>
|
|||
|
|
<table class="params">
|
|||
|
|
<tr><td class="paramname">filepath</td><td>输出文件路径 </td></tr>
|
|||
|
|
<tr><td class="paramname">tris</td><td>三角形面片列表</td></tr>
|
|||
|
|
</table>
|
|||
|
|
</dd>
|
|||
|
|
</dl>
|
|||
|
|
<dl class="section warning"><dt>警告</dt><dd>ASCII STL 文件体积约为二进制 STL 的 5-10 倍,不适合大规模网格</dd></dl>
|
|||
|
|
<div class="fragment"><div class="line">std::vector<StlTriangle> tris = <span class="comment">// ...;</span></div>
|
|||
|
|
<div class="line"><a class="code" href="group__foundation.html#ga3357e1dfba02250f2c6b85d276997253">write_stl_ascii</a>(<span class="stringliteral">"debug.stl"</span>, tris); <span class="comment">// 可读文本,便于调试</span></div>
|
|||
|
|
<div class="ttc" id="agroup__foundation_html_ga3357e1dfba02250f2c6b85d276997253"><div class="ttname"><a href="group__foundation.html#ga3357e1dfba02250f2c6b85d276997253">vde::foundation::write_stl_ascii</a></div><div class="ttdeci">void write_stl_ascii(const std::string &filepath, const std::vector< StlTriangle > &tris)</div><div class="ttdoc">写入 ASCII STL 文件</div></div>
|
|||
|
|
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group__foundation.html#ga19bedcf026cfa80bbe7700f25891ca36" title="读取 STL 文件(自动检测格式)">read_stl</a>, <a class="el" href="group__foundation.html#ga47f7c33cd0e2a2f82cad758517a388a7" title="写入二进制 STL 文件">write_stl</a> </dd></dl>
|
|||
|
|
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</div><!-- contents -->
|
|||
|
|
</div><!-- doc-content -->
|
|||
|
|
<!-- start footer part -->
|
|||
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|||
|
|
<ul>
|
|||
|
|
<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>
|