2 #ifndef vnl_scatter_3x3_hxx_ 3 #define vnl_scatter_3x3_hxx_ 13 # include <vcl_msvc_warnings.h> 21 , eigenvectors_currentp(false)
29 for (
int i = 0; i < 3; ++i) {
31 for (
int j = i+1; j < 3; ++j) {
44 for (
int i = 0; i < 3; ++i)
45 for (
int j = 0; j < 3; ++j)
54 for (
int i = 0; i < 3; ++i) {
56 for (
int j = i+1; j < 3; ++j) {
69 for (
int i = 0; i < 3; ++i)
70 for (
int j = 0; j < 3; ++j)
81 for (
int i = 0; i < 3; ++i)
82 for (
int j = i+1; j < 3; ++j) {
83 T vbar = (S(i,j) + S(j,i)) / 2;
84 S(i,j) = S(j,i) = vbar;
98 std::cerr <<
"Asymmetric scatter not handled now\n";
101 eigenvectors_currentp =
true;
106 #define VNL_SCATTER_3X3_INSTANTIATE(T) \ 107 template class VNL_ALGO_EXPORT vnl_scatter_3x3<T > 109 #endif // vnl_scatter_3x3_hxx_ void sub_outer_product(const vnl_vector_fixed< T, 3 > &v)
Subtract v*v' from scatter.
const vnl_matrix< T > as_matrix() const
Convert to a vnl_matrix.
void compute_eigensystem()
Compute the eigensystem of S.
vnl_matrix< T > const & as_ref() const
Return a reference to this.
An ordinary mathematical matrix.
void add_outer_product(const vnl_vector_fixed< T, 3 > &v)
Add v*v' to scatter.
void force_symmetric()
Replace S with $(S+S^\top)/2$.
Find eigenvalues of a symmetric matrix.
vnl_scatter_3x3()
Constructor. Fills with zeros.
bool vnl_symmetric_eigensystem_compute(vnl_matrix< T > const &A, vnl_matrix< T > &V, vnl_vector< T > &D)
Find eigenvalues of a symmetric matrix.