46 "Class to provide Perlin noise functionalities.\n"
48 ".. method:: __init__(seed = -1)\n"
50 " Builds a Noise object. Seed is an optional argument. The seed value is used\n"
51 " as a seed for random number generation if it is equal to or greater than zero;\n"
52 " otherwise, time is used as a seed.\n"
54 " :arg seed: Seed for random number generation.\n"
59 static const char *kwlist[] = {
"seed",
nullptr};
62 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"|l", (
char **)kwlist, &
seed)) {
74 Py_TYPE(
self)->tp_free((PyObject *)
self);
79 return PyUnicode_FromFormat(
"Noise - address: %p",
self->n);
84 FrsNoise_turbulence1_doc,
85 ".. method:: turbulence1(v, freq, amp, oct=4)\n"
87 " Returns a noise value for a 1D element.\n"
89 " :arg v: One-dimensional sample point.\n"
91 " :arg freq: Noise frequency.\n"
92 " :type freq: float\n"
93 " :arg amp: Amplitude.\n"
95 " :arg oct: Number of octaves.\n"
97 " :return: A noise value.\n"
102 static const char *kwlist[] = {
"seed",
nullptr};
104 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"|I", (
char **)kwlist, &
seed)) {
105 PyErr_SetString(PyExc_TypeError,
"optional argument 1 must be of type int");
116 static const char *kwlist[] = {
"v",
"oct",
nullptr};
121 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"d|I", (
char **)kwlist, &x, &nbOctaves)) {
124 return PyFloat_FromDouble(
self->pn->turbulenceSmooth(x, nbOctaves));
129 static const char *kwlist[] = {
"v",
"freq",
"amp",
"oct",
nullptr};
133 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"fff|I", (
char **)kwlist, &f1, &f2, &f3, &i)) {
136 return PyFloat_FromDouble(
self->n->turbulence1(f1, f2, f3, i));
141 FrsNoise_turbulence2_doc,
142 ".. method:: turbulence2(v, freq, amp, oct=4)\n"
144 " Returns a noise value for a 2D element.\n"
146 " :arg v: Two-dimensional sample point.\n"
147 " :type v: :class:`mathutils.Vector` | tuple[float, float] | list[float]\n"
148 " :arg freq: Noise frequency.\n"
149 " :type freq: float\n"
150 " :arg amp: Amplitude.\n"
151 " :type amp: float\n"
152 " :arg oct: Number of octaves.\n"
154 " :return: A noise value.\n"
159 static const char *kwlist[] = {
"v",
"freq",
"amp",
"oct",
nullptr};
165 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"Off|I", (
char **)kwlist, &obj1, &f2, &f3, &i)) {
169 PyErr_SetString(PyExc_TypeError,
170 "argument 1 must be a 2D vector (either a list of 2 elements or Vector)");
173 float t =
self->n->turbulence2(vec, f2, f3, i);
174 return PyFloat_FromDouble(t);
179 FrsNoise_turbulence3_doc,
180 ".. method:: turbulence3(v, freq, amp, oct=4)\n"
182 " Returns a noise value for a 3D element.\n"
184 " :arg v: Three-dimensional sample point.\n"
185 " :type v: :class:`mathutils.Vector` | tuple[float, float, float] | list[float]\n"
186 " :arg freq: Noise frequency.\n"
187 " :type freq: float\n"
188 " :arg amp: Amplitude.\n"
189 " :type amp: float\n"
190 " :arg oct: Number of octaves.\n"
192 " :return: A noise value.\n"
197 static const char *kwlist[] = {
"v",
"freq",
"amp",
"oct",
nullptr};
203 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"Off|I", (
char **)kwlist, &obj1, &f2, &f3, &i)) {
207 PyErr_SetString(PyExc_TypeError,
208 "argument 1 must be a 3D vector (either a list of 3 elements or Vector)");
211 float t =
self->n->turbulence3(vec, f2, f3, i);
212 return PyFloat_FromDouble(t);
217 FrsNoise_smoothNoise1_doc,
218 ".. method:: smoothNoise1(v)\n"
220 " Returns a smooth noise value for a 1D element.\n"
222 " :arg v: One-dimensional sample point.\n"
224 " :return: A smooth noise value.\n"
229 static const char *kwlist[] = {
"v",
nullptr};
232 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"f", (
char **)kwlist, &f)) {
235 return PyFloat_FromDouble(
self->n->smoothNoise1(f));
240 FrsNoise_smoothNoise2_doc,
241 ".. method:: smoothNoise2(v)\n"
243 " Returns a smooth noise value for a 2D element.\n"
245 " :arg v: Two-dimensional sample point.\n"
246 " :type v: :class:`mathutils.Vector` | tuple[float, float] | list[float]\n"
247 " :return: A smooth noise value.\n"
252 static const char *kwlist[] = {
"v",
nullptr};
256 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"O", (
char **)kwlist, &obj)) {
260 PyErr_SetString(PyExc_TypeError,
261 "argument 1 must be a 2D vector (either a list of 2 elements or Vector)");
264 float t =
self->n->smoothNoise2(vec);
265 return PyFloat_FromDouble(t);
270 FrsNoise_smoothNoise3_doc,
271 ".. method:: smoothNoise3(v)\n"
273 " Returns a smooth noise value for a 3D element.\n"
275 " :arg v: Three-dimensional sample point.\n"
276 " :type v: :class:`mathutils.Vector` | tuple[float, float, float] | list[float]\n"
277 " :return: A smooth noise value.\n"
282 static const char *kwlist[] = {
"v",
nullptr};
286 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"O", (
char **)kwlist, &obj)) {
290 PyErr_SetString(PyExc_TypeError,
291 "argument 1 must be a 3D vector (either a list of 3 elements or Vector)");
294 float t =
self->n->smoothNoise3(vec);
295 return PyFloat_FromDouble(t);
301 METH_VARARGS | METH_KEYWORDS,
302 FrsNoise_turbulence1_doc},
305 METH_VARARGS | METH_KEYWORDS,
306 FrsNoise_turbulence2_doc},
309 METH_VARARGS | METH_KEYWORDS,
310 FrsNoise_turbulence3_doc},
313 METH_VARARGS | METH_KEYWORDS,
314 FrsNoise_smoothNoise1_doc},
317 METH_VARARGS | METH_KEYWORDS,
318 FrsNoise_smoothNoise2_doc},
321 METH_VARARGS | METH_KEYWORDS,
322 FrsNoise_smoothNoise3_doc},
323 {
"rand", (PyCFunction)
FrsNoise_drand, METH_VARARGS | METH_KEYWORDS,
nullptr},
324 {
"turbulence_smooth",
326 METH_VARARGS | METH_KEYWORDS,
328 {
nullptr,
nullptr, 0,
nullptr},
334 PyVarObject_HEAD_INIT(
nullptr, 0)
353 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
bool Vec3f_ptr_from_PyObject(PyObject *obj, Vec3f &vec)
bool Vec2f_ptr_from_PyObject(PyObject *obj, Vec2f &vec)
static PyObject * FrsNoise_repr(BPy_FrsNoise *self)
static PyObject * FrsNoise_turbulence2(BPy_FrsNoise *self, PyObject *args, PyObject *kwds)
static void FrsNoise_dealloc(BPy_FrsNoise *self)
int FrsNoise_Init(PyObject *module)
static PyObject * FrsNoise_turbulence_smooth(BPy_FrsNoise *self, PyObject *args, PyObject *kwds)
static PyObject * FrsNoise_smoothNoise3(BPy_FrsNoise *self, PyObject *args, PyObject *kwds)
PyDoc_STRVAR(FrsNoise_doc, "Class to provide Perlin noise functionalities.\n" "\n" ".. method:: __init__(seed = -1)\n" "\n" " Builds a Noise object. Seed is an optional argument. The seed value is used\n" " as a seed for random number generation if it is equal to or greater than zero;\n" " otherwise, time is used as a seed.\n" "\n" " :arg seed: Seed for random number generation.\n" " :type seed: int")
static PyObject * FrsNoise_turbulence3(BPy_FrsNoise *self, PyObject *args, PyObject *kwds)
PyTypeObject FrsNoise_Type
static PyObject * FrsNoise_drand(BPy_FrsNoise *, PyObject *args, PyObject *kwds)
static PyObject * FrsNoise_smoothNoise1(BPy_FrsNoise *self, PyObject *args, PyObject *kwds)
static PyObject * FrsNoise_turbulence1(BPy_FrsNoise *self, PyObject *args, PyObject *kwds)
static PyObject * FrsNoise_smoothNoise2(BPy_FrsNoise *self, PyObject *args, PyObject *kwds)
static PyMethodDef BPy_FrsNoise_methods[]
static int FrsNoise_init(BPy_FrsNoise *self, PyObject *args, PyObject *kwds)
Pseudo-random number generator.
static unsigned long seed
static void srand48(long seedval)
static struct PyModuleDef module