mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-03-22 04:42:10 +08:00
570 lines
49 KiB
HTML
570 lines
49 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.8.19"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>Algorithms_in_C++: others/smallest_circle.cpp File Reference</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>
|
|
<script type="text/x-mathjax-config">
|
|
MathJax.Hub.Config({
|
|
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
|
|
jax: ["input/TeX","output/HTML-CSS"],
|
|
});
|
|
</script>
|
|
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.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">Algorithms_in_C++
|
|
 <span id="projectnumber">1.0.0</span>
|
|
</div>
|
|
<div id="projectbrief">Set of algorithms implemented in C++.</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.19 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
|
|
/* @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','Search');
|
|
$(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('d0/d01/smallest__circle_8cpp.html','../../'); initResizable(); });
|
|
/* @license-end */
|
|
</script>
|
|
<div id="doc-content">
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#nested-classes">Classes</a> |
|
|
<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">smallest circle</a> that circumscribes given set of points.
|
|
<a href="#details">More...</a></p>
|
|
<div class="textblock"><code>#include <cmath></code><br />
|
|
<code>#include <iostream></code><br />
|
|
<code>#include <vector></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="248" height="112"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
|
|
</div>
|
|
</div>
|
|
</div><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
|
|
Classes</h2></td></tr>
|
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </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"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
|
Functions</h2></td></tr>
|
|
<tr class="memitem:a3cbebd6f4d2cdf227663c67fe41ba12a"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d01/smallest__circle_8cpp.html#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a> (const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &A, const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &B)</td></tr>
|
|
<tr class="separator:a3cbebd6f4d2cdf227663c67fe41ba12a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a94682a4a70d5906857ca09de5b9fb2cc"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d01/smallest__circle_8cpp.html#a94682a4a70d5906857ca09de5b9fb2cc">TriangleArea</a> (const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &A, const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &B, const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &C)</td></tr>
|
|
<tr class="separator:a94682a4a70d5906857ca09de5b9fb2cc"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:aee6d48762c1dfb9f14627927f0c16fad"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d01/smallest__circle_8cpp.html#aee6d48762c1dfb9f14627927f0c16fad">PointInCircle</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="el" href="../../d8/dc8/struct_point.html">Point</a> > &P, const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> &Center, double R)</td></tr>
|
|
<tr class="separator:aee6d48762c1dfb9f14627927f0c16fad"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a0b0676df8e4da7a08c7ccaecea344903"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d01/smallest__circle_8cpp.html#a0b0676df8e4da7a08c7ccaecea344903">circle</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="el" href="../../d8/dc8/struct_point.html">Point</a> > &P)</td></tr>
|
|
<tr class="separator:a0b0676df8e4da7a08c7ccaecea344903"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ae1a3968e7947464bee7714f6d43b7002"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d01/smallest__circle_8cpp.html#ae1a3968e7947464bee7714f6d43b7002">test</a> ()</td></tr>
|
|
<tr class="separator:ae1a3968e7947464bee7714f6d43b7002"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a0283886819c7c140a023582b7269e2d0"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d01/smallest__circle_8cpp.html#a0283886819c7c140a023582b7269e2d0">test2</a> ()</td></tr>
|
|
<tr class="separator:a0283886819c7c140a023582b7269e2d0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6d0455dd5c30adda100e95f0423c786e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d01/smallest__circle_8cpp.html#a6d0455dd5c30adda100e95f0423c786e">test3</a> ()</td></tr>
|
|
<tr class="separator:a6d0455dd5c30adda100e95f0423c786e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d01/smallest__circle_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr>
|
|
<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2"> </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">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">other implementation</a> </dd></dl>
|
|
</div><h2 class="groupheader">Function Documentation</h2>
|
|
<a id="a0b0676df8e4da7a08c7ccaecea344903"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a0b0676df8e4da7a08c7ccaecea344903">◆ </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 <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="el" href="../../d8/dc8/struct_point.html">Point</a> > & </td>
|
|
<td class="paramname"><em>P</em></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>
|
|
<div class="fragment"><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  {</div>
|
|
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">double</span> minR = INFINITY;</div>
|
|
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">double</span> R;</div>
|
|
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="../../d8/dc8/struct_point.html">Point</a> C;</div>
|
|
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="../../d8/dc8/struct_point.html">Point</a> minC;</div>
|
|
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  </div>
|
|
<div class="line"><a name="l00093"></a><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"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// for each point in the list</span></div>
|
|
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < P.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() - 2; i++)</div>
|
|
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// for every subsequent point in the list</span></div>
|
|
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = i + 1; j < P.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>(); j++)</div>
|
|
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">// for every subsequent point in the list</span></div>
|
|
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> k = j + 1; k < P.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>(); k++) {</div>
|
|
<div class="line"><a name="l00100"></a><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"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">// points that we can use</span></div>
|
|
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// viz., P[i], P[j] and P[k]</span></div>
|
|
<div class="line"><a name="l00103"></a><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"><a name="l00104"></a><span class="lineno"> 104</span>  P[k].x * P[k].x - P[k].y * P[k].y) +</div>
|
|
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  P[j].y * (P[k].x * P[k].x + P[k].y * P[k].y -</div>
|
|
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  P[i].x * P[i].x - P[i].y * P[i].y) +</div>
|
|
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  P[k].y * (P[i].x * P[i].x + P[i].y * P[i].y -</div>
|
|
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  P[j].x * P[j].x - P[j].y * P[j].y)) /</div>
|
|
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  (P[i].x * (P[j].y - P[k].y) +</div>
|
|
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  P[j].x * (P[k].y - P[i].y) +</div>
|
|
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  P[k].x * (P[i].y - P[j].y)));</div>
|
|
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  C.<a class="code" 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"><a name="l00113"></a><span class="lineno"> 113</span>  P[k].x * P[k].x - P[k].y * P[k].y) +</div>
|
|
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  P[j].x * (P[k].x * P[k].x + P[k].y * P[k].y -</div>
|
|
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  P[i].x * P[i].x - P[i].y * P[i].y) +</div>
|
|
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  P[k].x * (P[i].x * P[i].x + P[i].y * P[i].y -</div>
|
|
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  P[j].x * P[j].x - P[j].y * P[j].y)) /</div>
|
|
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  (P[i].x * (P[j].y - P[k].y) +</div>
|
|
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  P[j].x * (P[k].y - P[i].y) +</div>
|
|
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  P[k].x * (P[i].y - P[j].y)));</div>
|
|
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  R = (<a class="code" href="../../d0/d01/smallest__circle_8cpp.html#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a>(P[i], P[j]) * <a class="code" href="../../d0/d01/smallest__circle_8cpp.html#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a>(P[j], P[k]) *</div>
|
|
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="../../d0/d01/smallest__circle_8cpp.html#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a>(P[k], P[i])) /</div>
|
|
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  (4 * <a class="code" href="../../d0/d01/smallest__circle_8cpp.html#a94682a4a70d5906857ca09de5b9fb2cc">TriangleArea</a>(P[i], P[j], P[k]));</div>
|
|
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span> (!<a class="code" href="../../d0/d01/smallest__circle_8cpp.html#aee6d48762c1dfb9f14627927f0c16fad">PointInCircle</a>(P, C, R)) {</div>
|
|
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">continue</span>;</div>
|
|
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div>
|
|
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span> (R <= minR) {</div>
|
|
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  minR = R;</div>
|
|
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  minC = C;</div>
|
|
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div>
|
|
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div>
|
|
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  </div>
|
|
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// for each point in the list</span></div>
|
|
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < P.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() - 1; i++)</div>
|
|
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// for every subsequent point in the list</span></div>
|
|
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = i + 1; j < P.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>(); j++) {</div>
|
|
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">// check for diameterically opposite points</span></div>
|
|
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  C.x = (P[i].x + P[j].x) / 2;</div>
|
|
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  C.<a class="code" href="../../d8/dc8/struct_point.html#a2e1b5fb2b2a83571f5c0bc0f66a73cf7">y</a> = (P[i].y + P[j].y) / 2;</div>
|
|
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  R = <a class="code" href="../../d0/d01/smallest__circle_8cpp.html#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a>(C, P[i]);</div>
|
|
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">if</span> (!<a class="code" href="../../d0/d01/smallest__circle_8cpp.html#aee6d48762c1dfb9f14627927f0c16fad">PointInCircle</a>(P, C, R)) {</div>
|
|
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">continue</span>;</div>
|
|
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div>
|
|
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span> (R <= minR) {</div>
|
|
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  minR = R;</div>
|
|
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  minC = C;</div>
|
|
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div>
|
|
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div>
|
|
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << minC.x << <span class="stringliteral">" "</span> << minC.<a class="code" href="../../d8/dc8/struct_point.html#a2e1b5fb2b2a83571f5c0bc0f66a73cf7">y</a> << <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
|
|
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> minR;</div>
|
|
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> }</div>
|
|
</div><!-- fragment --><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d0/d01/smallest__circle_8cpp_a0b0676df8e4da7a08c7ccaecea344903_cgraph.svg" width="492" height="218"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a3cbebd6f4d2cdf227663c67fe41ba12a"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a3cbebd6f4d2cdf227663c67fe41ba12a">◆ </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> & </td>
|
|
<td class="paramname"><em>A</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> & </td>
|
|
<td class="paramname"><em>B</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></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>
|
|
<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  {</div>
|
|
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">double</span> dx = B.x - A.x;</div>
|
|
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">double</span> dy = B.<a class="code" href="../../d8/dc8/struct_point.html#a2e1b5fb2b2a83571f5c0bc0f66a73cf7">y</a> - A.<a class="code" href="../../d8/dc8/struct_point.html#a2e1b5fb2b2a83571f5c0bc0f66a73cf7">y</a>;</div>
|
|
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">return</span> <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/sqrt.html">std::sqrt</a>((dx * dx) + (dy * dy));</div>
|
|
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> }</div>
|
|
</div><!-- fragment --><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d0/d01/smallest__circle_8cpp_a3cbebd6f4d2cdf227663c67fe41ba12a_cgraph.svg" width="215" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">◆ </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"></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Main program </p>
|
|
<div class="fragment"><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  {</div>
|
|
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="../../d0/d01/smallest__circle_8cpp.html#ae1a3968e7947464bee7714f6d43b7002">test</a>();</div>
|
|
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
|
|
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="../../d0/d01/smallest__circle_8cpp.html#a0283886819c7c140a023582b7269e2d0">test2</a>();</div>
|
|
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
|
|
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="code" href="../../d0/d01/smallest__circle_8cpp.html#a6d0455dd5c30adda100e95f0423c786e">test3</a>();</div>
|
|
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">return</span> 0;</div>
|
|
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> }</div>
|
|
</div><!-- fragment --><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../d0/d01/smallest__circle_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg" width="100%" height="544"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="aee6d48762c1dfb9f14627927f0c16fad"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aee6d48762c1dfb9f14627927f0c16fad">◆ </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 <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a>< <a class="el" href="../../d8/dc8/struct_point.html">Point</a> > & </td>
|
|
<td class="paramname"><em>P</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> & </td>
|
|
<td class="paramname"><em>Center</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></td>
|
|
<td>)</td>
|
|
<td></td><td></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>
|
|
<div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {</div>
|
|
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < P.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>(); i++) {</div>
|
|
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span> (<a class="code" href="../../d0/d01/smallest__circle_8cpp.html#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a>(P[i], Center) > R)</div>
|
|
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div>
|
|
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> }</div>
|
|
</div><!-- fragment --><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d0/d01/smallest__circle_8cpp_aee6d48762c1dfb9f14627927f0c16fad_cgraph.svg" width="391" height="88"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ae1a3968e7947464bee7714f6d43b7002"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ae1a3968e7947464bee7714f6d43b7002">◆ </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"></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>
|
|
<div class="fragment"><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  {</div>
|
|
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<Point></a> Pv;</div>
|
|
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  Pv.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="../../d8/dc8/struct_point.html">Point</a>(0, 0));</div>
|
|
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  Pv.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="../../d8/dc8/struct_point.html">Point</a>(5, 4));</div>
|
|
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  Pv.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="../../d8/dc8/struct_point.html">Point</a>(1, 3));</div>
|
|
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  Pv.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="../../d8/dc8/struct_point.html">Point</a>(4, 1));</div>
|
|
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  Pv.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="../../d8/dc8/struct_point.html">Point</a>(3, -2));</div>
|
|
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <a class="code" href="../../d0/d01/smallest__circle_8cpp.html#a0b0676df8e4da7a08c7ccaecea344903">circle</a>(Pv) << <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
|
|
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> }</div>
|
|
</div><!-- fragment --><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../d0/d01/smallest__circle_8cpp_ae1a3968e7947464bee7714f6d43b7002_cgraph.svg" width="100%" height="466"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a0283886819c7c140a023582b7269e2d0"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a0283886819c7c140a023582b7269e2d0">◆ </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"></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>
|
|
<div class="fragment"><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  {</div>
|
|
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<Point></a> Pv;</div>
|
|
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  Pv.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="../../d8/dc8/struct_point.html">Point</a>(0, 0));</div>
|
|
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  Pv.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="../../d8/dc8/struct_point.html">Point</a>(0, 2));</div>
|
|
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  Pv.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="../../d8/dc8/struct_point.html">Point</a>(2, 2));</div>
|
|
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  Pv.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="../../d8/dc8/struct_point.html">Point</a>(2, 0));</div>
|
|
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <a class="code" href="../../d0/d01/smallest__circle_8cpp.html#a0b0676df8e4da7a08c7ccaecea344903">circle</a>(Pv) << <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
|
|
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div>
|
|
</div><!-- fragment --><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../d0/d01/smallest__circle_8cpp_a0283886819c7c140a023582b7269e2d0_cgraph.svg" width="100%" height="466"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a6d0455dd5c30adda100e95f0423c786e"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a6d0455dd5c30adda100e95f0423c786e">◆ </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"></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#_todo000009">Todo:</a></b></dt><dd>This test fails </dd></dl>
|
|
<div class="fragment"><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  {</div>
|
|
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector<Point></a> Pv;</div>
|
|
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  Pv.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="../../d8/dc8/struct_point.html">Point</a>(0.5, 1));</div>
|
|
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  Pv.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="../../d8/dc8/struct_point.html">Point</a>(3.5, 3));</div>
|
|
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  Pv.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="../../d8/dc8/struct_point.html">Point</a>(2.5, 0));</div>
|
|
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  Pv.<a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(<a class="code" href="../../d8/dc8/struct_point.html">Point</a>(2, 1.5));</div>
|
|
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> << <a class="code" href="../../d0/d01/smallest__circle_8cpp.html#a0b0676df8e4da7a08c7ccaecea344903">circle</a>(Pv) << <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
|
|
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> }</div>
|
|
</div><!-- fragment --><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../d0/d01/smallest__circle_8cpp_a6d0455dd5c30adda100e95f0423c786e_cgraph.svg" width="100%" height="466"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a94682a4a70d5906857ca09de5b9fb2cc"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a94682a4a70d5906857ca09de5b9fb2cc">◆ </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> & </td>
|
|
<td class="paramname"><em>A</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> & </td>
|
|
<td class="paramname"><em>B</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const <a class="el" href="../../d8/dc8/struct_point.html">Point</a> & </td>
|
|
<td class="paramname"><em>C</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Compute the area of triangle formed by three points using <a href="https://en.wikipedia.org/wiki/Heron%27s_formula">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>
|
|
<div class="fragment"><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  {</div>
|
|
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">double</span> a = <a class="code" href="../../d0/d01/smallest__circle_8cpp.html#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a>(A, B);</div>
|
|
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">double</span> b = <a class="code" href="../../d0/d01/smallest__circle_8cpp.html#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a>(B, C);</div>
|
|
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">double</span> c = <a class="code" href="../../d0/d01/smallest__circle_8cpp.html#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a>(C, A);</div>
|
|
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">double</span> p = (a + b + c) / 2;</div>
|
|
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">return</span> <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/sqrt.html">std::sqrt</a>(p * (p - a) * (p - b) * (p - c));</div>
|
|
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> }</div>
|
|
</div><!-- fragment --><div class="dynheader">
|
|
Here is the call graph for this function:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d0/d01/smallest__circle_8cpp_a94682a4a70d5906857ca09de5b9fb2cc_cgraph.svg" width="358" height="63"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<div class="ttc" id="asmallest__circle_8cpp_html_a6d0455dd5c30adda100e95f0423c786e"><div class="ttname"><a href="../../d0/d01/smallest__circle_8cpp.html#a6d0455dd5c30adda100e95f0423c786e">test3</a></div><div class="ttdeci">void test3()</div><div class="ttdef"><b>Definition:</b> smallest_circle.cpp:188</div></div>
|
|
<div class="ttc" id="asmallest__circle_8cpp_html_a0283886819c7c140a023582b7269e2d0"><div class="ttname"><a href="../../d0/d01/smallest__circle_8cpp.html#a0283886819c7c140a023582b7269e2d0">test2</a></div><div class="ttdeci">void test2()</div><div class="ttdef"><b>Definition:</b> smallest_circle.cpp:173</div></div>
|
|
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a></div><div class="ttdoc">STL class.</div></div>
|
|
<div class="ttc" id="asize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/size.html">std::vector::size</a></div><div class="ttdeci">T size(T... args)</div></div>
|
|
<div class="ttc" id="asqrt_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/math/sqrt.html">std::sqrt</a></div><div class="ttdeci">T sqrt(T... args)</div></div>
|
|
<div class="ttc" id="apush_back_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">std::vector::push_back</a></div><div class="ttdeci">T push_back(T... args)</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> line_segment_intersection.cpp:14</div></div>
|
|
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div></div>
|
|
<div class="ttc" id="asmallest__circle_8cpp_html_a3cbebd6f4d2cdf227663c67fe41ba12a"><div class="ttname"><a href="../../d0/d01/smallest__circle_8cpp.html#a3cbebd6f4d2cdf227663c67fe41ba12a">LenghtLine</a></div><div class="ttdeci">double LenghtLine(const Point &A, const Point &B)</div><div class="ttdef"><b>Definition:</b> smallest_circle.cpp:37</div></div>
|
|
<div class="ttc" id="asmallest__circle_8cpp_html_a94682a4a70d5906857ca09de5b9fb2cc"><div class="ttname"><a href="../../d0/d01/smallest__circle_8cpp.html#a94682a4a70d5906857ca09de5b9fb2cc">TriangleArea</a></div><div class="ttdeci">double TriangleArea(const Point &A, const Point &B, const Point &C)</div><div class="ttdef"><b>Definition:</b> smallest_circle.cpp:54</div></div>
|
|
<div class="ttc" id="asmallest__circle_8cpp_html_a0b0676df8e4da7a08c7ccaecea344903"><div class="ttname"><a href="../../d0/d01/smallest__circle_8cpp.html#a0b0676df8e4da7a08c7ccaecea344903">circle</a></div><div class="ttdeci">double circle(const std::vector< Point > &P)</div><div class="ttdef"><b>Definition:</b> smallest_circle.cpp:87</div></div>
|
|
<div class="ttc" id="aendl_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a></div><div class="ttdeci">T endl(T... args)</div></div>
|
|
<div class="ttc" id="asmallest__circle_8cpp_html_ae1a3968e7947464bee7714f6d43b7002"><div class="ttname"><a href="../../d0/d01/smallest__circle_8cpp.html#ae1a3968e7947464bee7714f6d43b7002">test</a></div><div class="ttdeci">void test()</div><div class="ttdef"><b>Definition:</b> smallest_circle.cpp:158</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> line_segment_intersection.cpp:12</div></div>
|
|
<div class="ttc" id="asmallest__circle_8cpp_html_aee6d48762c1dfb9f14627927f0c16fad"><div class="ttname"><a href="../../d0/d01/smallest__circle_8cpp.html#aee6d48762c1dfb9f14627927f0c16fad">PointInCircle</a></div><div class="ttdeci">bool PointInCircle(const std::vector< Point > &P, const Point &Center, double R)</div><div class="ttdef"><b>Definition:</b> smallest_circle.cpp:72</div></div>
|
|
<!-- 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="http://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.19 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|