VTK  9.1.0
vtkLICNoiseHelper.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4
5 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
6 All rights reserved.
7 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
8
9 This software is distributed WITHOUT ANY WARRANTY; without even
10 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11 PURPOSE. See the above copyright notice for more information.
12
13=========================================================================*/
19#ifndef vtkLICNoiseHelper_h
20#define vtkLICNoiseHelper_h
21#ifndef __VTK_WRAP__
22
23#include "vtkRenderingLICOpenGL2Module.h" // for export
24
26
27class vtkImageData;
28
36{
37public:
39
41
45 void SetSeed(int seedVal) { this->RNG->SetSeed(seedVal); }
46
51 {
52 double val = this->RNG->GetValue();
53 this->RNG->Next();
54 return val;
55 }
56
57private:
58 void operator=(const vtkLICRandomNumberGeneratorInterface&) = delete;
60
61private:
63};
64
72{
73public:
75
77
94 enum
95 {
98 PERLIN = 2
99 };
100 float* Generate(int type, int& sideLen, int& grainLize, float minNoiseVal, float maxNoiseVal,
101 int nLevels, double impulseProb, float impulseBgNoiseVal, int seed);
103
107 void DeleteValues(unsigned char* vals) { free(vals); }
108
110
111private:
115 float* GenerateUniform(int sideLen, int grainLize, float minNoiseVal, float maxNoiseVal,
116 int nLevels, double impulseProb, float impulseBgNoiseVal, int seed);
117
121 float* GenerateGaussian(int sideLen, int grainLize, float minNoiseVal, float maxNoiseVal,
122 int nLevels, double impulseProb, float impulseBgNoiseVal, int seed);
123
127 float* GeneratePerlin(int sideLen, int grainLize, float minNoiseVal, float maxNoiseVal,
128 int nLevels, double impulseProb, float impulseBgNoiseVal, int seed);
129
136 int ShouldGenerateValue(double prob);
137
143 void GetValidDimensionAndGrainSize(int type, int& dim, int& grainSize);
144
145private:
148};
149
150#endif
151#endif
152// VTK-HeaderTest-Exclude: vtkLICNoiseHelper.h
topologically and geometrically regular array of data
Definition: vtkImageData.h:157
2D Noise Generator.
void DeleteValues(unsigned char *vals)
Delete the passed in array of values.
vtkLICRandomNoise2D()=default
static vtkImageData * GetNoiseResource()
float * Generate(int type, int &sideLen, int &grainLize, float minNoiseVal, float maxNoiseVal, int nLevels, double impulseProb, float impulseBgNoiseVal, int seed)
Generate a patch of random gray scale values along with an alpha channel (in vtk array format).
An interface to a random number generator.
double GetRandomNumber()
Get a random number in the range of 0 to 1.
void SetSeed(int seedVal)
Seed the random number generator.
Park and Miller Sequence of pseudo random numbers.
double GetValue() override
Current value.
void Next() override
Move to the next number in the random sequence.
static vtkMinimalStandardRandomSequence * New()
Standard methods for instantiation, type information, and printing.
void SetSeed(int value)
Set the seed of the random sequence.
virtual void Delete()
Delete a VTK object.