2018-07-27 16:23:39 -04:00
|
|
|
#include <vector>
|
2018-09-09 23:51:52 -04:00
|
|
|
#include "analysis/pmmc.h"
|
2018-07-27 16:23:39 -04:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
Doubly-connected edge list (DECL)
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// Vertex structure
|
|
|
|
|
class Vertex{
|
|
|
|
|
public:
|
|
|
|
|
Vertex();
|
|
|
|
|
~Vertex();
|
|
|
|
|
void add(Point P);
|
|
|
|
|
void assign(unsigned long int idx, Point P);
|
2018-09-10 11:06:20 -04:00
|
|
|
unsigned long int size();
|
2018-07-27 16:23:39 -04:00
|
|
|
Point coords(unsigned long int idx);
|
|
|
|
|
unsigned long int IncidentEdge();
|
|
|
|
|
private:
|
|
|
|
|
std::vector<double> vertex_data;
|
2018-09-10 11:06:20 -04:00
|
|
|
unsigned long int size_;
|
2018-07-27 16:23:39 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Halfedge structure
|
|
|
|
|
// Face
|
|
|
|
|
class Halfedge{
|
|
|
|
|
public:
|
|
|
|
|
Halfedge();
|
|
|
|
|
~Halfedge();
|
|
|
|
|
|
|
|
|
|
unsigned long int v1(unsigned long int edge);
|
|
|
|
|
unsigned long int v2(unsigned long int edge);
|
|
|
|
|
unsigned long int twin(unsigned long int edge);
|
|
|
|
|
unsigned long int face(unsigned long int edge);
|
|
|
|
|
unsigned long int next(unsigned long int edge);
|
|
|
|
|
unsigned long int prev(unsigned long int edge);
|
2018-09-10 11:06:20 -04:00
|
|
|
unsigned long int size();
|
2018-07-30 16:51:37 -04:00
|
|
|
|
|
|
|
|
Array<unsigned long int> data;
|
2018-07-27 16:23:39 -04:00
|
|
|
private:
|
2018-09-10 11:06:20 -04:00
|
|
|
unsigned long int size_;
|
2018-07-27 16:23:39 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// DECL
|
|
|
|
|
class DECL{
|
|
|
|
|
public:
|
|
|
|
|
DECL();
|
|
|
|
|
~DECL();
|
|
|
|
|
|
|
|
|
|
unsigned long int face();
|
|
|
|
|
Vertex vertex;
|
|
|
|
|
Halfedge halfedge;
|
2018-07-30 16:51:37 -04:00
|
|
|
void LocalIsosurface(const DoubleArray A, double value, int i, int j, int k);
|
2018-09-10 17:29:48 -04:00
|
|
|
unsigned long int Face(unsigned long int index);
|
2018-07-27 16:23:39 -04:00
|
|
|
|
|
|
|
|
double origin(int edge);
|
|
|
|
|
double EdgeAngle(int edge);
|
|
|
|
|
Point TriNormal(int edge);
|
2018-09-10 11:06:20 -04:00
|
|
|
unsigned long int TriangleCount;
|
|
|
|
|
unsigned long int VertexCount;
|
2018-07-30 16:51:37 -04:00
|
|
|
|
2018-07-27 16:23:39 -04:00
|
|
|
private:
|
2018-09-10 17:29:48 -04:00
|
|
|
Array <unsigned long int> FaceData;
|
2018-07-27 16:23:39 -04:00
|
|
|
};
|