Files
ViewDesignEngine/docs/api/tolerance_8h_source.html
T

210 lines
33 KiB
HTML
Raw Normal View History

<!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/foundation/tolerance.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
&#160;<span id="projectnumber">3.1.0</span>
</div>
<div id="projectbrief">高性能 CAD 计算几何引擎</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','搜索');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('tolerance_8h_source.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="headertitle">
<div class="title">tolerance.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="tolerance_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#include &lt;Eigen/Core&gt;</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; </div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacevde_1_1foundation.html">vde::foundation</a> {</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; </div>
<div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html"> 29</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvde_1_1foundation_1_1Tolerance.html">Tolerance</a> {</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html#a3c2445a16aa64efa6ccd61ea1ecb1973"> 39</a></span>&#160; <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a3c2445a16aa64efa6ccd61ea1ecb1973">Tolerance</a>(<span class="keywordtype">double</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#afdc814e932a1a2610482fdbdfb88f2c2">absolute</a> = 1e-6, <span class="keywordtype">double</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a783f743648823386c5d049ac4400c19b">relative</a> = 1e-8,</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">double</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a84f8a5b08a29dd694d94129d1fa45923">angular</a> = 1e-8, <span class="keywordtype">double</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a2601217e10e5701c6623853ebb5f5e60">snapping</a> = 1e-4)</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; : absolute_(<a class="code" href="classvde_1_1foundation_1_1Tolerance.html#afdc814e932a1a2610482fdbdfb88f2c2">absolute</a>), relative_(<a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a783f743648823386c5d049ac4400c19b">relative</a>),</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; angular_(<a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a84f8a5b08a29dd694d94129d1fa45923">angular</a>), snapping_(<a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a2601217e10e5701c6623853ebb5f5e60">snapping</a>) {}</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// ── 判定 ──</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html#abc5aeb60cfc99bd17d86470a3226d199"> 55</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#abc5aeb60cfc99bd17d86470a3226d199">points_equal</a>(<span class="keyword">const</span> Eigen::MatrixXd&amp; a, <span class="keyword">const</span> Eigen::MatrixXd&amp; b)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> (a - b).norm() &lt; absolute_;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; </div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html#ae66283860179011ae79028b7dc5dad53"> 66</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#ae66283860179011ae79028b7dc5dad53">is_zero</a>(T value)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> std::abs(value) &lt; absolute_;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html#ad9dae2c7a0f2feaf59acff38ba1fd83d"> 88</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#ad9dae2c7a0f2feaf59acff38ba1fd83d">equals</a>(T a, T b)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> std::abs(a - b) &lt; absolute_ + relative_ * std::max(std::abs(a), std::abs(b));</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; </div>
<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html#afdc814e932a1a2610482fdbdfb88f2c2"> 93</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#afdc814e932a1a2610482fdbdfb88f2c2">absolute</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> absolute_; }</div>
<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html#a783f743648823386c5d049ac4400c19b"> 95</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a783f743648823386c5d049ac4400c19b">relative</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> relative_; }</div>
<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html#a84f8a5b08a29dd694d94129d1fa45923"> 97</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a84f8a5b08a29dd694d94129d1fa45923">angular</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> angular_; }</div>
<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html#a2601217e10e5701c6623853ebb5f5e60"> 99</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a2601217e10e5701c6623853ebb5f5e60">snapping</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> snapping_; }</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="comment">// ── 分层容差:继承并收紧 ──</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div>
<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html#ad6f7a044177d76a875634c3b29fa282e"> 116</a></span>&#160; <a class="code" href="classvde_1_1foundation_1_1Tolerance.html">Tolerance</a> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#ad6f7a044177d76a875634c3b29fa282e">tighten</a>(<span class="keywordtype">double</span> factor = 0.1)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a3c2445a16aa64efa6ccd61ea1ecb1973">Tolerance</a>(absolute_ * factor, relative_ * factor, angular_ * factor, snapping_ * factor);</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
<div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html#a27ee3cffbc2062f8844677bf1b66a432"> 128</a></span>&#160; <a class="code" href="classvde_1_1foundation_1_1Tolerance.html">Tolerance</a> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a27ee3cffbc2062f8844677bf1b66a432">relax</a>(<span class="keywordtype">double</span> factor = 10.0)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a3c2445a16aa64efa6ccd61ea1ecb1973">Tolerance</a>(absolute_ * factor, relative_ * factor, angular_ * factor, snapping_ * factor);</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; </div>
<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html#a060ad7c46837134898df7ca4dc1b118a"> 139</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html">Tolerance</a> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a060ad7c46837134898df7ca4dc1b118a">min</a>(<span class="keyword">const</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html">Tolerance</a>&amp; a, <span class="keyword">const</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html">Tolerance</a>&amp; b) {</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a3c2445a16aa64efa6ccd61ea1ecb1973">Tolerance</a>(std::min(a.absolute_, b.absolute_),</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; std::min(a.relative_, b.relative_),</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; std::min(a.angular_, b.angular_),</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; std::min(a.snapping_, b.snapping_));</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; </div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">// ── 全局实例 ──</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; </div>
<div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html#a3f1fc754c6d4c43ac77545e0be2ce8b9"> 155</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html">Tolerance</a>&amp; <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a3f1fc754c6d4c43ac77545e0be2ce8b9">global</a>() { <span class="keywordflow">return</span> global_; }</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; </div>
<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html#aafc832ab4f6bade367e1a6d3512b4006"> 164</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#aafc832ab4f6bade367e1a6d3512b4006">set_global</a>(<span class="keyword">const</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html">Tolerance</a>&amp; tol) { global_ = tol; }</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; </div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="comment">// ── 默认建模容差等级 ──</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; </div>
<div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html#abde6073630ffc820a5e34a4fc4862cbb"> 169</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">double</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#abde6073630ffc820a5e34a4fc4862cbb">Modeling</a>() { <span class="keywordflow">return</span> 1e-6; }</div>
<div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html#ab5ef829e28b2702707101094688cd068"> 171</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">double</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#ab5ef829e28b2702707101094688cd068">Fitting</a>() { <span class="keywordflow">return</span> 1e-3; }</div>
<div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html#a0da11b92bf3a87429f85763769e7524e"> 173</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">double</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a0da11b92bf3a87429f85763769e7524e">Intersection</a>() { <span class="keywordflow">return</span> 1e-8; }</div>
<div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1Tolerance.html#a472f14003b3f54032873f83e4f00ae87"> 175</a></span>&#160; <span class="keyword">static</span> constexpr <span class="keywordtype">double</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#a472f14003b3f54032873f83e4f00ae87">Snapping</a>() { <span class="keywordflow">return</span> 1e-4; }</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; </div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordtype">double</span> absolute_;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordtype">double</span> relative_;</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordtype">double</span> angular_;</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordtype">double</span> snapping_;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">static</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html">Tolerance</a> global_;</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;};</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; </div>
<div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1ToleranceScope.html"> 201</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvde_1_1foundation_1_1ToleranceScope.html">ToleranceScope</a> {</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1ToleranceScope.html#abba3f2286645916b2466617f1e6eb820"> 210</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classvde_1_1foundation_1_1ToleranceScope.html#abba3f2286645916b2466617f1e6eb820">ToleranceScope</a>(<span class="keyword">const</span> <a class="code" href="classvde_1_1foundation_1_1Tolerance.html">Tolerance</a>&amp; tol) : previous_(<a class="code" href="classvde_1_1foundation_1_1Tolerance.html">Tolerance</a>::global()) {</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#aafc832ab4f6bade367e1a6d3512b4006">Tolerance::set_global</a>(tol);</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; </div>
<div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classvde_1_1foundation_1_1ToleranceScope.html#aaf0ab7bd06234f1fa3c28fc271773250"> 217</a></span>&#160; <a class="code" href="classvde_1_1foundation_1_1ToleranceScope.html#aaf0ab7bd06234f1fa3c28fc271773250">~ToleranceScope</a>() { <a class="code" href="classvde_1_1foundation_1_1Tolerance.html#aafc832ab4f6bade367e1a6d3512b4006">Tolerance::set_global</a>(previous_); }</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="classvde_1_1foundation_1_1Tolerance.html">Tolerance</a> previous_;</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;};</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; </div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;} <span class="comment">// namespace vde::foundation</span></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1ToleranceScope_html"><div class="ttname"><a href="classvde_1_1foundation_1_1ToleranceScope.html">vde::foundation::ToleranceScope</a></div><div class="ttdoc">局部容差作用域(RAII</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00201">tolerance.h:201</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1ToleranceScope_html_aaf0ab7bd06234f1fa3c28fc271773250"><div class="ttname"><a href="classvde_1_1foundation_1_1ToleranceScope.html#aaf0ab7bd06234f1fa3c28fc271773250">vde::foundation::ToleranceScope::~ToleranceScope</a></div><div class="ttdeci">~ToleranceScope()</div><div class="ttdoc">退出容差作用域,恢复之前的全局容差</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00217">tolerance.h:217</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1ToleranceScope_html_abba3f2286645916b2466617f1e6eb820"><div class="ttname"><a href="classvde_1_1foundation_1_1ToleranceScope.html#abba3f2286645916b2466617f1e6eb820">vde::foundation::ToleranceScope::ToleranceScope</a></div><div class="ttdeci">ToleranceScope(const Tolerance &amp;tol)</div><div class="ttdoc">进入新的容差作用域</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00210">tolerance.h:210</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html">vde::foundation::Tolerance</a></div><div class="ttdoc">分层容差管理类</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00029">tolerance.h:29</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html_a060ad7c46837134898df7ca4dc1b118a"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html#a060ad7c46837134898df7ca4dc1b118a">vde::foundation::Tolerance::min</a></div><div class="ttdeci">static Tolerance min(const Tolerance &amp;a, const Tolerance &amp;b)</div><div class="ttdoc">合并两个容差,取更严格的(更小的)</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00139">tolerance.h:139</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html_a0da11b92bf3a87429f85763769e7524e"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html#a0da11b92bf3a87429f85763769e7524e">vde::foundation::Tolerance::Intersection</a></div><div class="ttdeci">static constexpr double Intersection()</div><div class="ttdoc">求交级精度 (1e-8):精确求交、布尔运算</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00173">tolerance.h:173</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html_a2601217e10e5701c6623853ebb5f5e60"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html#a2601217e10e5701c6623853ebb5f5e60">vde::foundation::Tolerance::snapping</a></div><div class="ttdeci">double snapping() const</div><div class="ttdoc">获取吸附容差</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00099">tolerance.h:99</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html_a27ee3cffbc2062f8844677bf1b66a432"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html#a27ee3cffbc2062f8844677bf1b66a432">vde::foundation::Tolerance::relax</a></div><div class="ttdeci">Tolerance relax(double factor=10.0) const</div><div class="ttdoc">放宽容差</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00128">tolerance.h:128</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html_a3c2445a16aa64efa6ccd61ea1ecb1973"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html#a3c2445a16aa64efa6ccd61ea1ecb1973">vde::foundation::Tolerance::Tolerance</a></div><div class="ttdeci">Tolerance(double absolute=1e-6, double relative=1e-8, double angular=1e-8, double snapping=1e-4)</div><div class="ttdoc">构造容差对象</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00039">tolerance.h:39</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html_a3f1fc754c6d4c43ac77545e0be2ce8b9"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html#a3f1fc754c6d4c43ac77545e0be2ce8b9">vde::foundation::Tolerance::global</a></div><div class="ttdeci">static Tolerance &amp; global()</div><div class="ttdoc">获取全局容差实例</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00155">tolerance.h:155</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html_a472f14003b3f54032873f83e4f00ae87"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html#a472f14003b3f54032873f83e4f00ae87">vde::foundation::Tolerance::Snapping</a></div><div class="ttdeci">static constexpr double Snapping()</div><div class="ttdoc">吸附级精度 (1e-4):点合并、顶点焊接</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00175">tolerance.h:175</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html_a783f743648823386c5d049ac4400c19b"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html#a783f743648823386c5d049ac4400c19b">vde::foundation::Tolerance::relative</a></div><div class="ttdeci">double relative() const</div><div class="ttdoc">获取相对容差</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00095">tolerance.h:95</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html_a84f8a5b08a29dd694d94129d1fa45923"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html#a84f8a5b08a29dd694d94129d1fa45923">vde::foundation::Tolerance::angular</a></div><div class="ttdeci">double angular() const</div><div class="ttdoc">获取角度容差</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00097">tolerance.h:97</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html_aafc832ab4f6bade367e1a6d3512b4006"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html#aafc832ab4f6bade367e1a6d3512b4006">vde::foundation::Tolerance::set_global</a></div><div class="ttdeci">static void set_global(const Tolerance &amp;tol)</div><div class="ttdoc">设置全局容差</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00164">tolerance.h:164</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html_ab5ef829e28b2702707101094688cd068"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html#ab5ef829e28b2702707101094688cd068">vde::foundation::Tolerance::Fitting</a></div><div class="ttdeci">static constexpr double Fitting()</div><div class="ttdoc">拟合级精度 (1e-3):曲面拟合、近似计算</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00171">tolerance.h:171</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html_abc5aeb60cfc99bd17d86470a3226d199"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html#abc5aeb60cfc99bd17d86470a3226d199">vde::foundation::Tolerance::points_equal</a></div><div class="ttdeci">bool points_equal(const Eigen::MatrixXd &amp;a, const Eigen::MatrixXd &amp;b) const</div><div class="ttdoc">判断两点是否相等(基于绝对容差)</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00055">tolerance.h:55</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html_abde6073630ffc820a5e34a4fc4862cbb"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html#abde6073630ffc820a5e34a4fc4862cbb">vde::foundation::Tolerance::Modeling</a></div><div class="ttdeci">static constexpr double Modeling()</div><div class="ttdoc">建模级精度 (1e-6):通用几何建模</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00169">tolerance.h:169</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html_ad6f7a044177d76a875634c3b29fa282e"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html#ad6f7a044177d76a875634c3b29fa282e">vde::foundation::Tolerance::tighten</a></div><div class="ttdeci">Tolerance tighten(double factor=0.1) const</div><div class="ttdoc">收紧容差</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00116">tolerance.h:116</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html_ad9dae2c7a0f2feaf59acff38ba1fd83d"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html#ad9dae2c7a0f2feaf59acff38ba1fd83d">vde::foundation::Tolerance::equals</a></div><div class="ttdeci">bool equals(T a, T b) const</div><div class="ttdoc">混合容差相等判断</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00088">tolerance.h:88</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html_ae66283860179011ae79028b7dc5dad53"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html#ae66283860179011ae79028b7dc5dad53">vde::foundation::Tolerance::is_zero</a></div><div class="ttdeci">bool is_zero(T value) const</div><div class="ttdoc">判断值是否接近零</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00066">tolerance.h:66</a></div></div>
<div class="ttc" id="aclassvde_1_1foundation_1_1Tolerance_html_afdc814e932a1a2610482fdbdfb88f2c2"><div class="ttname"><a href="classvde_1_1foundation_1_1Tolerance.html#afdc814e932a1a2610482fdbdfb88f2c2">vde::foundation::Tolerance::absolute</a></div><div class="ttdeci">double absolute() const</div><div class="ttdoc">获取绝对容差</div><div class="ttdef"><b>Definition:</b> <a href="tolerance_8h_source.html#l00093">tolerance.h:93</a></div></div>
<div class="ttc" id="anamespacevde_1_1foundation_html"><div class="ttname"><a href="namespacevde_1_1foundation.html">vde::foundation</a></div><div class="ttdoc">自适应双精度谓词后端(默认)</div><div class="ttdef"><b>Definition:</b> <a href="error__codes_8h_source.html#l00004">error_codes.h:4</a></div></div>
</div><!-- fragment --></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_0c2101f4fe537748a6dd635dd73c637a.html">foundation</a></li><li class="navelem"><a class="el" href="tolerance_8h.html">tolerance.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>