Subversion Repositories gelsvn

Rev

Rev 663 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 663 Rev 664
Line 73... Line 73...
73
			Q[i][i] = -a_sum;
73
			Q[i][i] = -a_sum;
74
		}
74
		}
75
	EigenSolutionsSym(Q,V);
75
	EigenSolutionsSym(Q,V);
76
}
76
}
77
 
77
 
-
 
78
vector<Vec3d> Harmonics::analyze_signal(const VertexAttributeVector<Vec3d>& sig) {
-
 
79
    vector<Vec3d> sig_proj(maximum_eigenvalue, Vec3d(0));
-
 
80
    
-
 
81
    for(int es=0; es<maximum_eigenvalue; ++es)
-
 
82
		for(VertexID v: mani.vertices())
-
 
83
			sig_proj[es] +=  sig[v] * Q[es][vtouched[v]];
-
 
84
    
-
 
85
    return sig_proj;
-
 
86
}
-
 
87
 
-
 
88
VertexAttributeVector<Vec3d> Harmonics::reconstruct_signal(const vector<Vec3d>& sig_proj, int max_es) {
-
 
89
    VertexAttributeVector<Vec3d> sig(mani.allocated_vertices(), Vec3d(0));
-
 
90
    for(int es=0; es<max_es; ++es)
-
 
91
        for(VertexID v: mani.vertices())
-
 
92
            sig[v] += sig_proj[es] * Q[es][vtouched[v]];
-
 
93
    return sig;
-
 
94
}
-
 
95
 
-
 
96
 
-
 
97
 
78
Harmonics::Harmonics(HMesh::Manifold& _mani):mani(_mani), vtouched(_mani.allocated_vertices(), 0)
98
Harmonics::Harmonics(HMesh::Manifold& _mani):mani(_mani), vtouched(_mani.allocated_vertices(), 0)
79
{
99
{
80
  
100
  
81
    int i = 0;
101
    int i = 0;
82
    for(VertexIDIterator v = mani.vertices_begin(); v != mani.vertices_end(); ++v, ++i)
102
    for(VertexIDIterator v = mani.vertices_begin(); v != mani.vertices_end(); ++v, ++i)