mat3: std::array<std::pair<float, vec3>, 3> eigen() const

Return three eigenvalues and eigenvectors of the symmetric matrix.

The method used to calculate these eigenvalues and eigenvectors can be found here.

Example

#include "include/mat3.h"
#include <iostream>

int main() {
        nml::mat3 m = nml::mat3::identity();
        std::array<std::pair<float, nml::vec3>, 3> eigen = m.eigen();
        std::cout << eigen[0].first << " - " << nml::to_string(eigen[0].second) << std::endl;
        std::cout << eigen[1].first << " - " << nml::to_string(eigen[1].second) << std::endl;
        std::cout << eigen[2].first << " - " << nml::to_string(eigen[2].second) << std::endl;

        return 0;
}

Result:

1 - [1.000000, 0.000000, 0.000000]
1 - [0.000000, 1.000000, 0.000000]
1 - [0.000000, 0.000000, 1.000000]