A robust open source implementation of Perlin Noise Algorithm for N-Dimensions
Reason this release was yanked:
maintainer linkdin profile pointed to wrong link
Project description
nPerlinNoise
A robust open source implementation of Perlin Noise Algorithm for N-Dimensions in Python.
- A powerful and fast API for n-dimensional noise.
- Easy hyper-parameters selection of octaves, lacunarity and persistence as well as complex and customizable hyper-parameters for n-dimension frequency, waveLength, warp(interpolation) and range.
- Includes various helpful tools for noise generation and for procedural generation tasks such as customizable Gradient, Color Gradients, Warp classes.
- Implements custom PRNG generator for n-dimension and can be easily tuned.
Details:
- Technology stack:
Status:
v0.1.3-alpha
Improving docs
All Packages: releases
CHANGELOGTested on Python 3.10, Windows 10
- Future work:
optimization for higher dimensions and single value coordinates
Screenshots:
Dependencies
Python>=3.10.0
for production dependencies see Requirements
for development dependencies see Dev-Requirements
Installation
for detailed instruction on installation see INSTALLATION.
Usage
-
import nPerlinNoise as nPN noise = nPN.Noise(seed=69420) # get noise values at given n-dimensional coordinates by calling noise with those coords # coordinates can be single value, or an iterable # noise(..., l, m, n, ...) where l, m, n, ... are single numeric values # or # noise(...., [l1, l2, ..., lx], [m1, m2, ..., mx], [n1, n2, ..., nx], ....) # where .... are iterable of homogeneous-dimensions # the output will be of same shape of input homogeneous-dimensions noise(73) # 0.5207113 noise(73, 11, 7) # 0.5700986 noise(0, 73, 7, 11, 0, 3) # 5222712 noise([73, 49]) # [0.52071124, 0.6402224] noise([73, 49], [2, 2]) # [0.4563121 , 0.63378346] noise([[73], [49], [0]], [[2], [2], [2]], [[0], [1], [2]]) # -> [[0.4563121], # [0.6571784], # [0.16369209]] noise([[1, 2], [2, 3]], [[1, 1], [1, 1]], [[2, 2], [2, 2]]) # -> [[0.08666219, 0.09778494], # [0.09778494, 0.14886124]] # noise(..., l, m, n, ...) has same values with trailing dimensions having zero as coordinate # i.e noise(..., l, m, n) = noise(..., l, m, n, 0) = noise(..., l, m, n, 0, 0) = noise(..., l, m, n, 0, 0, ...) noise(73) # 0.5207113 noise(73, 0) # 0.5207113 noise(73, 0, 0) # 0.5207113
for detailed usage see EXAMPLE
How to test the software
- To test overalls run main
- To test Logical consistency run testLogic
- To test Profile Benchmarking run testProfile
- To test Visuals run testVisuals
- To test Colors run testCol
to see all tests see Tests
Known issues
No Known Bugs
NPerlin.findBounds is bottleneck
noise(a, b, c, d, e, f, ...) is slow for single value coordinates
Getting help
If you have questions, concerns, bug reports, etc. please file an issue in this repository's Issue Tracker or open a discussion in this repository's Discussion section.
Getting involved
Looking for Contributors for WebApps
Looking for Contributors for Documentation
Looking for Contributors for feature additions
Looking for Contributors for optimization
- Fork the repository and issue a PR to contribute
General instructions on how to contribute CONTRIBUTING.
Open source licensing info
Credits and references
- Inspired from The Coding Train -> perlin noise
- hash function by xxhash inspired the rand3 algo and ultimately helped for O(1) time complexity n-dimensional random generator NPrng
- StackOverflow for helping on various occasions throughout the development
Maintainer:
Amith M |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for nPerlinNoise-0.1.3a2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3fa67a0ddf6c3e5617be59e7051132500896b169a1eff184e783d3f3ccd1752 |
|
MD5 | 8911ee88695f9b8b45c2ef2f375b245e |
|
BLAKE2b-256 | 5c5391099b664490576750190671ff9c6b2753f75b48a8ce8170da173727a3ba |