diff options
Diffstat (limited to 'source/blender/freestyle/intern/geometry/normal_cycle.cpp')
-rw-r--r-- | source/blender/freestyle/intern/geometry/normal_cycle.cpp | 75 |
1 files changed, 37 insertions, 38 deletions
diff --git a/source/blender/freestyle/intern/geometry/normal_cycle.cpp b/source/blender/freestyle/intern/geometry/normal_cycle.cpp index e0ef1ddfe12..25a39619a04 100644 --- a/source/blender/freestyle/intern/geometry/normal_cycle.cpp +++ b/source/blender/freestyle/intern/geometry/normal_cycle.cpp @@ -38,57 +38,56 @@ namespace OGF { //_________________________________________________________ - NormalCycle::NormalCycle() { } void NormalCycle::begin() { - M_[0] = M_[1] = M_[2] = M_[3] = M_[4] = M_[5] = 0; + M_[0] = M_[1] = M_[2] = M_[3] = M_[4] = M_[5] = 0; } void NormalCycle::end() { - double eigen_vectors[9]; - MatrixUtil::semi_definite_symmetric_eigen(M_, 3, eigen_vectors, eigen_value_); - - axis_[0] = Vec3r(eigen_vectors[0], eigen_vectors[1], eigen_vectors[2]); - - axis_[1] = Vec3r(eigen_vectors[3], eigen_vectors[4], eigen_vectors[5]); - - axis_[2] = Vec3r(eigen_vectors[6], eigen_vectors[7], eigen_vectors[8]); - - // Normalize the eigen vectors - for (int i = 0; i < 3; i++) { - axis_[i].normalize(); - } - - // Sort the eigen vectors - i_[0] = 0; - i_[1] = 1; - i_[2] = 2; - - double l0 = ::fabs(eigen_value_[0]); - double l1 = ::fabs(eigen_value_[1]); - double l2 = ::fabs(eigen_value_[2]); - - if (l1 > l0) { - ogf_swap(l0, l1 ); - ogf_swap(i_[0], i_[1]); - } - if (l2 > l1) { - ogf_swap(l1, l2 ); - ogf_swap(i_[1], i_[2]); - } - if (l1 > l0) { - ogf_swap(l0, l1 ); - ogf_swap(i_[0], i_[1]); - } + double eigen_vectors[9]; + MatrixUtil::semi_definite_symmetric_eigen(M_, 3, eigen_vectors, eigen_value_); + + axis_[0] = Vec3r(eigen_vectors[0], eigen_vectors[1], eigen_vectors[2]); + + axis_[1] = Vec3r(eigen_vectors[3], eigen_vectors[4], eigen_vectors[5]); + + axis_[2] = Vec3r(eigen_vectors[6], eigen_vectors[7], eigen_vectors[8]); + + // Normalize the eigen vectors + for (int i = 0; i < 3; i++) { + axis_[i].normalize(); + } + + // Sort the eigen vectors + i_[0] = 0; + i_[1] = 1; + i_[2] = 2; + + double l0 = ::fabs(eigen_value_[0]); + double l1 = ::fabs(eigen_value_[1]); + double l2 = ::fabs(eigen_value_[2]); + + if (l1 > l0) { + ogf_swap(l0, l1); + ogf_swap(i_[0], i_[1]); + } + if (l2 > l1) { + ogf_swap(l1, l2); + ogf_swap(i_[1], i_[2]); + } + if (l1 > l0) { + ogf_swap(l0, l1); + ogf_swap(i_[0], i_[1]); + } } //_________________________________________________________ -} // OGF namespace +} // namespace OGF } /* namespace Freestyle */ |