1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
package vtk;
/**
* Provide a mapping to VTK CellType enum
*
* @author sebastien jourdain - sebastien.jourdain@kitware.com
*/
public enum CellType {
VERTEX(1, 1), //
POLY_VERTEX(2, -1), //
LINE(3, 2), //
POLY_LINE(4, -1), //
TRIANGLE(5, 3), //
TRIANGLE_STRIP(6, -1), //
POLYGON(7, -1), //
PIXEL(8, 4), //
QUAD(9, 4), //
TETRA(10, 4), //
VOXEL(11, 8), //
HEXAHEDRON(12, 8), //
WEDGE(13, 6), //
PYRAMID(14, 5), //
PENTAGONAL_PRISM(15, 10), //
HEXAGONAL_PRISM(16, 12), //
QUADRATRIC_EDGE(21, 3), //
QUADRATRIC_TRIANGLE(22, 6), //
QUADRATRIC_QUAD(23, 8), //
QUADRATRIC_TETRA(24, 10), //
QUADRATRIC_HEXAHEDRON(25, 20), //
QUADRATRIC_WEDGE(26, 15), //
QUADRATRIC_PYRAMID(27, 13);
private CellType(int id, int nbPoints) {
this.id = id;
this.nbPoints = nbPoints;
}
/**
* @return the id that VTK is using to identify it cell type.
*/
public int GetId() {
return id;
}
/**
* @return the number of points that cell type own or -1 for cell that have
* a dynamic number of points.
*/
public int GetNumberOfPoints() {
return nbPoints;
}
/**
* @return true if the number of points can not be given by the cell type
*/
public boolean IsDynamicNumberOfPoints() {
return nbPoints == -1;
}
/**
* @param vtkCellId
* @return an instance of CellType based on the vtk cell id.
*/
public static CellType GetCellType(int vtkCellId) {
if (MAPPING == null) {
// build it lazyly
int max = 0;
for (CellType cellType : values()) {
max = Math.max(max, cellType.GetId());
}
MAPPING = new CellType[max + 1];
for (CellType cellType : values()) {
MAPPING[cellType.GetId()] = cellType;
}
}
return MAPPING[vtkCellId];
}
private int id;
private int nbPoints;
private static CellType[] MAPPING;
}
|