diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2012-12-22 22:25:01 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2012-12-22 22:25:01 +0400 |
commit | fa0211df269a3398dd70467982f9e129c79e501b (patch) | |
tree | 404ee267890602b49470cb640986b50d2c2055c1 /source/blender/freestyle/intern/geometry/normal_cycle.cpp | |
parent | 8b57a67f3eb57366c2b3abcb8f3b04403d339e1a (diff) |
Another "insanely" big code clean-up patch by Bastien Montagne, many thanks!
Diffstat (limited to 'source/blender/freestyle/intern/geometry/normal_cycle.cpp')
-rw-r--r-- | source/blender/freestyle/intern/geometry/normal_cycle.cpp | 169 |
1 files changed, 91 insertions, 78 deletions
diff --git a/source/blender/freestyle/intern/geometry/normal_cycle.cpp b/source/blender/freestyle/intern/geometry/normal_cycle.cpp index 3a697d54731..2f0aa268c9f 100644 --- a/source/blender/freestyle/intern/geometry/normal_cycle.cpp +++ b/source/blender/freestyle/intern/geometry/normal_cycle.cpp @@ -1,87 +1,100 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * This Code is Copyright (C) 2010 Blender Foundation. + * All rights reserved. + * + * The Original Code is: + * OGF/Graphite: Geometry and Graphics Programming Library + Utilities + * Copyright (C) 2000 Bruno Levy + * Contact: Bruno Levy + * levy@loria.fr + * ISA Project + * LORIA, INRIA Lorraine, + * Campus Scientifique, BP 239 + * 54506 VANDOEUVRE LES NANCY CEDEX + * FRANCE + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ -// -// Copyright (C) : Please refer to the COPYRIGHT file distributed -// with this source distribution. -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// -/////////////////////////////////////////////////////////////////////////////// -#include "normal_cycle.h" -#include "matrix_util.h" +/** \file blender/freestyle/intern/geometry/normal_cycle.cpp + * \ingroup freestyle + * \author Bruno Levy + */ +#include "matrix_util.h" +#include "normal_cycle.h" namespace OGF { //_________________________________________________________ - - - NormalCycle::NormalCycle() { - } - - void NormalCycle::begin() { - 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]) ; - } - - } -//_________________________________________________________ +NormalCycle::NormalCycle() +{ } + +void NormalCycle::begin() +{ + 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]); + } +} + +//_________________________________________________________ + +} // OGF namespace |