{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Geometrie" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "## Konvexe Hülle\n", "\n", "SciPy's [spatial Modul](http://docs.scipy.org/doc/scipy-dev/reference/spatial.html)\n", "beinhaltet zum Beispiel eine Methode um die [konvexe Hülle](http://docs.scipy.org/doc/scipy-dev/reference/generated/scipy.spatial.ConvexHull.html) von Punkten finden zu können.\n", "Es ist ein front-end für [QHull](http://www.qhull.org/)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([15, 21, 60, 73, 39, 96, 0, 44, 19], dtype=int32)" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "from scipy.spatial import ConvexHull\n", "\n", "pts = np.random.normal(size=(100,2))\n", "chull = ConvexHull(pts)\n", "chull.vertices" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "for simplex in chull.simplices:\n", " plt.plot(pts[simplex, 0], pts[simplex, 1], \"g-\", lw=2, zorder=1)\n", "plt.scatter(pts[:,0], pts[:,1], zorder=2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Sympy Geometry Module" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Setting permissions of DOT_SAGE directory so only you can read and write it.\n" ] } ], "source": [ "import sympy as sy\n", "from sympy.geometry import Point, Segment, Circle, Line, Triangle" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x = Point(0, 0)\n", "y = Point(1, 1)\n", "z = Point(2, 2)\n", "zp = Point(1, 0) " ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Point.is_collinear(x, y, z)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Point.is_collinear(x, y, zp)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "seg1 = Segment(x, z)\n", "seg2 = Segment(y, zp)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[Point(1, 1)]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "seg1.intersection(seg2)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "Point(1, 1)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "seg1.midpoint" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [], "source": [ "c = Circle(x, 5)\n", "l = Line(Point(5, -5), Point(5, 5)) " ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c.is_tangent(l)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[Point(-sqrt(61)/5 + 16/5, -2*sqrt(61)/5 - 8/5),\n", " Point(sqrt(61)/5 + 16/5, -8/5 + 2*sqrt(61)/5)]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l2 = Line(Point(2, -4), Point(3, -2))\n", "c.intersection(l2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ " " ] } ], "metadata": { "kernelspec": { "display_name": "Anaconda (Python 3)", "language": "python", "name": "anaconda3" }, "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.5.1" } }, "nbformat": 4, "nbformat_minor": 0 }