{ "info": { "author": "Jos\u00e9 Antonio Fern\u00e1ndez-Fern\u00e1ndez", "author_email": "joseantfer.engineer@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "README\r\n======\r\n\r\n.. contents::\r\n :local:\r\n\r\n*pyny3d* in `GitHub `__\r\n\r\nAbstract\r\n--------\r\n*pyny3d* is a Python3 *tyny* 3D tool for build and generate information from\r\nsimple and light geometry models based on polygons. Furthermore, it is possible\r\nto perform solar shading simulations and timeseries data projections \r\n(radiation, for example) over them. The whole library can be used interactively\r\nor coded autonomously or alongside with other codes.\r\n\r\nIt is built on top of numpy, scipy, matplotlib and shapely. It uses two \r\nwell-known 2D geometry objects (`matplotlib.Path.path` and \r\n`shapely.geometry.Polygon`) to safely compute a wide range of planar operations\r\nat reasonable speed, without the need for the user to worry about the low-level\r\nworkflow.\r\n\r\nIt has been designed to be a tool for scientific and engineering applications.\r\nIt could hardly be useful in other areas such as computer graphics.\r\n\r\nHello World Code Snippet\r\n------------------------\r\nVery simple example using some basic funtionalities:\r\n\r\n.. code:: python\r\n\r\n import numpy as np\r\n import pyny3d.geoms as pyny\r\n\r\n # Geometry creation\r\n ## Polygons by their vertices\r\n base = np.array([[0,0], [10,0], [10,10], [0,10]]) # Base square on the floor\r\n pillar = np.array([[4,4,8], [6,4,8], [6,6,8], [4,6,8]]) # Top obtacle polygon (to extrude)\r\n ## Obstacle\r\n place = pyny.Place(base)\r\n place.add_extruded_obstacles(pillar)\r\n space = pyny.Space(place)\r\n\r\n # Shadows\r\n S = space.shadows(init='auto', resolution='high')\r\n\r\n # Viz\r\n S.viz.exposure_plot()\r\n\r\n.. image:: https://github.com/JoseAntFer/pyny3d/raw/master/cover.png?raw=true\r\n :align: center\r\n :scale: 70%\r\n\r\nMiscelaneous\r\n------------\r\nDisclaimer\r\n~~~~~~~~~~\r\n`pyny3d` is developing in a educational and reseach environment by \r\ncivil engineers in order to create a **very easy to use and intuitive**\r\nlibrary. For these reason, I do not recommend to use it in applications\r\nwhere geometries could be very complex or if the performance is a determinant \r\nfactor.\r\n\r\nOn the other hand, it is actually a great tool for prototype more general\r\npurpose programs, working inside them to automate operations on 3D geometries\r\n(like translations, rotations, arbitrary projections, shading...) and then \r\nreturn this information back.\r\n\r\nRequirements\r\n~~~~~~~~~~~~\r\n* Python >=3.x\r\n* Shapely >=1.5.x \r\n* matplotlib >=1.5.x \r\n* scipy >=0.17.x \r\n* numpy >=1.10.x \r\n\r\nInstalling pyny3d\r\n~~~~~~~~~~~~~~~~~\r\nUse the pip install way: ``$ pip install pyny3d``\r\n \r\nRoadmap and Maintenance\r\n~~~~~~~~~~~~~~~~~~~~~~~\r\n`pyny3d` is far from be the full-featured and optimized library I expect. \r\nReleasing v0.1 allows me to start receiving feedback from users and will help\r\nme to continue developing better and faster.\r\n\r\nOn the other hand, I want to advice that the inclusion of non-straight lines\r\nor non-planar surfaces are not expected. In the same way, all the computations\r\nwill be guaranteed only for convex polygons and bodies.\r\n\r\nUpcoming improvements\r\n~~~~~~~~~~~~~~~~~~~~~\r\n\r\n * ``.stretch()`` method.\r\n * Compute volumes and areas.\r\n * Extrude polyhedra on arbitrary directions.\r\n * Rotate about arbitrary axes.\r\n\r\nBugs\r\n~~~~\r\n\r\n * Overlapping plots (`Official matplotlib explanation\r\n `_)\r\n\r\n Visualizations generated with `matplotlib` frequently have overlapping\r\n problems. This is because `matplotlib` initially was not designed to be a\r\n great 3D graph plotter. When it is required to plot a 2D projection of a \r\n 3D multi-body representation, it has problems to figure out which objects\r\n are in front and which ones are behind. It is important to remark that this\r\n is only a visualization problem that DO NOT affects internal 'pyny3d'\r\n calculations, indeed, all the `plot` commands are no-return paths.\r\n \r\n I am studying to implement `Mayavi` to solve that problem and, at the same\r\n time, increase the quality and the possiblities of `pyny3d` plots. But, for\r\n now, in order to keep the intallation and usage as simple as possible for\r\n the users, I will keep `matplotlib` as the only visualization tool.", "description_content_type": null, "docs_url": "https://pythonhosted.org/pyny3d/", "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/JoseAntFer/pyny3d", "keywords": "geometry shading 3D photovoltaic", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pyny3d", "package_url": "https://pypi.org/project/pyny3d/", "platform": "", "project_url": "https://pypi.org/project/pyny3d/", "project_urls": { "Homepage": "https://github.com/JoseAntFer/pyny3d" }, "release_url": "https://pypi.org/project/pyny3d/0.2/", "requires_dist": null, "requires_python": null, "summary": "Engineering-oriented tool to interactively build, work and perform shading simulations with 3D geometries.", "version": "0.2" }, "last_serial": 2461354, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "987e8543e90baed8879921f2db6be279", "sha256": "961102833c55986595987588fb6e43d5fa2bfc294c535edf3ace8f147b609ae3" }, "downloads": -1, "filename": "pyny3d-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "987e8543e90baed8879921f2db6be279", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29059, "upload_time": "2016-04-11T18:56:34", "url": "https://files.pythonhosted.org/packages/83/6b/d0d03152a47f1dec05d02839a185deac66c355295b4df02000047f14a989/pyny3d-0.1-py3-none-any.whl" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "ab130301be4f67dbf97225afebc07060", "sha256": "260f0d673db661bad8850a899068ada1e9e4144bec0f83356560f4ea5875cb8a" }, "downloads": -1, "filename": "pyny3d-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ab130301be4f67dbf97225afebc07060", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29160, "upload_time": "2016-04-18T09:15:40", "url": "https://files.pythonhosted.org/packages/fb/6c/16d5466c456f2864885ad9eb485bc3c605942c2c6c8b647c7d60af73bf92/pyny3d-0.1.1-py3-none-any.whl" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "6f147468b3ff21a6b827a9a068113380", "sha256": "ddfa0b5586cabaa1098303fbbe1f8ade3a071368f0259fdc484a074900cfe127" }, "downloads": -1, "filename": "pyny3d-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6f147468b3ff21a6b827a9a068113380", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 29939, "upload_time": "2016-11-15T07:58:03", "url": "https://files.pythonhosted.org/packages/29/fe/edbb2cdb3d55c40ffabd69888aba78640937a7af893b7566c0f7b49c2d2e/pyny3d-0.2.1-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6f147468b3ff21a6b827a9a068113380", "sha256": "ddfa0b5586cabaa1098303fbbe1f8ade3a071368f0259fdc484a074900cfe127" }, "downloads": -1, "filename": "pyny3d-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6f147468b3ff21a6b827a9a068113380", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 29939, "upload_time": "2016-11-15T07:58:03", "url": "https://files.pythonhosted.org/packages/29/fe/edbb2cdb3d55c40ffabd69888aba78640937a7af893b7566c0f7b49c2d2e/pyny3d-0.2.1-py3-none-any.whl" } ] }