# pyvista.perlin_noise#

perlin_noise(amplitude, freq: , phase: )[source]#

Return the implicit function that implements Perlin noise.

Uses `vtk.vtkPerlinNoise` and computes a Perlin noise field as an implicit function. `vtk.vtkPerlinNoise` is a concrete implementation of `vtk.vtkImplicitFunction`. Perlin noise, originally described by Ken Perlin, is a non-periodic and continuous noise function useful for modeling real-world objects.

The amplitude and frequency of the noise pattern are adjustable. This implementation of Perlin noise is derived closely from Greg Ward’s version in Graphics Gems II.

Parameters:
amplitude`float`

Amplitude of the noise function.

`amplitude` can be negative. The noise function varies randomly between `-|Amplitude|` and `|Amplitude|`. Therefore the range of values is `2*|Amplitude|` large. The initial amplitude is 1.

freq

The frequency, or physical scale, of the noise function (higher is finer scale).

The frequency can be adjusted per axis, or the same for all axes.

phase

Set/get the phase of the noise function.

This parameter can be used to shift the noise function within space (perhaps to avoid a beat with a noise pattern at another scale). Phase tends to repeat about every unit, so a phase of 0.5 is a half-cycle shift.

Returns:
`vtk.vtkPerlinNoise`

Instance of `vtk.vtkPerlinNoise` to a Perlin noise field as an implicit function. Use with `pyvista.sample_function()`.

Examples

Create a Perlin noise function with an amplitude of 0.1, frequency for all axes of 1, and a phase of 0 for all axes.

```>>> import pyvista as pv
>>> noise = pv.perlin_noise(0.1, (1, 1, 1), (0, 0, 0))
```

Sample Perlin noise over a structured grid and plot it.

```>>> grid = pv.sample_function(noise, [0, 5, 0, 5, 0, 5])
>>> grid.plot()
```