37 PyDoc_STRVAR(M_bl_math_doc,
"Miscellaneous math utilities module");
46 ".. function:: clamp(value, min=0, max=1)\n"
48 " Clamps the float value between minimum and maximum. To avoid\n"
49 " confusion, any call must use either one or all three arguments.\n"
51 " :arg value: The value to clamp.\n"
52 " :type value: float\n"
53 " :arg min: The minimum value, defaults to 0.\n"
55 " :arg max: The maximum value, defaults to 1.\n"
57 " :return: The clamped value.\n"
61 double x, minv = 0.0, maxv = 1.0;
63 if (PyTuple_Size(args) <= 1) {
64 if (!PyArg_ParseTuple(args,
"d:clamp", &
x)) {
69 if (!PyArg_ParseTuple(args,
"ddd:clamp", &
x, &minv, &maxv)) {
76 return PyFloat_FromDouble(
x);
80 ".. function:: lerp(from, to, factor)\n"
82 " Linearly interpolate between two float values based on factor.\n"
84 " :arg from: The value to return when factor is 0.\n"
85 " :type from: float\n"
86 " :arg to: The value to return when factor is 1.\n"
88 " :arg factor: The interpolation value, normally in [0.0, 1.0].\n"
89 " :type factor: float\n"
90 " :return: The interpolated value.\n"
95 if (!PyArg_ParseTuple(args,
"ddd:lerp", &
a, &b, &
x)) {
99 return PyFloat_FromDouble(
a * (1.0 -
x) + b *
x);
103 py_bl_math_smoothstep_doc,
104 ".. function:: smoothstep(from, to, value)\n"
106 " Performs smooth interpolation between 0 and 1 as value changes between from and to.\n"
107 " Outside the range the function returns the same value as the nearest edge.\n"
109 " :arg from: The edge value where the result is 0.\n"
110 " :type from: float\n"
111 " :arg to: The edge value where the result is 1.\n"
113 " :arg factor: The interpolation value.\n"
114 " :type factor: float\n"
115 " :return: The interpolated value in [0.0, 1.0].\n"
120 if (!PyArg_ParseTuple(args,
"ddd:smoothstep", &
a, &b, &
x)) {
124 double t = (
x -
a) / (b -
a);
128 return PyFloat_FromDouble(
t *
t * (3.0 - 2.0 *
t));
138 {
"clamp", (PyCFunction)
py_bl_math_clamp, METH_VARARGS, py_bl_math_clamp_doc},
139 {
"lerp", (PyCFunction)
py_bl_math_lerp, METH_VARARGS, py_bl_math_lerp_doc},
145 PyModuleDef_HEAD_INIT,
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
Group RGB to Bright Vector Camera CLAMP
static struct PyModuleDef M_bl_math_module_def
static PyObject * py_bl_math_smoothstep(PyObject *UNUSED(self), PyObject *args)
static PyObject * py_bl_math_clamp(PyObject *UNUSED(self), PyObject *args)
static PyObject * py_bl_math_lerp(PyObject *UNUSED(self), PyObject *args)
PyDoc_STRVAR(M_bl_math_doc, "Miscellaneous math utilities module")
static PyMethodDef M_bl_math_methods[]
PyMODINIT_FUNC BPyInit_bl_math(void)