[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38794] branches/soc-2011-avocado/blender/ intern/autoseam: Cleanup:
Andrea Weikert
elubie at gmx.net
Thu Jul 28 20:18:55 CEST 2011
Revision: 38794
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38794
Author: elubie
Date: 2011-07-28 18:18:55 +0000 (Thu, 28 Jul 2011)
Log Message:
-----------
Cleanup:
* Converting spaces to tabs. Shuvro, please set your editor to use tabs for indentation!
* svn properties
Modified Paths:
--------------
branches/soc-2011-avocado/blender/intern/autoseam/AutoseamAdjacency.cpp
branches/soc-2011-avocado/blender/intern/autoseam/AutoseamAdjacency.h
branches/soc-2011-avocado/blender/intern/autoseam/AutoseamUtility.cpp
branches/soc-2011-avocado/blender/intern/autoseam/EigenSolver.cpp
branches/soc-2011-avocado/blender/intern/autoseam/EigenSolver.h
branches/soc-2011-avocado/blender/intern/autoseam/EigenSolverArpack.cpp
branches/soc-2011-avocado/blender/intern/autoseam/EigenSolverArpack.h
Property Changed:
----------------
branches/soc-2011-avocado/blender/intern/autoseam/EigenSolver.cpp
branches/soc-2011-avocado/blender/intern/autoseam/EigenSolver.h
branches/soc-2011-avocado/blender/intern/autoseam/EigenSolverArpack.cpp
branches/soc-2011-avocado/blender/intern/autoseam/EigenSolverArpack.h
Modified: branches/soc-2011-avocado/blender/intern/autoseam/AutoseamAdjacency.cpp
===================================================================
--- branches/soc-2011-avocado/blender/intern/autoseam/AutoseamAdjacency.cpp 2011-07-28 15:51:59 UTC (rev 38793)
+++ branches/soc-2011-avocado/blender/intern/autoseam/AutoseamAdjacency.cpp 2011-07-28 18:18:55 UTC (rev 38794)
@@ -52,8 +52,8 @@
{
m_adjacency = MatrixXd::Zero(dimension, dimension);
m_index_map_vector.resize(dimension, -1);
- mul_vec = Eigen::VectorXd(dimension);
- matrix_dimension = dimension;
+ mul_vec = Eigen::VectorXd(dimension);
+ matrix_dimension = dimension;
//threshold_value = min_value;
}
@@ -61,7 +61,6 @@
{
m_adjacency(row, col) = value;
m_adjacency(col, row) = value;
-
}
void AutoseamAdjacency::set_min_value(float min_value)
@@ -123,34 +122,34 @@
bool AutoseamAdjacency::generate_seam()
{
-
- double *eigen_vectors;
+
+ double *eigen_vectors;
MatrixXd& a = m_adjacency;
clear_eigenspaces();
-
-
+
+
int n = a.rows();
-
+
for (int i=0; i<n;++i) {
a(i,i) = 0.0;
double rowsum = a.row(i).sum();
a(i,i) = -rowsum;
}
-
- //eigen_vectors = calculate_eigen_arpack();
-
+
+ //eigen_vectors = calculate_eigen_arpack();
+
- // Need to modify the errors of the commented code.
-
- EigenSolverArpack solver(matrix_dimension);
- solver.matrix = a;
- eigen_vectors = solver.calculate_eigen_space();
+ // Need to modify the errors of the commented code.
-
- //dssimp_();
+ EigenSolverArpack solver(matrix_dimension);
+ solver.matrix = a;
+ eigen_vectors = solver.calculate_eigen_space();
- if(a.rows() && a.cols() && eigen_vectors != NULL){
+
+ //dssimp_();
+
+ if(a.rows() && a.cols() && eigen_vectors != NULL){
//Eigen::SelfAdjointEigenSolver<MatrixXd> es(a);
//Eigen::VectorXd evalues(es.eigenvalues());
@@ -161,34 +160,34 @@
MatrixXd aminus;
//while ( (f < num_eigen_values)) {
- while ( (f < solver.num_eigen_vectors)) {
+ while ( (f < solver.num_eigen_vectors)) {
// Eigenvalues seem to be sorted largest to smallest, we need the 30 smallest
// in the future only those will be calculated by the algorithm (if we use ARPACK)
- //if(fabs(eigen_values[n-f-1]) > 0.0005){
- //if(fabs(eigen_values[f]) > 0.0005){
-
- printf("eigen values: %f\n", fabs(solver.eigen_values[f]));
- if(fabs(solver.eigen_values[f]) > 0.0005){
-
- int loop;
- //now construct a vector with the values
- Eigen::VectorXd eigen_vector = Eigen::VectorXd(matrix_dimension);
-
- for(loop = 0; loop < matrix_dimension; loop++){
- // This hardcoded value will be removed later
- eigen_vector(loop) = *(eigen_vectors + f*matrix_dimension + loop);
- }
-
+ //if(fabs(eigen_values[n-f-1]) > 0.0005){
+ //if(fabs(eigen_values[f]) > 0.0005){
+
+ printf("eigen values: %f\n", fabs(solver.eigen_values[f]));
+ if(fabs(solver.eigen_values[f]) > 0.0005){
+ int loop;
+ //now construct a vector with the values
+ Eigen::VectorXd eigen_vector = Eigen::VectorXd(matrix_dimension);
+
+ for(loop = 0; loop < matrix_dimension; loop++){
+ // This hardcoded value will be removed later
+ eigen_vector(loop) = *(eigen_vectors + f*matrix_dimension + loop);
+ }
+
+
//AutoseamEigenspace* aes = new AutoseamEigenspace(evalues[n-f-1], es.eigenvectors().col(n-f-1));
- //AutoseamEigenspace* aes = new AutoseamEigenspace(eigen_values[f], eigen_vector);
- AutoseamEigenspace* aes = new AutoseamEigenspace(solver.eigen_values[f], eigen_vector);
+ //AutoseamEigenspace* aes = new AutoseamEigenspace(eigen_values[f], eigen_vector);
+ AutoseamEigenspace* aes = new AutoseamEigenspace(solver.eigen_values[f], eigen_vector);
// split Eigenspace into two subspaces F+ and F- where the ith entry in the eigenvector is positive/negative
aes->split();
aes->fill_adjacency(a, aplus, aminus);
-// printf("four values are: %d %d %d %d", aplus.rows(), aplus.cols(), aminus.rows(), aminus.cols());
+ // printf("four values are: %d %d %d %d", aplus.rows(), aplus.cols(), aminus.rows(), aminus.cols());
// We filter out eigenspaces that give non-connected F+ and F- as in the paper
if ((is_graph_connected(aplus, threshold_value) && is_graph_connected(aminus, threshold_value))) {
m_eigenspaces.push_back(aes);
@@ -201,12 +200,12 @@
}
f++;
}
-
- MEM_freeN(eigen_vectors);
+
+ MEM_freeN(eigen_vectors);
return found;
}
-
- MEM_freeN(eigen_vectors);
+
+ MEM_freeN(eigen_vectors);
return 0;
}
@@ -216,7 +215,7 @@
}
void AutoseamAdjacency::get_split(int n, int *fplus, unsigned int* nplus, int* fminus, unsigned int* nminus)
-{
+{
int i;
int face_index;
@@ -283,4 +282,4 @@
AutoseamEigenspace* aes = m_eigenspaces[i];
aes->debug(fout);
}
-}
\ No newline at end of file
+}
Modified: branches/soc-2011-avocado/blender/intern/autoseam/AutoseamAdjacency.h
===================================================================
--- branches/soc-2011-avocado/blender/intern/autoseam/AutoseamAdjacency.h 2011-07-28 15:51:59 UTC (rev 38793)
+++ branches/soc-2011-avocado/blender/intern/autoseam/AutoseamAdjacency.h 2011-07-28 18:18:55 UTC (rev 38794)
@@ -55,18 +55,18 @@
float get_value(int row, int col);
void debug(std::ofstream& fout);
-
+
private:
Eigen::MatrixXd m_adjacency;
std::vector<AutoseamEigenspace*> m_eigenspaces;
std::vector<int> m_index_map_vector;
float threshold_value;
//map<int,int> m_index_map;
- Eigen::VectorXd mul_vec;
- int num_eigen_values;
- int matrix_dimension;
-
-
+ Eigen::VectorXd mul_vec;
+ int num_eigen_values;
+ int matrix_dimension;
+
+
};
#endif
Modified: branches/soc-2011-avocado/blender/intern/autoseam/AutoseamUtility.cpp
===================================================================
--- branches/soc-2011-avocado/blender/intern/autoseam/AutoseamUtility.cpp 2011-07-28 15:51:59 UTC (rev 38793)
+++ branches/soc-2011-avocado/blender/intern/autoseam/AutoseamUtility.cpp 2011-07-28 18:18:55 UTC (rev 38794)
@@ -72,12 +72,11 @@
m_A << 1.0f, 2.0f, 0.0f,
0.0f, 2.0f, 3.0f,
0.0f, 0.0f, 3.0f;
-
+
}
static double row_sum(MatrixXd matrix, int dimension, int row_index) {
double result = 0.0 ;
-
for (int i = 0; i < dimension; i++) {
result += matrix(row_index, i);
@@ -90,9 +89,8 @@
void AutoseamUtility::calculate_eigen(float **dual_matrix, int num_row, int num_col, float **eigen_vectors, float *eigen_values)
{
- int i,l,r_index,c_index;
+ int i,l,r_index,c_index;
dualMatrix.resize(num_row, num_col);
-
/* we can print the matrix here to have a look */
@@ -111,15 +109,15 @@
dualMatrix(l,l) = - row_sum(dualMatrix, num_row, l);
}
- // we need to replace this portion with our eigen generation code
- Eigen::EigenSolver<MatrixXd> es(dualMatrix);
- std::cout << "The eigenvalues of A are:" << std::endl << es.eigenvalues() << std::endl;
+ // we need to replace this portion with our eigen generation code
+ Eigen::EigenSolver<MatrixXd> es(dualMatrix);
+ std::cout << "The eigenvalues of A are:" << std::endl << es.eigenvalues() << std::endl;
- /**
- * Pack the calculated eigen vectors and eigen values to
- * eigen_vectors and eigen_values.
- */
+ /**
+ * Pack the calculated eigen vectors and eigen values to
+ * eigen_vectors and eigen_values.
+ */
for(i = 0; i < num_col; i++ )
{
Modified: branches/soc-2011-avocado/blender/intern/autoseam/EigenSolver.cpp
===================================================================
--- branches/soc-2011-avocado/blender/intern/autoseam/EigenSolver.cpp 2011-07-28 15:51:59 UTC (rev 38793)
+++ branches/soc-2011-avocado/blender/intern/autoseam/EigenSolver.cpp 2011-07-28 18:18:55 UTC (rev 38794)
@@ -1,4 +1,4 @@
-/* $Id: AutoseamAdjacency.cpp 38737 2011-07-26 16:37:38Z shuvro $
+/* $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
@@ -32,27 +32,26 @@
EigenSolver::EigenSolver(int dimension)
{
- matrix_dimension = dimension;
- //num_eigen_vectors = eigen_vectors;
-
- // Allocate memories for eigenspace
-
+ matrix_dimension = dimension;
+ //num_eigen_vectors = eigen_vectors;
+
+ // Allocate memories for eigenspace
+
}
int EigenSolver::multiply_matrix_vector(int dimension, double *result, double *input)
{
- for (int i = 0; i < A.n ; i++) {
- *(result + i) = 0.0;
- }
-
- for (int k = 0; k < A.nnz; k++) {
- *(result + A.i[k]) += A.v[k] * (*(input + A.j[k]));
- }
-
- return 0;
+ for (int i = 0; i < A.n ; i++) {
+ *(result + i) = 0.0;
+ }
+
+ for (int k = 0; k < A.nnz; k++) {
+ *(result + A.i[k]) += A.v[k] * (*(input + A.j[k]));
+ }
+
+ return 0;
}
EigenSolver::~EigenSolver()
{
-
}
Property changes on: branches/soc-2011-avocado/blender/intern/autoseam/EigenSolver.cpp
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: branches/soc-2011-avocado/blender/intern/autoseam/EigenSolver.h
===================================================================
--- branches/soc-2011-avocado/blender/intern/autoseam/EigenSolver.h 2011-07-28 15:51:59 UTC (rev 38793)
+++ branches/soc-2011-avocado/blender/intern/autoseam/EigenSolver.h 2011-07-28 18:18:55 UTC (rev 38794)
@@ -1,4 +1,4 @@
-/* $Id: AutoseamAdjacency.h 38650 2011-07-24 05:24:46Z shuvro $
+/* $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
@@ -30,33 +30,33 @@
#define EIGEN_SOLVER_H
struct SparseMatrix{
- int n; // matrix dimension
- int nnz; // number of non-zero coefficients
- int *i; // row indices, array of size nnz;
- int *j; // column indices, array of size nnz;
- double *v; // non-zero coefficients, array of size nnz;
+ int n; // matrix dimension
+ int nnz; // number of non-zero coefficients
+ int *i; // row indices, array of size nnz;
+ int *j; // column indices, array of size nnz;
+ double *v; // non-zero coefficients, array of size nnz;
};
class EigenSolver{
-
- protected:
- SparseMatrix A;
- bool is_allocated;
- int matrix_dimension;
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list