Branch data Line data Source code
1 : : //-----------------------------------C++-------------------------------------//
2 : : // File: src/algs/meshkit/QslimMesher.hpp
3 : : //
4 : : // Brief: QslimMesher class definition:
5 : : // Operates on a set of triangles, options passed with another
6 : : // class, QslimOptions
7 : : //---------------------------------------------------------------------------//
8 : :
9 : : #ifndef MESHKIT_QSLIM_MESHER_HPP
10 : : #define MESHKIT_QSLIM_MESHER_HPP
11 : :
12 : : #include <stdlib.h>
13 : : #include <stdio.h>
14 : : #include <assert.h>
15 : : #include <string>
16 : : #include <iostream>
17 : : #include <fstream>
18 : : #include <string.h>
19 : : #include <limits.h>
20 : :
21 : : //#include "meshkit/iGeom.hpp"
22 : : #include <set>
23 : : #include <vector>
24 : :
25 : : #include "meshkit/MeshScheme.hpp"
26 : : #include "meshkit/QslimOptions.hpp"
27 : :
28 : : namespace MeshKit {
29 : : //===========================================================================//
30 : : /*!
31 : : * \class QslimMesher
32 : : * \brief Decimate a set of triangles
33 : : *
34 : : * QslimMesher decimates a set of triangles that form a 3d surface
35 : : * It uses edge collapse sequentially, while keeping the error in
36 : : * the quadric sense minimal at each step.
37 : : */
38 : : //===========================================================================//
39 : :
40 : : using namespace std;
41 : :
42 : : class QslimDecimation;
43 : :
44 : : class QslimMesher: public MeshScheme {
45 : :
46 : : public:
47 : : //construction function for Qslim mesher
48 : : QslimMesher(MKCore *mk_core, const MEntVector &me_vec);
49 : :
50 : : //set up the parameters for decimation meshing
51 : : // these will be passed with QslimOptions
52 : : virtual void setup_this();
53 : :
54 : : //Decimate the mesh
55 : : virtual void execute_this();
56 : :
57 : : /**\brief Get class name */
58 : 661 : static const char* name()
59 : 661 : { return "QslimMesher"; }
60 : :
61 : : // pass
62 : 1 : void set_options(QslimOptions & opts)
63 : : {
64 : 1 : _opts = opts;
65 : 1 : }
66 : :
67 : 160 : static bool can_mesh(iBase_EntityType dim)
68 : : {
69 : 160 : return iBase_FACE == dim;
70 : : }
71 : :
72 : : /** \brief Function returning whether this scheme can mesh the specified entity
73 : : *
74 : : * Used by MeshOpFactory to find scheme for an entity.
75 : : * \param me ModelEnt being queried
76 : : * \return If true, this scheme can mesh the specified ModelEnt
77 : : */
78 : 0 : static bool can_mesh(ModelEnt *me)
79 : : {
80 : 0 : return canmesh_face(me);
81 : : }
82 : :
83 : : /**\brief Get list of mesh entity types that can be generated.
84 : : *\return array terminated with \c moab::MBMAXTYPE
85 : : */
86 : : static const moab::EntityType* output_types();
87 : :
88 : : /** \brief Return the mesh entity types operated on by this scheme
89 : : * \return array terminated with \c moab::MBMAXTYPE
90 : : */
91 : 0 : virtual const moab::EntityType* mesh_types_arr() const
92 : : {
93 : 0 : return output_types();
94 : : }
95 : :
96 : : ~QslimMesher();
97 : :
98 : : private:
99 : :
100 : : QslimOptions _opts;
101 : : QslimDecimation * _worker;
102 : :
103 : : };
104 : :
105 : : }
106 : :
107 : : #endif
|