Skip to content

Instantly share code, notes, and snippets.

@WetHat
Last active April 15, 2024 14:22
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save WetHat/d69ce0e94e337538e5b4c848501522aa to your computer and use it in GitHub Desktop.
Save WetHat/d69ce0e94e337538e5b4c848501522aa to your computer and use it in GitHub Desktop.
2d Convex Hull from a Point Cloud with Python
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"toc-hr-collapsed": false
},
"source": [
"# Computing 2D Convex Hulls with Python\n",
"\n",
"A [convex hull](https://medium.com/@pascal.sommer.ch/a-gentle-introduction-to-the-convex-hull-problem-62dfcabee90c)\n",
"is a polygon which is the smallest convex polygon on the 2D plane, that encloses all of the points in a point cloud $P_n = \\left\\{ \\vec{p_i} \\;\\big|\\; i=1 \\dots n \\wedge \\vec{p_i} \\in \\mathbb{R}^2 \\right\\}$. As described in [Introduction to Convex Hull Applications](http://www.montefiore.ulg.ac.be/~briquet/algo3-chull-20070206.pdf), convex hulls are used in a variety of application domains.\n",
"\n",
"![Convex Hull](https://ds055uzetaobb.cloudfront.net/uploads/tantSbEgDe-ch2.gif)\n",
"\n",
"This notebook explores:\n",
"* an implementation of the [QuickHull](https://en.wikipedia.org/wiki/Quickhull) subdivision algorithm for computing convex hulls of point clouds\n",
"* a marching algorithm to add points to existing convex hulls one by one.\n",
"\n",
"**Note**: For production code it is recommended to use\n",
"[scipy.spatial.ConvexHull](https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.ConvexHull.html) \n",
"from the [scipy](https://www.scipy.org/) package."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## About this Jupyter Notebook\n",
"\n",
"This _Gist_ was created using:\n",
"* the [Jupyter Lab](https://jupyter.org/) computational notebook.\n",
"* the _python3_ kernel\n",
"\n",
"Though Python is not best language to implement computational intensive algorithms, it can\n",
"_describe_ algorithms in a simple, conceptual way. We also take advantage of the Python\n",
"package ecosystem and make extensive use of:\n",
"* [matplotlib](https://matplotlib.org/) - to illustrate bits and pieces of the algorithm.\n",
"* [numpy](https://numpy.org/) - for vector algebra.\n",
"* [typing](https://docs.python.org/3/library/typing.html) - to add type hints to methods as function\n",
" in order to convey semantics and usage."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Some Utitlities and Environment Setup\n",
"\n",
"In this section we create a few general purpose utilities, so that we do not\n",
"need to clutter the algorithms with distracting details."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import collections as cl\n",
"import numpy as np\n",
"import numpy.linalg as npl\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"import functools\n",
"from typing import Callable, NewType, Iterable, Tuple\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Measuring performance"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def callcounted(fnc : Callable) -> Callable:\n",
" '''Decorator to count the number of method calls.'''\n",
" @functools.wraps(fnc)\n",
" def _callcounter (self,*args,**kwargs):\n",
" _callcounter.callcount +=1\n",
" return fnc(self,*args,**kwargs)\n",
" _callcounter.callcount = 0\n",
" return _callcounter"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Drawing tools"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def draw_polygon(ax,points: Iterable[np.ndarray]):\n",
" '''Draw a polygon with direction arrows.'''\n",
" s = points[0]\n",
" points.append(s) # close the loop\n",
" for p in points[1:]:\n",
" ax.arrow(s[0],s[1],p[0]-s[0],p[1]-s[1],\n",
" length_includes_head=True,head_width= 0.05, head_length=0.1, capstyle='projecting')\n",
" s = p\n",
" ax.scatter([pt[0] for pt in points],[pt[1] for pt in points])"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def make_coordinate_system(subplots: int = 1, dx = (-10,130), dy = (-10,110)):\n",
" '''Set up a figure in a canonocal way.'''\n",
" plts = plt.subplots(1,subplots,sharey=True)\n",
"\n",
" if subplots == 1:\n",
" axs = (plts[1],)\n",
" else:\n",
" axs = plts[1]\n",
" for ax in axs:\n",
" ax.grid(True)\n",
" ax.set_aspect('equal')\n",
" ax.set_xlabel('x')\n",
" ax.set_xlim(dx)\n",
" ax.set_ylim(dy)\n",
"\n",
" axs[0].set_ylabel('y')\n",
" return plts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Points on the 2-d Plane\n",
"\n",
"To represent 2-dimensional points in a point cloud we are going to use numpy arrays.\n",
"This way we do not have to take care of the details of vector algebra.\n",
"\n",
"With this the point $\\vec{p} = \\begin{bmatrix} 1 \\\\ 2 \\end{bmatrix} $\n",
"is represented as:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"p = np.array([1,2])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Drawing this point on the 2d plane"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 200x200 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig,ax = make_coordinate_system(1,dx = (0,3), dy = (0,3))\n",
"fig.set_size_inches(2, 2, forward=True)\n",
"ax.scatter([p[0]], [p[1]])\n",
"ax.set_xticks(np.linspace(0,3,num=7))\n",
"ax.set_yticks(np.linspace(0,3,num=7))\n",
"ax.set_title('2D-Plane')\n",
"ax.annotate('$\\\\vec{p}$', xy=p, xytext=(15,1), ha='right', textcoords='offset points')\n",
"None"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2-D Polygons\n",
"\n",
"As basis for representing a convex hull we start with a\n",
"[polygon](https://en.wikipedia.org/wiki/Polygon).\n",
"A polygon is a plane figure that is described by a finite number of straight line segments connected to form a closed polygonal chain or polygonal loop. We note that a convex hull\n",
"is a _special_ polygon where all edges have convex angles. For convenience we orient the edges (straight line segments) of a polygon so that they loop counter-clockwise around the interior of the polygon. The orientation\n",
"conventions helps us to easily classify point as inside (to the left of all edges of a convex polygon)\n",
"or outside (to the right of all edges of a convex polygon)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## PolygonEdge Class\n",
"\n",
"The edges of a polygon are oriented straight line segments bounded by a start and end vertex.\n",
"\n",
"In the convext of convex hull calculations we will mainly focus on edges $e(\\vec{a},\\vec{b})$ \n",
"defined on points from the point cloud $P_n$:\n",
"\n",
"$$\n",
"e(\\vec{a},\\vec{b}) = \\left\\{ \\vec{a},\\vec{b} \\;\\big|\\;\n",
"\\vec{a},\\vec{b} \\in P_n \\wedge \\vec{a} \\neq \\vec{b} \\right\\}\n",
"$$\n",
" \n",
"Points have signed distances when measured against an the (infinite) straight line on which the\n",
"oriented edge is defined. Points to the right of an oriented edge have positive distances,\n",
"points to the left have negative distances."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"class PolygonEdge:\n",
" '''A edge which is part of a closed, counter-clockwise loop of edges (polygon).'''\n",
" def __init__(self,start_pt: np.ndarray, end_pt: np.ndarray,\n",
" next : 'PolygonEdge' = None, previous: 'PolygonEdge' = None):\n",
" self.start = start_pt\n",
" delta = end_pt-start_pt\n",
" # difference vector to end point.\n",
" # end = start + delta\n",
" self.delta = delta\n",
" norm = npl.norm(delta)\n",
" if norm > 0:\n",
" self.direction = delta / norm\n",
" else:\n",
" self.direction = None\n",
"\n",
" self.next = next\n",
" if next:\n",
" next.previous = self\n",
"\n",
" self.previous = previous\n",
" if previous:\n",
" previous.next = self\n",
"\n",
" @property\n",
" def end(self):\n",
" '''Get the end vertex of the edge.'''\n",
" if self.next:\n",
" # next edge's start\n",
" return self.next.start\n",
" else:\n",
" # compute it if edge is not part of a polygon\n",
" return self.start + self.delta\n",
"\n",
" def draw(self, ax: matplotlib.axes.Axes, head_size : float = 0.1,\n",
" color = 'black') -> None:\n",
" '''Draw edge.'''\n",
" end = self.end\n",
" ax.arrow(self.start[0],self.start[1],self.delta[0],self.delta[1],\n",
" length_includes_head=True,head_width = head_size / 2, head_length=head_size,\n",
" color=color)\n",
"\n",
" @callcounted\n",
" def distance(self,pt: np.ndarray) -> float:\n",
" ''' Signed distance of a point to the (unbounded) straight line\n",
" of this edge.\n",
" + x\n",
" /│\n",
" / │ d = (x-s) x dir\n",
" / │\n",
" / │\n",
" +----.--->--+ <- edge\n",
" s x' e\n",
" Points to the right have positive distances, points to the left\n",
" have negative distances.\n",
" '''\n",
" return np.cross(pt-self.start,self.direction)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Creating a sample polygon edge named $edge$ bounded by the two vertices $\\vec{p_1}$ and $\\vec{p_2}$."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"p1 = np.array([1,1])\n",
"p2 = np.array([2,3])\n",
"edge = PolygonEdge(p1,p2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Drawing this polygon edge with explanatory annotations."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig,ax = make_coordinate_system(1,dx=(0.5,2.5),dy=(0.5,3.5))\n",
"edge.draw(ax,0.3)\n",
"ax.scatter([p1[0],p2[0]],[p1[1],p2[1]])\n",
"ax.annotate('left',(1,2.5))\n",
"ax.annotate('right',(2,1.5))\n",
"ax.annotate('start vertex',p1, xytext = (30,0),\n",
" arrowprops=dict( fc = 'None', ec='black', shrink=1.5),\n",
" textcoords ='offset points')\n",
"ax.annotate('end vertex',p2, xytext = (-85,0),\n",
" arrowprops=dict( fc = 'None', ec='black', shrink=1.5),\n",
" textcoords ='offset points')\n",
"ax.set_title('Polygon Edge')\n",
"None"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Polygon Class\n",
"\n",
"To work with a closed loop of oriented polygon edges we define a class\n",
"representing a set of connected edges.\n",
"\n",
"$$\n",
"PG_m(P_n) = \\left\\{ e_j(\\vec{a_j},\\vec{b_j}) \\;\\big|\\;\n",
"j = 1 \\dots m\n",
"\\wedge\n",
"\\vec{b_{j}} = \\vec{a_{j+1}}\n",
"\\wedge\n",
"\\vec{b_{m}} = \\vec{a_{1}}\n",
"\\right\\}\n",
"$$\n",
"\n",
"where $PG_m(P_n)$ represents a polygon with $m$ edges defined on points of the point cloud $P_n$.\n",
"\n",
"We will use this class to:\n",
"* create a polygon from an ordered set of points.\n",
"* Iterate over the vertices or edges of the polygon\n",
"* draw the polygon"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"class Polygon:\n",
" def __init__(self, points: Iterable[np.ndarray] = None):\n",
" '''Construct a polygon from an ordered lis of points.'''\n",
" if not points: return\n",
"\n",
" point_itr = iter(points)\n",
"\n",
" start_pt = next(point_itr)\n",
" end_pt = next(point_itr)\n",
" loop_start = PolygonEdge(start_pt, end_pt)\n",
" start_pt = end_pt\n",
" previous = loop_start\n",
" # process remaining points\n",
" for p in point_itr:\n",
" previous = PolygonEdge(start_pt, p, next = loop_start, previous = previous)\n",
" start_pt = p\n",
"\n",
" PolygonEdge(start_pt,loop_start.start,next = loop_start,previous=previous)\n",
" self.loop_start = loop_start\n",
"\n",
" @property\n",
" def vertices(self) -> Iterable[np.ndarray]:\n",
" '''Generator to iterate over all vertices of the polygon.'''\n",
" for edge in self.edges:\n",
" yield edge.start\n",
"\n",
" @property\n",
" def edges(self) -> Iterable[PolygonEdge]:\n",
" '''Generator to iterate over all edges of the polygon.'''\n",
" edge = self.loop_start\n",
" loop_end = edge.previous\n",
" while not edge is loop_end:\n",
" yield edge\n",
" edge=edge.next\n",
" yield loop_end\n",
"\n",
" def draw(self,ax: matplotlib.axes.Axes, head_size : float = 0.1) -> None:\n",
" '''Draw the polygon to a subplot.'''\n",
" for edge in self.edges:\n",
" edge.draw(ax,head_size)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can now create a polygon from a counter clockwise sequence of vertices like so:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"polygon = Polygon([np.array([1,1]), np.array([2.5,1.5]), np.array([3,2]),\n",
" np.array([2,2]), np.array([1.75,1.6]), np.array([1.25,1.8])])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This polygon can easily be drawn using its `draw` method:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig,ax = make_coordinate_system(1,dx=(0.5,3.5),dy=(0.75,2.2))\n",
"\n",
"ax.scatter([p[0] for p in polygon.vertices],[p[1] for p in polygon.vertices])\n",
"ax.annotate('inside',(2,1.6))\n",
"ax.annotate('outside',(2,1.2))\n",
"ax.set_title('Counter-Clockwise Polygon')\n",
"polygon.draw(ax)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 2D Convex Hulls from a Point Cloud\n",
"A [convex hull](https://medium.com/@pascal.sommer.ch/a-gentle-introduction-to-the-convex-hull-problem-62dfcabee90c)\n",
"is the smallest convex polygon, that encloses all of the points in a point cloud.\n",
"We build a convex hull from an unordered point cloud by using a subdivision technique known as [QuickHull](https://en.wikipedia.org/wiki/Quickhull). The Quickhull performance characteristic is\n",
"known to be $O(n \\cdot log(n))$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## OuterSector Class\n",
"\n",
"Computation of a convex hull requires some means to determine whether points are outside or inside of a\n",
"convex hull. We already have a way to determine if point is left or right to the (unbounded) straight\n",
"line of a edge by calculating its signed distance. With this we can subdivide a point cloud using\n",
"the signed distance method of edges.\n",
"\n",
"We define a class which describes the subset of points $OS(e)$ with $OS(e) \\subset P_n$ where\n",
"all points of $OS(e)$ are to the right of the polygon edge $e(\\vec{a},\\vec{b},)$:\n",
"\n",
"$$\n",
"OS(e) = \\left\\{ \\vec{p} \\;\\big|\\;\n",
"\\vec{p} \\in P_n\n",
"\\wedge\n",
"dist(e,\\vec{p}) > 0\n",
"\\right\\}\n",
"$$\n",
"\n",
"where $e$ is a shorthand notation for the edge $e(\\vec{a},\\vec{b})$.\n",
"\n",
"With this, a convex hull $C_m(P_n)$ of the point cloud $P_n$ can be described as a\n",
"polygon $PG_m(P_n)$ where there are no points of $P_n$ outside (to the _right_) of any of its edges:\n",
"\n",
"$$\n",
"C_m(P_n) = PG_m(P_n) \\Longleftrightarrow \\forall e \\in PG_m(P_n) \\;\\big|\\; OS(e) = \\emptyset\n",
"$$\n",
"\n",
"We define a utility class (`OuterSector`) which represents the set $OS(e)$\n",
"and use this class to iteratively build a polygon until $OS(e) = \\emptyset$\n",
"for all edges of that polygon.\n",
"\n",
"The `OuterSector` implementation shall be able to:\n",
"* classify points in a point cloud as _right_ or _left_ relative to an oriented section line\n",
" (represented by a `PolygonEdge` instance).\n",
"* compute the outermost point (apogee) for _right_ (outside) points. An apogee, by definition,\n",
" is a point on the convex hull.\n",
"* subdivide its defining edge."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"class OuterSector:\n",
" def __init__(self,section_line: PolygonEdge):\n",
" '''Use a polygon edge to define a sector.'''\n",
" self.section_line = section_line\n",
" self.outer_points = cl.deque()\n",
" self.apogee = None\n",
" self._peak_distance = -1\n",
"\n",
" def add_points(self, points: Iterable[np.ndarray]) -> Iterable[np.ndarray]:\n",
" '''Add points to the sector. Outer points are recorded, Inner points are\n",
" returned as a point collection.'''\n",
" inner_points = cl.deque()\n",
" point_itr = iter(points)\n",
" for p in point_itr:\n",
" dist = self.section_line.distance(p)\n",
" if dist > 0:\n",
" if dist > self._peak_distance:\n",
" if not self.apogee is None:\n",
" # put ols apogee back into the pool\n",
" self.outer_points.append(self.apogee)\n",
" self.apogee = p\n",
" self._peak_distance = dist\n",
" else:\n",
" self.outer_points.append(p)\n",
" else:\n",
" # point on the section line or inside\n",
" # (left to the section line)\n",
" inner_points.append(p)\n",
" return inner_points\n",
"\n",
" def subdivide(self) -> Tuple['OuterSector','OuterSector']:\n",
" '''Subdivide into 2 section lines joined at the apogee'''\n",
" if not self.apogee is None:\n",
" section_line1 = PolygonEdge(self.section_line.start,self.apogee,\n",
" previous = self.section_line.previous)\n",
" sector1 = OuterSector(section_line1)\n",
" remaining_points = sector1.add_points(self.outer_points)\n",
" section_line2 = PolygonEdge(self.apogee,self.section_line.end,\n",
" next = self.section_line.next,\n",
" previous = section_line1)\n",
"\n",
" sector2 = OuterSector(section_line2)\n",
" sector2.add_points(remaining_points)\n",
" return (sector1, sector2)\n",
"\n",
" def draw(self,ax: matplotlib.axes.Axes, head_size : float = 0.1) -> None:\n",
" '''Draw the sector'''\n",
" ax.scatter([p[0] for p in self.outer_points],[p[1] for p in self.outer_points], color='blue')\n",
" # draw start and endpoints\n",
" start = self.section_line.start\n",
" end = self.section_line.end\n",
" ax.scatter([start[0],end[0]],[start[1],end[1]],color='blue')\n",
" if not self.apogee is None:\n",
" ax.scatter([self.apogee[0]],[self.apogee[1]], marker = 'X', s=120, c = 'red')\n",
" self.section_line.draw(ax,head_size)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's experiment with this class on a randomly created point cloud."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"n=33 # point cloud size\n",
"point_cloud=[np.random.random(2)*100 for _ in range(n)] # n random points"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next we create an edge with can serve as a section line for now (thoug its vertices are not from the point\n",
"cloud $P_n$). We pick start and end vertex so that the\n",
"edge somewhat bisects the point cloud."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"section_line = PolygonEdge(np.array([0,0]),np.array([100,100]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally we can construct a sector from that section line and the sample point cloud."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"sector = OuterSector(section_line)\n",
"inner_points = sector.add_points(point_cloud)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the figure below we see how the `OuterSector` instance subdivided the point cloud.\n",
"\n",
"Points to the right of the section line are represented as blue dots. These points are _recorded_\n",
"by the `OuterSector` instance. They are also are used to compute the _apogee_.\n",
"\n",
"Green dots represent left points which are **not** recorded in this instance `OuterSector`.\n",
"\n",
"We note that:\n",
"* the apogee is also a vertex on the convex hull (if it exists).\n",
"* if an _OuterSector_ instance contains no _right_ points, it is an edge of the convex hull,\n",
" provided its end vertices are also vertices of the convex hull polygon. "
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig,ax = make_coordinate_system()\n",
"\n",
"ax.scatter([p[0] for p in inner_points],[p[1] for p in inner_points], color='green')\n",
"\n",
"sector.draw(ax,10)\n",
"\n",
"ax.annotate('apogee',sector.apogee,\n",
" xytext = (30,0),\n",
" arrowprops=dict( fc = 'None', ec='black', shrink=1.5),\n",
" textcoords ='offset points')\n",
"ax.annotate('left (inside)',(0,105))\n",
"ax.annotate('right (outside)',(80,-5))\n",
"ax.set_title(\"Subdivided Point Cloud\")\n",
"\n",
"ax.annotate('section line', (70,70),\n",
" xytext = (30,0),\n",
" arrowprops=dict( fc = 'None', ec='black', shrink=1.5),\n",
" textcoords ='offset points')\n",
"None"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using this we can demonstrate the effect of a sector subdivision where this `OuterSector`\n",
"instance is subdivided at its apogee. For comparison we create a new sector with the same\n",
"specs as before which we then subdivide."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"sector2 = OuterSector(PolygonEdge(np.array([0,0]),np.array([100,100])))\n",
"inner_points2 = sector2.add_points(point_cloud)\n",
"subsectors = sector2.subdivide()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To illustrate the subdivision effect we draw the original sector and the subdivided sector\n",
"side-by-side:"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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b6pVq5av237llVcoV64cU6ZMYffu3cycOZMbN27w3Xffmcr069eP77//nq5du9KoUSM2bdpE69atH7ntLl260KNHD/bu3Wv6IANw/vx5du/ebXbWK72YmBieffZZ7t+/b/pbmzNnDm5ubhnKLl68mJ49e9KqVSumTZvGnTt3+Prrr2nSpAkHDhwwfaj87bff6NixI0888QRTpkzh2rVr9O7dm8DAwEfuy44dO7hx4wbDhw+nSJHM/wX26NGDBQsWsHbtWho0aPDIbRo1bdqUYcOGMXPmTP73v/9RtWpVANP37O4f5Kw9yMn76sMPP+SDDz7glVdeoV+/fly9epUvvviCpk2bmrVJERERtGnTBj8/P4YPH46vry/Hjx9n7dq1DB8+nIEDBxIdHU1ERASLFy82ew2lFC+//DKbN2+mb9++1KxZk19//ZXRo0dz6dIlPvvsM7PymzZtYtmyZQwdOpSSJUtKB5i8UqJQio+PV4Bq167dQ8u9/PLLClCJiYlKKaV69uypgoODM5QbP368Sv92cnd3Vz179sxQtm/fvsrPz0/FxcWZLX/11VeVp6enunPnjlJKqc2bNytAVahQwbTsYe7cuaOqVKmiABUcHKx69eql5s+fr2JjYzOUbd68uXrqqafUvXv3TMv0er1q1KiRqlSpkmnZuHHjFKBWrlyZYRt6vV4ppdTevXsVoBYsWGD2fHJysipdurSqVq2aunv3rmn52rVrFaDGjRtnWtazZ08FqHffffeR+yns12+//aZ0Op3S6XSqYcOGasyYMerXX39VycnJZuXOnj2b6XtKKaUANX78eNNj49/eyy+/bFZu8ODBClCHDh1SSil18OBBBajBgweblevatWuGbS5YsEAB6uzZs0oppRISEpSLi4t66623zNadPn260mg06vz586ZlwcHBZn/3I0aMUIDas2ePadmVK1eUp6en2WvcvHlTeXl5qf79+5u9RkxMjPL09DRbXrNmTeXn56fi4+NNy3777TfT3/7DhIWFKUCtWrUqyzLXr19XgAoNDTUtS3+Mstrf5cuXK0Bt3rzZrFxO9i+n7UF231fnzp1TOp1Offjhh2bLjxw5oooUKWJafv/+fVW+fHkVHBysbty4YVbW2O4ppdSQIUMytPtKKbV69WoFqMmTJ5st79Spk9JoNOrUqVOmZYDSarXq6NGj2dpX8Why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RDB+/HhefvllGjRoQLFixThz5gzffvstSUlJZmNQzZo1iyZNmvDUU0/Rv39/KlSoQGxsLLt27eLixYscOnQIMITfn376ic6dO9OnTx9q167N9evX+fnnn5k9ezY1atSgYsWKeHl5MXv2bIoXL467uzv169enfPnyTJs2jd69e9OsWTNee+0103An5cqVY+TIkbnaT2G/3nzzTe7cuUOHDh14/PHHSU5OZufOnSxdupRy5crRu3dvU9l+/foxdepU+vXrR506ddi2bdtDZ085e/YsL7/8Mi+88AK7du0yDWtSo0YNAGrWrMlrr73GV199RUJCAo0aNSIyMpJTp05lu/7GMdXefvtt04e0RxkzZgyLFy/mhRdeYPjw4abhToKDg80+IHp4ePD111/TvXt3atWqxauvvkqpUqX4999/WbduHY0bNzYFhSlTptC6dWuaNGlCnz59uH79Ol988QVPPvkkt27demSd3n33XQ4cOMC0adPYtWsXHTt2xM3NjR07dvD9999TtWpVFi1aZLZOv379eOONN+jYsSMtW7bk0KFD/Prrr5QsWdKsXM2aNdHpdEybNo2EhARcXFx47rnnKF26dLb3L6ey+76qWLEikydPZuzYsZw7d4727dtTvHhxzp49y6pVqxgwYABvv/02Wq2Wr7/+mrZt21KzZk169+6Nn58fJ06c4OjRo/z666+AoY0HQ4ecVq1aodPpePXVV2nbti3PPvss7733HufOnaNGjRr89ttvrFmzhhEjRmS4z1PkM6v0xRU25fDhw+q1115Tfn5+ysnJSfn6+qrXXntNHTlyJNPyv/32m6pWrZpydnZWVapUUd9//32mw52cOHFCNW3aVLm5uSnAbEiA2NhYNWTIEBUUFGR6zebNm6s5c+aYyhiHO1m+fHm29uPMmTNq3LhxqkGDBqp06dKqSJEiqlSpUqp169Zq06ZNGcqfPn1a9ejRQ/n6+ionJycVEBCg2rRpo3766SezcteuXVNDhw5VAQEBytnZWQUGBqqePXuaDdeyZs0a9cQTT6giRYpkGKZi6dKl6umnn1YuLi7K29tbdevWTV28eNHsNXr27Knc3d2ztZ/Cfm3YsEH16dNHPf7446pYsWLK2dlZPfbYY+rNN9/MMCzPnTt3VN++fZWnp6cqXry4euWVV9SVK1eyHO7k2LFjqlOnTqp48eKqRIkS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OnfuDMCXX375INQZZ1/S6w1n5ozhbs0aw2O93vA4KipDuLt06RITJkygXLlydOrUiXv37jFr1iwASpQoYZF9WrRoEe7u7uzZs4fp06czadIkIiIiTM937tyZK1eusGHDBvbt20etWrVo3rw5169fx9PTk5o1a5rCz5EjR9BoNBw4cIBbt24BhiD0MLdv32bUqFH89ddfREZGotVq6dChA3rjcfvP6NGjeeuttzhw4AANGzakbdu2XLt2DTAcx5deeom6dety6NAhvv76a+bPn8/kyZNN648aNYo//viDn3/+mYiICLZv387+/fvNXmPo0KHs2rWLH3/8kcOHD9O5c2deeOEFTp48CcDp06d54YUX6NixI4cPH2bp0qXs2LGDoUOH5uygqxzq0aOH2rp1a05Xs2kJCQkKUAkJCblaPzk5Wa1evVolJyfnc80KB+Pxc3NzU4A6c+aMVetz/75SmzcrFR5u+H7/vu1v397fg3n9G7QGaTesLykpSa1evVodOnRInTx50trVyZOUlBQFKECpq1eVeuIJpXQ6pQyd8g1fGo1h2Zgxhu8ajfnzOp3SV62qIleuVB07dlQ6nU65u7urgQMHqoMHDyqllDp16pQCVGRkZIG/B5s1a6aaNGlitqxu3brqnXfeUUoptX37duXh4aHu3btnVqZixYrqm2++UUopNWrUKNW6dWullFJhYWGqS5cuqkaNGmrDhg1KKaUqVKiQo7/Dq1evKkAdOXJEKaXU2bNnFaCmTp1qKpOSkqICAwPVtGnTlFJK/e9//1NVqlRRer3eVGbWrFmqWLFiKjU1VSUmJionJye1fPly0/Px8fGqaNGiavjw4Uoppc6fP690Op26dOmSWX2aN2+uxo4dq5RSqm/fvmrAgAFmz2/fvl1ptVp19+7dbO2fUkrleIDihIQEWrRoQXBwML1796Znz54EpD/FIUQOhIeH4+XlBdjG3K86HRTUKAMys4UQ+UMpZTpT5+LiYtdn6gA++ugjAKZOnQoDB8KxYxkLKWU4Qzd9uuEekTQDb8YD36Wm8vXx45wIDeWJJ54gLCyM7t274+npaSp3/fp1ALy9vQtyd0yqV69u9tjPz48rV64AcOjQIW7duoWPj49Zmbt375oulzZr1oz58+eTmprK1q1bef755/H19WXLli1Ur16dM2fOPPT1T548ybhx49izZw9x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",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig,ax = make_coordinate_system(2, dx=(-10,130), dy=(-10,110)) # make 2 subplots\n",
"\n",
"# draw the original sector\n",
"sector.draw(ax[0],10)\n",
"ax[0].set_title('Outer Sector')\n",
"ax[0].annotate('apogee',sector.apogee,\n",
" xytext = (20,10),\n",
" arrowprops=dict( fc = 'None', ec='black', shrink=1.5),\n",
" textcoords ='offset points')\n",
"\n",
"# draw the subdivision result\n",
"subsectors[0].draw(ax[1],10)\n",
"subsectors[1].draw(ax[1],10)\n",
"\n",
"if not subsectors[0].apogee is None:\n",
" ax[1].annotate('new apogee',subsectors[0].apogee,\n",
" xytext = (30,-10),\n",
" arrowprops=dict( fc = 'None', ec='black', shrink=1.5),\n",
" textcoords ='offset points')\n",
"if not subsectors[1].apogee is None:\n",
" ax[1].annotate('new apogee',subsectors[1].apogee,\n",
" xytext = (30,0),\n",
" arrowprops=dict( fc = 'None', ec='black', shrink=1.5),\n",
" textcoords ='offset points')\n",
"# draw the original section line\n",
"sector.section_line.draw(ax[1],10,color='lightgray')\n",
"ax[1].set_title('Subdivided Outer Sector')\n",
"None"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We see that the subdivision created 2 new edges which _enclose_ more points of the point cloud.\n",
"\n",
"We also note that if we create an intial set of `OuterSector`\n",
"instances so that:\n",
"* the section lines represent a convex, counter-clockwise polygon\n",
"* the end-points of all section lines are points of the convex\n",
"\n",
"then we can then keep subdividing the sectors until all vertices of the convex hull are found.\n",
"Since there is only a finite number of vertices in the convex hull, therefore\n",
"the subdivision process will eventually end.\n",
"\n",
"Once subdivision has ended the underlying polygon is the convex hull."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Finding an Intial Convex Polygon\n",
"\n",
"For the iterative sector subdivision to yield the convex hull we must seed it with a convex polygon\n",
"whose end vertices are already vertices of the convex hull. Fortunately, we can compute a good initial\n",
"section line by searching for two distinct points which the smallest/highest x or y coordinates."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"def compute_section_line(point_cloud : Iterable[np.array]) -> PolygonEdge:\n",
" '''Find a good section line for a point clpud.'''\n",
" point_itr = iter(point_cloud)\n",
" x_min_pt = x_max_pt = y_min_pt = y_max_pt = next(point_itr)\n",
" x_min = x_max = x_min_pt[0]\n",
" y_min = y_max = y_min_pt[1]\n",
"\n",
" for p in point_itr:\n",
" x,y = p\n",
" if x < x_min:\n",
" x_min_pt = p\n",
" x_min = x\n",
" elif x > x_max:\n",
" x_max_pt = p\n",
" x_max = x\n",
"\n",
" if y < y_min:\n",
" y_min_pt = p\n",
" y_min = y\n",
" elif y > y_max:\n",
" y_max_pt = p\n",
" y_max = y\n",
"\n",
" if (x_max - x_min) > (y_max - y_min):\n",
" return PolygonEdge(x_min_pt,x_max_pt)\n",
" else:\n",
" return PolygonEdge(y_min_pt,y_max_pt)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's visualize this with the sample point cloud we have been using so far:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"good_section_line = compute_section_line(point_cloud)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"this looks like so:"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x1db9897d850>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig,ax = make_coordinate_system()\n",
"\n",
"textoffset = np.array([good_section_line.direction[1],-good_section_line.direction[0]])*30\n",
"ax.annotate('section line', (good_section_line.start + good_section_line.end)/2,\n",
" xytext = textoffset,\n",
" arrowprops=dict( fc = 'None', ec='black', shrink=1.5),\n",
" textcoords ='offset points')\n",
"ax.annotate('convex hull vertex',good_section_line.start,\n",
" xytext = -textoffset,\n",
" arrowprops=dict( fc = 'None', ec='black', shrink=1.5),\n",
" textcoords ='offset points')\n",
"ax.annotate('convex hull vertex',good_section_line.end,\n",
" xytext = textoffset,\n",
" arrowprops=dict( fc = 'None', ec='black', shrink=1.5),\n",
" textcoords ='offset points')\n",
"good_section_line.draw(ax,10)\n",
"ax.scatter([p[0] for p in point_cloud],[p[1] for p in point_cloud])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Assembling the QuickHull Algorithm\n",
"\n",
"Finally we have all the pieces to (slowly) walk through the [QuickHull](https://en.wikipedia.org/wiki/Quickhull) subdivision algorithm.\n",
"\n",
"Using the sample point cloud from above and the `good_section_line` we have already calculated we\n",
"define an initial convex polygon by adding a _reverse_ edge to create a _closed_ edge loop. This\n",
"produces a degenerate but convex polygon."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"seed_polygon = Polygon([good_section_line.start, good_section_line.end, good_section_line.start])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This seed polygon looks like so:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig,ax = make_coordinate_system()\n",
"\n",
"ax.scatter([p[0] for p in point_cloud],[p[1] for p in point_cloud])\n",
"textoffset = np.array([section_line.direction[1],-section_line.direction[0]])*30\n",
"seed_polygon.draw(ax,10)\n",
"ax.annotate('Seed Polygon', (seed_polygon.loop_start.start + seed_polygon.loop_start.end)/2,\n",
" xytext = textoffset,\n",
" arrowprops=dict( fc = 'None', ec='black', shrink=1.5),\n",
" textcoords ='offset points')\n",
"ax.annotate('convex hull vertex',seed_polygon.loop_start.start,\n",
" xytext = -textoffset,\n",
" arrowprops=dict( fc = 'None', ec='black', shrink=1.5),\n",
" textcoords ='offset points')\n",
"ax.annotate('convex hull vertex',seed_polygon.loop_start.end,\n",
" xytext = textoffset,\n",
" arrowprops=dict( fc = 'None', ec='black', shrink=1.5),\n",
" textcoords ='offset points')\n",
"ax.set_title(\"The Degenerate Seed Polygon\")\n",
"None"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To prepare for iterative subdivision of the convex seed polygon we set up a stack of\n",
"`OuterSector` instances for keeping track of the sectors we still need to work on."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"subdivision_stack = cl.deque()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we create a sector to the first edge of the seed polygon and push it onto the stack. "
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"sector1 = OuterSector(seed_polygon.loop_start)\n",
"remaining_points = sector1.add_points(point_cloud)\n",
"subdivision_stack.append(sector1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With the points which were _rejected_ by the first sector's `add_points` and remembered in `remaining_points`\n",
"we construct the second sector and push it onto the stack. `remaining_points` contains the point which\n",
"are left (inside) the first sector. This set of points is ideally significantly smaller than the original\n",
"point cloud."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"sector2 = OuterSector(seed_polygon.loop_start.next)\n",
"sector2.add_points(remaining_points)\n",
"subdivision_stack.append(sector2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now the subdivision process can start. Ideally we do this until the stack is empty.\n",
"However, for illustration purposes we do this only $m$ times."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 1200x200 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m=3\n",
"fig,ax = make_coordinate_system(m+1)\n",
"fig.set_size_inches(12, 2, forward=True)\n",
"\n",
"ax[0].scatter([p[0] for p in point_cloud],[p[1] for p in point_cloud])\n",
"ax[0].set_title('Seed Polygon')\n",
"seed_polygon.draw(ax[0],15)\n",
"\n",
"subdivision_count = 1\n",
"while len(subdivision_stack)> 0 and subdivision_count < (m+1):\n",
" sector = subdivision_stack.pop()\n",
" if sector.apogee is None:\n",
" seed_polygon.loop_start = sector.section_line\n",
" else:\n",
" sector1,sector2 = sector.subdivide()\n",
" seed_polygon.loop_start = sector1.section_line\n",
"\n",
" subdivision_stack.appendleft(sector1)\n",
" subdivision_stack.appendleft(sector2)\n",
"\n",
" ax[subdivision_count].scatter([p[0] for p in point_cloud],[p[1] for p in point_cloud])\n",
" ax[subdivision_count].set_title( f'Subdivision: %d' % subdivision_count)\n",
"\n",
" seed_polygon.draw(ax[subdivision_count],15)\n",
" subdivision_count += 1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ConvexHull Class\n",
"\n",
"Finally we can wrap the bits and pieces of the [QuickHull](https://en.wikipedia.org/wiki/Quickhull)\n",
"algorithm into the `ConvexHull` class.\n",
"\n",
"This class now just needs to _orchestrate_ the steps developed earlier."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"class ConvexHull (Polygon):\n",
"\n",
" def __init__(self):\n",
" '''Construct an empty polygon'''\n",
" self.loop_start = None\n",
"\n",
" def add_points(self, points : Iterable[np.ndarray]) -> None:\n",
" '''Expand the concex hull based on the given points.'''\n",
" # if we already have a convex hull add its\n",
" # vertices to the given point cloud\n",
" if self.loop_start:\n",
" point_cloud = cl.deque(self.vertices)\n",
" point_cloud.extend(points)\n",
" else:\n",
" point_cloud = points\n",
"\n",
" # Create a processing stack for sectors to subdivide.\n",
" subdivision_stack = cl.deque()\n",
"\n",
" # Find a good initial section line.\n",
" section_line = compute_section_line(point_cloud)\n",
" self.loop_start = section_line\n",
"\n",
" # create a closed, degenerate convex polygon\n",
" reverse_section_line = PolygonEdge(section_line.end,section_line.start,\n",
" next = section_line, previous = section_line)\n",
"\n",
" # Enroll sectors of the seed polygon for processing\n",
" for edge in self.edges:\n",
" sector = OuterSector(edge)\n",
" point_cloud = sector.add_points(point_cloud)\n",
" subdivision_stack.append(sector)\n",
"\n",
" # run the subdivision process until we have a convex hull\n",
" while len(subdivision_stack) > 0:\n",
" sector = subdivision_stack.pop()\n",
" if sector.apogee is None:\n",
" self.loop_start = sector.section_line\n",
" else:\n",
" sector1,sector2 = sector.subdivide()\n",
" subdivision_stack.appendleft(sector1)\n",
" subdivision_stack.appendleft(sector2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For experimentation we set up two disjoint point clouds with $n$ points each."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"n=99\n",
"point_cloud1 = [np.random.random(2)*50 for _ in range(n)]\n",
"point_cloud2 = [np.random.random(2)*50 + 50 for _ in range(n)]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we add both point clouds to an empty convex hull. We also reset the counter for the `distance`\n",
"method of the `PolygonEdge`. Knowing the number of point-to-edge distance calculations should provide some\n",
"rough metric of the performance of this algorithm."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"hull = ConvexHull() # empty hull\n",
"\n",
"PolygonEdge.distance.callcount=0 # reset performace counter\n",
"hull.add_points(point_cloud1)\n",
"hull.add_points(point_cloud2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's visualize the result and print out the performance metric. Note that the two point clouds\n",
"are drawn with different colors."
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"198 points required 840 distance calculations\n"
]
},
{
"data": {
"image/png": "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bUrXw07JfFdftwMHDggNGjQQgoODhXLlygkffPCB3edqMpmEadOmCbGxsUJYWJjQrFkz4dixYwXelzNmzBDq168vFC1aVAgLCxPi4+OFmTNnCtnZ2U6fLxHpm0EQPJxdSkREREREpFOcI0VEREREROQmBikiIiIiIiI3MUgRERERERG5iUGKiIiIiIjITQxSREREREREbuI6UgDMZjMuX76MyMhIt1ZzJyIiIiIibREEAbdv30ZcXFyBNR3zYpACcPnyZZQtW1buZhARERERkUJcvHgR999/v8PbGaQAREZGArC8WFFRUTK3Rlo5OTn49ddf0bp1awQFBcndHHIDj5068bipF4+devHYqRePnTpp/bilpqaibNmy1ozgCIMUYB3OFxUVpckgFR4ejqioKE2+0bWMx06deNzUi8dOvXjs1IvHTp30ctycTflhsQkiIiIiIiI3MUgRERERERG5iUGKiIiIiIjITQxSREREREREbmKQIiIi0qBmzZph1KhRXj3G77//DoPBgOTkZADAihUrULRoUa/bRkSkBQxSREREREREbmKQIiIiIiIichODFBER6ZrZbMacOXNQrVo1dOvWDZUqVcLMmTOttx89ehQtWrRAWFgYSpQogcGDByMtLc16e//+/dGlSxe89957iI2NRYkSJTBs2DDk5OQAACZMmIAGDRoU+LkPPfQQpk+fbv3+k08+QbVq1RAaGor4+HgsWrTIetuAAQNQu3ZtZGVlAQCys7Px8MMPo2/fvk6f2xtvvIHixYsjJiYGU6dOtd72zz//wGAw4PDhw9ZtycnJMBgM+P3331167YiI9IxBioiIdG38+PGYNWsWxo8fj48++giff/45ypQpAwBIT09HmzZtUKxYMfzxxx/49ttvsXnzZgwfPtzmMbZu3Ypz585h69atWLlyJVasWIEVK1YAAHr16oX9+/fj3Llz1v2PHz+Ov/76Cz179gQAfPXVV5g8eTJmzpyJEydO4O2338akSZOwcuVKAMCHH36I9PR0jBs3DgDw5ptvIjk5GQsWLCj0ua1cuRIRERHYt28f5syZg+nTp2PTpk2SvG5ERHoXKHcDiIiI5HL79m3Mnz8fCxYsQN++fbF+/Xo0btwYzZo1AwCsWrUKmZmZ+PzzzxEREQEAWLBgATp27IjZs2dbA1exYsWwYMECBAQEID4+Hh06dMCW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",
"text/plain": [
"<Figure size 1000x1000 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig,ax = make_coordinate_system()\n",
"fig.set_size_inches(10, 10, forward=True)\n",
"\n",
"ax.scatter([p[0] for p in point_cloud1],[p[1] for p in point_cloud1])\n",
"ax.scatter([p[0] for p in point_cloud2],[p[1] for p in point_cloud2])\n",
"ax.set_title('Convex Hull of Two Point Clouds')\n",
"hull.draw(ax,4)\n",
"\n",
"textoffset = np.array([hull.loop_start.direction[1],-hull.loop_start.direction[0]])*30\n",
"ax.annotate('convex hull', (hull.loop_start.start + hull.loop_start.end)/2,\n",
" xytext = textoffset,\n",
" arrowprops=dict( fc = 'None', ec='black', shrink=1.5),\n",
" textcoords ='offset points')\n",
"\n",
"print (len(point_cloud1) + len(point_cloud2),\n",
" 'points required', PolygonEdge.distance.callcount, 'distance calculations')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Adding Points to a Convex Hull One by One\n",
"\n",
"The implementation of the `ConvexHull` class already allows for adding more than one point cloud\n",
"to an existing convex hull. However, if points need to be added to an existing point cloud\n",
"**individually**, the [QuickHull](https://en.wikipedia.org/wiki/Quickhull) subdivision approach\n",
"is a big hammer for a small job. For single points we choose marching algorithm to add\n",
"points one by one which has $O(m)$ complexity with $m$ being the number of edges in the convex hull).\n",
"\n",
"To illustrate how the marching algoritm works we use the small cloud of randon point\n",
"we create earlier and create a convex hull for it."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"hull = ConvexHull()\n",
"hull.add_points(point_cloud)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We also need a point that we can add to the convex hull. We choose a point which is outside\n",
"the convex hulls so that we get some action. Attempting to add a point which is **inside** the\n",
"convex hull does not change the hull."
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"p = np.array([110,50]) # make sure it is outside the convex hull"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we start _marching_ around the polygon to determine the sequence of edges where the point is\n",
"classified as _outside_ (distance is positive)."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"polyline_start = polyline_end = None\n",
"\n",
"for i,edge in enumerate(hull.edges):\n",
" if edge.distance(p) > 0:\n",
" if polyline_end:\n",
" polyline_end = edge\n",
" else: # first edge whre point is outside\n",
" polyline_start = polyline_end = edge\n",
" if i == 0:\n",
" # expand polyline backwards\n",
" probe = edge.previous\n",
" while not probe is edge:\n",
" if probe.distance(p) > 0:\n",
" polyline_start = probe\n",
" probe = probe.previous\n",
" else:\n",
" break\n",
" elif polyline_end: # point is outside the convex hull\n",
" # we can stop here because we have a contiguous\n",
" # set of edges (polyline) starting at\n",
" # 'polyline_start' and ending at 'polyline_end'\n",
" break"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The sequence of edges we found (if any) indicate the place where the convex hull needs\n",
"to be extended to include the given point."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"if polyline_end:\n",
" edge1 = PolygonEdge(polyline_start.start,p,\n",
" previous = polyline_start.previous)\n",
" PolygonEdge(p,polyline_end.end,\n",
" next = polyline_end.next, previous = edge1)\n",
" hull.loop_start = edge1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's draw this the 2 stages of adding the point."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/YAAAHWCAYAAADdKxJLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAACjwklEQVR4nOzdeZyNdf/H8deZxYxlZqxjxhJjizFKElkiWStLUaIUJSItSEW3aGSLkpY7osSdlFBKy3RbynIjZSlSoobEGDGMZRYz51y/P+Z3jjlmhlnPdZb38/HwqHNd17nOZ75zznzO57q+i8UwDAMRERERERER8Uh+ZgcgIiIiIiIiIoWnwl5ERERERETEg6mwFxEREREREfFgKuxFREREREREPJgKexEREREREREPpsJeRERERERExIOpsBcRERERERHxYCrsRURERERERDyYCnsRERERERERD6bCXqSYvPDCC1gslkI9d+HChVgsFg4ePFi8QWVz8OBBLBYLCxcuLLHXkPzL7fdRlPeQiIh4F4vFwgsvvFBs5/vuu++wWCx89913xXZOKbzcfh+DBg2idu3apsUknk2Fvfi8X375hQEDBlC9enWCgoKoVq0a9913H7/88ovZoZkqMTGRMWPG0LBhQ8qUKUPZsmW5/vrrmTx5MqdPnzY7PJewF98vv/xyrvvthfiJEydcHJmIiNjZL47n9W/r1q0FOt/Ro0d54YUX2LVrV8kE7CH++OMPHnnkEerUqUNwcDChoaG0adOG1157jdTUVLPDcwl78b18+fJc9w8aNIhy5cq5OCqR3AWYHYCImT755BP69+9PxYoVGTx4MFFRURw8eJB3332X5cuX89FHH3HnnXfm61zjx49n7NixhYrj/vvvp1+/fgQFBRXq+cXthx9+4LbbbuPcuXMMGDCA66+/HoAff/yR6dOns2HDBv773/+aHKWIiMhFkyZNIioqKsf2evXqFeg8R48eJTY2ltq1a9O0adNiis6zfPnll9x9990EBQXxwAMPEBMTw4ULF9i0aRNPP/00v/zyC/PmzTM7TBHJRoW9+Kw//viD+++/nzp16rBhwwaqVKni2Pfkk09y0003cf/99/Pzzz9Tp06dPM9z/vx5ypYtS0BAAAEBhftI+fv74+/vX6jnFrfTp09z55134u/vz86dO2nYsKHT/ilTpjB//nyTohMREcndrbfeSvPmzc0Ow+PFx8fTr18/atWqxbp164iMjHTsGzFiBAcOHODLL780MUIRyY264ovPmjlzJikpKcybN8+pqAeoXLkyb7/9NufPn2fGjBmO7fau13v37uXee++lQoUKtG3b1mlfdqmpqTzxxBNUrlyZkJAQevbsyZEjR3KMm8ttjH3t2rXp3r07mzZtokWLFgQHB1OnTh3+85//OL1GUlISY8aMoUmTJpQrV47Q0FBuvfVWfvrpp0K1y9tvv82RI0eYNWtWjqIeoGrVqowfP95p21tvvUXjxo0dQxlGjBiRo7v+zTffTExMDHv37qVDhw6UKVOG6tWrO7VvYmIiAQEBxMbG5njdffv2YbFYePPNNx3bTp8+zciRI6lZsyZBQUHUq1ePl156CZvNBoBhGHTo0IEqVapw/Phxx/MuXLhAkyZNqFu3LufPny9UO+Wldu3aDBo0KMf2m2++mZtvvrlYX0tERPJv4sSJ+Pn5sXbtWqftQ4cOpVSpUvz0009899133HDDDQA8+OCDju782edD+f777+nWrRthYWGUKVOG9u3b87///c/pnPbvBAcOHGDQoEGUL1+esLAwHnzwQVJSUpyOTU9PZ9SoUVSpUsXxXeHvv//O9Wc4cuQIDz30EFWrViUoKIjGjRuzYMGCHMf9/fff3HHHHZQtW5bw8HBGjRpFenp6vtppxowZnDt3jnfffdepqLerV68eTz75pONxZmYmL774InXr1iUoKIjatWvz3HPP5Xi9/Hyv+fHHH7FYLCxatCjH637zzTdYLBa++OKLfLdHamoqDRs2pGHDhk7DB5KSkoiMjKR169ZYrdZ8tUt+5TU3Ql7fD0SKiwp78VmrVq2idu3a3HTTTbnub9euHbVr1871qvTdd99NSkoKU6dOZciQIXm+xqBBg3jjjTe47bbbeOmllyhdujS33357vmM8cOAAd911F507d+aVV16hQoUKDBo0yGn8/59//snKlSvp3r07s2bN4umnn2b37t20b9+eo0eP5vu17D7//HNKly7NXXfdla/jX3jhBUaMGEG1atV45ZVX6NOnD2+//TZdunQhIyPD6dhTp07RrVs3rr32Wl555RUaNmzIs88+y9dffw1kXTRo3749H3/8cY7XWbp0Kf7+/tx9990ApKSk0L59exYvXswDDzzA66+/Tps2bRg3bhyjR48GspLrggULSEtLY9iwYY5zTZw4kV9++YX33nuPsmXLXvFnTElJ4cSJEzn+XfrlTEREzJOcnJzj7/TJkycd+8ePH0/Tpk0ZPHgwZ8+eBbKKxfnz5zNhwgSuvfZaGjVqxKRJk4Csgv/999/n/fffp127dgCsW7eOdu3acebMGSZOnMjUqVM5ffo0t9xyC9u2bcsRU9++fTl79izTpk2jb9++LFy4MMfF64cffpjZs2fTpUsXpk+fTmBgYK7fFRITE7nxxhtZs2YNjz32GK+99hr16tVj8ODBzJ4923FcamoqHTt25JtvvuGxxx7jX//6Fxs3buSZZ57JVzuuWrWKOnXq0Lp163wd//DDDzNhwgSaNWvGq6++Svv27Zk2bRr9+vXLceyVvtc0b96cOnXq5Pk9oEKFCnTt2jXf7VG6dGkWLVrEgQMH+Ne//uU414gRI0hOTmbhwoX56jF59uzZXL8H5PdiiYhLGCI+6PTp0wZg9OrV67LH9ezZ0wCMM2fOGIZhGBMnTjQAo3///jmOte+z2759uwEYI0eOdDpu0KBBBmBMnDjRse29994zACM+Pt6xrVatWgZgbNiwwbHt+PHjRlBQkPHUU085tqWlpRlWq9XpNeLj442goCBj0qRJTtsA47333rvsz1yhQgXj2muvvewx2eMpVaqU0aVLF6cY3nzzTQMwFixY4NjWvn17AzD+85//OLalp6cbERERRp8+fRzb3n77bQMwdu/e7fRa0dHRxi233OJ4/OKLLxply5Y1fv/9d6fjxo4da/j7+xt//fVXjnMuXrzY2Lp1q+Hv75/j95Ibe5td6d8///zjeE6tWrWMgQMH5jhX+/btjfbt2+c4d/bfx6XvIRERuTJ7Ds3tX1BQkNOxu3fvNkqVKmU8/PDDxqlTp4zq1asbzZs3NzIyMhzH/PDDD7nmS5vNZtSvX9/o2rWrYbPZHNtTUlKMqKgoo3Pnzo5t9r/nDz30kNM57rzzTqNSpUqOx7t27TIA49FHH3U67t57783xXWHw4MFGZGSkceLECadj+/XrZ4SFhRkpKSmGYRjG7NmzDcD4+OOPHcecP3/eqFevngEY3377bZ5tmZycnK/vR5fG//DDDzttHzNmjAEY69atc2zL7/eacePGGYGBgUZSUpJjW3p6ulG+fHmn9sxve9jP6efnZ2zYsMFYtmyZARizZ8++4s/37bffXvE7QNmyZZ2ec+nvLfvPn/37gf3c2X8fAwcONGrVqnXFuERyozv24pPsV+pDQkIue5x9/5kzZ5y2Z7/7m5e4uDgAHn30Uaftjz/+eL7jjI6OdupRUKVKFa6++mr+/PNPx7agoCD8/LI+ylarlZMnT1KuXDmuvvpqduzYke/Xsjtz5swV28VuzZo1XLhwgZEjRzpiABgyZAihoaE5ejuUK1eOAQMGOB6XKlWKFi1aOP08vXv3JiAggKVLlzq27dmzh71793LPPfc4ti1btoybbrqJChUqOF0979SpE1arlQ0bNjiOHTp0KF27duXxxx/n/vvvp27dukydOjXfbTJ06FBWr16d49/999+f73OIiEjJ+ve//53j77S9R5hdTEwMsbGxvPPOO3Tt2pUTJ06waNGifM2Rs2vXLvbv38+9997LyZMnHXnn/PnzdOzYkQ0bNjiGgtld+n3hpptu4uTJk47vFV999RUATzzxhNNxI0eOdHpsGAYrVqygR48eGIbhlPe6du1KcnKyI+d/9dVXREZGOvW8K1OmDEOHDr3iz2iPK7/fA+zx23vK2T311FMAOb4H5Od7zT333ENGRgaffPKJY9t///tfTp8+7fgeUJD2gKzehY0bN2bgwIE8+uijtG/fPkebX86ECRNy/R7QpUuXfJ9DpKRp8jzxSfaEZS/w85LXBYDcZt291KFDh/Dz88txbEFm573qqqtybKtQoQKnTp1yPLbZbLz22mu89dZbxMfHO40Vq1SpUr5fyy40NPSK7WJ36NAhAK6++mqn7aVKlaJOnTqO/XY1atTIMQ9BhQoV+Pnnnx2PK1euTMeOHfn444958cUXgazudwEBAfTu3dtx3P79+/n5559zzI9gl31MPcC7775L3bp12b9/P5s3b6Z06dL5+hkB6tevT6dOnXJs37RpU77PISIiJatFixb5mjzv6aef5qOPPmLbtm1MnTqV6OjofJ1///79AAwcODDPY5KTk6lQoYLj8aV53L7v1KlThIaGOr4r1K1b1+m4S/PqP//8w+nTp5k3b16es9Hb896hQ4eoV69ejnx76TlzExoaClz5+5GdPf5Lv9tERERQvnz5HN8D8vO95tprr6Vhw4YsXbqUwYMHA1nfAypXrswtt9wCFKw9IOt7yYIFC7jhhhsIDg7mvffey9E+l9OkSZNcvwcsXrw43+cQKWkq7MUnhYWFERkZ6VRQ5ubnn3+mevXqjkRnV5CisCjyGvdlGIbj/6dOncrzzz/PQw89xIsvvkjFihXx8/Nj5MiROe4c5EfDhg3ZtWsXFy5coFSpUoWOPTf5+XkA+vXrx4MPPsiuXbto2rQpH3/8MR07dqRy5cqOY2w2G507d85zzGCDBg2cHn/33XeOsXC7d++mVatWRflR8pTXFwWr1eo2Kx+IiPiyP//801Gk7969O9/Ps+fUmTNn5rkM3qVrmuc37+X3tQcMGJDnhYVrrrmmQOfMTWhoKNWqVWPPnj0Fel5+i+T8tsc999zDlClTOHHiBCEhIXz++ef079/f0bOiMO3xzTffAJCWlsb+/fvzdZOmOBX3JH0il1JhLz6re/fuzJ8/n02bNjlmts9u48aNHDx4kEceeaRQ569VqxY2m434+Hjq16/v2H7gwIFCx5yb5cuX06FDB959912n7adPn3YqhPOrR48ebNmyhRUrVtC/f//LHlurVi0ga8b67EsCXrhwgfj4+FyvbufHHXfcwSOPPOLojv/7778zbtw4p2Pq1q3LuXPn8vUaCQkJPP7443Tp0oVSpUoxZswYunbt6oi/OFWoUCHHigCQdVfjcssmiohIybPZbAwaNIjQ0FBGjhzJ1KlTueuuu5x6hOVVpNrvqoeGhhY6v13K/l3hjz/+cLqjvm/fPqfj7DPmW63WK752rVq12LNnD4ZhOP0sl54zL927d2fevHls2bLlihfB7fHv37+fRo0aObYnJiZy+vTpQufZe+65h9jYWFasWEHVqlU5c+aM02R8BWkPyLpRM2nSJMdNg4cffpjdu3cTFhZWqPguJ7fvARcuXCAhIaHYX0skO42xF5/19NNPU7p0aR555BGnWXMhaxmUYcOGUaZMGZ5++ulCnd8+a+tbb73ltP2NN94oXMB58Pf3z3Gle9myZRw5cqRQ5xs2bBiRkZE89dRT/P777zn2Hz9+nMmTJwPQqVMnSpUqxeuvv+4Uw7vvvktycnKBVgDIrnz58nTt2pWPP/6Yjz76iFKlSnHHHXc4HdO3b1+2bNniuAKf3enTp8nMzHQ8HjJkCDabjXfffZd58+YREBDA4MGDC3zHJD/q1q3L1q1buXDhgmPbF198weHDh4v9tUREpGBmzZrF5s2bmTdvHi+++CKtW7dm+PDhnDhxwnGMfbWUS4uz66+/nrp16/Lyyy9z7ty5HOf+559/ChzPrbfeCsDrr7/utD37LPeQlev79OnDihUrcr2bnv21b7vtNo4ePcry5csd2+zL++bHM888Q9myZXn44YdJTEzMsf+PP/7gtddec7xWbvHOmjULoNDfAxo1akSTJk1YunQpS5cuJTIy0rEyARSsPTIyMhg0aBDVqlXjtddeY+HChSQmJjJq1KhCxXYldevWdZrnB2DevHm6Yy8lTnfsxWfVr1+fRYsWcd9999GkSRMGDx5MVFQUBw8e5N133+XEiRN8+OGHOca95df1119Pnz59mD17NidPnuTGG29k/fr1jmK5IGO7Lqd79+6Oq9CtW7dm9+7dfPDBB4W+O1yhQgU+/fRTbrvtNpo2bcqAAQO4/vrrAdixYwcffvih4wp+lSpVGDduHLGxsXTr1o2ePXuyb98+3nrrLW644QanifIK6p577mHAgAG89dZbdO3alfLlyzvtf/rpp/n888/p3r07gwYN4vrrr+f8+fPs3r2b5cuXc/DgQSpXrsx7773Hl19+ycKFC6lRowaQdXFlwIABzJkzJ8fkhkX18MMPs3z5crp160bfvn35448/WLx4caHfRyIikj9ff/01v/32W47trVu3pk6dOvz66688//zzDBo0iB49egCwcOFCmjZtyqOPPupYYq1u3bqUL1+euXPnEhISQtmyZWnZsiVRUVG888473HrrrTRu3JgHH3yQ6tWrc+TIEb799ltCQ0NZtWpVgWJu2rQp/fv356233iI5OZnWrVuzdu3aXHv3TZ8+nW+//ZaWLVsyZMgQoqOjSUpKYseOHaxZs4akpCQg62L2m2++yQMPPMD27duJjIzk/fffp0yZMvmKqW7duixZsoR77rmHRo0a8cADDxATE8OFCxfYvHkzy5Ytc6zHfu211zJw4EDmzZvH6dOnad++Pdu2bWPRokXccccddOjQoUDtkd0999zDhAkTCA4OZvDgwU6T9BakPSZPnsyuXbtYu3YtISEhXHPNNUyYMIHx48dz1113OS5OFJeHH36YYcOG0adPHzp37sxPP/3EN998U6helCIFYs5k/CLu4+effzb69+9vREZGGoGBgUZERITRv3//HMutGcbF5WuyL2926b7szp8/b4wYMcKoWLGiUa5cOeOOO+4w9u3bZwDG9OnTHcfltdzd7bffnuN1Ll02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",
"text/plain": [
"<Figure size 1200x500 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig,ax = make_coordinate_system(2, dx=(-5,120), dy=(-5,110))\n",
"fig.set_size_inches(12, 5, forward=True)\n",
"\n",
"# draw original convex hull\n",
"hull_orig = ConvexHull()\n",
"hull_orig.add_points(point_cloud)\n",
"hull_orig.draw(ax[0],5)\n",
"\n",
"ax[0].scatter([p[0] for p in point_cloud],[p[1] for p in point_cloud])\n",
"ax[0].scatter([p[0]],[p[1]])\n",
"ax[0].annotate('$\\\\vec{p}$', xy=p, xytext=(15,1), ha='right', textcoords='offset points')\n",
"ax[0].set_title('Original Convex Hull')\n",
"\n",
"# draw extend hull\n",
"ax[1].scatter([p[0] for p in point_cloud],[p[1] for p in point_cloud])\n",
"ax[1].scatter([p[0]],[p[1]])\n",
"hull.draw(ax[1],5)\n",
"ax[1].annotate('$\\\\vec{p}$', xy=p, xytext=(15,1), ha='right', textcoords='offset points')\n",
"ax[1].set_title('Extended Convex Hull')\n",
"None"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## class ConvexHullEx - Extended Convex Hull\n",
"\n",
"Having the marching algorithm is layed out as well, we can wrap everthing up\n",
"into a multi-purpose convex hull class."
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"class ConvexHullEx (ConvexHull):\n",
" def __init__(self):\n",
" super().__init__()\n",
"\n",
" def add_point(self, point : np.array) -> None:\n",
" if self.loop_start:\n",
" if self.loop_start.next is self.loop_start:\n",
" # got a nucleaus\n",
" self.loop_start = PolygonEdge(self.loop_start.start,point)\n",
" else: # got a convex hull\n",
" # march arround the existing convex hull until we find an\n",
" # edge to which the point has a positive distance\n",
" # (meaning the point is outside the convex hull).\n",
" # If we find such an edge, we expand the convex hull to\n",
" # include the point.\n",
" #\n",
" # If the point-to-edge distance of the point is negative for\n",
" # all edges of the convex hull, the point is inside the\n",
" # convex hull and can be discarded.\n",
"\n",
" polyline_start = polyline_end = None\n",
"\n",
" for i,edge in enumerate(self.edges):\n",
" if edge.distance(point) > 0:\n",
" if polyline_end:\n",
" polyline_end = edge # just extend the polyline\n",
" else: # first edge where point is outside\n",
" polyline_start = polyline_end = edge\n",
" if i == 0:\n",
" # expand polyline backwards\n",
" probe = edge.previous\n",
" while not probe is edge:\n",
" if probe.distance(point) > 0:\n",
" polyline_start = probe\n",
" probe = probe.previous\n",
" else:\n",
" break\n",
" elif polyline_end: # point is outside the convex hull\n",
" # we can stop here because we have a contiguous\n",
" # set of edges (polyline) starting at\n",
" # 'polyline_start' and ending at 'polyline_end'\n",
" break\n",
" # extend the convex hull\n",
" if polyline_end:\n",
" edge1 = PolygonEdge(polyline_start.start,point,\n",
" previous = polyline_start.previous)\n",
" PolygonEdge(point, polyline_end.end,\n",
" next = polyline_end.next, previous = edge1)\n",
" self.loop_start = edge1\n",
" else:\n",
" # add a nucleus\n",
" self.loop_start=PolygonEdge(point,point)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Performance Comparison `add_points` vs `add_point`\n",
"\n",
"To assess the performance characteristics of adding points in bulk (`add_points`) versus adding points one-by-one, (`add_point`) we set up two sets of points:\n",
"* a point cloud from which we take slices of varying sizes\n",
"* a set of points from which we take slices of varying sizes which we are going to add in bulk and\n",
" one-by-one.\n",
" \n",
"The make the test scenario more realistic we make it so that both point clouds overlap, so that\n",
"some of the points to add will be inside the convex hull of the point cloud."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"point_cloud=[np.random.random(2)*75 for _ in range(5000)]\n",
"extra_points=[np.random.random(2)*50+50 for _ in range(100)]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The figure below demonstrate the layout of the overlapping point sets."
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Sample Point Sets')"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 1200x500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig,ax = make_coordinate_system(1)\n",
"fig.set_size_inches(12, 5, forward=True)\n",
"ax.scatter([p[0] for p in point_cloud[0:50]], [p[1] for p in point_cloud[0:50]],label='Point Cloud')\n",
"ax.scatter([p[0] for p in extra_points[0:50]], [p[1] for p in extra_points[0:50]],label='Points To Add')\n",
"ax.legend()\n",
"ax.set_title('Sample Point Sets')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the intactive graph below the cost (in terms of number of distance calculations) adding points to\n",
"an existing convex hull in bulk (`add_points`) versus one-by-one (`add_point`) can be explored."
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA6AAAAHWCAYAAABpIeREAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAACDmklEQVR4nOzdd3hUZfrG8e/MZNIbSSAFQgi9C4IggiBKR2zYG5YV1wUbdkWKDWV17eVnA9cV17JWpDexoCCK0ksIPQmQkN4mM+f3xyRDQgJMIMlMkvtzXbkyc+acM88ED/Hmfc/7mAzDMBARERERERGpZWZPFyAiIiIiIiKNgwKoiIiIiIiI1AkFUBEREREREakTCqAiIiIiIiJSJxRARUREREREpE4ogIqIiIiIiEidUAAVERERERGROqEAKiIiIiIiInVCAVRERERERETqhAKoiIg0SK1ateKmm27yyHufd955nHfeeTV2vtmzZ2Mymdi1a1eNnVNERMQTFEBFRKReSUpK4vbbb6d169b4+/sTGhpK//79efnllykoKPB0edVSXFzMyy+/TM+ePQkNDSU8PJwuXbowfvx4tmzZ4unyqnTTTTdhMpkqfXXs2LHSvg6Hg5kzZ5KYmIi/vz/du3fn448/rvK8mzdvZsSIEQQHBxMREcENN9zAoUOHavvjiIhIHfPxdAEiIiLu+u6777jiiivw8/PjxhtvpGvXrhQXF/Pjjz/ywAMPsHHjRt5++21Pl+m2sWPHMn/+fK655hpuu+02bDYbW7ZsYe7cuZxzzjmuUHfDDTdw9dVX4+fn5+GKnfz8/Hj33XcrbAsLC6u032OPPcazzz7LbbfdxllnncXXX3/Ntddei8lk4uqrr3btt2/fPgYOHEhYWBjPPPMMubm5PP/886xfv57Vq1fj6+tb659JRETqhgKoiIjUC8nJyVx99dUkJCSwbNkyYmNjXa9NmDCBHTt28N1333mwwupZs2YNc+fO5emnn+bRRx+t8Nprr71GZmam67nFYsFisdRxhcfn4+PD9ddff8J99u/fzwsvvMCECRN47bXXAPjb3/7GoEGDeOCBB7jiiitcn+mZZ54hLy+PtWvX0rJlSwD69OnD0KFDmT17NuPHj6/dDyQiInVGU3BFRKRemDlzJrm5ubz33nsVwmeZtm3bcvfdd5/wHDt37uSKK64gIiKCwMBAzj777Eqh9Xj3W65YsQKTycSKFSsqbH/77bdp06YNAQEB9OnThx9++MGtz5OUlARA//79K71msViIjIw8bk3Tpk2rchqsyWSqcN+rw+HgpZdeokuXLvj7+xMdHc3tt9/OkSNHKrxfVlYWW7ZsISsry63aAex2O9nZ2cd9/euvv8Zms/GPf/zDtc1kMnHHHXewb98+Vq1a5dr+v//9jwsvvNAVPgGGDBlC+/bt+fTTT92uSUREvJ8CqIiI1AvffvstrVu35pxzzjml49PS0jjnnHNYuHAh//jHP3j66acpLCzkoosu4ssvvzylc7733nvcfvvtxMTEMHPmTPr3789FF13E3r17T3psQkICAB999BElJSXVet/LLruMDz/8sMLXPffcA0CzZs1c+91+++088MADrntkb775Zj766COGDx+OzWZz7ffll1/SqVMnt38O+fn5hIaGEhYWRkREBBMmTCA3N7fCPn/88QdBQUF06tSpwvY+ffq4XgfnSOnBgwfp3bt3pffp06ePaz8REWkYNAVXRES8XnZ2Nvv37+fiiy8+5XM8++yzpKWl8cMPPzBgwAAAbrvtNrp3786kSZO4+OKLMZvd/3dZm83Go48+So8ePVi+fLnrPsXOnTszfvx44uPjT3j82WefzaBBg3jnnXf45ptvOP/88xkwYEClkcCqdO/ene7du7ueHz58mMcee4xu3boxdepUAH788UfeffddPvroI6699lrXvoMHD2bEiBF89tlnFba7KzY2lgcffJAzzzwTh8PBggULeOONN/jzzz9ZsWIFPj7O/7VISUkhOjoak8lU6XiAAwcOuPYrv/3YfTMyMigqKvKa+19FROT0aARURES8XtlUz5CQkFM+x7x58+jTp48rfAIEBwczfvx4du3axaZNm6p1vt9++42DBw/y97//vcIiOTfddFOVC/Icy2QysXDhQp566imaNGnCxx9/zIQJE0hISOCqq66qcA/oidjtdq655hpycnL48ssvCQoKAuCzzz4jLCyMoUOHcvjwYddXr169CA4OZvny5RVqNgzDrbY1M2bM4Nlnn+XKK6/k6quvZvbs2Tz99NP89NNPfP755679CgoKqgyN/v7+rtfLf3dnXxERqf8UQEVExOuFhoYCkJOTc8rn2L17Nx06dKi0vWyK6O7du6t9PoB27dpV2G61WmndurVb5/Dz8+Oxxx5j8+bNHDhwgI8//pizzz6bTz/9lIkTJ7p1jsmTJ7Ns2TLmzJlDmzZtXNu3b99OVlYWzZo1o2nTphW+cnNzOXjwoJuf9OTuvfdezGYzS5YscW0LCAigqKio0r6FhYWu18t/d2dfERGp/zQFV0REvF5oaChxcXFs2LCh1t/r2CmjZex2e62+b2xsLFdffTVjx46lS5cufPrpp8yePds1pbUqX331Fc899xxPPvkkI0aMqPCaw+GgWbNmfPTRR1Ue27Rp0xqrPSAggMjISDIyMlzbYmNjWb58OYZhVPiZlk25jYuLc+1Xfnt5KSkpREREaPqtiEgDohFQERGpFy688EKSkpIqrJ5aHQkJCWzdurXS9i1btrheB2jSpAlApSmwx46Qlu2/ffv2CtttNhvJycmnVCM4R1C7d++OzWbj8OHDx91v27ZtjBs3jksuuaRSGxeANm3akJ6eTv/+/RkyZEilrzPOOOOUazxWTk4Ohw8frhBqe/ToQX5+Pps3b66w76+//up6HaB58+Y0bdqU3377rdJ5V69e7dpPREQaBgVQERGpFx588EGCgoL429/+RlpaWqXXk5KSePnll497/KhRo1i9enWFAJuXl8fbb79Nq1at6Ny5M4BrGuvKlStd+9ntdt5+++0K5+vduzdNmzblrbfeori42LV99uzZbt2/uX37dvbs2VNpe2ZmJqtWraJJkybHHaXMzc3l0ksvpXnz5nzwwQdVjtpeeeWV2O12nnzyyUqvlZSUVKjR3TYshYWFVU6DfvLJJzEMo8Io7MUXX4zVauWNN95wbTMMg7feeovmzZtXWM147NixzJ07t8LqwUuXLmXbtm1cccUVJ6xJRETqF03BFRGReqFNmzbMmTOHq666ik6dOnHjjTfStWtXiouL+fnnn/nss89OuIjOww8/zMcff8zIkSO56667iIiI4IMPPiA5OZn//e9/rhVwu3Tpwtlnn80jjzxCRkYGERER/Pe//63UKsVqtfLUU09x++23c/7553PVVVeRnJzMrFmz3LoH9M8//+Taa69l5MiRnHvuuURERLB//34++OADDhw4wEsvvYTFYqny2OnTp7Np0yYmT57M119/Xenn1K9fPwYNGsTtt9/OjBkzWLduHcOGDcNqtbJ9+3Y+++wzXn75ZS6//HLA2Ybl5ptvZtasWSf8GaamptKzZ0+uueYaOnbsCMDChQuZN28eI0aMqLBKcYsWLbjnnnv45z//ic1m46yzzuKrr77ihx9+4KOPPqrw2R599FE+++wzBg8ezN13301ubi7//Oc/6datGzfffPNJf5YiIlKPGCIiIvXItm3bjNtuu81o1aqV4evra4SEhBj9+/c3Xn31VaOwsNC1X0JCgjFu3LgKxyYlJRmXX365ER4ebvj7+xt9+vQx5s6dW+k9kpKSjCFDhhh+fn5GdHS08eijjxqLFy82AGP58uUV9n3jjTeMxMREw8/Pz+jdu7excuVKY9CgQcagQYNO+DnS0tKMZ5991hg0aJARGxtr+Pj4GE2aNDHOP/984/PPP6+w76xZswzASE5ONgzDMMaNG2cAVX4d+5nffvtto1evXkZAQIAREhJidOvWzXjwwQeNAwcOVDr/rFmzTljzkSNHjOuvv95o27atERgYaPj5+RldunQxnnnmGaO4uLjS/na73XjmmWeMhIQEw9fX1+jSpYvxn//8p8pzb9iwwRg2bJgRGBhohIeHG9ddd52Rmpp6wnpERKT+MRmGYXgs/YqIiIiIiEijoXtARUREREREpE4ogIqIiIiIiEidUAAVERERERGROqEAKiIiIiIiInVCAVRERERERETqhAKoiIiIiIiI1AkfTxfgDRwOBwcOHCAkJASTyeTpckREREREROoNwzDIyckhLi4Os/nEY5wKoMCBAweIj4/3dBkiIiIiIiL11t69e2nRosUJ91EABUJCQgDnDyw0NNTD1Rxls9lYtGgRw4YNw2q1erocEa+m60XEfbpeRNyn60Xk5LKzs4mPj3flqhNRAAXXtNvQ0FCvC6CBgYGEhobqLzyRk9D1IuI+XS8i7tP1IuI+d25n1CJEIiIiIiIiUicUQEVERERERKROKICKiIiIiIhIndA9oG6y2+3YbLY6fU+bzYaPjw+FhYXY7fY6fe+GxGKx4OPjoxY7IiIiIiIepgDqhtzcXPbt24dhGHX6voZhEBMTw969exWeTlNgYCCxsbH4+vp6uhQRERERkUZLAfQk7HY7+/btIzAwkKZNm9ZpEHQ4HOTm5hIcHHzShq5SNcMwKC4u5tChQyQnJ9OuXTv9LEVEREREPMSjAXTGjBl88cUXbNmyhYCAAM455xyee+45OnTo4NrnvPPO4/vvv69w3O23385bb73ler5nzx7uuOMO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9mXHjh0KoCIiIiJyUg6HwSe/7eXZ+erpKSKnEEDvvPNO7rvvPlJTU+nWrRtWa8W/OLp3715jxYmIiIhI/bU5JZvHvlRPTxE5qtoBdOzYsQDccsstrm0mkwnDMLQIkYiIiIhU2dNz0rAOjFNPT5FGr9oBNDk5uTbqEBEREZF6rqqenqO6xTDlwi7q6SkiwCkE0ISEhNqoQ0RERETqsWN7esZHBPDExV0ZrJ6eIlJOtQMoQFJSEi+99BKbN28GoHPnztx99920adOmRosTEREREe+mnp4iUh3VDqALFy7koosuokePHvTv3x+An376iS5duvDtt98ydOjQGi9SRERERLzPrzvTeUw9PUWkGqodQB9++GHuvfdenn322UrbH3roIQVQERERkQYuPbeIGfO38Pla9fQUkeqpdgDdvHkzn376aaXtt9xyCy+99FJN1CQiIiIiXsjhMPj0t73MUE9PETlF1Q6gTZs2Zd26dbRr167C9nXr1tGsmW4yFxEREWmI1NNTRGpCtQPobbfdxvjx49m5cyfnnHMO4LwH9LnnnmPSpEk1XqCIiIiIeI56eopITap2AH388ccJCQnhhRde4JFHHgEgLi6OadOmcdddd9V4gSIiIiJS99TTU0RqQ7UDqMlk4t577+Xee+8lJycHgJCQkBovTEREREQ8Y29GPtO+2cjS8j09L+rK4I663UpETs8p9QEto+ApIiIi0nAUlzh498edvLL0aE/P2wc6e3oG+Kqnp4icPrcC6JlnnsnSpUtp0qQJPXv2POHy2r///nuNFSciIiIidePXnelM/moD2yv09OxK22YacBCRmuNWAL344ovx8/NzPVZ/JxEREZGGoaqeno+N7sSlPdXTU0RqnlsBdOrUqa7H06ZNq61aRERERKSOVNXT85o+LXlIPT1FpBZV+x7Q1q1bs2bNGiIjIytsz8zM5Mwzz2Tnzp01VpyIiIiI1Lxje3p2Ku3peaZ6eopILat2AN21axd2u73S9qKiIvbt21cjRYmIiIhIzVNPTxHxNLcD6DfffON6vHDhQsLCwlzP7XY7S5cuJTExsWarExEREZHTdryeno9f2JnYsAAPVycijYnbAfSSSy4BnH1Ax40bV+E1q9VKq1ateOGFF2q0OBERERE5PerpKSLexO0A6nA4AEhMTGTNmjVERUXVWlEiIiIicnqKSxy892My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4gruvvtuli1bxuLFi7ngggtqo0YREZGTKymCI7sq34+ZvtO5INCJWpUERJTrf3lM0PQPPelb5xTaeG35Dt7/MRmb3cDHbGLcOa2464J2hAVolVkREZEy1Q6gr732GoWFhQA89thjWK1Wfv75Z8aOHcvkyZNrvEAREREXuw0y95QLlzuOPs7aB4bj+Mf6hVWcKhvZ9uj02YAmp1SOw2Hw+e/7mLlgK4dziwAY1L4pj1/YmbbNdH+niIjIsaodQCMijt6/Yjabefjhh2u0IBERaeQcdmfILD9NtixkHtkNhv34x/oGVxy9LP89MLJGV5Ndu/sI07/dyF/7nCveJkYF8fiFnRjcoRkmrVorIiJSpWoHUIvFQkpKCs2aNauwPT09nWbNmmG3n+B/DI6xcuVK/vnPf7J27VpSUlL48ssvueSSS1yvG4bB1KlTeeedd8jMzKR///68+eabtGvXzrVPRkYGd955J99++y1ms5mxY8fy8ssvExysf3kWEfFaDodzWuyxC/+k73BOo3XYjn+sT8DRkHls0AxuVustS1KyCnhu/ha+WncAgGA/H+6+oB3jzmmFr496cYqIiJxItQOoYVR9D01RURG+vr7VOldeXh5nnHEGt9xyC5dddlml12fOnMkrr7zCBx98QGJiIo8//jjDhw9n06ZN+Pv7A3DdddeRkpLC4sWLsdls3HzzzYwfP545c+ZU96OJiEhNMgzISXWGymOD5pFkKCk8/rEWP4hIrHKFWUJiwVz3Qa/QZufdH3by+vIkCmx2TCa4slc89w/vQNMQvzqvR0REpD5yO4C+8sorAJhMJt59990KI4x2u52VK1fSsWPHar35yJEjGTlyZJWvGYbBSy+9xOTJk7n44osB+Pe//010dDRfffUVV199NZs3b2bBggWsWbOG3r17A/Dqq68yatQonn/+eeLi4qpVj4iIVJNhOFuVVLXwT8ZOsOUd/1izDzRpVe6ezHKjmaHNwWyps49xIoZhsGBDKk/P28y+IwUA9E5owtQxXejWIszD1YmIiNQvbgfQF198EXD+In7rrbewWI7+j4Gvry+tWrXirbfeqrHCkpOTSU1NZciQIa5tYWFh9O3bl1WrVnH11VezatUqwsPDXeETYMiQIZjNZn799VcuvfTSKs9dVFREUVGR63l2djYANpsNm+0E077qWFkt3lSTiLfS9VLL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9XLTTTdV+n0zYsQIzxQrUo8pgHqpTz75hEmTJjF16lR+//13zjjjDIYPH87Bgwc9XZqI1+nSpQspKSmurx9//NHTJYl4hby8PM444wxef/31Kl+fOXMmr7zyCm+99Ra//vorQUFBDB8+nMLCwjquVMTzTna9AIwYMaLC75uPP/64DisUaRh8PF2AVO1f//oXt912GzfffDMAb731Ft999x3vv/8+Dz/8sIerE/EuPj4+xMTEeLoMEa8zcuRIRo4cWeVrhmHw0ksvMXnyZC6++GIA/v3vfxMdHc1XX33F1VdfXZelinjcia6XMn5+fvp9I3KaNALqhYqLi1m7di1DhgxxbTObzQwZMoRVq1Z5sDIR77R9+3bi4uJo3bo11113HXv27PF0SSJeLzk5mdTU1Aq/a8LCwujbt69+14gcx4oVK2jWrBkdOnTgjjvuID093dMlidQ7CqBe6PDhw9jtdqKjoytsj46OJjU11UNViXinvn37Mnv2bBYsWMCbb75JcnIy5557Ljk5OZ4uTcSrlf0+0e8aEfeMGDGCf//73yxdupTnnnuO77//npEjR2K32z1dmki9oim4IlKvlZ8u1b17d/r27UtCQgKffvopt956qwcrExGRhqT8tPRu3brRvXt32rRpw4oVK7jgggs8WJlI/aIRUC8UFRWFxWIhLS2twva0tDTddyByEuHh4bRv354dO3Z4uhQRr1b2+0S/a0ROTevWrYmKitLvG5FqUgD1Qr6+vvTq1YulS5e6tjkcDpYuXUq/fv08WJmI98vNzSUpKYnY2FhPlyLi1RITE4mJianwuyY7O5tff/1Vv2tE3LBv3z7S09P1+0akmjQF10tNmjSJcePG0bt3b/r06cNLL71EXl6ea1VcEXG6//77GTNmDAkJCRw4cICpU6disVi45pprPF2aiMfl5uZWGJ1JTk5m3bp1RERE0LJlS+655x6eeuop2rVrR2JiIo8//jhxcXFccsklnitaxENOdL1EREQwffp0xo4dS0xMDElJSTz44IO0bduW4cOHe7BqkfpHAdRLXXXVVRw6dIgpU6aQmppKjx49WLBgQaXFIkQau3379nHNNdeQnp5O06ZNGTBgAL/88gtNmzb1dGkiHvfbb78xePBg1/NJkyYBMG7cOGbPns2DDz5IXl4e48ePJzMzkwEDBrBgwQL8/f09VbKIx5zoennzzTf566+/+OCDD8jMzCQuLo5hw4bx5JNP4ufn56mSReolk2EYhqeLEBERERERkYZP94CKiIiIiIhInVAAFRERERERkTqhACoiIiIiIiJ1QgFURERERERE6oQCqIiIiIiIiNQJBVARERERERGpEwqgIiIiIiIiUicUQEVERERERKROKICKiIjUghUrVmAymcjMzPR0KW6ZPXs24eHhJ9xn2rRp9OjR47TeZ9euXZhMJtatW3da5xERkfpJAVRERBq8Q4cO4evrS15eHjabjaCgIPbs2XPCY6ZNm4bJZMJkMuHj40OrVq249957yc3Ndes9zznnHFJSUggLC3O7zptuuolLLrnE7f1PZN++ffj6+tK1a9caOZ+IiEhNUAAVEZEGb9WqVZxxxhkEBQXx+++/ExERQcuWLU96XJcuXUhJSWHXrl0899xzvP3229x3331uvaevry8xMTGYTKbTLf+UzJ49myuvvJLs7Gx+/fVXj9QgIiJyLAVQERFp8H7++Wf69+8PwI8//uh6fDI+Pj7ExMTQokULrrrqKq677jq++eYbAIqKirjrrrto1qwZ/v7+DBgwgDVr1riOPXYKbtkU14ULF9KpUyeCg4MZMWIEKSkpgHPE9YMPPuDrr792jbyuWLGC4uJiJk6cSGxsLP7+/iQkJDBjxowT1m0YBrNmzeKGG27g2muv5b333qu0z+zZs2nZsiWBgYFceumlpKenV9rn2WefJTo6mpCQEG699VYKCwsr7fPuu+/SqVMn/P396dixI2+88UaF11evXk3Pnj3x9/end+/e/PHHHyf+oYuISIPm4+kCREREasOePXvo3r07APn5+VgsFmbPnk1BQQEmk4nw8HCuvfbaSoHpRAICAiguLgbgwQcf5H//+x8ffPABCQkJzJw5k+HDh7Njxw4iIiKqPD4/P5/nn3+eDz/8ELPZzPXXX8/999/PRx99xP3338/mzZvJzs5m1qxZAERERPDKK6/wzTff8Omnn9KyZUv27t3L3r17T1jn8uXLyc/PZ8iQITRv3pxzzjmHF198kaCgIAB+/fVXbr31VmbMmMEll1zCggULmDp1aoVzfPrpp0ybNo3XX3+dAQMG8OGHH/LKK6/QunVr1z4fffQRU6ZM4bXXXqNnz5788ccf3HbbbQQFBTFu3Dhyc3O58MILGTp0KP/5z39ITk7m7rvvdvvnLSIiDZAhIiLSANlsNiM5Odn4888/DavVavz555/Gjh07jODgYOP77783kpOTjUOHDh33+KlTpxpnnHGG6/lvv/1mREVFGZdffrmRm5trWK1W46OPPnK9XlxcbMTFxRkzZ840DMMwli9fbgDGkSNHDMMwjFmzZhmAsWPHDtcxr7/+uhEdHe16Pm7cOOPiiy+uUMedd95pnH/++YbD4XD7s1977bXGPffc43p+xhlnGLNmzXI9v+aaa4xRo0ZVOOaqq64ywsLCXM/79etn/OMf/6iwT9++fSv8TNq0aWPMmTOnwj5PPvmk0a9fP8MwDOP//u//jMjISKOgoMD1+ptvvmkAxh9//OH25xERkYZDU3BFRKRBKls4aMuWLZx11ll0796d1NRUoqOjGThwIK1atSIqKuqE51i/fj3BwcEEBATQp08f+vXrx2uvvUZSUhI2m63CVF6r1UqfPn3YvHnzcc8XGBhImzZtXM9jY2M5ePDgCWu46aabWLduHR06dOCuu+5i0aJFJ9w/MzOTL774guuvv9617frrr68wDXfz5s307du3wnH9+vWr8Pxk++Tl5ZGUlMStt95KcHCw6+upp54iKSnJdY7u3bvj7+9/3PcREZHGRVNwRUSkQerSpQu7d+/GZrPhcDgIDg6mpKSEkpISgoODSUhIYOPGjSc8R4cOHfjmm2/w8fEhLi4OX19fANLS0k6pJqvVWuG5yWTCMIwTHnPmmWeSnJzM/PnzWbJkCVdeeSVDhgzh888/r3L/OXPmUFhYWCE8GoaBw+Fg27ZttG/f/pRqP1bZasDvvPNOpaBqsVhq5D1ERKTh0QioiIg0SPPmzWPdunXExMTwn//8h3Xr1tG1a1deeukl1q1bx7x58056Dl9fX9q2bcv/t3f3II1scRjGX1MEwY8oIhoRjCioAZHoBIQgtnZBUgQFQdAUaSIoChItFAsNacQyRm1SiFgJwbGyCYiKRCWFIBI7tdBOEJF7qw1kc0HIXgZ29/nBKebMmf8MpxleDnPG5XIVwqckdXR0yG63K5PJFPo+Pz91cXEht9td9jPb7XZ9fX2V9NfW1ioYDCqRSGh/f1+Hh4d6fX39zxrJZFJzc3PKZrOFdn19raGhIe3s7EiSenp6SnbGPTs7Kzr+bkxTU5NaWlr08PCgzs7Ootbe3l6ocXNzU7R50c/3AQD8XVgBBQD8kdra2vT09KTn52f5/X5VVFQol8spEAjI6XT+Uu2qqiqFw2HNz88XfukSi8X0/v6uqampsuu6XC6Zpqm7uzs1NDTI4XBoa2tLTqdTHo9HNptNBwcHam5uVl1dXcn12WxWV1dXSqVS6u7uLjo3Njam1dVVra2tKRKJyOfzKR6Py+/3yzRNHR8fF42fmZnR5OSkDMOQz+dTKpVSLpcr2oRoZWVFkUhEDodDIyMj+vj40OXlpd7e3jQ7O6vx8XFFo1GFQiEtLi4qn88rHo+XPT8AgN8fK6AAgD/W6empvF6vKisrdX5+rtbW1l8Onz+sr68rEAhoYmJC/f39ur+/l2maqq+vL7tmKBRSV1eXDMNQY2OjMpmMampqFIvFZBiGvF6v8vm80um0bLbSV3gymZTb7S4Jn5I0Ojqql5cXpdNpDQ4OKpFIaHNzU319fTo5OdHS0lLR+GAwqOXlZS0sLGhgYECPj48Kh8NFY6anp7W9va3d3V319vZqeHhYe3t7hRXQ6upqHR0d6fb2Vh6PR9FoVBsbG2XPDwDg91fxz3cfnwAAAAAA8D9gBRQAAAAAYAkCKAAAAADAEgRQAAAAAIAlCKAAAAAAAEsQQAEAAAAAliCAAgAAAAAsQQAFAAAAAFiCAAoAAAAAsAQBFAAAAABgCQIoAAAAAMASBFAAAAAAgCX+BeyR0reuePT6AAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 1100x500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "cb459cde245c4930b72b16ba47041e22",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(IntSlider(value=500, continuous_update=False, description='Point Cloud Size', layout=Lay…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"<function __main__.draw_costs(cloudsize, addsize)>"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from ipywidgets import interact\n",
"from ipywidgets import interact_manual\n",
"import ipywidgets as ipw\n",
"\n",
"def quickhull_costs(cloud,extra_points):\n",
" for n in range(1,len(extra_points)):\n",
" hull = ConvexHullEx()\n",
" hull.add_points(cloud)\n",
"\n",
" PolygonEdge.distance.callcount=0\n",
" hull.add_points(extra_points[0:n])\n",
" yield PolygonEdge.distance.callcount\n",
"\n",
"def marching_costs(cloud,extra_points):\n",
" hull = ConvexHullEx()\n",
" hull.add_points(cloud)\n",
" PolygonEdge.distance.callcount=0\n",
"\n",
" for p in extra_points:\n",
" hull.add_point(p)\n",
" yield PolygonEdge.distance.callcount\n",
"\n",
"def draw_costs(cloudsize,addsize):\n",
" fig,ax = plt.subplots(1,1)\n",
" fig.set_size_inches(11,5)\n",
" ax.plot(list(marching_costs(point_cloud[0:cloudsize],extra_points[0:addsize])), label='Marching')\n",
" ax.plot(list(quickhull_costs(point_cloud[0:cloudsize],extra_points[0:addsize])), label='Quickhull')\n",
" ax.legend()\n",
" ax.set_xlabel('# Points Added')\n",
" ax.set_ylabel('# Distance Calulations')\n",
" ax.grid(True)\n",
" ax.xaxis.set_major_locator(plt.MultipleLocator(5))\n",
" ax.set_title('Cloud Size: %d' % cloudsize)\n",
"interact(draw_costs,\n",
" cloudsize=ipw.IntSlider(min = 1,\n",
" max = len(point_cloud),\n",
" step = 5,\n",
" value = 500,\n",
" continuous_update=False,\n",
" description = 'Point Cloud Size',\n",
" layout = ipw.Layout(width='80%'),\n",
" style = {'description_width' :'initial'}\n",
" ),\n",
" addsize=ipw.IntSlider(min = 1,\n",
" max = len(extra_points),\n",
" step = 1,\n",
" value = 20,\n",
" continuous_update=False,\n",
" description = 'Points to Add',\n",
" layout = ipw.Layout(width='80%'),\n",
" style = {'description_width' :'initial'}\n",
" )\n",
" )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Summary\n",
"\n",
"Experimentation with the sample data shows that the break-even point between adding points in bulk or\n",
"one-by-one in terms of number of distance calculations is typically somewhere between 5 and 20 points.\n",
"The exact position depends on the distribution of the points in space. For small point sets (< 5) it is most likely\n",
"advantageous to add point one-by-one (`add_point`) to an existing convex hull.\n",
"Larger point sets should be added in bulk (`add_points`). "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# About this Jupyter Notebook\n",
"\n",
"This Gist was created using the [Jupyter Lab](https://jupyter.org/) computational notebook with\n",
"the python3 kernel and following additional Python modules:"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"| Component | Version | Description |\n",
"| --------------------------------- | -------------------------- | -------------------- |\n",
"| [Python](https://www.python.org/) | 3.12.0 | Programming Language |\n",
"| [ipywidgets](http://jupyter.org) | 8.1.1 | Jupyter interactive widgets |\n",
"| [jnbBuffs](https://github.com/WetHat/jupyter-notebooks) | 0.1.10 | Utilities for authoring JupyterLab Python notebooks. |\n",
"| [jupyterlab](https://pypi.org/project/jupyterlab/) | 4.0.6 | JupyterLab computational environment |\n",
"| [matplotlib](https://matplotlib.org) | 3.8.0 | Python plotting package |\n",
"| [numpy](https://numpy.org) | 1.26.0 | Fundamental package for array computing in Python |"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from jnbBuffs.manifest import notebook_manifest\n",
"notebook_manifest('jupyterlab', 'numpy', 'jnbBuffs', 'matplotlib', 'ipywidgets')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.0"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": false,
"sideBar": false,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": false,
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment