Files
C-Plus-Plus/d4/d8d/jarvis__algorithm_8cpp_source.html
2024-11-04 12:43:05 +00:00

267 lines
26 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- 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++: geometry/jarvis_algorithm.cpp Source File</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('d4/d8d/jarvis__algorithm_8cpp_source.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="headertitle"><div class="title">jarvis_algorithm.cpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d4/d8d/jarvis__algorithm_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span> </div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="preprocessor">#include &lt;cassert&gt;</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#include &lt;iostream&gt;</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d5/d5f/namespacegeometry.html">geometry</a> {</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">namespace </span><a class="code hl_namespace" href="../../d5/da7/namespacejarvis.html">jarvis</a> {</div>
<div class="foldopen" id="foldopen00047" data-start="{" data-end="};">
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"><a class="line" href="../../d9/d5a/structgeometry_1_1jarvis_1_1_point.html"> 47</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="../../d9/d5a/structgeometry_1_1jarvis_1_1_point.html">Point</a> {</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keywordtype">int</span> x, y;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> };</div>
</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
<div class="foldopen" id="foldopen00055" data-start="{" data-end="};">
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"><a class="line" href="../../d4/dde/classgeometry_1_1jarvis_1_1_convexhull.html"> 55</a></span> <span class="keyword">class </span><a class="code hl_class" href="../../d4/dde/classgeometry_1_1jarvis_1_1_convexhull.html">Convexhull</a> {</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> std::vector&lt;Point&gt; points;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="keywordtype">int</span> size;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen00066" data-start="{" data-end="}">
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"><a class="line" href="../../d4/dde/classgeometry_1_1jarvis_1_1_convexhull.html#a8306e48040a8570e164c58d1c530f870"> 66</a></span> <span class="keyword">explicit</span> <a class="code hl_function" href="../../d4/dde/classgeometry_1_1jarvis_1_1_convexhull.html#a8306e48040a8570e164c58d1c530f870">Convexhull</a>(<span class="keyword">const</span> std::vector&lt;Point&gt; &amp;pointList) {</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> points = pointList;</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> size = points.size();</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> }</div>
</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="foldopen" id="foldopen00078" data-start="{" data-end="}">
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="../../d4/dde/classgeometry_1_1jarvis_1_1_convexhull.html#aeec46e86786ddd461464b07a77c4d5f1"> 78</a></span> std::vector&lt;Point&gt; <a class="code hl_function" href="../../d4/dde/classgeometry_1_1jarvis_1_1_convexhull.html#aeec46e86786ddd461464b07a77c4d5f1">getConvexHull</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// Initialize Result</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> std::vector&lt;Point&gt; hull;</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> </div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// Find the leftmost point</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="keywordtype">int</span> leftmost_point = 0;</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 1; i &lt; size; i++) {</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="keywordflow">if</span> (points[i].x &lt; points[leftmost_point].x) {</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> leftmost_point = i;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> }</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> }</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// Start from leftmost point, keep moving counterclockwise</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// until reach the start point again. This loop runs O(h)</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <span class="comment">// times where h is number of points in result or output.</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keywordtype">int</span> p = leftmost_point, q = 0;</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// Add current point to result</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> hull.push_back(points[p]);</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> </div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// Search for a point &#39;q&#39; such that orientation(p, x, q)</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// is counterclockwise for all points &#39;x&#39;. The idea</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <span class="comment">// is to keep track of last visited most counter clock-</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="comment">// wise point in q. If any point &#39;i&#39; is more counter clock-</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="comment">// wise than q, then update q.</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> q = (p + 1) % size;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; size; i++) {</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="comment">// If i is more counterclockwise than current q, then</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// update q</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="../../d4/dde/classgeometry_1_1jarvis_1_1_convexhull.html#a54df5f9a8f37170bd97c91127664655c">orientation</a>(points[p], points[i], points[q]) == 2) {</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> q = i;</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> }</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> }</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="comment">// Now q is the most counterclockwise with respect to p</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="comment">// Set p as q for next iteration, so that q is added to</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="comment">// result &#39;hull&#39;</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> p = q;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> </div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> } <span class="keywordflow">while</span> (p != leftmost_point); <span class="comment">// While we don&#39;t come to first point</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordflow">return</span> hull;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> }</div>
</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
<div class="foldopen" id="foldopen00133" data-start="{" data-end="}">
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"><a class="line" href="../../d4/dde/classgeometry_1_1jarvis_1_1_convexhull.html#a54df5f9a8f37170bd97c91127664655c"> 133</a></span> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code hl_function" href="../../d4/dde/classgeometry_1_1jarvis_1_1_convexhull.html#a54df5f9a8f37170bd97c91127664655c">orientation</a>(<span class="keyword">const</span> <a class="code hl_struct" href="../../d9/d5a/structgeometry_1_1jarvis_1_1_point.html">Point</a> &amp;p, <span class="keyword">const</span> <a class="code hl_struct" href="../../d9/d5a/structgeometry_1_1jarvis_1_1_point.html">Point</a> &amp;q, <span class="keyword">const</span> <a class="code hl_struct" href="../../d9/d5a/structgeometry_1_1jarvis_1_1_point.html">Point</a> &amp;r) {</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordtype">int</span> val = (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> </div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">if</span> (val == 0) {</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> }</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="keywordflow">return</span> (val &gt; 0) ? 1 : 2;</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> }</div>
</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> </div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> };</div>
</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> </div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> } <span class="comment">// namespace jarvis</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span>} <span class="comment">// namespace geometry</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> </div>
<div class="foldopen" id="foldopen00151" data-start="{" data-end="}">
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"><a class="line" href="../../d4/d8d/jarvis__algorithm_8cpp.html#aa8dca7b867074164d5f45b0f3851269d"> 151</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d4/d8d/jarvis__algorithm_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>() {</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> std::vector&lt;geometry::jarvis::Point&gt; points = {{0, 3},</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> {2, 2},</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> {1, 1},</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> {2, 1},</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> {3, 0},</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> {0, 0},</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> {3, 3}</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> };</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <a class="code hl_class" href="../../d4/dde/classgeometry_1_1jarvis_1_1_convexhull.html">geometry::jarvis::Convexhull</a> hull(points);</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> std::vector&lt;geometry::jarvis::Point&gt; actualPoint;</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> actualPoint = hull.<a class="code hl_function" href="../../d4/dde/classgeometry_1_1jarvis_1_1_convexhull.html#aeec46e86786ddd461464b07a77c4d5f1">getConvexHull</a>();</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> </div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> std::vector&lt;geometry::jarvis::Point&gt; expectedPoint = {{0, 3},</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> {0, 0},</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> {3, 0},</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> {3, 3}};</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; expectedPoint.size(); i++) {</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> assert(actualPoint[i].x == expectedPoint[i].x);</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> assert(actualPoint[i].y == expectedPoint[i].y);</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> }</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> std::cout &lt;&lt; <span class="stringliteral">&quot;Test implementations passed!\n&quot;</span>;</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span>}</div>
</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> </div>
<div class="foldopen" id="foldopen00176" data-start="{" data-end="}">
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"><a class="line" href="../../d4/d8d/jarvis__algorithm_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4"> 176</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d4/d8d/jarvis__algorithm_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a>() {</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <a class="code hl_function" href="../../d4/d8d/jarvis__algorithm_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>();</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span>}</div>
</div>
<div class="ttc" id="aclassgeometry_1_1jarvis_1_1_convexhull_html"><div class="ttname"><a href="../../d4/dde/classgeometry_1_1jarvis_1_1_convexhull.html">geometry::jarvis::Convexhull</a></div><div class="ttdef"><b>Definition</b> <a href="#l00055">jarvis_algorithm.cpp:55</a></div></div>
<div class="ttc" id="aclassgeometry_1_1jarvis_1_1_convexhull_html_a54df5f9a8f37170bd97c91127664655c"><div class="ttname"><a href="../../d4/dde/classgeometry_1_1jarvis_1_1_convexhull.html#a54df5f9a8f37170bd97c91127664655c">geometry::jarvis::Convexhull::orientation</a></div><div class="ttdeci">static int orientation(const Point &amp;p, const Point &amp;q, const Point &amp;r)</div><div class="ttdef"><b>Definition</b> <a href="#l00133">jarvis_algorithm.cpp:133</a></div></div>
<div class="ttc" id="aclassgeometry_1_1jarvis_1_1_convexhull_html_a8306e48040a8570e164c58d1c530f870"><div class="ttname"><a href="../../d4/dde/classgeometry_1_1jarvis_1_1_convexhull.html#a8306e48040a8570e164c58d1c530f870">geometry::jarvis::Convexhull::Convexhull</a></div><div class="ttdeci">Convexhull(const std::vector&lt; Point &gt; &amp;pointList)</div><div class="ttdef"><b>Definition</b> <a href="#l00066">jarvis_algorithm.cpp:66</a></div></div>
<div class="ttc" id="aclassgeometry_1_1jarvis_1_1_convexhull_html_aeec46e86786ddd461464b07a77c4d5f1"><div class="ttname"><a href="../../d4/dde/classgeometry_1_1jarvis_1_1_convexhull.html#aeec46e86786ddd461464b07a77c4d5f1">geometry::jarvis::Convexhull::getConvexHull</a></div><div class="ttdeci">std::vector&lt; Point &gt; getConvexHull() const</div><div class="ttdef"><b>Definition</b> <a href="#l00078">jarvis_algorithm.cpp:78</a></div></div>
<div class="ttc" id="ajarvis__algorithm_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../d4/d8d/jarvis__algorithm_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdef"><b>Definition</b> <a href="#l00151">jarvis_algorithm.cpp:151</a></div></div>
<div class="ttc" id="ajarvis__algorithm_8cpp_html_ae66f6b31b5ad750f1fe042a706a4e3d4"><div class="ttname"><a href="../../d4/d8d/jarvis__algorithm_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a></div><div class="ttdeci">int main()</div><div class="ttdef"><b>Definition</b> <a href="#l00176">jarvis_algorithm.cpp:176</a></div></div>
<div class="ttc" id="anamespacegeometry_html"><div class="ttname"><a href="../../d5/d5f/namespacegeometry.html">geometry</a></div><div class="ttdoc">for std::swap</div><div class="ttdef"><b>Definition</b> <a href="../../de/d89/graham__scan__functions_8hpp_source.html#l00052">graham_scan_functions.hpp:52</a></div></div>
<div class="ttc" id="anamespacejarvis_html"><div class="ttname"><a href="../../d5/da7/namespacejarvis.html">jarvis</a></div><div class="ttdoc">Functions for Jarviss algorithm.</div></div>
<div class="ttc" id="astructgeometry_1_1jarvis_1_1_point_html"><div class="ttname"><a href="../../d9/d5a/structgeometry_1_1jarvis_1_1_point.html">geometry::jarvis::Point</a></div><div class="ttdef"><b>Definition</b> <a href="#l00047">jarvis_algorithm.cpp:47</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_e3380d2178455503f266746fb14246a5.html">geometry</a></li><li class="navelem"><a class="el" href="../../d4/d8d/jarvis__algorithm_8cpp.html">jarvis_algorithm.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>