|
Blender V4.3
|
Go to the source code of this file.
Functions | |
Eigen Solvers | |
| bool | BLI_eigen_solve_selfadjoint_m3 (const float m3[3][3], float r_eigen_values[3], float r_eigen_vectors[3][3]) |
| Compute the eigen values and/or vectors of given 3D symmetric (aka adjoint) matrix. | |
| void | BLI_svd_m3 (const float m3[3][3], float r_U[3][3], float r_S[3], float r_V[3][3]) |
| Compute the SVD (Singular Values Decomposition) of given 3D matrix (m3 = USV*). | |
Simple Solvers | |
| typedef void(* | Newton3D_DeltaFunc) (void *userdata, const float x[3], float r_delta[3]) |
| typedef void(* | Newton3D_JacobianFunc) (void *userdata, const float x[3], float r_jacobian[3][3]) |
| typedef bool(* | Newton3D_CorrectionFunc) (void *userdata, const float x[3], float step[3], float x_next[3]) |
| bool | BLI_tridiagonal_solve (const float *a, const float *b, const float *c, const float *d, float *r_x, int count) |
| Solve a tridiagonal system of equations: | |
| bool | BLI_tridiagonal_solve_cyclic (const float *a, const float *b, const float *c, const float *d, float *r_x, int count) |
| Solve a possibly cyclic tridiagonal system using the Sherman-Morrison formula. | |
| bool | BLI_newton3d_solve (Newton3D_DeltaFunc func_delta, Newton3D_JacobianFunc func_jacobian, Newton3D_CorrectionFunc func_correction, void *userdata, float epsilon, int max_iterations, bool trace, const float x_init[3], float result[3]) |
| Solve a generic f(x) = 0 equation using Newton's method. | |
| typedef bool(* Newton3D_CorrectionFunc) (void *userdata, const float x[3], float step[3], float x_next[3]) |
Definition at line 80 of file BLI_math_solvers.h.
Generic 3 variable Newton's method solver.
Definition at line 78 of file BLI_math_solvers.h.
Definition at line 79 of file BLI_math_solvers.h.
| bool BLI_eigen_solve_selfadjoint_m3 | ( | const float | m3[3][3], |
| float | r_eigen_values[3], | ||
| float | r_eigen_vectors[3][3] ) |
Compute the eigen values and/or vectors of given 3D symmetric (aka adjoint) matrix.
| m3 | the 3D symmetric matrix. |
Definition at line 25 of file math_solvers.c.
References BLI_assert, and EIG_self_adjoint_eigen_solve().
Referenced by mesh_calc_eigen_matrix().
| bool BLI_newton3d_solve | ( | Newton3D_DeltaFunc | func_delta, |
| Newton3D_JacobianFunc | func_jacobian, | ||
| Newton3D_CorrectionFunc | func_correction, | ||
| void * | userdata, | ||
| float | epsilon, | ||
| int | max_iterations, | ||
| bool | trace, | ||
| const float | x_init[3], | ||
| float | result[3] ) |
Solve a generic f(x) = 0 equation using Newton's method.
| func_delta | Callback computing the value of f(x). |
| func_jacobian | Callback computing the Jacobian matrix of the function at x. |
| func_correction | Callback for forcing the search into an arbitrary custom domain. May be NULL. |
| userdata | Data for the callbacks. |
| epsilon | Desired precision. |
| max_iterations | Limit on the iterations. |
| trace | Enables logging to console. |
| x_init | Initial solution vector. |
| result | Final result. |
Definition at line 154 of file math_solvers.c.
References CLAMP_MIN, copy_v3_v3(), invert_m3(), l, len_squared_v3(), len_v3(), mul_v3_fl(), mul_v3_m3v3(), printf, sqrtf, and sub_v3_v3v3().
Referenced by target_project_solve_point_tri().
Compute the SVD (Singular Values Decomposition) of given 3D matrix (m3 = USV*).
| m3 | the matrix to decompose. |
Definition at line 40 of file math_solvers.c.
References EIG_svd_square_matrix().
Referenced by mat3_polar_decompose().
| bool BLI_tridiagonal_solve | ( | const float * | a, |
| const float * | b, | ||
| const float * | c, | ||
| const float * | d, | ||
| float * | r_x, | ||
| int | count ) |
Solve a tridiagonal system of equations:
a[i] * r_x[i-1] + b[i] * r_x[i] + c[i] * r_x[i+1] = d[i]
Ignores a[0] and c[count-1]. Uses the Thomas algorithm, e.g. see wiki.
| r_x | output vector, may be shared with any of the input ones |
Definition at line 47 of file math_solvers.c.
References b, count, double(), float, MEM_freeN(), and MEM_mallocN.
Referenced by BLI_tridiagonal_solve_cyclic(), TEST(), and TEST().
| bool BLI_tridiagonal_solve_cyclic | ( | const float * | a, |
| const float * | b, | ||
| const float * | c, | ||
| const float * | d, | ||
| float * | r_x, | ||
| int | count ) |
Solve a possibly cyclic tridiagonal system using the Sherman-Morrison formula.
| r_x | output vector, may be shared with any of the input ones |
Definition at line 91 of file math_solvers.c.
References b, BLI_tridiagonal_solve(), count, float, MEM_freeN(), and MEM_mallocN.
Referenced by TEST(), TEST(), TEST(), and tridiagonal_solve_with_limits().