#include "Enums.h"
#include "elem_tables.h"
#include "Point3D.h"
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <map>
#include <assert.h>
#include <string.h>
Defines | |
#define | X -1 |
Typedefs | |
typedef unsigned int | indextype |
Functions | |
int | IsPrismSelected (const double coords[6 *4], const double *plane) |
int | IsTetraSelected (const double coords[4 *4], const double *plane) |
unsigned int | CutElement (const double vertices[18], const int nodes[7], const myPlane *cut_plane, std::vector< myVertex > &out_vertices) |
bool | getSimilarVertexIndex (Vertex &packed, std::map< Vertex, indextype, comp > &VertexToOutIndex, indextype &result) |
void | indexVBO (std::vector< Vertex > &inout_vertices, std::vector< indextype > &inout_indices) |
template<typename T > | |
T | mark_edges_in_triangle (int s, int u, const int dim) |
unsigned | TessellateTriangle (const myVertex *a, const myVertex *b, const myVertex *c, int ndiv, std::vector< myVertex > &vertices, std::vector< unsigned > &indices) |
Variables | |
const int | iTetraEdgeConnect [6][2] |
const int | iTetraVertcesOfEdges [4][3] |
int | iTetraEdgeTbl [16] |
int | iTetrahedronTrianglesCT [16][7] |
int | iSideTrainglesCT [16][4][6] |
const int | iPrismEdges [9][2] |
const int | iPrismVerticesOfEdges [6][3] |
const int | iPrismEdgesOfFaces [9][2] |
int | iQuadEdgesIds [4][2] |
int | iSLinesCT [16][5] |
int | iQuadFlags [16] |
int | iQuadEdges [16][7] |
const int | iPrismFaces [5][4] = {{0,2,1,-1},{3,4,5,-1},{0,1,4,3},{1,2,5,4},{0,3,5,2}} |
const int | iPrizmMidPts [5][4] = {{6,7,8,-1},{9,10,11,-1},{6,13,9,12},{7,14,10,13},{8,12,11,14}} |
#define X -1 |
typedef unsigned int indextype |
unsigned int CutElement | ( | const double | vertices[18], | |
const int | nodes[7], | |||
const myPlane * | cut_plane, | |||
std::vector< myVertex > & | out_vertices | |||
) |
bool getSimilarVertexIndex | ( | Vertex & | packed, | |
std::map< Vertex, indextype, comp > & | VertexToOutIndex, | |||
indextype & | result | |||
) |
int IsPrismSelected | ( | const double | coords[6 *4], | |
const double * | plane | |||
) |
int IsTetraSelected | ( | const double | coords[4 *4], | |
const double * | plane | |||
) |
T mark_edges_in_triangle | ( | int | s, | |
int | u, | |||
const int | dim | |||
) | [inline] |
unsigned TessellateTriangle | ( | const myVertex * | a, | |
const myVertex * | b, | |||
const myVertex * | c, | |||
int | ndiv, | |||
std::vector< myVertex > & | vertices, | |||
std::vector< unsigned > & | indices | |||
) |
const int iPrismEdges[9][2] |
{ { 0, 1 }, { 1, 2 }, { 0, 2 }, { 3, 4 }, { 4, 5 }, { 3, 5 }, { 0, 3 }, { 1, 4 }, { 2, 5 } }
const int iPrismEdgesOfFaces[9][2] |
{ {0,2}, {0,3}, {0,4}, {1,2}, {1,3}, {1,4}, {2,4}, {2,3}, {3,4} }
const int iPrismFaces[5][4] = {{0,2,1,-1},{3,4,5,-1},{0,1,4,3},{1,2,5,4},{0,3,5,2}} |
const int iPrismVerticesOfEdges[6][3] |
{ {0,2,6}, {0,1,7}, {1,2,8}, {3,5,6}, {3,4,7}, {4,5,8} }
const int iPrizmMidPts[5][4] = {{6,7,8,-1},{9,10,11,-1},{6,13,9,12},{7,14,10,13},{8,12,11,14}} |
int iQuadEdges[16][7] |
{ {0,-1,-1,-1,-1,-1,-1}, {3, 0, 4, 7,-1,-1,-1}, {3, 1, 5, 4,-1,-1,-1}, {4, 0, 1, 5, 7,-1,-1}, {3, 2, 6, 5,-1,-1,-1}, {6, 0, 4, 7, 2, 6, 5}, {4, 1, 2, 6, 4,-1,-1}, {5, 0, 1, 2, 6, 7,-1}, {3, 3, 7, 6,-1,-1,-1}, {4, 0, 4, 6, 3,-1,-1}, {6, 1, 5, 4, 3, 7, 6}, {5, 0, 1, 5, 6, 3,-1}, {4, 2, 3, 7, 5,-1,-1}, {5, 0, 4, 5, 2, 3,-1}, {5, 1, 2, 3, 7, 4,-1}, {4, 0, 1, 2, 3,-1,-1}, }
int iQuadEdgesIds[4][2] |
{ {0,1},{1,2},{2,3},{3,0} }
int iQuadFlags[16] |
{ 0x00, 0x09, 0x03, 0x0a, 0x06, 0x0f, 0x05, 0x0c, 0x0c, 0x05, 0x0f, 0x06, 0x0a, 0x03, 0x09, 0x00 }
int iSideTrainglesCT[16][4][6] |
{ { {-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1} }, { { 0, 6, 4,-1,-1,-1}, { 0, 4, 7,-1,-1,-1}, { 0, 7, 6,-1,-1,-1}, {-1,-1,-1,-1,-1,-1} }, { { 1, 4, 5,-1,-1,-1}, { 8, 4, 1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1}, { 1, 5, 8,-1,-1,-1} }, { { 6, 5, 1, 6, 1, 0}, { 8, 7, 0, 8, 0, 1}, { 7, 6, 0,-1,-1,-1}, { 1, 5, 8,-1,-1,-1} }, { { 2, 5, 6,-1,-1,-1}, {-1,-1,-1,-1,-1,-1}, { 2, 6, 9,-1,-1,-1}, { 9, 5, 2,-1,-1,-1} }, { { 0, 2, 5, 0, 5, 4}, { 0, 4, 7,-1,-1,-1}, { 7, 9, 2, 7, 2, 0}, { 2, 9, 5,-1,-1,-1} }, { { 6, 2, 1, 6, 1, 4}, { 8, 4, 1,-1,-1,-1}, { 2, 6, 9,-1,-1,-1}, { 8, 1, 2, 8, 2, 9} }, { { 0, 2, 1,-1,-1,-1}, { 7, 0, 1, 7, 1, 8}, { 0, 7, 9, 0, 9, 2}, { 8, 1, 2, 8, 2, 9} }, { {-1,-1,-1,-1,-1,-1}, { 3, 7, 8,-1,-1,-1}, { 9, 7, 3,-1,-1,-1}, { 3, 8, 9,-1,-1,-1} }, { { 6, 4, 0,-1,-1,-1}, { 4, 8, 3, 4, 3, 0}, { 9, 6, 0, 9, 0, 3}, { 3, 8, 9,-1,-1,-1} }, { { 1, 4, 5,-1,-1,-1}, { 1, 3, 7, 1, 7, 4}, { 9, 7, 3,-1,-1,-1}, { 5, 9, 3, 5, 3, 1} }, { { 6, 5, 1, 6, 1, 0}, { 0, 1, 3,-1,-1,-1}, { 0, 3, 9, 0, 9, 6}, { 5, 9, 3, 5, 3, 1} }, { { 2, 5, 6,-1,-1,-1}, { 3, 7, 8,-1,-1,-1}, { 6, 7, 3, 6, 3, 2}, { 2, 3, 8, 2, 8, 5} }, { { 5, 4, 0, 5, 0, 2}, { 4, 8, 3, 4, 3, 0}, { 0, 3, 2,-1,-1,-1}, { 2, 3, 8, 2, 8, 5} }, { { 4, 6, 2, 4, 2, 1}, { 1, 3, 7, 1, 7, 4}, { 6, 7, 3, 6, 3, 2}, { 1, 2, 3,-1,-1,-1} }, { { 0, 2, 1,-1,-1,-1}, { 0, 1, 3,-1,-1,-1}, { 0, 3, 2,-1,-1,-1}, { 1, 2, 3,-1,-1,-1} } }
int iSLinesCT[16][5] |
{ {-1, -1, -1, -1, -1}, {0, 3, -1, -1, -1}, {0, 1, -1, -1, -1}, {3, 1, -1, -1, -1}, {2, 1, -1, -1, -1}, {0, 1, 3, 2, -1}, {2, 0, -1, -1, -1}, {2, 3, -1, -1, -1}, {2, 3, -1, -1, -1}, {2, 0, -1, -1, -1}, {1, 0, 3, 2, -1}, {2, 1, -1, -1, -1}, {3, 1, -1, -1, -1}, {0, 1, -1, -1, -1}, {3, 0, -1, -1, -1}, {-1, -1, -1, -1, -1} }
const int iTetraEdgeConnect[6][2] |
{ {0,1}, {1,2}, {0,2}, {0,3}, {1,3}, {2,3} }
int iTetraEdgeTbl[16] |
{ 0x000, 0x00d, 0x013, 0x01e, 0x026, 0x02b, 0x035, 0x038, 0x038, 0x035, 0x02b, 0x026, 0x01e, 0x013, 0x00d, 0x000, }
int iTetrahedronTrianglesCT[16][7] |
{ {-1, -1, -1, -1, -1, -1, -1}, { 0, 3, 2, -1, -1, -1, -1}, { 0, 1, 4, -1, -1, -1, -1}, { 1, 4, 3, 1, 3, 2, -1}, { 1, 2, 5, -1, -1, -1, -1}, { 0, 3, 5, 0, 5, 1, -1}, { 0, 2, 5, 0, 5, 4, -1}, { 5, 4, 3, -1, -1, -1, -1}, { 3, 4, 5, -1, -1, -1, -1}, { 4, 5, 0, 5, 2, 0, -1}, { 1, 5, 0, 5, 3, 0, -1}, { 5, 2, 1, -1, -1, -1, -1}, { 2, 3, 1, 3, 4, 1, -1}, { 4, 1, 0, -1, -1, -1, -1}, { 2, 3, 0, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1}, }
const int iTetraVertcesOfEdges[4][3] |
{ {0,1,2}, {0,1,3}, {0,2,3}, {1,2,3} }