Files
C-Plus-Plus/d0/d01/smallest__circle_8cpp.html
2024-11-04 12:43:05 +00:00

541 lines
44 KiB
HTML

<!-- HTML header for doxygen 1.12.0-->
<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>TheAlgorithms/C++: others/smallest_circle.cpp File Reference</title>
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
<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>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@xpack-3rd-party/doxygen-awesome-css@2.2.0-1/doxygen-awesome-darkmode-toggle.js"></script>
<script type="text/javascript">
DoxygenAwesomeDarkModeToggle.init()
</script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.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>
<script type="text/javascript">
window.MathJax = {
options: {
ignoreHtmlClass: 'tex2jax_ignore',
processHtmlClass: 'tex2jax_process'
},
loader: {
load: ['[tex]/ams']
},
tex: {
macros: {},
packages: ['base','configmacros','ams']
}
};
</script>
<script type="text/javascript" id="MathJax-script" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
<link href="../../doxygen-awesome.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 id="projectrow">
<td id="projectlogo"><img alt="Logo" src="../../project_logo.png"/></td>
<td id="projectalign">
<div id="projectname">TheAlgorithms/C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">All the algorithms implemented in C++</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search',true);
$(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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d0/d01/smallest__circle_8cpp.html','../../'); initResizable(true); });
/* @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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">smallest_circle.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Get centre and radius of the <a href="https://en.wikipedia.org/wiki/Smallest-circle_problem" target="_blank">smallest circle</a> that circumscribes given set of points.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;cmath&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for smallest_circle.cpp:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d0/db7/smallest__circle_8cpp__incl.svg" width="244" height="111"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
<p><a href="../../d0/d01/smallest__circle_8cpp_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/dc8/struct_point.html">Point</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a3cbebd6f4d2cdf227663c67fe41ba12a" id="r_a3cbebd6f4d2cdf227663c67fe41ba12a"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a> (const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &amp;A, const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &amp;B)</td></tr>
<tr class="separator:a3cbebd6f4d2cdf227663c67fe41ba12a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94682a4a70d5906857ca09de5b9fb2cc" id="r_a94682a4a70d5906857ca09de5b9fb2cc"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a94682a4a70d5906857ca09de5b9fb2cc">TriangleArea</a> (const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &amp;A, const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &amp;B, const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &amp;C)</td></tr>
<tr class="separator:a94682a4a70d5906857ca09de5b9fb2cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee6d48762c1dfb9f14627927f0c16fad" id="r_aee6d48762c1dfb9f14627927f0c16fad"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aee6d48762c1dfb9f14627927f0c16fad">PointInCircle</a> (const std::vector&lt; <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &gt; &amp;P, const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &amp;Center, double R)</td></tr>
<tr class="separator:aee6d48762c1dfb9f14627927f0c16fad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b0676df8e4da7a08c7ccaecea344903" id="r_a0b0676df8e4da7a08c7ccaecea344903"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0b0676df8e4da7a08c7ccaecea344903">circle</a> (const std::vector&lt; <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &gt; &amp;P)</td></tr>
<tr class="separator:a0b0676df8e4da7a08c7ccaecea344903"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1a3968e7947464bee7714f6d43b7002" id="r_ae1a3968e7947464bee7714f6d43b7002"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae1a3968e7947464bee7714f6d43b7002">test</a> ()</td></tr>
<tr class="separator:ae1a3968e7947464bee7714f6d43b7002"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0283886819c7c140a023582b7269e2d0" id="r_a0283886819c7c140a023582b7269e2d0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0283886819c7c140a023582b7269e2d0">test2</a> ()</td></tr>
<tr class="separator:a0283886819c7c140a023582b7269e2d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d0455dd5c30adda100e95f0423c786e" id="r_a6d0455dd5c30adda100e95f0423c786e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6d0455dd5c30adda100e95f0423c786e">test3</a> ()</td></tr>
<tr class="separator:a6d0455dd5c30adda100e95f0423c786e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4" id="r_ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr>
<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Get centre and radius of the <a href="https://en.wikipedia.org/wiki/Smallest-circle_problem" target="_blank">smallest circle</a> that circumscribes given set of points. </p>
<dl class="section see"><dt>See also</dt><dd><a href="https://www.nayuki.io/page/smallest-enclosing-circle" target="_blank">other implementation</a> </dd></dl>
<p class="definition">Definition in file <a class="el" href="../../d0/d01/smallest__circle_8cpp_source.html">smallest_circle.cpp</a>.</p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a0b0676df8e4da7a08c7ccaecea344903" name="a0b0676df8e4da7a08c7ccaecea344903"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b0676df8e4da7a08c7ccaecea344903">&#9670;&#160;</a></span>circle()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double circle </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>P</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Find the centre and radius of a circle enclosing a set of points.<br />
The function returns the radius of the circle and prints the coordinated of the centre of the circle. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">P</td><td>vector of points </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>radius of the circle </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../d0/d01/smallest__circle_8cpp_source.html#l00087">87</a> of file <a class="el" href="../../d0/d01/smallest__circle_8cpp_source.html">smallest_circle.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 87</span> {</div>
<div class="line"><span class="lineno"> 88</span> <span class="keywordtype">double</span> minR = INFINITY;</div>
<div class="line"><span class="lineno"> 89</span> <span class="keywordtype">double</span> R;</div>
<div class="line"><span class="lineno"> 90</span> <a class="code hl_struct" href="../../d8/dc8/struct_point.html">Point</a> C;</div>
<div class="line"><span class="lineno"> 91</span> <a class="code hl_struct" href="../../d8/dc8/struct_point.html">Point</a> minC;</div>
<div class="line"><span class="lineno"> 92</span> </div>
<div class="line"><span class="lineno"> 93</span> <span class="comment">/* This code is invalid and does not give correct result for TEST 3 */</span></div>
<div class="line"><span class="lineno"> 94</span> <span class="comment">// for each point in the list</span></div>
<div class="line"><span class="lineno"> 95</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; P.size() - 2; i++)</div>
<div class="line"><span class="lineno"> 96</span> <span class="comment">// for every subsequent point in the list</span></div>
<div class="line"><span class="lineno"> 97</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = i + 1; j &lt; P.size(); j++)</div>
<div class="line"><span class="lineno"> 98</span> <span class="comment">// for every subsequent point in the list</span></div>
<div class="line"><span class="lineno"> 99</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> k = j + 1; <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a> &lt; P.size(); <a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>++) {</div>
<div class="line"><span class="lineno"> 100</span> <span class="comment">// here, we now have picked three points from the given set of</span></div>
<div class="line"><span class="lineno"> 101</span> <span class="comment">// points that we can use</span></div>
<div class="line"><span class="lineno"> 102</span> <span class="comment">// viz., P[i], P[j] and P[k]</span></div>
<div class="line"><span class="lineno"> 103</span> C.x = -0.5 * ((P[i].y * (P[j].x * P[j].x + P[j].y * P[j].y -</div>
<div class="line"><span class="lineno"> 104</span> P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].x * P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].x - P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].y * P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].y) +</div>
<div class="line"><span class="lineno"> 105</span> P[j].y * (P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].x * P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].x + P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].y * P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].y -</div>
<div class="line"><span class="lineno"> 106</span> P[i].x * P[i].x - P[i].y * P[i].y) +</div>
<div class="line"><span class="lineno"> 107</span> P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].y * (P[i].x * P[i].x + P[i].y * P[i].y -</div>
<div class="line"><span class="lineno"> 108</span> P[j].x * P[j].x - P[j].y * P[j].y)) /</div>
<div class="line"><span class="lineno"> 109</span> (P[i].x * (P[j].y - P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].y) +</div>
<div class="line"><span class="lineno"> 110</span> P[j].x * (P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].y - P[i].y) +</div>
<div class="line"><span class="lineno"> 111</span> P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].x * (P[i].y - P[j].y)));</div>
<div class="line"><span class="lineno"> 112</span> C.<a class="code hl_variable" href="../../d8/dc8/struct_point.html#a2e1b5fb2b2a83571f5c0bc0f66a73cf7">y</a> = 0.5 * ((P[i].x * (P[j].x * P[j].x + P[j].y * P[j].y -</div>
<div class="line"><span class="lineno"> 113</span> P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].x * P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].x - P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].y * P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].y) +</div>
<div class="line"><span class="lineno"> 114</span> P[j].x * (P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].x * P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].x + P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].y * P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].y -</div>
<div class="line"><span class="lineno"> 115</span> P[i].x * P[i].x - P[i].y * P[i].y) +</div>
<div class="line"><span class="lineno"> 116</span> P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].x * (P[i].x * P[i].x + P[i].y * P[i].y -</div>
<div class="line"><span class="lineno"> 117</span> P[j].x * P[j].x - P[j].y * P[j].y)) /</div>
<div class="line"><span class="lineno"> 118</span> (P[i].x * (P[j].y - P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].y) +</div>
<div class="line"><span class="lineno"> 119</span> P[j].x * (P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].y - P[i].y) +</div>
<div class="line"><span class="lineno"> 120</span> P[<a class="code hl_function" href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">k</a>].x * (P[i].y - P[j].y)));</div>
<div class="line"><span class="lineno"> 121</span> R = (<a class="code hl_function" href="#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a>(P[i], P[j]) * <a class="code hl_function" href="#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a>(P[j], P[k]) *</div>
<div class="line"><span class="lineno"> 122</span> <a class="code hl_function" href="#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a>(P[k], P[i])) /</div>
<div class="line"><span class="lineno"> 123</span> (4 * <a class="code hl_function" href="#a94682a4a70d5906857ca09de5b9fb2cc">TriangleArea</a>(P[i], P[j], P[k]));</div>
<div class="line"><span class="lineno"> 124</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="#aee6d48762c1dfb9f14627927f0c16fad">PointInCircle</a>(P, C, R)) {</div>
<div class="line"><span class="lineno"> 125</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><span class="lineno"> 126</span> }</div>
<div class="line"><span class="lineno"> 127</span> <span class="keywordflow">if</span> (R &lt;= minR) {</div>
<div class="line"><span class="lineno"> 128</span> minR = R;</div>
<div class="line"><span class="lineno"> 129</span> minC = C;</div>
<div class="line"><span class="lineno"> 130</span> }</div>
<div class="line"><span class="lineno"> 131</span> }</div>
<div class="line"><span class="lineno"> 132</span> </div>
<div class="line"><span class="lineno"> 133</span> <span class="comment">// for each point in the list</span></div>
<div class="line"><span class="lineno"> 134</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; P.size() - 1; i++)</div>
<div class="line"><span class="lineno"> 135</span> <span class="comment">// for every subsequent point in the list</span></div>
<div class="line"><span class="lineno"> 136</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = i + 1; j &lt; P.size(); j++) {</div>
<div class="line"><span class="lineno"> 137</span> <span class="comment">// check for diameterically opposite points</span></div>
<div class="line"><span class="lineno"> 138</span> C.x = (P[i].x + P[j].x) / 2;</div>
<div class="line"><span class="lineno"> 139</span> C.<a class="code hl_variable" href="../../d8/dc8/struct_point.html#a2e1b5fb2b2a83571f5c0bc0f66a73cf7">y</a> = (P[i].y + P[j].y) / 2;</div>
<div class="line"><span class="lineno"> 140</span> R = <a class="code hl_function" href="#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a>(C, P[i]);</div>
<div class="line"><span class="lineno"> 141</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="#aee6d48762c1dfb9f14627927f0c16fad">PointInCircle</a>(P, C, R)) {</div>
<div class="line"><span class="lineno"> 142</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><span class="lineno"> 143</span> }</div>
<div class="line"><span class="lineno"> 144</span> <span class="keywordflow">if</span> (R &lt;= minR) {</div>
<div class="line"><span class="lineno"> 145</span> minR = R;</div>
<div class="line"><span class="lineno"> 146</span> minC = C;</div>
<div class="line"><span class="lineno"> 147</span> }</div>
<div class="line"><span class="lineno"> 148</span> }</div>
<div class="line"><span class="lineno"> 149</span> std::cout &lt;&lt; minC.x &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; minC.<a class="code hl_variable" href="../../d8/dc8/struct_point.html#a2e1b5fb2b2a83571f5c0bc0f66a73cf7">y</a> &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 150</span> <span class="keywordflow">return</span> minR;</div>
<div class="line"><span class="lineno"> 151</span>}</div>
<div class="ttc" id="acomposite__simpson__rule_8cpp_html_a1b74d828b33760094906797042b89442"><div class="ttname"><a href="../../d4/d18/composite__simpson__rule_8cpp.html#a1b74d828b33760094906797042b89442">numerical_methods::simpson_method::k</a></div><div class="ttdeci">double k(double x)</div><div class="ttdoc">Another test function.</div><div class="ttdef"><b>Definition</b> <a href="../../d4/d18/composite__simpson__rule_8cpp_source.html#l00117">composite_simpson_rule.cpp:117</a></div></div>
<div class="ttc" id="asmallest__circle_8cpp_html_a3cbebd6f4d2cdf227663c67fe41ba12a"><div class="ttname"><a href="#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a></div><div class="ttdeci">double LenghtLine(const Point &amp;A, const Point &amp;B)</div><div class="ttdef"><b>Definition</b> <a href="../../d0/d01/smallest__circle_8cpp_source.html#l00037">smallest_circle.cpp:37</a></div></div>
<div class="ttc" id="asmallest__circle_8cpp_html_a94682a4a70d5906857ca09de5b9fb2cc"><div class="ttname"><a href="#a94682a4a70d5906857ca09de5b9fb2cc">TriangleArea</a></div><div class="ttdeci">double TriangleArea(const Point &amp;A, const Point &amp;B, const Point &amp;C)</div><div class="ttdef"><b>Definition</b> <a href="../../d0/d01/smallest__circle_8cpp_source.html#l00054">smallest_circle.cpp:54</a></div></div>
<div class="ttc" id="asmallest__circle_8cpp_html_aee6d48762c1dfb9f14627927f0c16fad"><div class="ttname"><a href="#aee6d48762c1dfb9f14627927f0c16fad">PointInCircle</a></div><div class="ttdeci">bool PointInCircle(const std::vector&lt; Point &gt; &amp;P, const Point &amp;Center, double R)</div><div class="ttdef"><b>Definition</b> <a href="../../d0/d01/smallest__circle_8cpp_source.html#l00072">smallest_circle.cpp:72</a></div></div>
<div class="ttc" id="astruct_point_html"><div class="ttname"><a href="../../d8/dc8/struct_point.html">Point</a></div><div class="ttdef"><b>Definition</b> <a href="../../d8/d6c/line__segment__intersection_8cpp_source.html#l00012">line_segment_intersection.cpp:12</a></div></div>
<div class="ttc" id="astruct_point_html_a2e1b5fb2b2a83571f5c0bc0f66a73cf7"><div class="ttname"><a href="../../d8/dc8/struct_point.html#a2e1b5fb2b2a83571f5c0bc0f66a73cf7">Point::y</a></div><div class="ttdeci">int y</div><div class="ttdoc">Point respect to x coordinate.</div><div class="ttdef"><b>Definition</b> <a href="../../d8/d6c/line__segment__intersection_8cpp_source.html#l00014">line_segment_intersection.cpp:14</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3cbebd6f4d2cdf227663c67fe41ba12a" name="a3cbebd6f4d2cdf227663c67fe41ba12a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3cbebd6f4d2cdf227663c67fe41ba12a">&#9670;&#160;</a></span>LenghtLine()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double LenghtLine </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &amp;</td> <td class="paramname"><span class="paramname"><em>A</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &amp;</td> <td class="paramname"><span class="paramname"><em>B</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Compute the Euclidian distance between two points \(A\equiv(x_1,y_1)\) and \(B\equiv(x_2,y_2)\) using the formula: </p><p class="formulaDsp">
\[d=\sqrt{\left(x_1-x_2\right)^2+\left(y_1-y_2\right)^2}\]
</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>point A </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">B</td><td>point B </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ditance </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../d0/d01/smallest__circle_8cpp_source.html#l00037">37</a> of file <a class="el" href="../../d0/d01/smallest__circle_8cpp_source.html">smallest_circle.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 37</span> {</div>
<div class="line"><span class="lineno"> 38</span> <span class="keywordtype">double</span> dx = B.x - A.x;</div>
<div class="line"><span class="lineno"> 39</span> <span class="keywordtype">double</span> dy = B.<a class="code hl_variable" href="../../d8/dc8/struct_point.html#a2e1b5fb2b2a83571f5c0bc0f66a73cf7">y</a> - A.<a class="code hl_variable" href="../../d8/dc8/struct_point.html#a2e1b5fb2b2a83571f5c0bc0f66a73cf7">y</a>;</div>
<div class="line"><span class="lineno"> 40</span> <span class="keywordflow">return</span> std::sqrt((dx * dx) + (dy * dy));</div>
<div class="line"><span class="lineno"> 41</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&#160;</a></span>main()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">void</td> <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Main program </p>
<p class="definition">Definition at line <a class="el" href="../../d0/d01/smallest__circle_8cpp_source.html#l00198">198</a> of file <a class="el" href="../../d0/d01/smallest__circle_8cpp_source.html">smallest_circle.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 198</span> {</div>
<div class="line"><span class="lineno"> 199</span> <a class="code hl_function" href="#ae1a3968e7947464bee7714f6d43b7002">test</a>();</div>
<div class="line"><span class="lineno"> 200</span> std::cout &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 201</span> <a class="code hl_function" href="#a0283886819c7c140a023582b7269e2d0">test2</a>();</div>
<div class="line"><span class="lineno"> 202</span> std::cout &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 203</span> <a class="code hl_function" href="#a6d0455dd5c30adda100e95f0423c786e">test3</a>();</div>
<div class="line"><span class="lineno"> 204</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 205</span>}</div>
<div class="ttc" id="asmallest__circle_8cpp_html_a0283886819c7c140a023582b7269e2d0"><div class="ttname"><a href="#a0283886819c7c140a023582b7269e2d0">test2</a></div><div class="ttdeci">void test2()</div><div class="ttdef"><b>Definition</b> <a href="../../d0/d01/smallest__circle_8cpp_source.html#l00173">smallest_circle.cpp:173</a></div></div>
<div class="ttc" id="asmallest__circle_8cpp_html_a6d0455dd5c30adda100e95f0423c786e"><div class="ttname"><a href="#a6d0455dd5c30adda100e95f0423c786e">test3</a></div><div class="ttdeci">void test3()</div><div class="ttdef"><b>Definition</b> <a href="../../d0/d01/smallest__circle_8cpp_source.html#l00188">smallest_circle.cpp:188</a></div></div>
<div class="ttc" id="asmallest__circle_8cpp_html_ae1a3968e7947464bee7714f6d43b7002"><div class="ttname"><a href="#ae1a3968e7947464bee7714f6d43b7002">test</a></div><div class="ttdeci">void test()</div><div class="ttdef"><b>Definition</b> <a href="../../d0/d01/smallest__circle_8cpp_source.html#l00158">smallest_circle.cpp:158</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aee6d48762c1dfb9f14627927f0c16fad" name="aee6d48762c1dfb9f14627927f0c16fad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee6d48762c1dfb9f14627927f0c16fad">&#9670;&#160;</a></span>PointInCircle()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool PointInCircle </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>P</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &amp;</td> <td class="paramname"><span class="paramname"><em>Center</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double</td> <td class="paramname"><span class="paramname"><em>R</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Check if a set of points lie within given circle. This is true if the distance of all the points from the centre of the circle is less than the radius of the circle </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">P</td><td>set of points to check </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">Center</td><td>coordinates to centre of the circle </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">R</td><td>radius of the circle </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if P lies on or within the circle </dd>
<dd>
False if P lies outside the circle </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../d0/d01/smallest__circle_8cpp_source.html#l00072">72</a> of file <a class="el" href="../../d0/d01/smallest__circle_8cpp_source.html">smallest_circle.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 72</span> {</div>
<div class="line"><span class="lineno"> 73</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; P.size(); i++) {</div>
<div class="line"><span class="lineno"> 74</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a>(P[i], Center) &gt; R)</div>
<div class="line"><span class="lineno"> 75</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 76</span> }</div>
<div class="line"><span class="lineno"> 77</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 78</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="ae1a3968e7947464bee7714f6d43b7002" name="ae1a3968e7947464bee7714f6d43b7002"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1a3968e7947464bee7714f6d43b7002">&#9670;&#160;</a></span>test()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void test </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Test case: result should be: <br />
Circle with <br />
radius 3.318493136080724 <br />
centre at (3.0454545454545454, 1.3181818181818181) </p>
<p class="definition">Definition at line <a class="el" href="../../d0/d01/smallest__circle_8cpp_source.html#l00158">158</a> of file <a class="el" href="../../d0/d01/smallest__circle_8cpp_source.html">smallest_circle.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 158</span> {</div>
<div class="line"><span class="lineno"> 159</span> std::vector&lt;Point&gt; Pv;</div>
<div class="line"><span class="lineno"> 160</span> Pv.push_back(<a class="code hl_struct" href="../../d8/dc8/struct_point.html">Point</a>(0, 0));</div>
<div class="line"><span class="lineno"> 161</span> Pv.push_back(<a class="code hl_struct" href="../../d8/dc8/struct_point.html">Point</a>(5, 4));</div>
<div class="line"><span class="lineno"> 162</span> Pv.push_back(<a class="code hl_struct" href="../../d8/dc8/struct_point.html">Point</a>(1, 3));</div>
<div class="line"><span class="lineno"> 163</span> Pv.push_back(<a class="code hl_struct" href="../../d8/dc8/struct_point.html">Point</a>(4, 1));</div>
<div class="line"><span class="lineno"> 164</span> Pv.push_back(<a class="code hl_struct" href="../../d8/dc8/struct_point.html">Point</a>(3, -2));</div>
<div class="line"><span class="lineno"> 165</span> std::cout &lt;&lt; <a class="code hl_function" href="#a0b0676df8e4da7a08c7ccaecea344903">circle</a>(Pv) &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 166</span>}</div>
<div class="ttc" id="asmallest__circle_8cpp_html_a0b0676df8e4da7a08c7ccaecea344903"><div class="ttname"><a href="#a0b0676df8e4da7a08c7ccaecea344903">circle</a></div><div class="ttdeci">double circle(const std::vector&lt; Point &gt; &amp;P)</div><div class="ttdef"><b>Definition</b> <a href="../../d0/d01/smallest__circle_8cpp_source.html#l00087">smallest_circle.cpp:87</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a0283886819c7c140a023582b7269e2d0" name="a0283886819c7c140a023582b7269e2d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0283886819c7c140a023582b7269e2d0">&#9670;&#160;</a></span>test2()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void test2 </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Test case: result should be: <br />
Circle with <br />
radius 1.4142135623730951 <br />
centre at (1.0, 1.0) </p>
<p class="definition">Definition at line <a class="el" href="../../d0/d01/smallest__circle_8cpp_source.html#l00173">173</a> of file <a class="el" href="../../d0/d01/smallest__circle_8cpp_source.html">smallest_circle.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 173</span> {</div>
<div class="line"><span class="lineno"> 174</span> std::vector&lt;Point&gt; Pv;</div>
<div class="line"><span class="lineno"> 175</span> Pv.push_back(<a class="code hl_struct" href="../../d8/dc8/struct_point.html">Point</a>(0, 0));</div>
<div class="line"><span class="lineno"> 176</span> Pv.push_back(<a class="code hl_struct" href="../../d8/dc8/struct_point.html">Point</a>(0, 2));</div>
<div class="line"><span class="lineno"> 177</span> Pv.push_back(<a class="code hl_struct" href="../../d8/dc8/struct_point.html">Point</a>(2, 2));</div>
<div class="line"><span class="lineno"> 178</span> Pv.push_back(<a class="code hl_struct" href="../../d8/dc8/struct_point.html">Point</a>(2, 0));</div>
<div class="line"><span class="lineno"> 179</span> std::cout &lt;&lt; <a class="code hl_function" href="#a0b0676df8e4da7a08c7ccaecea344903">circle</a>(Pv) &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 180</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a6d0455dd5c30adda100e95f0423c786e" name="a6d0455dd5c30adda100e95f0423c786e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d0455dd5c30adda100e95f0423c786e">&#9670;&#160;</a></span>test3()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void test3 </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Test case: result should be: <br />
Circle with <br />
radius 1.821078397711709 <br />
centre at (2.142857142857143, 1.7857142857142856) </p><dl class="todo"><dt><b><a class="el" href="../../dd/da0/todo.html#_todo000010">Todo</a></b></dt><dd>This test fails </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../d0/d01/smallest__circle_8cpp_source.html#l00188">188</a> of file <a class="el" href="../../d0/d01/smallest__circle_8cpp_source.html">smallest_circle.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 188</span> {</div>
<div class="line"><span class="lineno"> 189</span> std::vector&lt;Point&gt; Pv;</div>
<div class="line"><span class="lineno"> 190</span> Pv.push_back(<a class="code hl_struct" href="../../d8/dc8/struct_point.html">Point</a>(0.5, 1));</div>
<div class="line"><span class="lineno"> 191</span> Pv.push_back(<a class="code hl_struct" href="../../d8/dc8/struct_point.html">Point</a>(3.5, 3));</div>
<div class="line"><span class="lineno"> 192</span> Pv.push_back(<a class="code hl_struct" href="../../d8/dc8/struct_point.html">Point</a>(2.5, 0));</div>
<div class="line"><span class="lineno"> 193</span> Pv.push_back(<a class="code hl_struct" href="../../d8/dc8/struct_point.html">Point</a>(2, 1.5));</div>
<div class="line"><span class="lineno"> 194</span> std::cout &lt;&lt; <a class="code hl_function" href="#a0b0676df8e4da7a08c7ccaecea344903">circle</a>(Pv) &lt;&lt; std::endl;</div>
<div class="line"><span class="lineno"> 195</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a94682a4a70d5906857ca09de5b9fb2cc" name="a94682a4a70d5906857ca09de5b9fb2cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94682a4a70d5906857ca09de5b9fb2cc">&#9670;&#160;</a></span>TriangleArea()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double TriangleArea </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &amp;</td> <td class="paramname"><span class="paramname"><em>A</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &amp;</td> <td class="paramname"><span class="paramname"><em>B</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &amp;</td> <td class="paramname"><span class="paramname"><em>C</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Compute the area of triangle formed by three points using <a href="https://en.wikipedia.org/wiki/Heron%27s_formula" target="_blank">Heron's formula</a>. If the lengths of the sides of the triangle are \(a,\,b,\,c\) and \(s=\displaystyle\frac{a+b+c}{2}\) is the semi-perimeter then the area is given by </p><p class="formulaDsp">
\[A=\sqrt{s(s-a)(s-b)(s-c)}\]
</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">A</td><td>vertex A </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">B</td><td>vertex B </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">C</td><td>vertex C </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>area of triangle </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../d0/d01/smallest__circle_8cpp_source.html#l00054">54</a> of file <a class="el" href="../../d0/d01/smallest__circle_8cpp_source.html">smallest_circle.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 54</span> {</div>
<div class="line"><span class="lineno"> 55</span> <span class="keywordtype">double</span> a = <a class="code hl_function" href="#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a>(A, B);</div>
<div class="line"><span class="lineno"> 56</span> <span class="keywordtype">double</span> b = <a class="code hl_function" href="#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a>(B, C);</div>
<div class="line"><span class="lineno"> 57</span> <span class="keywordtype">double</span> c = <a class="code hl_function" href="#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a>(C, A);</div>
<div class="line"><span class="lineno"> 58</span> <span class="keywordtype">double</span> p = (a + b + c) / 2;</div>
<div class="line"><span class="lineno"> 59</span> <span class="keywordflow">return</span> std::sqrt(p * (p - a) * (p - b) * (p - c));</div>
<div class="line"><span class="lineno"> 60</span>}</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_9510827d0b234b3cc54b29892f217477.html">others</a></li><li class="navelem"><a class="el" href="../../d0/d01/smallest__circle_8cpp.html">smallest_circle.cpp</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>