1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//-----------------------------------C++-------------------------------------//
// File: src/algs/IsoLaplace.hpp
// Monday Sep 26 10:50 2011
// Brief: IsoLaplace class definition: do the IsoLaplace smoothing for
//        the surface mesh 
//---------------------------------------------------------------------------//


#ifndef ISOLAPLACE_HPP
#define ISOLAPLACE_HPP

#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include <string>
#include <iostream>
#include <fstream>
#include <string.h>
#include <vector>
#include <set>
#include <list>
#include <math.h>
#include <map>


using namespace std;


//===========================================================================//
  /*!
   * \class IsoLaplace
   * \brief do the IsoLaplace smoothing for surface mesh
   * 
   * 
   */
//===========================================================================//

class IsoLaplace
{	
public:
    IsoLaplace();
    ~IsoLaplace();


    //Execute function
    void Execute();

    //input the point coordinates, edges, triangles
    void SetupData(std::vector<std::set<int> > AdjElements, std::vector<std::vector<int> > Quads, std::vector<std::vector<double> > coords, std::vector<bool> isBnd, std::vector<double> w);

    //return the results
    void GetCoords(std::vector<std::vector<double> > &coords);


private://private member functions

    void UpdateWeight();<--- Unused private function: 'IsoLaplace::UpdateWeight'
	

private://private member variable
    std::vector<std::vector<double> > coordinates;
    std::vector<std::set<int> > adjElements;
    std::vector<std::vector<int> > quads;
    std::vector<bool> isBoundary;
    std::vector<double> weight;

};

#endif