{ "info": { "author": "A. Svensson", "author_email": "lmasvensson@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering :: Mathematics" ], "description": "################################################################################\nOpenSimplex Noise\n################################################################################\n|build-status| |coverage-status|\n\n OpenSimplex noise is an n-dimensional gradient noise function that was\n developed in order to overcome the patent-related issues surrounding\n Simplex noise, while continuing to also avoid the visually-significant\n directional artifacts characteristic of Perlin noise.\n\nThis is merely a python port of Kurt Spencer's original code, released to the\npublic domain, and neatly wrapped up in a package.\n\nUSAGE\n================================================================================\nInitialization:\n--------------------------------------------------------------------------------\n\n>>> from opensimplex import OpenSimplex\n>>> tmp = OpenSimplex()\n>>> print (tmp.noise2d(x=10, y=10))\n0.732051569572\n\nOptionally, the class accepts a seed value:\n\n>>> tmp = OpenSimplex(seed=1)\n>>> print (tmp.noise2d(x=10, y=10))\n-0.4790979022623557\n\nThe seed must be a valid python number. It's used internally to generate some\npermutation arrays, which is used for the noise generation.\n\nIf it isn't provided the class will **default to use 0 as the seed**.\n\nAvailable class methods:\n--------------------------------------------------------------------------------\n\nOpenSimplex.noise2d(x, y)\n Generate 2D OpenSimplex noise from X,Y coordinates.\n\nOpenSimplex.noise3d(x, y, z)\n Generate 3D OpenSimplex noise from X,Y,Z coordinates.\n\nOpenSimplex.noise4d(x, y, z, w)\n Generate 4D OpenSimplex noise from X,Y,Z,W coordinates.\n\nRunning tests and benchmarks:\n--------------------------------------------------------------------------------\n\nFirst make a virtualenv and install the dev. requirements:\n\n virtualenv venv\n source venv/bin/activate\n pip install -r requirements.txt\n\nand then simply run the tests:\n\n make test\n\nor the basic benchmark:\n make benchmark\n\nFAQ\n================================================================================\n- Is this relevantly different enough to avoid any real trouble with the original patent?\n\n If you read the `patent claims`_:\n\n Claim #1 talks about the hardware-implementation-optimized gradient generator. Most software implementations of Simplex Noise don't use this anyway, and OpenSimplex Noise certainly doesn't.\n\n Claim #2(&3&4) talk about using (x',y',z')=(x+s,y+s,z+s) where s=(x+y+z)/3 to transform the input (render space) coordinate onto a simplical grid, with the intention to make all of the \"scissor-simplices\" approximately regular. OpenSimplex Noise (in 3D) uses s=-(x+y+z)/6 to transform the input point to a point on the Simplectic honeycomb lattice so that the simplices bounding the (hyper)cubes at (0,0,..,0) and (1,1,...,1) work out to be regular. It then mathematically works out that s=(x+y+z)/3 is needed for the inverse transform, but that's performing a different (and opposite) function.\n\n Claim #5(&6) are specific to the scissor-simplex lattice. Simplex Noise divides the (squashed) n-dimensional (hyper)cube into n! simplices based on ordered edge traversals, whereas OpenSimplex Noise divides the (stretched) n-dimensional (hyper)cube into n polytopes (simplices, rectified simplices, birectified simplices, etc.) based on the separation (hyper)planes at integer values of (x'+y'+z'+...).\n\n Another interesting point is that, if you read all of the claims, none of them appear to apply to the 2D analogue of Simplex noise so long as it uses a gradient generator separate from the one described in claim #1. The skew function in Claim #2 only applies to 3D, and #5 explicitly refers to n>=3.\n\n And none of the patent claims speak about using surflets / \"spherically symmetric kernels\" to generate the \"images with texture that do not have visible grid artifacts,\" which is probably the biggest similarity between the two algorithms.\n\n - **Kurt**, on Reddit_.\n\nCREDITS\n================================================================================\n- Kurt Spencer - Original work\n- A Svensson - Python port and package author\n- CreamyCookie - Cleanup and optimizations\n\nLICENSE\n================================================================================\nWhile the original work was released to the public domain by Kurt, this package\nis using the MIT license. Please see the file LICENSE for details.\n\nExpected Output\n================================================================================\n2D noise (with default seed):\n\n.. image:: images/noise2d.png\n :height: 100\n :width: 100\n\n3D noise:\n\n.. image:: images/noise3d.png\n :height: 100\n :width: 100\n\n4D noise:\n\n.. image:: images/noise4d.png\n :height: 100\n :width: 100\n\n\n.. _Reddit: https://www.reddit.com/r/proceduralgeneration/comments/2gu3e7/like_perlins_simplex_noise_but_dont_like_the/ckmqz2y\n.. _`patent claims`: http://www.google.com/patents/US6867776\n.. |build-status| image:: https://travis-ci.org/lmas/opensimplex.svg?branch=master\n :target: https://travis-ci.org/lmas/opensimplex\n.. |coverage-status| image:: https://coveralls.io/repos/github/lmas/opensimplex/badge.svg?branch=master \n :target: https://coveralls.io/github/lmas/opensimplex?branch=master", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/lmas/opensimplex/releases", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/lmas/opensimplex", "keywords": "opensimplex simplex noise 2D 3D 4D", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "opensimplex", "package_url": "https://pypi.org/project/opensimplex/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/opensimplex/", "project_urls": { "Download": "https://github.com/lmas/opensimplex/releases", "Homepage": "https://github.com/lmas/opensimplex" }, "release_url": "https://pypi.org/project/opensimplex/0.2/", "requires_dist": null, "requires_python": "", "summary": "OpenSimplex n-dimensional gradient noise function.", "version": "0.2" }, "last_serial": 2177833, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "f6481cfd7a8bf391ba5693042f75636f", "sha256": "8db362782f8aaa574e32fec2fd38b69b961cac7d10431093e28d97289ff796bd" }, "downloads": -1, "filename": "opensimplex-0.1.tar.gz", "has_sig": false, "md5_digest": "f6481cfd7a8bf391ba5693042f75636f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12800, "upload_time": "2015-04-19T17:07:27", "url": "https://files.pythonhosted.org/packages/72/f5/f32ae00a0644c51966e950348eb18641333741b42d6211331847bb6de9e9/opensimplex-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "06987b8b88c2d1d8b3f5dc45ae6051a0", "sha256": "53f12be10faecd6158b406b7af3a66f992435c3b86fca6041f5a14c7979e172b" }, "downloads": -1, "filename": "opensimplex-0.2.tar.gz", "has_sig": false, "md5_digest": "06987b8b88c2d1d8b3f5dc45ae6051a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13350, "upload_time": "2016-06-20T20:22:21", "url": "https://files.pythonhosted.org/packages/b9/28/25649c7258dd530aaf9a5c8a4bffeb08e6293ed3d4b671d44b985e8c28fa/opensimplex-0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "06987b8b88c2d1d8b3f5dc45ae6051a0", "sha256": "53f12be10faecd6158b406b7af3a66f992435c3b86fca6041f5a14c7979e172b" }, "downloads": -1, "filename": "opensimplex-0.2.tar.gz", "has_sig": false, "md5_digest": "06987b8b88c2d1d8b3f5dc45ae6051a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13350, "upload_time": "2016-06-20T20:22:21", "url": "https://files.pythonhosted.org/packages/b9/28/25649c7258dd530aaf9a5c8a4bffeb08e6293ed3d4b671d44b985e8c28fa/opensimplex-0.2.tar.gz" } ] }