FiberVISH 0.2
Fish - The Fiber Bundle API for the Vish Visualization Shell
RefineSurface.hpp
1#ifndef __BASEOP_REFINESURFACE_HPP
2#define __BASEOP_REFINESURFACE_HPP
3
4#include "gridopDllApi.h"
5#include <grid/types/TriangularSurface.hpp>
6#include <grid/types/TriangularSurfaceWithEdges.hpp>
7#include <field/Field.hpp>
8#include <bundle/Bundle.hpp>
9#include <grid/Grid.hpp>
10#include <grid/CartesianChart.hpp>
11#include <field/Cell.hpp>
12#include <bundle/GridSelector.hpp>
13
14//#define DEBUG_SURF
15
16using namespace Eagle::PhysicalSpace;
17
18namespace Fiber
19{
20 class TriangularSurfaceWithEdges;
21
25 class SurfaceRefinementCriterion;
26
28
29 class gridop_API SurfaceRefinementCriterion: public MemCore::ReferenceBase<SurfaceRefinementCriterion>
30 {
31 public:
32 RefPtr<MemArray<1, point> > verticesPtr;
35 int IllegalEdges;
36 public:
39 , IllegalEdges(0)
40 {}
41 void GetData(const RefPtr<Grid>& InputGrid);
42 int IllegalEdgesCount();
43 virtual std::vector<bool> DetectEdges(const RefPtr<Grid>& InputGrid) = 0;
44 virtual VSurfaceRefinementCriterion copyMe();
46 };
47
48
54
59 extern gridop_API RefPtr<Grid> SplitMeshEdges(Bundle&B, const RefPtr<Grid>& InputGrid);
60 extern gridop_API RefPtr<Grid> SplitMeshEdges(Bundle&B, const RefPtr<Grid>& InputGrid,
62
63 extern gridop_API RefPtr<Grid> RadialSplitMeshEdges(Bundle&B, const RefPtr<Grid>& InputGrid, const std::vector<bool>& modifyEdges, double radius, const point& center);
64
65 extern gridop_API RefPtr<Grid> FlipMeshEdges(Bundle&B, const RefPtr<Grid>& InputGrid, double threshold);
66 extern gridop_API RefPtr<Grid> FlipMeshEdges(Bundle&B, const RefPtr<Grid>& InputGrid,
68#ifdef DEBUG_SURF
69 void DebugGridContent(const RefPtr<Grid>& InputGrid, const std::string& message);
70#endif
71 void TriangleVerticesOrientation(const TriangleCell& t, const EdgeCell& e, unsigned& v1, unsigned& v2, unsigned& v3);
72 void GenerateEdge2FacesTable(MultiArray<1, EdgeCell>& edge2Faces, const MultiArray<1, TriangleCell>& triangleList, const MultiArray<1, EdgeCell>& edgeList, int faceCount, int edgeCount);
73
74
75 //extern gridop_API void SplitMeshEdges(Grid& InputGrid);
76
77} // namespace Fiber
78
79#endif
The main entity holding all information.
Definition Bundle.hpp:173
An iterator with an optional DataCreator, which is just a class to intercept creation of data along a...
Definition CreativeIterator.hpp:34
Definition RefineSurface.hpp:30
Given a fragmented field of curvilinear coordinates, (3D array of coordinates), build a uniform Grid ...
Definition FAQ.dox:2
RefPtr< Grid > refineSurface(Bundle &B, const RefPtr< Grid > &InputGrid, const SurfaceRefinementCriterion &Criterion)
Refine a surface according to the specified criteria.
Definition RefineSurface.cpp:124
A type describing an n-dimensional simplex cell.
Definition Cell.hpp:70