{ "cells": [ { "cell_type": "markdown", "source": [ "# Convex hull and intersection" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "### Introduction" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "These examples illustrate common operations on polyhedra using [Polyhedra.jl](https://github.com/JuliaPolyhedra/Polyhedra.jl):\n", "\n", "- The convex hull of the union of polytopes\n", "- The intersection of polytopes\n", "\n", "We start by choosing a polyhedral library that will be used for computing the H-representation from the V-representation and vice-versa as well as removing redundant points.\n", "In these example, we use the default library available in Polyhedra but it can be replaced by any other library listed [here](https://juliapolyhedra.github.io/), e.g. by changing the last two lines below by `import CDDLib` and `lib = CDDLib.Library()` to use [CDDLib](https://github.com/JuliaPolyhedra/CDDLib.jl)." ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "DefaultLibrary{Float64}(GLPK.Optimizer)" }, "metadata": {}, "execution_count": 1 } ], "cell_type": "code", "source": [ "using Polyhedra\n", "import GLPK\n", "lib = DefaultLibrary{Float64}(GLPK.Optimizer)" ], "metadata": {}, "execution_count": 1 }, { "cell_type": "markdown", "source": [ "### Convex hull\n", "\n", "The binary convex hull operation between two polyhedra is obtained with the [`convexhull`](https://juliapolyhedra.github.io/Polyhedra.jl/latest/utilities.html#Polyhedra.convexhull) function.\n", "\n", "Below we compute the convex hull of the union of two polygons from their V-representation." ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "Polyhedron DefaultPolyhedron{Float64, MixedMatHRep{Float64, Matrix{Float64}}, MixedMatVRep{Float64, Matrix{Float64}}}:\n10-element iterator of Vector{Float64}:\n [-1.9, -1.7]\n [-1.8, 0.5]\n [1.7, 0.7]\n [1.9, -0.3]\n [0.9, -1.1]\n [-2.5, -1.1]\n [-0.8, 0.8]\n [0.1, 0.9]\n [1.8, -1.2]\n [1.3, 0.1]" }, "metadata": {}, "execution_count": 2 } ], "cell_type": "code", "source": [ "P1 = polyhedron(vrep([\n", " -1.9 -1.7\n", " -1.8 0.5\n", " 1.7 0.7\n", " 1.9 -0.3\n", " 0.9 -1.1\n", "]), lib)\n", "\n", "P2 = polyhedron(vrep([\n", " -2.5 -1.1\n", " -0.8 0.8\n", " 0.1 0.9\n", " 1.8 -1.2\n", " 1.3 0.1\n", "]), lib)\n", "\n", "Pch = convexhull(P1, P2)" ], "metadata": {}, "execution_count": 2 }, { "cell_type": "markdown", "source": [ "Note that the convex hull operation is done in the V-representation so no representation conversion is needed for this operation since `P1` and `P2` where constructed from their V-representation:" ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "(false, false, false)" }, "metadata": {}, "execution_count": 3 } ], "cell_type": "code", "source": [ "hrepiscomputed(P1), hrepiscomputed(P2), hrepiscomputed(Pch)" ], "metadata": {}, "execution_count": 3 }, { "cell_type": "markdown", "source": [ "Let us note that the `convexhull` of a V-representation contains points and rays and represents the convex hull of the points together with the conic hull of the rays. So, `convexhull(P1, P2)` does the union of the vertices:" ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "10" }, "metadata": {}, "execution_count": 4 } ], "cell_type": "code", "source": [ "npoints(Pch)" ], "metadata": {}, "execution_count": 4 }, { "cell_type": "markdown", "source": [ "However, if we want to remove the redundant points we can use `removevredundancy!`:" ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "8" }, "metadata": {}, "execution_count": 5 } ], "cell_type": "code", "source": [ "removevredundancy!(Pch)\n", "npoints(Pch)" ], "metadata": {}, "execution_count": 5 }, { "cell_type": "markdown", "source": [ "We can plot the polygons and the convex hull of their union using the `plot` function. For further plotting options see the [Plots.jl](http://docs.juliaplots.org/latest/) documentation.\n", "We can see below the 8 redundant points highlighted with green dots, the two points that are not highlighted are the redundant ones." ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "Plot{Plots.GRBackend() n=4}", "image/png": "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TyOEHnjggaNHjz777LN+Lyok3F/UG2+8cdu2bbt27fJ7OeFRqVREURQEASE0PDycy+VGRkb6+/tXvSPsCFut+kISbihKkuTjesLEfQCAhnjzzTe3bt3qvr1169Y33njD3/WECfyiNoksy973tlwuC4Kg63o9d4Sfh28qlcru3bu/853vwKMCBNDJkye7u7vdtzOZzPj4OKXU3yUBUCfG2K5du775zW8mEol6Ph6egpsil8uJSzz00EPeB1BK77zzzmw2e//99/u4zrbz1ltvLf3GiqL4/vvv+720sBFF0bvYISHEO+IEQMBxzu+9994zZ87UP54XzhptiuPHj9f4VzcFZ2dnf/e738FVHNdky5YtYb0UbdD09/efOHHCfXt0dDSbzcLpzaAtfPvb3z58+PCrr75a53FRBDvC1mOMff3rX5+YmPjtb38L58iAwNq+ffsLL7zgnkz3/PPPb9++3e8VAbC6+++///XXX3/ppZdM06z/XnDWaKu98MILX/rSlz7xiU9Eo1H3lhdffLGe85rAqqanp7du3Wrb9gcffPDJT34yk8ns27fP70W1q+np6WuuuWZgYMAwjHfffffgwYO5XM7vRYXEww8/vG/fvo8//jgej2cymT179njnJYGNGBoauvbaa8877zwvBX/5y19efvnlq94RgrDVTp8+ffTo0epbLrnkEtgaNgQh5E9/+pP3riRJUAPfCNu29+/f7zjODTfcsKa/r0Ftx44dO3XqlPfuueeem0wmfVxPaOTz+Y8++qj6lgsuuMAwjFXvCEEIAACgo8FrhAAAADoaBCEAAICOBkEIAACgo0EQAgAA6GgQhAAAADoaBCEAAICOBkEIAACgo0EQAgAA6GgQhAAAADoaBCEAAICOBkEIAACgo/0/LM8GyGpl0q4AAAAASUVORK5CYII=", "text/html": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "execution_count": 6 } ], "cell_type": "code", "source": [ "using Plots\n", "plot(P1, color=\"blue\", alpha=0.2)\n", "plot!(P2, color=\"red\", alpha=0.2)\n", "plot!(Pch, color=\"green\", alpha=0.1)\n", "scatter!(Pch, color=\"green\")" ], "metadata": {}, "execution_count": 6 }, { "cell_type": "markdown", "source": [ "### Intersection\n", "\n", "Intersection of polyhedra is obtained with the [`intersect`](https://juliapolyhedra.github.io/Polyhedra.jl/latest/utilities.html#Base.intersect) function.\n", "\n", "Below we compute the intersection of the two polygons from the previous example." ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "Polyhedron DefaultPolyhedron{Float64, MixedMatHRep{Float64, Matrix{Float64}}, MixedMatVRep{Float64, Matrix{Float64}}}:\n10-element iterator of HalfSpace{Float64, Vector{Float64}}:\n HalfSpace([0.8000000000000002, -1.0], 1.8200000000000003)\n HalfSpace([0.1076999257241891, -0.5025996533795494], 0.6497895518692746)\n HalfSpace([0.8620689655172415, 0.17241379310344826], 1.5862068965517244)\n HalfSpace([-0.0206611570247934, 0.36157024793388426], 0.21797520661157027)\n HalfSpace([-0.1050586220524305, 0.0047753919114740745], 0.19149321565011207)\n HalfSpace([0.6666666666666667, 1.0], 0.9666666666666668)\n HalfSpace([0.2977099236641222, 0.11450381679389314], 0.39847328244274816)\n HalfSpace([-0.11904761904761907, 1.0714285714285714], 0.9523809523809523)\n HalfSpace([-0.293965961835998, 0.26302217637957714], 0.44559051057246)\n HalfSpace([-0.004026150808106025, -0.17312448474855732], 0.20050231024367798)" }, "metadata": {}, "execution_count": 7 } ], "cell_type": "code", "source": [ "Pint = intersect(P1, P2)" ], "metadata": {}, "execution_count": 7 }, { "cell_type": "markdown", "source": [ "While `P1` and `P2` have been constructed from their V-representation, their H-representation has been computed to build the intersection `Pint`." ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "(true, true, true, true)" }, "metadata": {}, "execution_count": 8 } ], "cell_type": "code", "source": [ "hrepiscomputed(P1), vrepiscomputed(P1), hrepiscomputed(P2), vrepiscomputed(P2)" ], "metadata": {}, "execution_count": 8 }, { "cell_type": "markdown", "source": [ "On the other hand, `Pint` is constructed from its H-representation hence its V-representation has not been computed yet." ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "(true, false)" }, "metadata": {}, "execution_count": 9 } ], "cell_type": "code", "source": [ "hrepiscomputed(Pint), vrepiscomputed(Pint)" ], "metadata": {}, "execution_count": 9 }, { "cell_type": "markdown", "source": [ "We can obtain the number of points in the intersection with `npoints` as follows:" ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "8" }, "metadata": {}, "execution_count": 10 } ], "cell_type": "code", "source": [ "npoints(Pint)" ], "metadata": {}, "execution_count": 10 }, { "cell_type": "markdown", "source": [ "Note that this triggers the computation of the V-representation:" ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "(true, true)" }, "metadata": {}, "execution_count": 11 } ], "cell_type": "code", "source": [ "hrepiscomputed(Pint), vrepiscomputed(Pint)" ], "metadata": {}, "execution_count": 11 }, { "cell_type": "markdown", "source": [ "We can plot the polygons and their intersection using the `plot` function." ], "metadata": {} }, { "outputs": [ { "output_type": "execute_result", "data": { "text/plain": "Plot{Plots.GRBackend() n=3}", "image/png": "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", "text/html": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "execution_count": 12 } ], "cell_type": "code", "source": [ "using Plots\n", "plot(P1, color=\"blue\", alpha=0.2)\n", "plot!(P2, color=\"red\", alpha=0.2)\n", "plot!(Pint, color=\"yellow\", alpha=0.6)" ], "metadata": {}, "execution_count": 12 }, { "cell_type": "markdown", "source": [ "---\n", "\n", "*This notebook was generated using [Literate.jl](https://github.com/fredrikekre/Literate.jl).*" ], "metadata": {} } ], "nbformat_minor": 3, "metadata": { "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.11.3" }, "kernelspec": { "name": "julia-1.11", "display_name": "Julia 1.11.3", "language": "julia" } }, "nbformat": 4 }