Blender V4.3
eigenvalues.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2015 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#ifndef __EIGEN3_EIGENVALUES_C_API_CC__
6#define __EIGEN3_EIGENVALUES_C_API_CC__
7
8/* Eigen gives annoying huge amount of warnings here, silence them! */
9#if defined(__GNUC__) && !defined(__clang__)
10# pragma GCC diagnostic ignored "-Wlogical-op"
11#endif
12
13#include <Eigen/Core>
14#include <Eigen/Eigenvalues>
15
16#include "eigenvalues.h"
17
18using Eigen::SelfAdjointEigenSolver;
19
20using Eigen::Map;
21using Eigen::MatrixXf;
22using Eigen::VectorXf;
23
24using Eigen::Success;
25
26bool EIG_self_adjoint_eigen_solve(const int size,
27 const float *matrix,
28 float *r_eigen_values,
29 float *r_eigen_vectors)
30{
31 SelfAdjointEigenSolver<MatrixXf> eigen_solver;
32
33 /* Blender and Eigen matrices are both column-major. */
34 eigen_solver.compute(Map<MatrixXf>((float *)matrix, size, size));
35
36 if (eigen_solver.info() != Success) {
37 return false;
38 }
39
40 if (r_eigen_values) {
41 Map<VectorXf>(r_eigen_values, size) = eigen_solver.eigenvalues().transpose();
42 }
43
44 if (r_eigen_vectors) {
45 Map<MatrixXf>(r_eigen_vectors, size, size) = eigen_solver.eigenvectors();
46 }
47
48 return true;
49}
50
51#endif /* __EIGEN3_EIGENVALUES_C_API_CC__ */
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Map
bool EIG_self_adjoint_eigen_solve(const int size, const float *matrix, float *r_eigen_values, float *r_eigen_vectors)