Polyhedral-net Splines
Loading...
Searching...
No Matches
PolarPatchConstructor.hpp
1#pragma once
2
3#include <OpenMesh/Core/Mesh/PolyMesh_ArrayKernelT.hh>
4#include "PatchConstructor.hpp"
5#include "../Helper/Helper.hpp"
6
7typedef Matrix Mat36x4d;
8typedef Matrix Mat48x5d;
9typedef Matrix Mat60x6d;
10typedef Matrix Mat72x7d;
11typedef Matrix Mat84x8d;
12typedef Matrix Mat96x9d;
13
18class PolarPatchConstructor : public PatchConstructor
19{
20public:
21 PolarPatchConstructor()
28
29 bool isSamePatchType(const VertexHandle& a_VertexHandle, MeshType& a_Mesh, bool check_marked = false) override;
30 PatchBuilder getPatchBuilder(const VertexHandle& a_VertexHandle, MeshType& a_Mesh, bool mark_gathered = false) override;
31
32private:
36 const Mat36x4d m_MaskSct3;
37
41 const Mat48x5d m_MaskSct4;
42
46 const Mat60x6d m_MaskSct5;
47
51 const Mat72x7d m_MaskSct6;
52
56 const Mat84x8d m_MaskSct7;
57
61 const Mat96x9d m_MaskSct8;
62
66 int m_NumOfSct = 0;
67
73 Mat36x4d getMaskSct3();
74
80 Mat48x5d getMaskSct4();
81
87 Mat60x6d getMaskSct5();
88
94 Mat72x7d getMaskSct6();
95
101 Mat84x8d getMaskSct7();
102
108 Mat96x9d getMaskSct8();
109
125 std::vector<VertexHandle> initNeighborVerts(const VertexHandle& a_VertexHandle, MeshType& a_Mesh);
126 std::string getGroupName() const;
127};
Definition Matrix.hpp:11
A builder class for constructing Bézier patches from a mesh.
Definition PatchBuilder.hpp:28
Abstract base class for patch constructors.
Definition PatchConstructor.hpp:66
std::vector< VertexHandle > initNeighborVerts(const VertexHandle &a_VertexHandle, MeshType &a_Mesh)
Gather the list of neighboring vertices around a given vertex in the expected order to be compatable ...
Definition PolarPatchConstructor.cpp:113
int m_NumOfSct
The number of sections in the polar patch.
Definition PolarPatchConstructor.hpp:66
bool isSamePatchType(const VertexHandle &a_VertexHandle, MeshType &a_Mesh, bool check_marked=false) override
Given a vertex, checks wither the vertex and the neighborhood arund the vertex of this patch type.
Definition PolarPatchConstructor.cpp:47
Mat84x8d getMaskSct7()
Retrieves the mask for the polar patch with valence = 7.
Definition PolarPatchConstructor.cpp:34
Mat96x9d getMaskSct8()
Retrieves the mask for the polar patch with valence = 8.
Definition PolarPatchConstructor.cpp:40
const Mat72x7d m_MaskSct6
The mask for the polar patch with valence = 6.
Definition PolarPatchConstructor.hpp:51
const Mat96x9d m_MaskSct8
The mask for the polar patch with valence = 8.
Definition PolarPatchConstructor.hpp:61
Mat72x7d getMaskSct6()
Retrieves the mask for the polar patch with valence = 6.
Definition PolarPatchConstructor.cpp:28
std::string getGroupName() const
Returns the name of the patch group this constructor handles.
Definition PolarPatchConstructor.cpp:130
const Mat60x6d m_MaskSct5
The mask for the polar patch with valence = 5.
Definition PolarPatchConstructor.hpp:46
Mat48x5d getMaskSct4()
Retrieves the mask for the polar patch with valence = 4.
Definition PolarPatchConstructor.cpp:16
const Mat36x4d m_MaskSct3
The mask for the polar patch with valence = 3.
Definition PolarPatchConstructor.hpp:36
const Mat48x5d m_MaskSct4
The mask for the polar patch with valence = 4.
Definition PolarPatchConstructor.hpp:41
Mat60x6d getMaskSct5()
Retrieves the mask for the polar patch with valence = 5.
Definition PolarPatchConstructor.cpp:22
Mat36x4d getMaskSct3()
Retrieves the mask for the polar patch with valence = 3.
Definition PolarPatchConstructor.cpp:10
PatchBuilder getPatchBuilder(const VertexHandle &a_VertexHandle, MeshType &a_Mesh, bool mark_gathered=false) override
Constructs a PatchBuilder for the patch type at the given vertex.
Definition PolarPatchConstructor.cpp:66
const Mat84x8d m_MaskSct7
The mask for the polar patch with valence = 7.
Definition PolarPatchConstructor.hpp:56