2095 lines
119 KiB
HTML
2095 lines
119 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: include/vde/capi/vde_capi.h 文件参考</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('vde__capi_8h.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="#typedef-members">类型定义</a> |
|
||
<a href="#func-members">函数</a> </div>
|
||
<div class="headertitle">
|
||
<div class="title">vde_capi.h 文件参考<div class="ingroups"><a class="el" href="group__capi.html">C API 模块 (vde::capi)</a></div></div> </div>
|
||
</div><!--header-->
|
||
<div class="contents">
|
||
|
||
<p>ViewDesignEngine C API — 跨语言边界接口
|
||
<a href="#details">更多...</a></p>
|
||
<div class="textblock"><code>#include <stddef.h></code><br />
|
||
<code>#include <stdint.h></code><br />
|
||
</div><div class="textblock"><div class="dynheader">
|
||
vde_capi.h 的引用(Include)关系图:</div>
|
||
<div class="dyncontent">
|
||
<div class="center"><img src="vde__capi_8h__incl.png" border="0" usemap="#ainclude_2vde_2capi_2vde__capi_8h" alt=""/></div>
|
||
<map name="ainclude_2vde_2capi_2vde__capi_8h" id="ainclude_2vde_2capi_2vde__capi_8h">
|
||
<area shape="rect" title="ViewDesignEngine C API — 跨语言边界接口" alt="" coords="13,5,169,47"/>
|
||
<area shape="rect" title=" " alt="" coords="5,95,80,121"/>
|
||
<area shape="rect" title=" " alt="" coords="105,95,175,121"/>
|
||
</map>
|
||
</div>
|
||
</div>
|
||
<p><a href="vde__capi_8h_source.html">浏览源代码.</a></p>
|
||
<table class="memberdecls">
|
||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
|
||
类型定义</h2></td></tr>
|
||
<tr class="memitem:a5d25ac71389adcd7f6e974673cbe07c6"><td class="memItemLeft" align="right" valign="top">typedef struct VdeContext * </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a></td></tr>
|
||
<tr class="memdesc:a5d25ac71389adcd7f6e974673cbe07c6"><td class="mdescLeft"> </td><td class="mdescRight">引擎上下文句柄 — 管理错误状态和内部资源 <a href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">更多...</a><br /></td></tr>
|
||
<tr class="separator:a5d25ac71389adcd7f6e974673cbe07c6"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a612991cb0f7daa4036b555eecb5b1700"><td class="memItemLeft" align="right" valign="top">typedef struct VdeMesh * </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a></td></tr>
|
||
<tr class="memdesc:a612991cb0f7daa4036b555eecb5b1700"><td class="mdescLeft"> </td><td class="mdescRight">三角网格句柄 — 顶点+面集合 <a href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">更多...</a><br /></td></tr>
|
||
<tr class="separator:a612991cb0f7daa4036b555eecb5b1700"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:adbe99e0d601bba164d42b73d8d3f28f7"><td class="memItemLeft" align="right" valign="top">typedef struct VdeCurve * </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#adbe99e0d601bba164d42b73d8d3f28f7">VdeCurveHandle</a></td></tr>
|
||
<tr class="memdesc:adbe99e0d601bba164d42b73d8d3f28f7"><td class="mdescLeft"> </td><td class="mdescRight">参数曲线句柄 — NURBS 曲线 <a href="vde__capi_8h.html#adbe99e0d601bba164d42b73d8d3f28f7">更多...</a><br /></td></tr>
|
||
<tr class="separator:adbe99e0d601bba164d42b73d8d3f28f7"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a3a17900fada7dfe2be0874044ea56f31"><td class="memItemLeft" align="right" valign="top">typedef struct VdeSolver * </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a></td></tr>
|
||
<tr class="memdesc:a3a17900fada7dfe2be0874044ea56f31"><td class="mdescLeft"> </td><td class="mdescRight">约束求解器句柄 — 二维草图约束 <a href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">更多...</a><br /></td></tr>
|
||
<tr class="separator:a3a17900fada7dfe2be0874044ea56f31"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a749b764a4e5406035946b13790a9a2f3"><td class="memItemLeft" align="right" valign="top">typedef struct VdeBody * </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a749b764a4e5406035946b13790a9a2f3">VdeBodyHandle</a></td></tr>
|
||
<tr class="memdesc:a749b764a4e5406035946b13790a9a2f3"><td class="mdescLeft"> </td><td class="mdescRight">B-Rep 实体句柄 — 边界表示模型 <a href="vde__capi_8h.html#a749b764a4e5406035946b13790a9a2f3">更多...</a><br /></td></tr>
|
||
<tr class="separator:a749b764a4e5406035946b13790a9a2f3"><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:af0565d3eee132efe7d6e8cee37e102df"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#af0565d3eee132efe7d6e8cee37e102df">vde_create</a> (void)</td></tr>
|
||
<tr class="memdesc:af0565d3eee132efe7d6e8cee37e102df"><td class="mdescLeft"> </td><td class="mdescRight">创建 ViewDesignEngine 上下文 <a href="vde__capi_8h.html#af0565d3eee132efe7d6e8cee37e102df">更多...</a><br /></td></tr>
|
||
<tr class="separator:af0565d3eee132efe7d6e8cee37e102df"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aded4ee33d5564b05114ad605d003f34d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#aded4ee33d5564b05114ad605d003f34d">vde_destroy</a> (<a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> ctx)</td></tr>
|
||
<tr class="memdesc:aded4ee33d5564b05114ad605d003f34d"><td class="mdescLeft"> </td><td class="mdescRight">销毁引擎上下文 <a href="vde__capi_8h.html#aded4ee33d5564b05114ad605d003f34d">更多...</a><br /></td></tr>
|
||
<tr class="separator:aded4ee33d5564b05114ad605d003f34d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aa5eee51a9795e1c06826bf6ad6144e8d"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#aa5eee51a9795e1c06826bf6ad6144e8d">vde_version</a> (void)</td></tr>
|
||
<tr class="memdesc:aa5eee51a9795e1c06826bf6ad6144e8d"><td class="mdescLeft"> </td><td class="mdescRight">获取引擎版本字符串 <a href="vde__capi_8h.html#aa5eee51a9795e1c06826bf6ad6144e8d">更多...</a><br /></td></tr>
|
||
<tr class="separator:aa5eee51a9795e1c06826bf6ad6144e8d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a44fa58de60fbdf2b08956a4f4dd8a0aa"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a44fa58de60fbdf2b08956a4f4dd8a0aa">vde_last_error</a> (<a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> ctx)</td></tr>
|
||
<tr class="memdesc:a44fa58de60fbdf2b08956a4f4dd8a0aa"><td class="mdescLeft"> </td><td class="mdescRight">获取最后一次操作的错误描述 <a href="vde__capi_8h.html#a44fa58de60fbdf2b08956a4f4dd8a0aa">更多...</a><br /></td></tr>
|
||
<tr class="separator:a44fa58de60fbdf2b08956a4f4dd8a0aa"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a3364eca094757a19af74398c66ab43f0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a3364eca094757a19af74398c66ab43f0">vde_load_mesh</a> (<a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> ctx, const char *path)</td></tr>
|
||
<tr class="memdesc:a3364eca094757a19af74398c66ab43f0"><td class="mdescLeft"> </td><td class="mdescRight">从文件加载三角网格 <a href="vde__capi_8h.html#a3364eca094757a19af74398c66ab43f0">更多...</a><br /></td></tr>
|
||
<tr class="separator:a3364eca094757a19af74398c66ab43f0"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a5b48ac40d7da443cc951d7c3bf8f6003"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a5b48ac40d7da443cc951d7c3bf8f6003">vde_save_mesh</a> (<a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> ctx, <a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> mesh, const char *path, const char *format)</td></tr>
|
||
<tr class="memdesc:a5b48ac40d7da443cc951d7c3bf8f6003"><td class="mdescLeft"> </td><td class="mdescRight">将三角网格保存为文件 <a href="vde__capi_8h.html#a5b48ac40d7da443cc951d7c3bf8f6003">更多...</a><br /></td></tr>
|
||
<tr class="separator:a5b48ac40d7da443cc951d7c3bf8f6003"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a7faf11c35d4994e668e08b16174ec71f"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a7faf11c35d4994e668e08b16174ec71f">vde_mesh_num_vertices</a> (<a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> mesh)</td></tr>
|
||
<tr class="memdesc:a7faf11c35d4994e668e08b16174ec71f"><td class="mdescLeft"> </td><td class="mdescRight">获取网格的顶点数量 <a href="vde__capi_8h.html#a7faf11c35d4994e668e08b16174ec71f">更多...</a><br /></td></tr>
|
||
<tr class="separator:a7faf11c35d4994e668e08b16174ec71f"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aabd59a0d58b060cb34e4ae291e12b72b"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#aabd59a0d58b060cb34e4ae291e12b72b">vde_mesh_num_faces</a> (<a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> mesh)</td></tr>
|
||
<tr class="memdesc:aabd59a0d58b060cb34e4ae291e12b72b"><td class="mdescLeft"> </td><td class="mdescRight">获取网格的三角面数量 <a href="vde__capi_8h.html#aabd59a0d58b060cb34e4ae291e12b72b">更多...</a><br /></td></tr>
|
||
<tr class="separator:aabd59a0d58b060cb34e4ae291e12b72b"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a46332b2cafe166b1f3f769120d35e68e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a46332b2cafe166b1f3f769120d35e68e">vde_mesh_get_vertex</a> (<a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> mesh, size_t idx, double *out_x, double *out_y, double *out_z)</td></tr>
|
||
<tr class="memdesc:a46332b2cafe166b1f3f769120d35e68e"><td class="mdescLeft"> </td><td class="mdescRight">获取指定索引的顶点坐标 <a href="vde__capi_8h.html#a46332b2cafe166b1f3f769120d35e68e">更多...</a><br /></td></tr>
|
||
<tr class="separator:a46332b2cafe166b1f3f769120d35e68e"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a44f0de742779b37b5a1d4c4d926ee46c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a44f0de742779b37b5a1d4c4d926ee46c">vde_mesh_get_bounds</a> (<a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> mesh, double *out_min_x, double *out_min_y, double *out_min_z, double *out_max_x, double *out_max_y, double *out_max_z)</td></tr>
|
||
<tr class="memdesc:a44f0de742779b37b5a1d4c4d926ee46c"><td class="mdescLeft"> </td><td class="mdescRight">获取网格的轴对齐包围盒 <a href="vde__capi_8h.html#a44f0de742779b37b5a1d4c4d926ee46c">更多...</a><br /></td></tr>
|
||
<tr class="separator:a44f0de742779b37b5a1d4c4d926ee46c"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ad4763d4d03c112d2b5af3e268ff0b591"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#ad4763d4d03c112d2b5af3e268ff0b591">vde_mesh_free</a> (<a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> mesh)</td></tr>
|
||
<tr class="memdesc:ad4763d4d03c112d2b5af3e268ff0b591"><td class="mdescLeft"> </td><td class="mdescRight">释放网格句柄及其资源 <a href="vde__capi_8h.html#ad4763d4d03c112d2b5af3e268ff0b591">更多...</a><br /></td></tr>
|
||
<tr class="separator:ad4763d4d03c112d2b5af3e268ff0b591"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a77b1f5142fd90da486a5c139c3b14c16"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a77b1f5142fd90da486a5c139c3b14c16">vde_mesh_simplify</a> (<a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> ctx, <a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> mesh, double target_ratio)</td></tr>
|
||
<tr class="memdesc:a77b1f5142fd90da486a5c139c3b14c16"><td class="mdescLeft"> </td><td class="mdescRight">网格简化 <a href="vde__capi_8h.html#a77b1f5142fd90da486a5c139c3b14c16">更多...</a><br /></td></tr>
|
||
<tr class="separator:a77b1f5142fd90da486a5c139c3b14c16"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a46bd97beffa458984cbc323c65c7c238"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a46bd97beffa458984cbc323c65c7c238">vde_mesh_smooth</a> (<a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> ctx, <a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> mesh, int iterations)</td></tr>
|
||
<tr class="memdesc:a46bd97beffa458984cbc323c65c7c238"><td class="mdescLeft"> </td><td class="mdescRight">网格平滑(Laplacian 或 Taubin 平滑) <a href="vde__capi_8h.html#a46bd97beffa458984cbc323c65c7c238">更多...</a><br /></td></tr>
|
||
<tr class="separator:a46bd97beffa458984cbc323c65c7c238"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a3ce60d7da004c9b840d619a71ca39a8a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a3ce60d7da004c9b840d619a71ca39a8a">vde_mesh_boolean</a> (<a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> ctx, <a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> a, <a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> b, int operation)</td></tr>
|
||
<tr class="memdesc:a3ce60d7da004c9b840d619a71ca39a8a"><td class="mdescLeft"> </td><td class="mdescRight">网格布尔运算 <a href="vde__capi_8h.html#a3ce60d7da004c9b840d619a71ca39a8a">更多...</a><br /></td></tr>
|
||
<tr class="separator:a3ce60d7da004c9b840d619a71ca39a8a"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a2e622ea345565541cd5fef16e97ecec6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vde__capi_8h.html#adbe99e0d601bba164d42b73d8d3f28f7">VdeCurveHandle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a2e622ea345565541cd5fef16e97ecec6">vde_curve_create_bezier</a> (<a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> ctx, const double *control_points, int num_points, int dim)</td></tr>
|
||
<tr class="memdesc:a2e622ea345565541cd5fef16e97ecec6"><td class="mdescLeft"> </td><td class="mdescRight">创建 Bézier 曲线 <a href="vde__capi_8h.html#a2e622ea345565541cd5fef16e97ecec6">更多...</a><br /></td></tr>
|
||
<tr class="separator:a2e622ea345565541cd5fef16e97ecec6"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a7cdf208a934eb1335beba7bcf98bb75d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a7cdf208a934eb1335beba7bcf98bb75d">vde_curve_evaluate</a> (<a class="el" href="vde__capi_8h.html#adbe99e0d601bba164d42b73d8d3f28f7">VdeCurveHandle</a> curve, double t, double *out_x, double *out_y, double *out_z)</td></tr>
|
||
<tr class="memdesc:a7cdf208a934eb1335beba7bcf98bb75d"><td class="mdescLeft"> </td><td class="mdescRight">在参数 t 处求值曲线 <a href="vde__capi_8h.html#a7cdf208a934eb1335beba7bcf98bb75d">更多...</a><br /></td></tr>
|
||
<tr class="separator:a7cdf208a934eb1335beba7bcf98bb75d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aec5aedf79c8a7f3ac64e92417118b735"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#aec5aedf79c8a7f3ac64e92417118b735">vde_curve_degree</a> (<a class="el" href="vde__capi_8h.html#adbe99e0d601bba164d42b73d8d3f28f7">VdeCurveHandle</a> curve)</td></tr>
|
||
<tr class="memdesc:aec5aedf79c8a7f3ac64e92417118b735"><td class="mdescLeft"> </td><td class="mdescRight">获取曲线的次数 <a href="vde__capi_8h.html#aec5aedf79c8a7f3ac64e92417118b735">更多...</a><br /></td></tr>
|
||
<tr class="separator:aec5aedf79c8a7f3ac64e92417118b735"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a8b1982d568ee1889beb9fac1cf19a71f"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a8b1982d568ee1889beb9fac1cf19a71f">vde_curve_free</a> (<a class="el" href="vde__capi_8h.html#adbe99e0d601bba164d42b73d8d3f28f7">VdeCurveHandle</a> curve)</td></tr>
|
||
<tr class="memdesc:a8b1982d568ee1889beb9fac1cf19a71f"><td class="mdescLeft"> </td><td class="mdescRight">释放曲线句柄 <a href="vde__capi_8h.html#a8b1982d568ee1889beb9fac1cf19a71f">更多...</a><br /></td></tr>
|
||
<tr class="separator:a8b1982d568ee1889beb9fac1cf19a71f"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a6f79c7bc11d4bafcebe8d15846ab2b92"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a6f79c7bc11d4bafcebe8d15846ab2b92">vde_collision_gjk_spheres</a> (<a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> ctx, double cx1, double cy1, double cz1, double r1, double cx2, double cy2, double cz2, double r2)</td></tr>
|
||
<tr class="memdesc:a6f79c7bc11d4bafcebe8d15846ab2b92"><td class="mdescLeft"> </td><td class="mdescRight">两球体碰撞检测(GJK 算法) <a href="vde__capi_8h.html#a6f79c7bc11d4bafcebe8d15846ab2b92">更多...</a><br /></td></tr>
|
||
<tr class="separator:a6f79c7bc11d4bafcebe8d15846ab2b92"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aee0d5d4340cff8a807222457f3fd4535"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#aee0d5d4340cff8a807222457f3fd4535">vde_collision_ray_mesh</a> (<a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> ctx, <a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> mesh, double ox, double oy, double oz, double dx, double dy, double dz, double *out_t, double *out_x, double *out_y, double *out_z)</td></tr>
|
||
<tr class="memdesc:aee0d5d4340cff8a807222457f3fd4535"><td class="mdescLeft"> </td><td class="mdescRight">射线与网格的最近交点查询 <a href="vde__capi_8h.html#aee0d5d4340cff8a807222457f3fd4535">更多...</a><br /></td></tr>
|
||
<tr class="separator:aee0d5d4340cff8a807222457f3fd4535"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:af881dd70f559a3ff280b0047c2fcc8cd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#af881dd70f559a3ff280b0047c2fcc8cd">vde_solver_create</a> (void)</td></tr>
|
||
<tr class="memdesc:af881dd70f559a3ff280b0047c2fcc8cd"><td class="mdescLeft"> </td><td class="mdescRight">创建二维约束求解器 <a href="vde__capi_8h.html#af881dd70f559a3ff280b0047c2fcc8cd">更多...</a><br /></td></tr>
|
||
<tr class="separator:af881dd70f559a3ff280b0047c2fcc8cd"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a665e2414e558165f136837ce95119f74"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a665e2414e558165f136837ce95119f74">vde_solver_add_point</a> (<a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> solver, double x, double y, int fixed)</td></tr>
|
||
<tr class="memdesc:a665e2414e558165f136837ce95119f74"><td class="mdescLeft"> </td><td class="mdescRight">向求解器添加点 <a href="vde__capi_8h.html#a665e2414e558165f136837ce95119f74">更多...</a><br /></td></tr>
|
||
<tr class="separator:a665e2414e558165f136837ce95119f74"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a9cf4e2fc71bfa61073144147bf76c2e8"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a9cf4e2fc71bfa61073144147bf76c2e8">vde_solver_add_line</a> (<a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> solver, int p0, int p1)</td></tr>
|
||
<tr class="memdesc:a9cf4e2fc71bfa61073144147bf76c2e8"><td class="mdescLeft"> </td><td class="mdescRight">向求解器添加线段(由两个点定义) <a href="vde__capi_8h.html#a9cf4e2fc71bfa61073144147bf76c2e8">更多...</a><br /></td></tr>
|
||
<tr class="separator:a9cf4e2fc71bfa61073144147bf76c2e8"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a73d39d4a953542e738faf6e337c6420c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a73d39d4a953542e738faf6e337c6420c">vde_solver_add_distance_constraint</a> (<a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> solver, int p0, int p1, double d)</td></tr>
|
||
<tr class="memdesc:a73d39d4a953542e738faf6e337c6420c"><td class="mdescLeft"> </td><td class="mdescRight">添加距离约束(两点之间) <a href="vde__capi_8h.html#a73d39d4a953542e738faf6e337c6420c">更多...</a><br /></td></tr>
|
||
<tr class="separator:a73d39d4a953542e738faf6e337c6420c"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a40107e23d391015f1e17e7ca94c81e73"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a40107e23d391015f1e17e7ca94c81e73">vde_solver_add_horizontal</a> (<a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> solver, int line_id)</td></tr>
|
||
<tr class="memdesc:a40107e23d391015f1e17e7ca94c81e73"><td class="mdescLeft"> </td><td class="mdescRight">添加水平约束(线段水平) <a href="vde__capi_8h.html#a40107e23d391015f1e17e7ca94c81e73">更多...</a><br /></td></tr>
|
||
<tr class="separator:a40107e23d391015f1e17e7ca94c81e73"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a2a2e54cdbf87a46434219917d4ddcdc9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a2a2e54cdbf87a46434219917d4ddcdc9">vde_solver_add_vertical</a> (<a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> solver, int line_id)</td></tr>
|
||
<tr class="memdesc:a2a2e54cdbf87a46434219917d4ddcdc9"><td class="mdescLeft"> </td><td class="mdescRight">添加垂直约束(线段垂直) <a href="vde__capi_8h.html#a2a2e54cdbf87a46434219917d4ddcdc9">更多...</a><br /></td></tr>
|
||
<tr class="separator:a2a2e54cdbf87a46434219917d4ddcdc9"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:abe46983c28ce8d95adf263007ef93139"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#abe46983c28ce8d95adf263007ef93139">vde_solver_solve</a> (<a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> solver, int max_iter, double tol)</td></tr>
|
||
<tr class="memdesc:abe46983c28ce8d95adf263007ef93139"><td class="mdescLeft"> </td><td class="mdescRight">求解约束系统 <a href="vde__capi_8h.html#abe46983c28ce8d95adf263007ef93139">更多...</a><br /></td></tr>
|
||
<tr class="separator:abe46983c28ce8d95adf263007ef93139"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aac74b82de9d0e220e11562207f35ecd5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#aac74b82de9d0e220e11562207f35ecd5">vde_solver_get_point</a> (<a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> solver, int idx, double *out_x, double *out_y)</td></tr>
|
||
<tr class="memdesc:aac74b82de9d0e220e11562207f35ecd5"><td class="mdescLeft"> </td><td class="mdescRight">获取求解后的点坐标 <a href="vde__capi_8h.html#aac74b82de9d0e220e11562207f35ecd5">更多...</a><br /></td></tr>
|
||
<tr class="separator:aac74b82de9d0e220e11562207f35ecd5"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a65aed874db7cbb21c67f93879530518d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a65aed874db7cbb21c67f93879530518d">vde_solver_free</a> (<a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> solver)</td></tr>
|
||
<tr class="memdesc:a65aed874db7cbb21c67f93879530518d"><td class="mdescLeft"> </td><td class="mdescRight">释放求解器句柄 <a href="vde__capi_8h.html#a65aed874db7cbb21c67f93879530518d">更多...</a><br /></td></tr>
|
||
<tr class="separator:a65aed874db7cbb21c67f93879530518d"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ad866e34e81dfbc4b6659c4801ec151cf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vde__capi_8h.html#a749b764a4e5406035946b13790a9a2f3">VdeBodyHandle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#ad866e34e81dfbc4b6659c4801ec151cf">vde_body_create_box</a> (<a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> ctx, double w, double h, double d)</td></tr>
|
||
<tr class="memdesc:ad866e34e81dfbc4b6659c4801ec151cf"><td class="mdescLeft"> </td><td class="mdescRight">创建实心立方体 B-Rep <a href="vde__capi_8h.html#ad866e34e81dfbc4b6659c4801ec151cf">更多...</a><br /></td></tr>
|
||
<tr class="separator:ad866e34e81dfbc4b6659c4801ec151cf"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ac185ef3588f08fd81c967ed488273073"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vde__capi_8h.html#a749b764a4e5406035946b13790a9a2f3">VdeBodyHandle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#ac185ef3588f08fd81c967ed488273073">vde_body_create_cylinder</a> (<a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> ctx, double r, double h, int segs)</td></tr>
|
||
<tr class="memdesc:ac185ef3588f08fd81c967ed488273073"><td class="mdescLeft"> </td><td class="mdescRight">创建实心圆柱体 B-Rep <a href="vde__capi_8h.html#ac185ef3588f08fd81c967ed488273073">更多...</a><br /></td></tr>
|
||
<tr class="separator:ac185ef3588f08fd81c967ed488273073"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a7ce4dd06d08a30f3aaa6f6eacea06d19"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vde__capi_8h.html#a749b764a4e5406035946b13790a9a2f3">VdeBodyHandle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a7ce4dd06d08a30f3aaa6f6eacea06d19">vde_body_create_sphere</a> (<a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> ctx, double r, int su, int sv)</td></tr>
|
||
<tr class="memdesc:a7ce4dd06d08a30f3aaa6f6eacea06d19"><td class="mdescLeft"> </td><td class="mdescRight">创建球体 B-Rep <a href="vde__capi_8h.html#a7ce4dd06d08a30f3aaa6f6eacea06d19">更多...</a><br /></td></tr>
|
||
<tr class="separator:a7ce4dd06d08a30f3aaa6f6eacea06d19"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a7ec446206a1c0364a11c5d6c743b09bc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a7ec446206a1c0364a11c5d6c743b09bc">vde_body_to_mesh</a> (<a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> ctx, <a class="el" href="vde__capi_8h.html#a749b764a4e5406035946b13790a9a2f3">VdeBodyHandle</a> body, double deflection)</td></tr>
|
||
<tr class="memdesc:a7ec446206a1c0364a11c5d6c743b09bc"><td class="mdescLeft"> </td><td class="mdescRight">将 B-Rep 实体转换为三角网格 <a href="vde__capi_8h.html#a7ec446206a1c0364a11c5d6c743b09bc">更多...</a><br /></td></tr>
|
||
<tr class="separator:a7ec446206a1c0364a11c5d6c743b09bc"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:abe8c82f56ff823dbb6af90ae5dd3b62f"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#abe8c82f56ff823dbb6af90ae5dd3b62f">vde_body_free</a> (<a class="el" href="vde__capi_8h.html#a749b764a4e5406035946b13790a9a2f3">VdeBodyHandle</a> body)</td></tr>
|
||
<tr class="memdesc:abe8c82f56ff823dbb6af90ae5dd3b62f"><td class="mdescLeft"> </td><td class="mdescRight">释放 B-Rep 实体句柄 <a href="vde__capi_8h.html#abe8c82f56ff823dbb6af90ae5dd3b62f">更多...</a><br /></td></tr>
|
||
<tr class="separator:abe8c82f56ff823dbb6af90ae5dd3b62f"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:ac718cb38d742050b52f2dbeb82797842"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#ac718cb38d742050b52f2dbeb82797842">vde_serialize_mesh</a> (<a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> ctx, <a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> mesh, uint8_t **out_data)</td></tr>
|
||
<tr class="memdesc:ac718cb38d742050b52f2dbeb82797842"><td class="mdescLeft"> </td><td class="mdescRight">将网格序列化为二进制字节流 <a href="vde__capi_8h.html#ac718cb38d742050b52f2dbeb82797842">更多...</a><br /></td></tr>
|
||
<tr class="separator:ac718cb38d742050b52f2dbeb82797842"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:a3370253bfb65769e93df74de498ff6ac"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#a3370253bfb65769e93df74de498ff6ac">vde_deserialize_mesh</a> (<a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> ctx, const uint8_t *data, size_t len)</td></tr>
|
||
<tr class="memdesc:a3370253bfb65769e93df74de498ff6ac"><td class="mdescLeft"> </td><td class="mdescRight">从二进制字节流反序列化为网格 <a href="vde__capi_8h.html#a3370253bfb65769e93df74de498ff6ac">更多...</a><br /></td></tr>
|
||
<tr class="separator:a3370253bfb65769e93df74de498ff6ac"><td class="memSeparator" colspan="2"> </td></tr>
|
||
<tr class="memitem:aee33bba95777766e2a2cad01bae90b9c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="vde__capi_8h.html#aee33bba95777766e2a2cad01bae90b9c">vde_free_buffer</a> (uint8_t *ptr)</td></tr>
|
||
<tr class="memdesc:aee33bba95777766e2a2cad01bae90b9c"><td class="mdescLeft"> </td><td class="mdescRight">释放由 vde_serialize_mesh 分配的缓冲区 <a href="vde__capi_8h.html#aee33bba95777766e2a2cad01bae90b9c">更多...</a><br /></td></tr>
|
||
<tr class="separator:aee33bba95777766e2a2cad01bae90b9c"><td class="memSeparator" colspan="2"> </td></tr>
|
||
</table>
|
||
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
|
||
<div class="textblock"><p>ViewDesignEngine C API — 跨语言边界接口 </p>
|
||
<p>提供稳定的 C ABI 接口,使 Python、Rust、C# 等语言可以通过 FFI 调用 ViewDesignEngine 的核心功能,无需依赖 C++ ABI。</p>
|
||
<h2><a class="anchor" id="autotoc_md21"></a>
|
||
设计原则</h2>
|
||
<ol type="1">
|
||
<li><b>不透明句柄</b>: 所有内部对象(网格、曲线、求解器等)通过 <code>typedef</code> 前向声明 隐藏为不透明指针类型,外部代码只能通过 API 函数操作</li>
|
||
<li><b>C 兼容类型</b>: 仅使用 C 原生类型(int, double, const char*)作为参数和返回值</li>
|
||
<li><b>输出通过指针</b>: 复数返回值(如顶点坐标、包围盒)通过输出参数传递,避免结构体 ABI 问题</li>
|
||
<li><b>显式生命周期管理</b>: 每个 create/load 函数都有对应的 free/destroy 函数</li>
|
||
</ol>
|
||
<h2><a class="anchor" id="autotoc_md22"></a>
|
||
句柄类型</h2>
|
||
<table class="markdownTable">
|
||
<tr class="markdownTableHead">
|
||
<th class="markdownTableHeadNone">C 类型 </th><th class="markdownTableHeadNone">内部类型 </th><th class="markdownTableHeadNone">创建方式 </th><th class="markdownTableHeadNone">释放方式 </th></tr>
|
||
<tr class="markdownTableRowOdd">
|
||
<td class="markdownTableBodyNone">VdeHandle </td><td class="markdownTableBodyNone">VdeContext </td><td class="markdownTableBodyNone"><a class="el" href="vde__capi_8h.html#af0565d3eee132efe7d6e8cee37e102df" title="创建 ViewDesignEngine 上下文">vde_create()</a> </td><td class="markdownTableBodyNone"><a class="el" href="vde__capi_8h.html#aded4ee33d5564b05114ad605d003f34d" title="销毁引擎上下文">vde_destroy()</a> </td></tr>
|
||
<tr class="markdownTableRowEven">
|
||
<td class="markdownTableBodyNone">VdeMeshHandle </td><td class="markdownTableBodyNone">HalfedgeMesh </td><td class="markdownTableBodyNone"><a class="el" href="vde__capi_8h.html#a3364eca094757a19af74398c66ab43f0" title="从文件加载三角网格">vde_load_mesh()</a>, 工厂函数 </td><td class="markdownTableBodyNone"><a class="el" href="vde__capi_8h.html#ad4763d4d03c112d2b5af3e268ff0b591" title="释放网格句柄及其资源">vde_mesh_free()</a> </td></tr>
|
||
<tr class="markdownTableRowOdd">
|
||
<td class="markdownTableBodyNone">VdeCurveHandle </td><td class="markdownTableBodyNone">NurbsCurve </td><td class="markdownTableBodyNone"><a class="el" href="vde__capi_8h.html#a2e622ea345565541cd5fef16e97ecec6" title="创建 Bézier 曲线">vde_curve_create_bezier()</a> </td><td class="markdownTableBodyNone"><a class="el" href="vde__capi_8h.html#a8b1982d568ee1889beb9fac1cf19a71f" title="释放曲线句柄">vde_curve_free()</a> </td></tr>
|
||
<tr class="markdownTableRowEven">
|
||
<td class="markdownTableBodyNone">VdeSolverHandle </td><td class="markdownTableBodyNone">ConstraintSolver </td><td class="markdownTableBodyNone"><a class="el" href="vde__capi_8h.html#af881dd70f559a3ff280b0047c2fcc8cd" title="创建二维约束求解器">vde_solver_create()</a> </td><td class="markdownTableBodyNone"><a class="el" href="vde__capi_8h.html#a65aed874db7cbb21c67f93879530518d" title="释放求解器句柄">vde_solver_free()</a> </td></tr>
|
||
<tr class="markdownTableRowOdd">
|
||
<td class="markdownTableBodyNone">VdeBodyHandle </td><td class="markdownTableBodyNone">BrepModel </td><td class="markdownTableBodyNone">vde_body_create_*() </td><td class="markdownTableBodyNone"><a class="el" href="vde__capi_8h.html#abe8c82f56ff823dbb6af90ae5dd3b62f" title="释放 B-Rep 实体句柄">vde_body_free()</a> </td></tr>
|
||
</table>
|
||
<h2><a class="anchor" id="autotoc_md23"></a>
|
||
布尔操作编码</h2>
|
||
<table class="markdownTable">
|
||
<tr class="markdownTableHead">
|
||
<th class="markdownTableHeadNone">操作 </th><th class="markdownTableHeadNone">整数值 </th></tr>
|
||
<tr class="markdownTableRowOdd">
|
||
<td class="markdownTableBodyNone">并集 </td><td class="markdownTableBodyNone">0 </td></tr>
|
||
<tr class="markdownTableRowEven">
|
||
<td class="markdownTableBodyNone">交集 </td><td class="markdownTableBodyNone">1 </td></tr>
|
||
<tr class="markdownTableRowOdd">
|
||
<td class="markdownTableBodyNone">差集 </td><td class="markdownTableBodyNone">2 </td></tr>
|
||
</table>
|
||
<h2><a class="anchor" id="autotoc_md24"></a>
|
||
线程安全性</h2>
|
||
<ul>
|
||
<li>每个 VdeHandle 是独立的上下文,不同句柄之间线程安全</li>
|
||
<li>同一句柄上的操作不是线程安全的(调用方负责同步)</li>
|
||
</ul>
|
||
<dl class="section see"><dt>参见</dt><dd><a class="el" href="vde_8h.html">vde.h</a> C++ 等价接口 </dd></dl>
|
||
|
||
<p class="definition">在文件 <a class="el" href="vde__capi_8h_source.html">vde_capi.h</a> 中定义.</p>
|
||
</div><h2 class="groupheader">类型定义说明</h2>
|
||
<a id="a749b764a4e5406035946b13790a9a2f3"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a749b764a4e5406035946b13790a9a2f3">◆ </a></span>VdeBodyHandle</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">typedef struct VdeBody* <a class="el" href="vde__capi_8h.html#a749b764a4e5406035946b13790a9a2f3">VdeBodyHandle</a></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>B-Rep 实体句柄 — 边界表示模型 </p>
|
||
|
||
<p class="definition">在文件 <a class="el" href="vde__capi_8h_source.html">vde_capi.h</a> 第 <a class="el" href="vde__capi_8h_source.html#l00077">77</a> 行定义.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="adbe99e0d601bba164d42b73d8d3f28f7"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#adbe99e0d601bba164d42b73d8d3f28f7">◆ </a></span>VdeCurveHandle</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">typedef struct VdeCurve* <a class="el" href="vde__capi_8h.html#adbe99e0d601bba164d42b73d8d3f28f7">VdeCurveHandle</a></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>参数曲线句柄 — NURBS 曲线 </p>
|
||
|
||
<p class="definition">在文件 <a class="el" href="vde__capi_8h_source.html">vde_capi.h</a> 第 <a class="el" href="vde__capi_8h_source.html#l00067">67</a> 行定义.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a5d25ac71389adcd7f6e974673cbe07c6"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a5d25ac71389adcd7f6e974673cbe07c6">◆ </a></span>VdeHandle</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">typedef struct VdeContext* <a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>引擎上下文句柄 — 管理错误状态和内部资源 </p>
|
||
|
||
<p class="definition">在文件 <a class="el" href="vde__capi_8h_source.html">vde_capi.h</a> 第 <a class="el" href="vde__capi_8h_source.html#l00057">57</a> 行定义.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a612991cb0f7daa4036b555eecb5b1700"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a612991cb0f7daa4036b555eecb5b1700">◆ </a></span>VdeMeshHandle</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">typedef struct VdeMesh* <a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>三角网格句柄 — 顶点+面集合 </p>
|
||
|
||
<p class="definition">在文件 <a class="el" href="vde__capi_8h_source.html">vde_capi.h</a> 第 <a class="el" href="vde__capi_8h_source.html#l00062">62</a> 行定义.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a3a17900fada7dfe2be0874044ea56f31"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a3a17900fada7dfe2be0874044ea56f31">◆ </a></span>VdeSolverHandle</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">typedef struct VdeSolver* <a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>约束求解器句柄 — 二维草图约束 </p>
|
||
|
||
<p class="definition">在文件 <a class="el" href="vde__capi_8h_source.html">vde_capi.h</a> 第 <a class="el" href="vde__capi_8h_source.html#l00072">72</a> 行定义.</p>
|
||
|
||
</div>
|
||
</div>
|
||
<h2 class="groupheader">函数说明</h2>
|
||
<a id="ad866e34e81dfbc4b6659c4801ec151cf"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ad866e34e81dfbc4b6659c4801ec151cf">◆ </a></span>vde_body_create_box()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="vde__capi_8h.html#a749b764a4e5406035946b13790a9a2f3">VdeBodyHandle</a> vde_body_create_box </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> </td>
|
||
<td class="paramname"><em>ctx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>w</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>h</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </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>创建实心立方体 B-Rep </p>
|
||
<p>以原点为中心的轴对齐立方体。</p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ctx</td><td>引擎上下文句柄 </td></tr>
|
||
<tr><td class="paramname">w</td><td>宽度(X 方向),> 0 </td></tr>
|
||
<tr><td class="paramname">h</td><td>高度(Y 方向),> 0 </td></tr>
|
||
<tr><td class="paramname">d</td><td>深度(Z 方向),> 0 </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>返回</dt><dd>B-Rep 实体句柄</dd></dl>
|
||
<dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#ac185ef3588f08fd81c967ed488273073" title="创建实心圆柱体 B-Rep">vde_body_create_cylinder</a> 圆柱体 </dd>
|
||
<dd>
|
||
<a class="el" href="vde__capi_8h.html#a7ce4dd06d08a30f3aaa6f6eacea06d19" title="创建球体 B-Rep">vde_body_create_sphere</a> 球体 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ac185ef3588f08fd81c967ed488273073"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ac185ef3588f08fd81c967ed488273073">◆ </a></span>vde_body_create_cylinder()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="vde__capi_8h.html#a749b764a4e5406035946b13790a9a2f3">VdeBodyHandle</a> vde_body_create_cylinder </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> </td>
|
||
<td class="paramname"><em>ctx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>r</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>h</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>segs</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>创建实心圆柱体 B-Rep </p>
|
||
<p>沿 Y 轴、以原点为中心的圆柱体。</p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ctx</td><td>引擎上下文句柄 </td></tr>
|
||
<tr><td class="paramname">r</td><td>截面半径,> 0 </td></tr>
|
||
<tr><td class="paramname">h</td><td>总高度(从 -h/2 到 +h/2) </td></tr>
|
||
<tr><td class="paramname">segs</td><td>截面分段数(边数) </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>返回</dt><dd>B-Rep 实体句柄</dd></dl>
|
||
<dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#ad866e34e81dfbc4b6659c4801ec151cf" title="创建实心立方体 B-Rep">vde_body_create_box</a> 立方体 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a7ce4dd06d08a30f3aaa6f6eacea06d19"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a7ce4dd06d08a30f3aaa6f6eacea06d19">◆ </a></span>vde_body_create_sphere()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="vde__capi_8h.html#a749b764a4e5406035946b13790a9a2f3">VdeBodyHandle</a> vde_body_create_sphere </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> </td>
|
||
<td class="paramname"><em>ctx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>r</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>su</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>sv</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>创建球体 B-Rep </p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ctx</td><td>引擎上下文句柄 </td></tr>
|
||
<tr><td class="paramname">r</td><td>球半径,> 0 </td></tr>
|
||
<tr><td class="paramname">su</td><td>经度方向分段数 </td></tr>
|
||
<tr><td class="paramname">sv</td><td>纬度方向分段数 </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>返回</dt><dd>B-Rep 实体句柄 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="abe8c82f56ff823dbb6af90ae5dd3b62f"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#abe8c82f56ff823dbb6af90ae5dd3b62f">◆ </a></span>vde_body_free()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void vde_body_free </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a749b764a4e5406035946b13790a9a2f3">VdeBodyHandle</a> </td>
|
||
<td class="paramname"><em>body</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>释放 B-Rep 实体句柄 </p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">body</td><td>B-Rep 实体句柄 </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a7ec446206a1c0364a11c5d6c743b09bc"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a7ec446206a1c0364a11c5d6c743b09bc">◆ </a></span>vde_body_to_mesh()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> vde_body_to_mesh </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> </td>
|
||
<td class="paramname"><em>ctx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a749b764a4e5406035946b13790a9a2f3">VdeBodyHandle</a> </td>
|
||
<td class="paramname"><em>body</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>deflection</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>将 B-Rep 实体转换为三角网格 </p>
|
||
<p>以指定的弦高误差对曲面进行 tessellation。</p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ctx</td><td>引擎上下文句柄 </td></tr>
|
||
<tr><td class="paramname">body</td><td>B-Rep 实体句柄 </td></tr>
|
||
<tr><td class="paramname">deflection</td><td>弦高误差(越小 = 越精细,推荐 0.01) </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>返回</dt><dd>三角网格句柄</dd></dl>
|
||
<div class="fragment"><div class="line"><a class="code" href="vde__capi_8h.html#a749b764a4e5406035946b13790a9a2f3">VdeBodyHandle</a> body = <a class="code" href="vde__capi_8h.html#ad866e34e81dfbc4b6659c4801ec151cf">vde_body_create_box</a>(ctx, 10, 5, 3);</div>
|
||
<div class="line"><a class="code" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> mesh = <a class="code" href="vde__capi_8h.html#a7ec446206a1c0364a11c5d6c743b09bc">vde_body_to_mesh</a>(ctx, body, 0.01);</div>
|
||
<div class="line"><a class="code" href="vde__capi_8h.html#a5b48ac40d7da443cc951d7c3bf8f6003">vde_save_mesh</a>(ctx, mesh, <span class="stringliteral">"box.obj"</span>, <span class="stringliteral">"obj"</span>);</div>
|
||
<div class="ttc" id="avde__capi_8h_html_a5b48ac40d7da443cc951d7c3bf8f6003"><div class="ttname"><a href="vde__capi_8h.html#a5b48ac40d7da443cc951d7c3bf8f6003">vde_save_mesh</a></div><div class="ttdeci">int vde_save_mesh(VdeHandle ctx, VdeMeshHandle mesh, const char *path, const char *format)</div><div class="ttdoc">将三角网格保存为文件</div></div>
|
||
<div class="ttc" id="avde__capi_8h_html_a612991cb0f7daa4036b555eecb5b1700"><div class="ttname"><a href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a></div><div class="ttdeci">struct VdeMesh * VdeMeshHandle</div><div class="ttdoc">三角网格句柄 — 顶点+面集合</div><div class="ttdef"><b>Definition:</b> <a href="vde__capi_8h_source.html#l00062">vde_capi.h:62</a></div></div>
|
||
<div class="ttc" id="avde__capi_8h_html_a749b764a4e5406035946b13790a9a2f3"><div class="ttname"><a href="vde__capi_8h.html#a749b764a4e5406035946b13790a9a2f3">VdeBodyHandle</a></div><div class="ttdeci">struct VdeBody * VdeBodyHandle</div><div class="ttdoc">B-Rep 实体句柄 — 边界表示模型</div><div class="ttdef"><b>Definition:</b> <a href="vde__capi_8h_source.html#l00077">vde_capi.h:77</a></div></div>
|
||
<div class="ttc" id="avde__capi_8h_html_a7ec446206a1c0364a11c5d6c743b09bc"><div class="ttname"><a href="vde__capi_8h.html#a7ec446206a1c0364a11c5d6c743b09bc">vde_body_to_mesh</a></div><div class="ttdeci">VdeMeshHandle vde_body_to_mesh(VdeHandle ctx, VdeBodyHandle body, double deflection)</div><div class="ttdoc">将 B-Rep 实体转换为三角网格</div></div>
|
||
<div class="ttc" id="avde__capi_8h_html_ad866e34e81dfbc4b6659c4801ec151cf"><div class="ttname"><a href="vde__capi_8h.html#ad866e34e81dfbc4b6659c4801ec151cf">vde_body_create_box</a></div><div class="ttdeci">VdeBodyHandle vde_body_create_box(VdeHandle ctx, double w, double h, double d)</div><div class="ttdoc">创建实心立方体 B-Rep</div></div>
|
||
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#abe8c82f56ff823dbb6af90ae5dd3b62f" title="释放 B-Rep 实体句柄">vde_body_free</a> 释放 B-Rep 实体 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a6f79c7bc11d4bafcebe8d15846ab2b92"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a6f79c7bc11d4bafcebe8d15846ab2b92">◆ </a></span>vde_collision_gjk_spheres()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">int vde_collision_gjk_spheres </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> </td>
|
||
<td class="paramname"><em>ctx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>cx1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>cy1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>cz1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>r1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>cx2</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>cy2</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>cz2</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>r2</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>两球体碰撞检测(GJK 算法) </p>
|
||
<p>用于验证和测试 GJK 碰撞检测算法的轻量级接口。</p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ctx</td><td>引擎上下文句柄 </td></tr>
|
||
<tr><td class="paramname">cx1,cy1,cz1</td><td>第一个球体的球心坐标 </td></tr>
|
||
<tr><td class="paramname">r1</td><td>第一个球体的半径 </td></tr>
|
||
<tr><td class="paramname">cx2,cy2,cz2</td><td>第二个球体的球心坐标 </td></tr>
|
||
<tr><td class="paramname">r2</td><td>第二个球体的半径 </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>返回</dt><dd>碰撞返回 1,不碰撞返回 0</dd></dl>
|
||
<div class="fragment"><div class="line"><span class="keywordtype">int</span> hit = <a class="code" href="vde__capi_8h.html#a6f79c7bc11d4bafcebe8d15846ab2b92">vde_collision_gjk_spheres</a>(ctx, 0,0,0, 1.0, 1.5,0,0, 0.5);</div>
|
||
<div class="ttc" id="avde__capi_8h_html_a6f79c7bc11d4bafcebe8d15846ab2b92"><div class="ttname"><a href="vde__capi_8h.html#a6f79c7bc11d4bafcebe8d15846ab2b92">vde_collision_gjk_spheres</a></div><div class="ttdeci">int vde_collision_gjk_spheres(VdeHandle ctx, double cx1, double cy1, double cz1, double r1, double cx2, double cy2, double cz2, double r2)</div><div class="ttdoc">两球体碰撞检测(GJK 算法)</div></div>
|
||
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#aee0d5d4340cff8a807222457f3fd4535" title="射线与网格的最近交点查询">vde_collision_ray_mesh</a> 射线-网格相交 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aee0d5d4340cff8a807222457f3fd4535"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aee0d5d4340cff8a807222457f3fd4535">◆ </a></span>vde_collision_ray_mesh()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">int vde_collision_ray_mesh </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> </td>
|
||
<td class="paramname"><em>ctx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td>
|
||
<td class="paramname"><em>mesh</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>ox</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>oy</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>oz</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>dx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>dy</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>dz</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_t</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_x</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_y</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_z</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>射线与网格的最近交点查询 </p>
|
||
<p>使用 BVH 加速结构加速查询。</p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ctx</td><td>引擎上下文句柄 </td></tr>
|
||
<tr><td class="paramname">mesh</td><td>目标网格句柄 </td></tr>
|
||
<tr><td class="paramname">ox,oy,oz</td><td>射线起点 </td></tr>
|
||
<tr><td class="paramname">dx,dy,dz</td><td>射线方向(无需归一化) </td></tr>
|
||
<tr><td class="paramname">out_t</td><td>[out] 交点参数 t(沿射线的距离) </td></tr>
|
||
<tr><td class="paramname">out_x,out_y,out_z</td><td>[out] 交点坐标 </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>返回</dt><dd>命中返回 1,未命中返回 0</dd></dl>
|
||
<div class="fragment"><div class="line"><span class="keywordtype">double</span> t, hx, hy, hz;</div>
|
||
<div class="line"><span class="keywordtype">int</span> hit = <a class="code" href="vde__capi_8h.html#aee0d5d4340cff8a807222457f3fd4535">vde_collision_ray_mesh</a>(ctx, mesh,</div>
|
||
<div class="line"> 0,0,-10, <span class="comment">// 射线起点</span></div>
|
||
<div class="line"> 0,0,1, <span class="comment">// 射线方向 (沿 Z 轴正方向)</span></div>
|
||
<div class="line"> &t, &hx, &hy, &hz);</div>
|
||
<div class="line"><span class="keywordflow">if</span> (hit) printf(<span class="stringliteral">"Hit at (%f,%f,%f), t=%f\n"</span>, hx, hy, hz, t);</div>
|
||
<div class="ttc" id="avde__capi_8h_html_aee0d5d4340cff8a807222457f3fd4535"><div class="ttname"><a href="vde__capi_8h.html#aee0d5d4340cff8a807222457f3fd4535">vde_collision_ray_mesh</a></div><div class="ttdeci">int vde_collision_ray_mesh(VdeHandle ctx, VdeMeshHandle mesh, double ox, double oy, double oz, double dx, double dy, double dz, double *out_t, double *out_x, double *out_y, double *out_z)</div><div class="ttdoc">射线与网格的最近交点查询</div></div>
|
||
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#a6f79c7bc11d4bafcebe8d15846ab2b92" title="两球体碰撞检测(GJK 算法)">vde_collision_gjk_spheres</a> GJK 球体碰撞 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="af0565d3eee132efe7d6e8cee37e102df"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#af0565d3eee132efe7d6e8cee37e102df">◆ </a></span>vde_create()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> vde_create </td>
|
||
<td>(</td>
|
||
<td class="paramtype">void </td>
|
||
<td class="paramname"></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>创建 ViewDesignEngine 上下文 </p>
|
||
<p>初始化一个独立的引擎实例。几乎所有后续操作都需要传入此句柄。</p>
|
||
<dl class="section return"><dt>返回</dt><dd>新的引擎句柄,不需要时通过 <a class="el" href="vde__capi_8h.html#aded4ee33d5564b05114ad605d003f34d" title="销毁引擎上下文">vde_destroy()</a> 释放</dd></dl>
|
||
<div class="fragment"><div class="line">// Python ctypes 示例</div>
|
||
<div class="line">ctx = lib.vde_create()</div>
|
||
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#aded4ee33d5564b05114ad605d003f34d" title="销毁引擎上下文">vde_destroy</a> 释放上下文 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a2e622ea345565541cd5fef16e97ecec6"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a2e622ea345565541cd5fef16e97ecec6">◆ </a></span>vde_curve_create_bezier()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="vde__capi_8h.html#adbe99e0d601bba164d42b73d8d3f28f7">VdeCurveHandle</a> vde_curve_create_bezier </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> </td>
|
||
<td class="paramname"><em>ctx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const double * </td>
|
||
<td class="paramname"><em>control_points</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>num_points</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>dim</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>创建 Bézier 曲线 </p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ctx</td><td>引擎上下文句柄 </td></tr>
|
||
<tr><td class="paramname">control_points</td><td>控制点数组,每 3 个 double 表示一个三维点 (x,y,z) </td></tr>
|
||
<tr><td class="paramname">num_points</td><td>控制点数量(次数 = num_points - 1) </td></tr>
|
||
<tr><td class="paramname">dim</td><td>维度(固定为 3) </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>返回</dt><dd>曲线句柄</dd></dl>
|
||
<div class="fragment"><div class="line"><span class="keywordtype">double</span> cp[] = {0,0,0, 1,2,0, 3,0,0}; <span class="comment">// 3 控制点,2 次 Bézier</span></div>
|
||
<div class="line"><a class="code" href="vde__capi_8h.html#adbe99e0d601bba164d42b73d8d3f28f7">VdeCurveHandle</a> curve = <a class="code" href="vde__capi_8h.html#a2e622ea345565541cd5fef16e97ecec6">vde_curve_create_bezier</a>(ctx, cp, 3, 3);</div>
|
||
<div class="ttc" id="avde__capi_8h_html_a2e622ea345565541cd5fef16e97ecec6"><div class="ttname"><a href="vde__capi_8h.html#a2e622ea345565541cd5fef16e97ecec6">vde_curve_create_bezier</a></div><div class="ttdeci">VdeCurveHandle vde_curve_create_bezier(VdeHandle ctx, const double *control_points, int num_points, int dim)</div><div class="ttdoc">创建 Bézier 曲线</div></div>
|
||
<div class="ttc" id="avde__capi_8h_html_adbe99e0d601bba164d42b73d8d3f28f7"><div class="ttname"><a href="vde__capi_8h.html#adbe99e0d601bba164d42b73d8d3f28f7">VdeCurveHandle</a></div><div class="ttdeci">struct VdeCurve * VdeCurveHandle</div><div class="ttdoc">参数曲线句柄 — NURBS 曲线</div><div class="ttdef"><b>Definition:</b> <a href="vde__capi_8h_source.html#l00067">vde_capi.h:67</a></div></div>
|
||
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#a7cdf208a934eb1335beba7bcf98bb75d" title="在参数 t 处求值曲线">vde_curve_evaluate</a> 求值 </dd>
|
||
<dd>
|
||
<a class="el" href="vde__capi_8h.html#a8b1982d568ee1889beb9fac1cf19a71f" title="释放曲线句柄">vde_curve_free</a> 释放 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aec5aedf79c8a7f3ac64e92417118b735"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aec5aedf79c8a7f3ac64e92417118b735">◆ </a></span>vde_curve_degree()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">int vde_curve_degree </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#adbe99e0d601bba164d42b73d8d3f28f7">VdeCurveHandle</a> </td>
|
||
<td class="paramname"><em>curve</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>获取曲线的次数 </p>
|
||
<p>对于 Bézier 曲线,次数 = 控制点数 - 1。</p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">curve</td><td>曲线句柄 </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>返回</dt><dd>曲线次数 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a7cdf208a934eb1335beba7bcf98bb75d"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a7cdf208a934eb1335beba7bcf98bb75d">◆ </a></span>vde_curve_evaluate()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void vde_curve_evaluate </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#adbe99e0d601bba164d42b73d8d3f28f7">VdeCurveHandle</a> </td>
|
||
<td class="paramname"><em>curve</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>t</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_x</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_y</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_z</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>在参数 t 处求值曲线 </p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">curve</td><td>曲线句柄 </td></tr>
|
||
<tr><td class="paramname">t</td><td>参数值 [0, 1] </td></tr>
|
||
<tr><td class="paramname">out_x</td><td>[out] 曲线上点的 X 坐标 </td></tr>
|
||
<tr><td class="paramname">out_y</td><td>[out] 曲线上点的 Y 坐标 </td></tr>
|
||
<tr><td class="paramname">out_z</td><td>[out] 曲线上点的 Z 坐标</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section pre"><dt>前置条件</dt><dd>0 ≤ t ≤ 1 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a8b1982d568ee1889beb9fac1cf19a71f"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a8b1982d568ee1889beb9fac1cf19a71f">◆ </a></span>vde_curve_free()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void vde_curve_free </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#adbe99e0d601bba164d42b73d8d3f28f7">VdeCurveHandle</a> </td>
|
||
<td class="paramname"><em>curve</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>释放曲线句柄 </p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">curve</td><td>曲线句柄 </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a3370253bfb65769e93df74de498ff6ac"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a3370253bfb65769e93df74de498ff6ac">◆ </a></span>vde_deserialize_mesh()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> vde_deserialize_mesh </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> </td>
|
||
<td class="paramname"><em>ctx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const uint8_t * </td>
|
||
<td class="paramname"><em>data</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">size_t </td>
|
||
<td class="paramname"><em>len</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>从二进制字节流反序列化为网格 </p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ctx</td><td>引擎上下文句柄 </td></tr>
|
||
<tr><td class="paramname">data</td><td>序列化数据缓冲区 </td></tr>
|
||
<tr><td class="paramname">len</td><td>数据长度(字节数) </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="vde__capi_8h.html#ac718cb38d742050b52f2dbeb82797842" title="将网格序列化为二进制字节流">vde_serialize_mesh</a> 序列化 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aded4ee33d5564b05114ad605d003f34d"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aded4ee33d5564b05114ad605d003f34d">◆ </a></span>vde_destroy()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void vde_destroy </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> </td>
|
||
<td class="paramname"><em>ctx</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>销毁引擎上下文 </p>
|
||
<p>释放上下文及其内部资源。销毁后不能再使用该句柄。</p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ctx</td><td>引擎上下文句柄</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#af0565d3eee132efe7d6e8cee37e102df" title="创建 ViewDesignEngine 上下文">vde_create</a> </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aee33bba95777766e2a2cad01bae90b9c"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aee33bba95777766e2a2cad01bae90b9c">◆ </a></span>vde_free_buffer()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void vde_free_buffer </td>
|
||
<td>(</td>
|
||
<td class="paramtype">uint8_t * </td>
|
||
<td class="paramname"><em>ptr</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>释放由 vde_serialize_mesh 分配的缓冲区 </p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ptr</td><td>由 vde_serialize_mesh 返回的缓冲区指针 </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a44fa58de60fbdf2b08956a4f4dd8a0aa"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a44fa58de60fbdf2b08956a4f4dd8a0aa">◆ </a></span>vde_last_error()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">const char* vde_last_error </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> </td>
|
||
<td class="paramname"><em>ctx</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>获取最后一次操作的错误描述 </p>
|
||
<p>当某操作失败(如加载不存在的文件)时,可通过此函数获取详情。</p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ctx</td><td>引擎上下文句柄 </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>返回</dt><dd>错误描述字符串(上下文的内部缓冲区,静态生命周期)</dd></dl>
|
||
<dl class="section note"><dt>注解</dt><dd>每次新的失败操作会覆盖此描述。成功操作不会清除它。 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a3364eca094757a19af74398c66ab43f0"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a3364eca094757a19af74398c66ab43f0">◆ </a></span>vde_load_mesh()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> vde_load_mesh </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> </td>
|
||
<td class="paramname"><em>ctx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const char * </td>
|
||
<td class="paramname"><em>path</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>从文件加载三角网格 </p>
|
||
<p>支持 OBJ (.obj), STL (.stl), PLY (.ply) 三种格式。 格式通过文件扩展名自动检测。</p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ctx</td><td>引擎上下文句柄 </td></tr>
|
||
<tr><td class="paramname">path</td><td>文件路径(UTF-8 编码) </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>返回</dt><dd>网格句柄,失败时返回 NULL(通过 <a class="el" href="vde__capi_8h.html#a44fa58de60fbdf2b08956a4f4dd8a0aa" title="获取最后一次操作的错误描述">vde_last_error()</a> 获取原因)</dd></dl>
|
||
<div class="fragment"><div class="line"><a class="code" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> mesh = <a class="code" href="vde__capi_8h.html#a3364eca094757a19af74398c66ab43f0">vde_load_mesh</a>(ctx, <span class="stringliteral">"model.obj"</span>);</div>
|
||
<div class="line"><span class="keywordflow">if</span> (!mesh) {</div>
|
||
<div class="line"> fprintf(stderr, <span class="stringliteral">"Load failed: %s\n"</span>, <a class="code" href="vde__capi_8h.html#a44fa58de60fbdf2b08956a4f4dd8a0aa">vde_last_error</a>(ctx));</div>
|
||
<div class="line"> <span class="keywordflow">return</span>;</div>
|
||
<div class="line">}</div>
|
||
<div class="ttc" id="avde__capi_8h_html_a3364eca094757a19af74398c66ab43f0"><div class="ttname"><a href="vde__capi_8h.html#a3364eca094757a19af74398c66ab43f0">vde_load_mesh</a></div><div class="ttdeci">VdeMeshHandle vde_load_mesh(VdeHandle ctx, const char *path)</div><div class="ttdoc">从文件加载三角网格</div></div>
|
||
<div class="ttc" id="avde__capi_8h_html_a44fa58de60fbdf2b08956a4f4dd8a0aa"><div class="ttname"><a href="vde__capi_8h.html#a44fa58de60fbdf2b08956a4f4dd8a0aa">vde_last_error</a></div><div class="ttdeci">const char * vde_last_error(VdeHandle ctx)</div><div class="ttdoc">获取最后一次操作的错误描述</div></div>
|
||
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#ad4763d4d03c112d2b5af3e268ff0b591" title="释放网格句柄及其资源">vde_mesh_free</a> 释放网格 </dd>
|
||
<dd>
|
||
<a class="el" href="vde__capi_8h.html#a5b48ac40d7da443cc951d7c3bf8f6003" title="将三角网格保存为文件">vde_save_mesh</a> 保存网格 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a3ce60d7da004c9b840d619a71ca39a8a"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a3ce60d7da004c9b840d619a71ca39a8a">◆ </a></span>vde_mesh_boolean()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> vde_mesh_boolean </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> </td>
|
||
<td class="paramname"><em>ctx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td>
|
||
<td class="paramname"><em>a</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td>
|
||
<td class="paramname"><em>b</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>operation</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>网格布尔运算 </p>
|
||
<p>对两个三角网格执行布尔操作。</p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ctx</td><td>引擎上下文句柄 </td></tr>
|
||
<tr><td class="paramname">a</td><td>网格 A </td></tr>
|
||
<tr><td class="paramname">b</td><td>网格 B </td></tr>
|
||
<tr><td class="paramname">operation</td><td>布尔操作类型: 0 = 并集, 1 = 交集, 2 = 差集 (A \ B) </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>返回</dt><dd>布尔结果的新网格句柄</dd></dl>
|
||
<dl class="section warning"><dt>警告</dt><dd>两个输入网格必须是水密的(closed manifold),否则结果不可预测。</dd></dl>
|
||
<div class="fragment"><div class="line"><a class="code" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> result = <a class="code" href="vde__capi_8h.html#a3ce60d7da004c9b840d619a71ca39a8a">vde_mesh_boolean</a>(ctx, <a class="code" href="namespacevde_1_1sdf.html#a380ebfe1b3b65d5ecc4efcb946b21834">box</a>, <a class="code" href="namespacevde_1_1sdf.html#ab544a3ebc4c0844b322b73bbbe4efb3f">sphere</a>, 0); <span class="comment">// 并集</span></div>
|
||
<div class="ttc" id="anamespacevde_1_1sdf_html_a380ebfe1b3b65d5ecc4efcb946b21834"><div class="ttname"><a href="namespacevde_1_1sdf.html#a380ebfe1b3b65d5ecc4efcb946b21834">vde::sdf::box</a></div><div class="ttdeci">double box(const Point3D &p, const Point3D &half_extents)</div><div class="ttdoc">轴对齐立方体的 SDF</div><div class="ttdef"><b>Definition:</b> <a href="sdf__primitives_8h_source.html#l00096">sdf_primitives.h:96</a></div></div>
|
||
<div class="ttc" id="anamespacevde_1_1sdf_html_ab544a3ebc4c0844b322b73bbbe4efb3f"><div class="ttname"><a href="namespacevde_1_1sdf.html#ab544a3ebc4c0844b322b73bbbe4efb3f">vde::sdf::sphere</a></div><div class="ttdeci">double sphere(const Point3D &p, double radius)</div><div class="ttdoc">球体的 SDF</div><div class="ttdef"><b>Definition:</b> <a href="sdf__primitives_8h_source.html#l00068">sdf_primitives.h:68</a></div></div>
|
||
<div class="ttc" id="avde__capi_8h_html_a3ce60d7da004c9b840d619a71ca39a8a"><div class="ttname"><a href="vde__capi_8h.html#a3ce60d7da004c9b840d619a71ca39a8a">vde_mesh_boolean</a></div><div class="ttdeci">VdeMeshHandle vde_mesh_boolean(VdeHandle ctx, VdeMeshHandle a, VdeMeshHandle b, int operation)</div><div class="ttdoc">网格布尔运算</div></div>
|
||
</div><!-- fragment -->
|
||
</div>
|
||
</div>
|
||
<a id="ad4763d4d03c112d2b5af3e268ff0b591"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ad4763d4d03c112d2b5af3e268ff0b591">◆ </a></span>vde_mesh_free()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void vde_mesh_free </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td>
|
||
<td class="paramname"><em>mesh</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>释放网格句柄及其资源 </p>
|
||
<p>释放后将不能再使用该句柄。</p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">mesh</td><td>网格句柄 </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a44f0de742779b37b5a1d4c4d926ee46c"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a44f0de742779b37b5a1d4c4d926ee46c">◆ </a></span>vde_mesh_get_bounds()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void vde_mesh_get_bounds </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td>
|
||
<td class="paramname"><em>mesh</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_min_x</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_min_y</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_min_z</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_max_x</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_max_y</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_max_z</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>获取网格的轴对齐包围盒 </p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">mesh</td><td>网格句柄 </td></tr>
|
||
<tr><td class="paramname">out_min_x</td><td>[out] 最小 X 坐标 </td></tr>
|
||
<tr><td class="paramname">out_min_y</td><td>[out] 最小 Y 坐标 </td></tr>
|
||
<tr><td class="paramname">out_min_z</td><td>[out] 最小 Z 坐标 </td></tr>
|
||
<tr><td class="paramname">out_max_x</td><td>[out] 最大 X 坐标 </td></tr>
|
||
<tr><td class="paramname">out_max_y</td><td>[out] 最大 Y 坐标 </td></tr>
|
||
<tr><td class="paramname">out_max_z</td><td>[out] 最大 Z 坐标 </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a46332b2cafe166b1f3f769120d35e68e"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a46332b2cafe166b1f3f769120d35e68e">◆ </a></span>vde_mesh_get_vertex()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void vde_mesh_get_vertex </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td>
|
||
<td class="paramname"><em>mesh</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">size_t </td>
|
||
<td class="paramname"><em>idx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_x</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_y</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_z</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>获取指定索引的顶点坐标 </p>
|
||
<p>顶点索引从 0 开始,到 num_vertices - 1。</p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">mesh</td><td>网格句柄 </td></tr>
|
||
<tr><td class="paramname">idx</td><td>顶点索引 [0, num_vertices) </td></tr>
|
||
<tr><td class="paramname">out_x</td><td>[out] 顶点 X 坐标 </td></tr>
|
||
<tr><td class="paramname">out_y</td><td>[out] 顶点 Y 坐标 </td></tr>
|
||
<tr><td class="paramname">out_z</td><td>[out] 顶点 Z 坐标</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section pre"><dt>前置条件</dt><dd>idx < vde_mesh_num_vertices(mesh) </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aabd59a0d58b060cb34e4ae291e12b72b"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aabd59a0d58b060cb34e4ae291e12b72b">◆ </a></span>vde_mesh_num_faces()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">size_t vde_mesh_num_faces </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td>
|
||
<td class="paramname"><em>mesh</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>获取网格的三角面数量 </p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">mesh</td><td>网格句柄 </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="vde__capi_8h.html#a7faf11c35d4994e668e08b16174ec71f" title="获取网格的顶点数量">vde_mesh_num_vertices</a> 顶点数 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a7faf11c35d4994e668e08b16174ec71f"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a7faf11c35d4994e668e08b16174ec71f">◆ </a></span>vde_mesh_num_vertices()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">size_t vde_mesh_num_vertices </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td>
|
||
<td class="paramname"><em>mesh</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>获取网格的顶点数量 </p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">mesh</td><td>网格句柄(必须有效且非 NULL) </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="vde__capi_8h.html#aabd59a0d58b060cb34e4ae291e12b72b" title="获取网格的三角面数量">vde_mesh_num_faces</a> 面数 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a77b1f5142fd90da486a5c139c3b14c16"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a77b1f5142fd90da486a5c139c3b14c16">◆ </a></span>vde_mesh_simplify()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> vde_mesh_simplify </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> </td>
|
||
<td class="paramname"><em>ctx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td>
|
||
<td class="paramname"><em>mesh</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>target_ratio</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>网格简化 </p>
|
||
<p>通过 edge-collapse 或类似算法减少三角形数量, 同时尽可能保留几何特征。</p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ctx</td><td>引擎上下文句柄 </td></tr>
|
||
<tr><td class="paramname">mesh</td><td>输入网格句柄(不修改输入) </td></tr>
|
||
<tr><td class="paramname">target_ratio</td><td>目标简化比率 [0, 1](0 = 不变,1 = 最大简化) </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>返回</dt><dd>简化后的新网格句柄</dd></dl>
|
||
<div class="fragment"><div class="line"><a class="code" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> simple = <a class="code" href="vde__capi_8h.html#a77b1f5142fd90da486a5c139c3b14c16">vde_mesh_simplify</a>(ctx, mesh, 0.5); <span class="comment">// 减少 50%</span></div>
|
||
<div class="ttc" id="avde__capi_8h_html_a77b1f5142fd90da486a5c139c3b14c16"><div class="ttname"><a href="vde__capi_8h.html#a77b1f5142fd90da486a5c139c3b14c16">vde_mesh_simplify</a></div><div class="ttdeci">VdeMeshHandle vde_mesh_simplify(VdeHandle ctx, VdeMeshHandle mesh, double target_ratio)</div><div class="ttdoc">网格简化</div></div>
|
||
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#a46bd97beffa458984cbc323c65c7c238" title="网格平滑(Laplacian 或 Taubin 平滑)">vde_mesh_smooth</a> 网格平滑 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a46bd97beffa458984cbc323c65c7c238"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a46bd97beffa458984cbc323c65c7c238">◆ </a></span>vde_mesh_smooth()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> vde_mesh_smooth </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> </td>
|
||
<td class="paramname"><em>ctx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td>
|
||
<td class="paramname"><em>mesh</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>iterations</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>网格平滑(Laplacian 或 Taubin 平滑) </p>
|
||
<p>通过迭代平滑顶点位置改善网格质量,减少噪声。</p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ctx</td><td>引擎上下文句柄 </td></tr>
|
||
<tr><td class="paramname">mesh</td><td>输入网格句柄 </td></tr>
|
||
<tr><td class="paramname">iterations</td><td>平滑迭代次数 </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="vde__capi_8h.html#a77b1f5142fd90da486a5c139c3b14c16" title="网格简化">vde_mesh_simplify</a> 网格简化 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a5b48ac40d7da443cc951d7c3bf8f6003"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a5b48ac40d7da443cc951d7c3bf8f6003">◆ </a></span>vde_save_mesh()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">int vde_save_mesh </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> </td>
|
||
<td class="paramname"><em>ctx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td>
|
||
<td class="paramname"><em>mesh</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const char * </td>
|
||
<td class="paramname"><em>path</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">const char * </td>
|
||
<td class="paramname"><em>format</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>将三角网格保存为文件 </p>
|
||
<p>当前支持 OBJ 格式输出。</p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ctx</td><td>引擎上下文句柄 </td></tr>
|
||
<tr><td class="paramname">mesh</td><td>网格句柄 </td></tr>
|
||
<tr><td class="paramname">path</td><td>输出文件路径 </td></tr>
|
||
<tr><td class="paramname">format</td><td>输出格式(当前仅 "obj" 有效) </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>返回</dt><dd>成功返回 1,失败返回 0</dd></dl>
|
||
<dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#a3364eca094757a19af74398c66ab43f0" title="从文件加载三角网格">vde_load_mesh</a> 加载网格 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="ac718cb38d742050b52f2dbeb82797842"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#ac718cb38d742050b52f2dbeb82797842">◆ </a></span>vde_serialize_mesh()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">size_t vde_serialize_mesh </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a5d25ac71389adcd7f6e974673cbe07c6">VdeHandle</a> </td>
|
||
<td class="paramname"><em>ctx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a612991cb0f7daa4036b555eecb5b1700">VdeMeshHandle</a> </td>
|
||
<td class="paramname"><em>mesh</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">uint8_t ** </td>
|
||
<td class="paramname"><em>out_data</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>将网格序列化为二进制字节流 </p>
|
||
<p>返回的缓冲区需要在消费后通过 <a class="el" href="vde__capi_8h.html#aee33bba95777766e2a2cad01bae90b9c" title="释放由 vde_serialize_mesh 分配的缓冲区">vde_free_buffer()</a> 释放。</p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">ctx</td><td>引擎上下文句柄 </td></tr>
|
||
<tr><td class="paramname">mesh</td><td>网格句柄 </td></tr>
|
||
<tr><td class="paramname">out_data</td><td>[out] 指向序列化字节数组的指针 </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>返回</dt><dd>字节数</dd></dl>
|
||
<dl class="section note"><dt>注解</dt><dd>输出的缓冲区由库管理,调用方不得直接 free/delete。</dd></dl>
|
||
<div class="fragment"><div class="line">uint8_t* data = NULL;</div>
|
||
<div class="line"><span class="keywordtype">size_t</span> len = <a class="code" href="vde__capi_8h.html#ac718cb38d742050b52f2dbeb82797842">vde_serialize_mesh</a>(ctx, mesh, &data);</div>
|
||
<div class="line"><span class="comment">// ... 使用/存储 data ...</span></div>
|
||
<div class="line"><a class="code" href="vde__capi_8h.html#aee33bba95777766e2a2cad01bae90b9c">vde_free_buffer</a>(data);</div>
|
||
<div class="ttc" id="avde__capi_8h_html_ac718cb38d742050b52f2dbeb82797842"><div class="ttname"><a href="vde__capi_8h.html#ac718cb38d742050b52f2dbeb82797842">vde_serialize_mesh</a></div><div class="ttdeci">size_t vde_serialize_mesh(VdeHandle ctx, VdeMeshHandle mesh, uint8_t **out_data)</div><div class="ttdoc">将网格序列化为二进制字节流</div></div>
|
||
<div class="ttc" id="avde__capi_8h_html_aee33bba95777766e2a2cad01bae90b9c"><div class="ttname"><a href="vde__capi_8h.html#aee33bba95777766e2a2cad01bae90b9c">vde_free_buffer</a></div><div class="ttdeci">void vde_free_buffer(uint8_t *ptr)</div><div class="ttdoc">释放由 vde_serialize_mesh 分配的缓冲区</div></div>
|
||
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#a3370253bfb65769e93df74de498ff6ac" title="从二进制字节流反序列化为网格">vde_deserialize_mesh</a> 反序列化 </dd>
|
||
<dd>
|
||
<a class="el" href="vde__capi_8h.html#aee33bba95777766e2a2cad01bae90b9c" title="释放由 vde_serialize_mesh 分配的缓冲区">vde_free_buffer</a> 释放序列化缓冲区 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a73d39d4a953542e738faf6e337c6420c"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a73d39d4a953542e738faf6e337c6420c">◆ </a></span>vde_solver_add_distance_constraint()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void vde_solver_add_distance_constraint </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> </td>
|
||
<td class="paramname"><em>solver</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>p0</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>p1</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </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>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">solver</td><td>求解器句柄 </td></tr>
|
||
<tr><td class="paramname">p0</td><td>第一个点的 ID </td></tr>
|
||
<tr><td class="paramname">p1</td><td>第二个点的 ID </td></tr>
|
||
<tr><td class="paramname">d</td><td>目标距离(必须 > 0)</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#a40107e23d391015f1e17e7ca94c81e73" title="添加水平约束(线段水平)">vde_solver_add_horizontal</a> 水平约束 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a40107e23d391015f1e17e7ca94c81e73"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a40107e23d391015f1e17e7ca94c81e73">◆ </a></span>vde_solver_add_horizontal()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void vde_solver_add_horizontal </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> </td>
|
||
<td class="paramname"><em>solver</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>line_id</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>添加水平约束(线段水平) </p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">solver</td><td>求解器句柄 </td></tr>
|
||
<tr><td class="paramname">line_id</td><td>线段 ID</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#a2a2e54cdbf87a46434219917d4ddcdc9" title="添加垂直约束(线段垂直)">vde_solver_add_vertical</a> 垂直约束 </dd>
|
||
<dd>
|
||
<a class="el" href="vde__capi_8h.html#a9cf4e2fc71bfa61073144147bf76c2e8" title="向求解器添加线段(由两个点定义)">vde_solver_add_line</a> 添加线段 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a9cf4e2fc71bfa61073144147bf76c2e8"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a9cf4e2fc71bfa61073144147bf76c2e8">◆ </a></span>vde_solver_add_line()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">int vde_solver_add_line </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> </td>
|
||
<td class="paramname"><em>solver</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>p0</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>p1</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>向求解器添加线段(由两个点定义) </p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">solver</td><td>求解器句柄 </td></tr>
|
||
<tr><td class="paramname">p0</td><td>起点 ID </td></tr>
|
||
<tr><td class="paramname">p1</td><td>终点 ID </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>返回</dt><dd>线段的 ID</dd></dl>
|
||
<dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#a665e2414e558165f136837ce95119f74" title="向求解器添加点">vde_solver_add_point</a> 添加点 </dd>
|
||
<dd>
|
||
<a class="el" href="vde__capi_8h.html#a40107e23d391015f1e17e7ca94c81e73" title="添加水平约束(线段水平)">vde_solver_add_horizontal</a> 添加水平约束 </dd>
|
||
<dd>
|
||
<a class="el" href="vde__capi_8h.html#a2a2e54cdbf87a46434219917d4ddcdc9" title="添加垂直约束(线段垂直)">vde_solver_add_vertical</a> 添加垂直约束 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a665e2414e558165f136837ce95119f74"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a665e2414e558165f136837ce95119f74">◆ </a></span>vde_solver_add_point()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">int vde_solver_add_point </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> </td>
|
||
<td class="paramname"><em>solver</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>x</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>y</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>fixed</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>向求解器添加点 </p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">solver</td><td>求解器句柄 </td></tr>
|
||
<tr><td class="paramname">x</td><td>初始 X 坐标 </td></tr>
|
||
<tr><td class="paramname">y</td><td>初始 Y 坐标 </td></tr>
|
||
<tr><td class="paramname">fixed</td><td>固定点标记(1 = 固定不移动) </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>返回</dt><dd>点的 ID(用于后续约束引用)</dd></dl>
|
||
<dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#a9cf4e2fc71bfa61073144147bf76c2e8" title="向求解器添加线段(由两个点定义)">vde_solver_add_line</a> 添加线段 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a2a2e54cdbf87a46434219917d4ddcdc9"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a2a2e54cdbf87a46434219917d4ddcdc9">◆ </a></span>vde_solver_add_vertical()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void vde_solver_add_vertical </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> </td>
|
||
<td class="paramname"><em>solver</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>line_id</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>添加垂直约束(线段垂直) </p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">solver</td><td>求解器句柄 </td></tr>
|
||
<tr><td class="paramname">line_id</td><td>线段 ID</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#a40107e23d391015f1e17e7ca94c81e73" title="添加水平约束(线段水平)">vde_solver_add_horizontal</a> 水平约束 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="af881dd70f559a3ff280b0047c2fcc8cd"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#af881dd70f559a3ff280b0047c2fcc8cd">◆ </a></span>vde_solver_create()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname"><a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> vde_solver_create </td>
|
||
<td>(</td>
|
||
<td class="paramtype">void </td>
|
||
<td class="paramname"></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>创建二维约束求解器 </p>
|
||
<p>用于求解草图几何约束(距离、水平、垂直等)。</p>
|
||
<dl class="section return"><dt>返回</dt><dd>求解器句柄</dd></dl>
|
||
<dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#a65aed874db7cbb21c67f93879530518d" title="释放求解器句柄">vde_solver_free</a> 释放 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="a65aed874db7cbb21c67f93879530518d"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#a65aed874db7cbb21c67f93879530518d">◆ </a></span>vde_solver_free()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void vde_solver_free </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> </td>
|
||
<td class="paramname"><em>solver</em></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>释放求解器句柄 </p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">solver</td><td>求解器句柄 </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aac74b82de9d0e220e11562207f35ecd5"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aac74b82de9d0e220e11562207f35ecd5">◆ </a></span>vde_solver_get_point()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">void vde_solver_get_point </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> </td>
|
||
<td class="paramname"><em>solver</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>idx</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_x</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double * </td>
|
||
<td class="paramname"><em>out_y</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>获取求解后的点坐标 </p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">solver</td><td>求解器句柄 </td></tr>
|
||
<tr><td class="paramname">idx</td><td>点 ID </td></tr>
|
||
<tr><td class="paramname">out_x</td><td>[out] 求解后 X 坐标 </td></tr>
|
||
<tr><td class="paramname">out_y</td><td>[out] 求解后 Y 坐标</td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section pre"><dt>前置条件</dt><dd>必须先调用 <a class="el" href="vde__capi_8h.html#abe46983c28ce8d95adf263007ef93139" title="求解约束系统">vde_solver_solve()</a> </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="abe46983c28ce8d95adf263007ef93139"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#abe46983c28ce8d95adf263007ef93139">◆ </a></span>vde_solver_solve()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">int vde_solver_solve </td>
|
||
<td>(</td>
|
||
<td class="paramtype"><a class="el" href="vde__capi_8h.html#a3a17900fada7dfe2be0874044ea56f31">VdeSolverHandle</a> </td>
|
||
<td class="paramname"><em>solver</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">int </td>
|
||
<td class="paramname"><em>max_iter</em>, </td>
|
||
</tr>
|
||
<tr>
|
||
<td class="paramkey"></td>
|
||
<td></td>
|
||
<td class="paramtype">double </td>
|
||
<td class="paramname"><em>tol</em> </td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td>)</td>
|
||
<td></td><td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>求解约束系统 </p>
|
||
<p>通过迭代优化使所有点的位置满足所有约束。</p>
|
||
<dl class="params"><dt>参数</dt><dd>
|
||
<table class="params">
|
||
<tr><td class="paramname">solver</td><td>求解器句柄 </td></tr>
|
||
<tr><td class="paramname">max_iter</td><td>最大迭代次数 </td></tr>
|
||
<tr><td class="paramname">tol</td><td>收敛容差 </td></tr>
|
||
</table>
|
||
</dd>
|
||
</dl>
|
||
<dl class="section return"><dt>返回</dt><dd>收敛返回 1,未收敛返回 0</dd></dl>
|
||
<div class="fragment"><div class="line"><span class="keywordtype">int</span> converged = <a class="code" href="vde__capi_8h.html#abe46983c28ce8d95adf263007ef93139">vde_solver_solve</a>(solver, 100, 1e-6);</div>
|
||
<div class="ttc" id="avde__capi_8h_html_abe46983c28ce8d95adf263007ef93139"><div class="ttname"><a href="vde__capi_8h.html#abe46983c28ce8d95adf263007ef93139">vde_solver_solve</a></div><div class="ttdeci">int vde_solver_solve(VdeSolverHandle solver, int max_iter, double tol)</div><div class="ttdoc">求解约束系统</div></div>
|
||
</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="vde__capi_8h.html#aac74b82de9d0e220e11562207f35ecd5" title="获取求解后的点坐标">vde_solver_get_point</a> 获取求解后的点坐标 </dd></dl>
|
||
|
||
</div>
|
||
</div>
|
||
<a id="aa5eee51a9795e1c06826bf6ad6144e8d"></a>
|
||
<h2 class="memtitle"><span class="permalink"><a href="#aa5eee51a9795e1c06826bf6ad6144e8d">◆ </a></span>vde_version()</h2>
|
||
|
||
<div class="memitem">
|
||
<div class="memproto">
|
||
<table class="memname">
|
||
<tr>
|
||
<td class="memname">const char* vde_version </td>
|
||
<td>(</td>
|
||
<td class="paramtype">void </td>
|
||
<td class="paramname"></td><td>)</td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
</div><div class="memdoc">
|
||
|
||
<p>获取引擎版本字符串 </p>
|
||
<dl class="section return"><dt>返回</dt><dd>语义版本号字符串(如 "0.5.0"),静态生命周期,无需释放</dd></dl>
|
||
<div class="fragment"><div class="line">printf(<span class="stringliteral">"VDE version: %s\n"</span>, <a class="code" href="vde__capi_8h.html#aa5eee51a9795e1c06826bf6ad6144e8d">vde_version</a>());</div>
|
||
<div class="ttc" id="avde__capi_8h_html_aa5eee51a9795e1c06826bf6ad6144e8d"><div class="ttname"><a href="vde__capi_8h.html#aa5eee51a9795e1c06826bf6ad6144e8d">vde_version</a></div><div class="ttdeci">const char * vde_version(void)</div><div class="ttdoc">获取引擎版本字符串</div></div>
|
||
</div><!-- fragment -->
|
||
</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="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_36dfe8171299c47a6036082559f11ede.html">vde</a></li><li class="navelem"><a class="el" href="dir_d2ea29e3315af068d63f97d54519c375.html">capi</a></li><li class="navelem"><a class="el" href="vde__capi_8h.html">vde_capi.h</a></li>
|
||
<li class="footer">生成于 2026年 七月 24日 星期五 11:21:23 , 为 ViewDesignEngine使用 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
|
||
</ul>
|
||
</div>
|
||
</body>
|
||
</html>
|