45 const int &localNeighborId,
51 const std::vector<std::vector<SimplexId>> *
65 const std::vector<std::vector<SimplexId>> *
70 const int &localVertexId,
83 const std::vector<std::vector<SimplexId>> *
86 const std::vector<std::vector<SimplexId>> *
89 const std::vector<std::vector<SimplexId>> *
92 const std::vector<std::array<SimplexId, 2>> *
122 std::vector<std::vector<SimplexId>> &triangles)
const;
125 const int &localNeighborId,
134 const int &localVertexId,
144 const std::vector<std::vector<SimplexId>> *
148 std::vector<std::vector<SimplexId>> &edges)
const;
151 const SimplexId &triangleId)
const override;
153 const std::vector<std::vector<SimplexId>> *
157 const int &localNeighborId,
165 const std::vector<std::vector<SimplexId>> *
168 const std::vector<std::array<SimplexId, 3>> *
174 const std::vector<std::vector<SimplexId>> *
178 const SimplexId &vertexId)
const override;
180 const std::vector<std::vector<SimplexId>> *
183 const std::vector<std::vector<SimplexId>> *
186 const std::vector<std::vector<SimplexId>> *
189 const std::vector<std::vector<SimplexId>> *
197 const SimplexId &triangleId)
const override;
200 const float &yOrigin,
201 const float &zOrigin,
202 const float &xSpacing,
203 const float &ySpacing,
204 const float &zSpacing,
235 int &vtkId)
const override {
236#ifndef TTK_ENABLE_KAMIKAZE
242 vtkId = ttkId / nSimplexPerCell;
249 int preconditionDistributedCells()
override;
252 void createMetaGrid(
const double *
const bounds)
override;
253 int getCellRankInternal(
const SimplexId lcid)
const override;
256 bool isVertexOnGlobalBoundaryInternal(
const SimplexId lvid)
const override;
257 bool isEdgeOnGlobalBoundaryInternal(
const SimplexId leid)
const override;
259 isTriangleOnGlobalBoundaryInternal(
const SimplexId ltid)
const override;
262 std::array<SimplexId, 3>
263 getVertGlobalCoords(
const SimplexId lvid)
const override;
264 std::array<SimplexId, 3>
265 getVertLocalCoords(
const SimplexId gvid)
const override;
516 bool isPowerOfTwo(
unsigned long long int v,
unsigned long long int &r);
843 template <
typename Derived>
845 inline Derived &underlying() {
846 return static_cast<Derived &
>(*this);
848 inline Derived
const &underlying()
const {
849 return static_cast<Derived
const &
>(*this);
854 const SimplexId &vertexId)
const override {
856#ifndef TTK_ENABLE_KAMIKAZE
861 switch(this->underlying().getVertexPosition(vertexId)) {
916 const SimplexId &vertexId)
const override;
923 const int &localNeighborId,
939 const int &localLinkId,
943 const SimplexId &vertexId)
const override;
947 const int &localStarId,
953 float &z)
const override;
956 const int &localVertexId,
968 const int &localLinkId,
973 const int &localStarId,
980 const int &localVertexId,
989 const int &localLinkId,
994 const int &localStarId,
998 const SimplexId &triangleId)
const override;
1001 const int &localNeighborId,
1008 const int &localVertexId,
1023 const int &localNeighborId,
1032 SimplexId p[2])
const {
1034 p[0] = vertex &
mod_[0];
1035 p[1] = vertex >>
div_[0];
1042inline void ttk::ImplicitTriangulation::edgeToPosition2d(
const SimplexId edge,
1045 const int e = (k) ? edge - esetshift_[k - 1] : edge;
1046 p[0] = e % eshift_[2 * k];
1047 p[1] = e / eshift_[2 * k];
1053 p[0] = triangle % tshift_[0];
1054 p[1] = triangle / tshift_[0];
1058 ttk::ImplicitTriangulation::getVertexEdge2dA(
const SimplexId p[2],
1059 const int id)
const {
1063 return p[0] + p[1] * eshift_[0];
1065 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1071 ttk::ImplicitTriangulation::getVertexEdge2dB(
const SimplexId p[2],
1072 const int id)
const {
1076 return p[0] + p[1] * eshift_[0] - 1;
1078 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1080 return esetshift_[1] + p[0] + p[1] * eshift_[4] - 1;
1086 ttk::ImplicitTriangulation::getVertexEdge2dC(
const SimplexId p[2],
1087 const int id)
const {
1091 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1093 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4];
1095 return p[0] + p[1] * eshift_[0];
1101 ttk::ImplicitTriangulation::getVertexEdge2dD(
const SimplexId p[2],
1102 const int id)
const {
1106 return p[0] + p[1] * eshift_[0] - 1;
1108 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1114 ttk::ImplicitTriangulation::getVertexEdge2dAB(
const SimplexId p[2],
1115 const int id)
const {
1119 return p[0] + p[1] * eshift_[0] - 1;
1121 return esetshift_[1] + p[0] + p[1] * eshift_[4] - 1;
1123 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1125 return p[0] + p[1] * eshift_[0];
1131 ttk::ImplicitTriangulation::getVertexEdge2dCD(
const SimplexId p[2],
1132 const int id)
const {
1136 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1138 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4];
1140 return p[0] + p[1] * eshift_[0];
1142 return p[0] + p[1] * eshift_[0] - 1;
1148 ttk::ImplicitTriangulation::getVertexEdge2dAC(
const SimplexId p[2],
1149 const int id)
const {
1153 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1155 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4];
1157 return p[0] + p[1] * eshift_[0];
1159 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1165 ttk::ImplicitTriangulation::getVertexEdge2dBD(
const SimplexId p[2],
1166 const int id)
const {
1170 return esetshift_[1] + p[0] + p[1] * eshift_[4] - 1;
1172 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1174 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1176 return p[0] + p[1] * eshift_[0] - 1;
1182 ttk::ImplicitTriangulation::getVertexEdge2dABCD(
const SimplexId p[2],
1183 const int id)
const {
1187 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1189 return p[0] + p[1] * eshift_[0] - 1;
1191 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4];
1193 return p[0] + p[1] * eshift_[0];
1195 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1197 return esetshift_[1] + p[0] + p[1] * eshift_[4] - 1;
1203 ttk::ImplicitTriangulation::getVertexStar2dA(
const SimplexId p[2],
1205 return p[0] * 2 + p[1] * tshift_[0];
1209 ttk::ImplicitTriangulation::getVertexStar2dB(
const SimplexId p[2],
1210 const int id)
const {
1213 return (p[0] - 1) * 2 + p[1] * tshift_[0];
1215 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1221 ttk::ImplicitTriangulation::getVertexStar2dC(
const SimplexId p[2],
1222 const int id)
const {
1225 return p[0] * 2 + (p[1] - 1) * tshift_[0];
1227 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1233 ttk::ImplicitTriangulation::getVertexStar2dD(
const SimplexId p[2],
1235 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
1239 ttk::ImplicitTriangulation::getVertexStar2dAB(
const SimplexId p[2],
1240 const int id)
const {
1243 return (p[0] - 1) * 2 + p[1] * tshift_[0];
1245 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1247 return p[0] * 2 + p[1] * tshift_[0];
1253 ttk::ImplicitTriangulation::getVertexStar2dCD(
const SimplexId p[2],
1254 const int id)
const {
1257 return p[0] * 2 + (p[1] - 1) * tshift_[0];
1259 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1261 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
1267 ttk::ImplicitTriangulation::getVertexStar2dAC(
const SimplexId p[2],
1268 const int id)
const {
1271 return p[0] * 2 + (p[1] - 1) * tshift_[0];
1273 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1275 return p[0] * 2 + p[1] * tshift_[0];
1281 ttk::ImplicitTriangulation::getVertexStar2dBD(
const SimplexId p[2],
1282 const int id)
const {
1285 return (p[0] - 1) * 2 + p[1] * tshift_[0];
1287 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1289 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
1295 ttk::ImplicitTriangulation::getVertexStar2dABCD(
const SimplexId p[2],
1296 const int id)
const {
1299 return (p[0] - 1) * 2 + p[1] * tshift_[0];
1301 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1303 return p[0] * 2 + p[1] * tshift_[0];
1305 return p[0] * 2 + (p[1] - 1) * tshift_[0];
1307 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1309 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
1315 ttk::ImplicitTriangulation::getVertexLink2dA(
const SimplexId p[2],
1317 return esetshift_[1] + p[0] + p[1] * eshift_[4];
1321 ttk::ImplicitTriangulation::getVertexLink2dB(
const SimplexId p[2],
1322 const int id)
const {
1325 return esetshift_[0] + p[0] + p[1] * eshift_[2] - 1;
1327 return p[0] + (p[1] + 1) * eshift_[0] - 1;
1333 ttk::ImplicitTriangulation::getVertexLink2dC(
const SimplexId p[2],
1334 const int id)
const {
1337 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2] + 1;
1339 return p[0] + (p[1] - 1) * eshift_[0];
1345 ttk::ImplicitTriangulation::getVertexLink2dD(
const SimplexId p[2],
1347 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4] - 1;
1351 ttk::ImplicitTriangulation::getVertexLink2dAB(
const SimplexId p[2],
1352 const int id)
const {
1355 return esetshift_[0] + p[0] + p[1] * eshift_[2] - 1;
1357 return p[0] + (p[1] + 1) * eshift_[0] - 1;
1359 return esetshift_[1] + p[0] + p[1] * eshift_[4];
1365 ttk::ImplicitTriangulation::getVertexLink2dCD(
const SimplexId p[2],
1366 const int id)
const {
1369 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2] + 1;
1371 return p[0] + (p[1] - 1) * eshift_[0];
1373 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4] - 1;
1379 ttk::ImplicitTriangulation::getVertexLink2dAC(
const SimplexId p[2],
1380 const int id)
const {
1383 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2] + 1;
1385 return p[0] + (p[1] - 1) * eshift_[0];
1387 return esetshift_[1] + p[0] + p[1] * eshift_[4];
1393 ttk::ImplicitTriangulation::getVertexLink2dBD(
const SimplexId p[2],
1394 const int id)
const {
1397 return esetshift_[0] + p[0] + p[1] * eshift_[2] - 1;
1399 return p[0] + (p[1] + 1) * eshift_[0] - 1;
1401 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4] - 1;
1407 ttk::ImplicitTriangulation::getVertexLink2dABCD(
const SimplexId p[2],
1408 const int id)
const {
1411 return esetshift_[0] + p[0] + p[1] * eshift_[2] - 1;
1413 return p[0] + (p[1] + 1) * eshift_[0] - 1;
1415 return esetshift_[1] + p[0] + p[1] * eshift_[4];
1417 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2] + 1;
1419 return p[0] + (p[1] - 1) * eshift_[0];
1421 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4] - 1;
1427 ttk::ImplicitTriangulation::getEdgeTriangleL_x0(
const SimplexId p[3],
1428 const int id)
const {
1437 ttk::ImplicitTriangulation::getEdgeTriangleL_xn(
const SimplexId p[3],
1438 const int id)
const {
1441 return p[Di_] * 2 + p[Dj_] * tshift_[0];
1443 return p[Di_] * 2 + (p[Dj_] - 1) * tshift_[0] + 1;
1449 ttk::ImplicitTriangulation::getEdgeTriangleL_xN(
const SimplexId p[3],
1450 const int id)
const {
1453 return p[Di_] * 2 + (p[Dj_] - 1) * tshift_[0] + 1;
1459 ttk::ImplicitTriangulation::getEdgeTriangleH_0y(
const SimplexId p[3],
1460 const int id)
const {
1463 return p[Dj_] * tshift_[0];
1469 ttk::ImplicitTriangulation::getEdgeTriangleH_ny(
const SimplexId p[3],
1470 const int id)
const {
1473 return p[Di_] * 2 + p[Dj_] * tshift_[0];
1475 return (p[Di_] - 1) * 2 + p[Dj_] * tshift_[0] + 1;
1481 ttk::ImplicitTriangulation::getEdgeTriangleH_Ny(
const SimplexId p[3],
1482 const int id)
const {
1485 return (p[Di_] - 1) * 2 + p[Dj_] * tshift_[0] + 1;
1491 ttk::ImplicitTriangulation::getEdgeTriangleD1_xy(
const SimplexId p[3],
1492 const int id)
const {
1495 return p[Di_] * 2 + p[Dj_] * tshift_[0];
1497 return p[Di_] * 2 + p[Dj_] * tshift_[0] + 1;
1503 ttk::ImplicitTriangulation::getEdgeLink2dL(
const SimplexId p[2],
1504 const int id)
const {
1505 if(p[1] > 0 and p[1] < nbvoxels_[Dj_]) {
1508 return p[0] + (p[1] + 1) * vshift_[0];
1510 return p[0] + (p[1] - 1) * vshift_[0] + 1;
1512 }
else if(p[1] == 0)
1513 return p[0] + vshift_[0];
1515 return p[0] + (p[1] - 1) * vshift_[0] + 1;
1520 ttk::ImplicitTriangulation::getEdgeLink2dH(
const SimplexId p[2],
1521 const int id)
const {
1522 if(p[0] > 0 and p[0] < nbvoxels_[Di_]) {
1525 return p[0] + p[1] * vshift_[0] + 1;
1527 return p[0] + (p[1] + 1) * vshift_[0] - 1;
1529 }
else if(p[0] == 0)
1530 return p[1] * vshift_[0] + 1;
1532 return p[0] + (p[1] + 1) * vshift_[0] - 1;
1537 ttk::ImplicitTriangulation::getEdgeLink2dD1(
const SimplexId p[2],
1538 const int id)
const {
1541 return p[0] + p[1] * vshift_[0];
1543 return p[0] + (p[1] + 1) * vshift_[0] + 1;
1549 ttk::ImplicitTriangulation::getEdgeStar2dL(
const SimplexId p[2],
1550 const int id)
const {
1551 if(p[1] > 0 and p[1] < nbvoxels_[Dj_]) {
1553 return p[0] * 2 + p[1] * tshift_[0];
1555 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1556 }
else if(p[1] == 0)
1557 return p[0] * 2 + p[1] * tshift_[0];
1559 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1563 ttk::ImplicitTriangulation::getEdgeStar2dH(
const SimplexId p[2],
1564 const int id)
const {
1565 if(p[0] > 0 and p[0] < nbvoxels_[Di_]) {
1567 return p[0] * 2 + p[1] * tshift_[0];
1569 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1570 }
else if(p[0] == 0)
1571 return p[0] * 2 + p[1] * tshift_[0];
1573 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1578 if(isAccelerated_) {
1579 p[0] = vertex & mod_[0];
1580 p[1] = (vertex & mod_[1]) >> div_[0];
1581 p[2] = vertex >> div_[1];
1583 p[0] = vertex % vshift_[0];
1584 p[1] = (vertex % vshift_[1]) / vshift_[0];
1585 p[2] = vertex / vshift_[1];
1589inline void ttk::ImplicitTriangulation::edgeToPosition(
const SimplexId edge,
1592 const int e = (k) ? edge - esetshift_[k - 1] : edge;
1593 p[0] = e % eshift_[2 * k];
1594 p[1] = (e % eshift_[2 * k + 1]) / eshift_[2 * k];
1595 p[2] = e / eshift_[2 * k + 1];
1600 const SimplexId t = (k) ? triangle - tsetshift_[k - 1] : triangle;
1601 p[0] = t % tshift_[2 * k];
1602 p[1] = (t % tshift_[2 * k + 1]) / tshift_[2 * k];
1603 p[2] = t / tshift_[2 * k + 1];
1609 p[0] = (tetrahedron % tetshift_[0]) / 6;
1610 p[1] = (tetrahedron % tetshift_[1]) / tetshift_[0];
1611 p[2] = tetrahedron / tetshift_[1];
1615 ttk::ImplicitTriangulation::getVertexEdgeA(
const SimplexId p[3],
1616 const int id)
const {
1620 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1622 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1623 + p[2] * eshift_[3];
1625 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1626 + p[2] * eshift_[5];
1628 return esetshift_[3] + p[0] + p[1] * eshift_[8]
1629 + p[2] * eshift_[9];
1635 ttk::ImplicitTriangulation::getVertexEdgeB(
const SimplexId p[3],
1636 const int id)
const {
1640 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1642 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
1645 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1646 + p[2] * eshift_[3];
1648 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
1651 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1652 + p[2] * eshift_[5];
1654 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
1657 return esetshift_[3] + p[0] + p[1] * eshift_[8]
1658 + p[2] * eshift_[9];
1664 ttk::ImplicitTriangulation::getVertexEdgeC(
const SimplexId p[3],
1665 const int id)
const {
1669 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1670 + p[2] * eshift_[3];
1672 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
1673 + p[2] * eshift_[7];
1675 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1677 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1678 + p[2] * eshift_[5];
1684 ttk::ImplicitTriangulation::getVertexEdgeD(
const SimplexId p[3],
1685 const int id)
const {
1689 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1690 + p[2] * eshift_[3];
1692 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1694 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
1697 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1698 + p[2] * eshift_[5];
1704 ttk::ImplicitTriangulation::getVertexEdgeE(
const SimplexId p[3],
1705 const int id)
const {
1709 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1710 + (p[2] - 1) * eshift_[5];
1712 return esetshift_[4] + p[0] + p[1] * eshift_[10]
1713 + (p[2] - 1) * eshift_[11];
1715 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1717 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1718 + p[2] * eshift_[3];
1724 ttk::ImplicitTriangulation::getVertexEdgeF(
const SimplexId p[3],
1725 const int id)
const {
1729 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1730 + (p[2] - 1) * eshift_[5];
1732 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1734 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
1737 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1738 + p[2] * eshift_[3];
1744 ttk::ImplicitTriangulation::getVertexEdgeG(
const SimplexId p[3],
1745 const int id)
const {
1749 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
1750 + (p[2] - 1) * eshift_[9];
1752 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
1753 + (p[2] - 1) * eshift_[13];
1755 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1756 + (p[2] - 1) * eshift_[5];
1758 return esetshift_[4] + p[0] + p[1] * eshift_[10]
1759 + (p[2] - 1) * eshift_[11];
1761 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1762 + p[2] * eshift_[3];
1764 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
1765 + p[2] * eshift_[7];
1767 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1773 ttk::ImplicitTriangulation::getVertexEdgeH(
const SimplexId p[3],
1774 const int id)
const {
1778 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
1779 + (p[2] - 1) * eshift_[9];
1781 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1782 + (p[2] - 1) * eshift_[5];
1784 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1785 + p[2] * eshift_[3];
1787 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1793 ttk::ImplicitTriangulation::getVertexEdgeAB(
const SimplexId p[3],
1794 const int id)
const {
1798 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1800 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
1803 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1804 + p[2] * eshift_[3];
1806 return esetshift_[4] + p[0] + p[1] * eshift_[11] + p[2] * eshift_[12]
1809 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1810 + p[2] * eshift_[5];
1812 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
1815 return esetshift_[3] + p[0] + p[1] * eshift_[8]
1816 + p[2] * eshift_[9];
1818 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1824 ttk::ImplicitTriangulation::getVertexEdgeCD(
const SimplexId p[3],
1825 const int id)
const {
1829 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1830 + p[2] * eshift_[3];
1832 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1834 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
1837 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1838 + p[2] * eshift_[5];
1840 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
1841 + p[2] * eshift_[7];
1843 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1849 ttk::ImplicitTriangulation::getVertexEdgeEF(
const SimplexId p[3],
1850 const int id)
const {
1854 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1855 + (p[2] - 1) * eshift_[5];
1857 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1859 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
1862 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1863 + p[2] * eshift_[3];
1865 return esetshift_[4] + p[0] + p[1] * eshift_[10]
1866 + (p[2] - 1) * eshift_[11];
1868 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1874 ttk::ImplicitTriangulation::getVertexEdgeGH(
const SimplexId p[3],
1875 const int id)
const {
1879 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
1880 + (p[2] - 1) * eshift_[9];
1882 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
1883 + (p[2] - 1) * eshift_[13];
1885 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1886 + (p[2] - 1) * eshift_[5];
1888 return esetshift_[4] + p[0] + p[1] * eshift_[10]
1889 + (p[2] - 1) * eshift_[11];
1891 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1892 + p[2] * eshift_[3];
1894 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
1895 + p[2] * eshift_[7];
1897 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1899 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1905 ttk::ImplicitTriangulation::getVertexEdgeAC(
const SimplexId p[3],
1906 const int id)
const {
1910 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1911 + p[2] * eshift_[3];
1913 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
1914 + p[2] * eshift_[7];
1916 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1918 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1919 + p[2] * eshift_[5];
1921 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1922 + p[2] * eshift_[3];
1924 return esetshift_[3] + p[0] + p[1] * eshift_[8]
1925 + p[2] * eshift_[9];
1931 ttk::ImplicitTriangulation::getVertexEdgeBD(
const SimplexId p[3],
1932 const int id)
const {
1936 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1938 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
1941 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1942 + p[2] * eshift_[3];
1944 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
1947 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1948 + p[2] * eshift_[5];
1950 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
1953 return esetshift_[3] + p[0] + p[1] * eshift_[8]
1954 + p[2] * eshift_[9];
1956 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1957 + p[2] * eshift_[3];
1963 ttk::ImplicitTriangulation::getVertexEdgeEG(
const SimplexId p[3],
1964 const int id)
const {
1968 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
1969 + (p[2] - 1) * eshift_[9];
1971 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
1972 + (p[2] - 1) * eshift_[13];
1974 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1975 + (p[2] - 1) * eshift_[5];
1977 return esetshift_[4] + p[0] + p[1] * eshift_[10]
1978 + (p[2] - 1) * eshift_[11];
1980 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1981 + p[2] * eshift_[3];
1983 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
1984 + p[2] * eshift_[7];
1986 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1988 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1989 + p[2] * eshift_[3];
1995 ttk::ImplicitTriangulation::getVertexEdgeFH(
const SimplexId p[3],
1996 const int id)
const {
2000 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2001 + (p[2] - 1) * eshift_[5];
2003 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2005 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2008 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2009 + p[2] * eshift_[3];
2011 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2012 + (p[2] - 1) * eshift_[9];
2014 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2015 + p[2] * eshift_[3];
2021 ttk::ImplicitTriangulation::getVertexEdgeAE(
const SimplexId p[3],
2022 const int id)
const {
2026 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2028 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2029 + p[2] * eshift_[3];
2031 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2032 + p[2] * eshift_[5];
2034 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2035 + p[2] * eshift_[9];
2037 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2038 + (p[2] - 1) * eshift_[5];
2040 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2041 + (p[2] - 1) * eshift_[11];
2047 ttk::ImplicitTriangulation::getVertexEdgeBF(
const SimplexId p[3],
2048 const int id)
const {
2052 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2054 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2057 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2058 + p[2] * eshift_[3];
2060 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2063 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2064 + p[2] * eshift_[5];
2066 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
2069 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2070 + p[2] * eshift_[9];
2072 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2073 + (p[2] - 1) * eshift_[5];
2079 ttk::ImplicitTriangulation::getVertexEdgeCG(
const SimplexId p[3],
2080 const int id)
const {
2084 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2085 + (p[2] - 1) * eshift_[9];
2087 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2088 + (p[2] - 1) * eshift_[13];
2090 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2091 + (p[2] - 1) * eshift_[5];
2093 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2094 + (p[2] - 1) * eshift_[11];
2096 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2097 + p[2] * eshift_[3];
2099 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2100 + p[2] * eshift_[7];
2102 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2104 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2105 + p[2] * eshift_[5];
2111 ttk::ImplicitTriangulation::getVertexEdgeDH(
const SimplexId p[3],
2112 const int id)
const {
2116 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2117 + p[2] * eshift_[3];
2119 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2121 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2124 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2125 + p[2] * eshift_[5];
2127 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2128 + (p[2] - 1) * eshift_[9];
2130 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2131 + (p[2] - 1) * eshift_[5];
2137 ttk::ImplicitTriangulation::getVertexEdgeABDC(
const SimplexId p[3],
2138 const int id)
const {
2142 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2144 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2147 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2148 + p[2] * eshift_[3];
2150 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2153 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2154 + p[2] * eshift_[5];
2156 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
2159 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2160 + p[2] * eshift_[9];
2162 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2163 + p[2] * eshift_[3];
2165 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2166 + p[2] * eshift_[7];
2168 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2174 ttk::ImplicitTriangulation::getVertexEdgeEFHG(
const SimplexId p[3],
2175 const int id)
const {
2179 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2180 + (p[2] - 1) * eshift_[9];
2182 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2183 + (p[2] - 1) * eshift_[13];
2185 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2186 + (p[2] - 1) * eshift_[5];
2188 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2189 + (p[2] - 1) * eshift_[11];
2191 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2192 + p[2] * eshift_[3];
2194 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2195 + p[2] * eshift_[7];
2197 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2199 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2201 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2204 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2205 + p[2] * eshift_[3];
2211 ttk::ImplicitTriangulation::getVertexEdgeAEGC(
const SimplexId p[3],
2212 const int id)
const {
2216 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2217 + (p[2] - 1) * eshift_[9];
2219 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2220 + (p[2] - 1) * eshift_[13];
2222 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2223 + (p[2] - 1) * eshift_[5];
2225 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2226 + (p[2] - 1) * eshift_[11];
2228 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2229 + p[2] * eshift_[3];
2231 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2232 + p[2] * eshift_[7];
2234 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2236 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2237 + p[2] * eshift_[3];
2239 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2240 + p[2] * eshift_[9];
2242 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2243 + p[2] * eshift_[5];
2249 ttk::ImplicitTriangulation::getVertexEdgeBFHD(
const SimplexId p[3],
2250 const int id)
const {
2254 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2256 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2259 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2260 + p[2] * eshift_[3];
2262 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2265 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2266 + p[2] * eshift_[5];
2268 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
2271 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2272 + p[2] * eshift_[9];
2274 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2275 + (p[2] - 1) * eshift_[5];
2277 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2278 + (p[2] - 1) * eshift_[9];
2280 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2281 + p[2] * eshift_[3];
2287 ttk::ImplicitTriangulation::getVertexEdgeAEFB(
const SimplexId p[3],
2288 const int id)
const {
2292 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2294 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2297 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2298 + p[2] * eshift_[3];
2300 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2303 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2304 + p[2] * eshift_[5];
2306 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
2309 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2310 + p[2] * eshift_[9];
2312 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2314 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2315 + (p[2] - 1) * eshift_[11];
2317 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2318 + (p[2] - 1) * eshift_[5];
2324 ttk::ImplicitTriangulation::getVertexEdgeGHDC(
const SimplexId p[3],
2325 const int id)
const {
2329 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2330 + (p[2] - 1) * eshift_[9];
2332 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2333 + (p[2] - 1) * eshift_[13];
2335 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2336 + (p[2] - 1) * eshift_[5];
2338 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2339 + (p[2] - 1) * eshift_[11];
2341 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2342 + p[2] * eshift_[3];
2344 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2345 + p[2] * eshift_[7];
2347 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2349 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2351 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2354 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2355 + p[2] * eshift_[5];
2361 ttk::ImplicitTriangulation::getVertexEdgeABCDEFGH(
const SimplexId p[3],
2362 const int id)
const {
2366 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2367 + (p[2] - 1) * eshift_[9];
2369 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2370 + (p[2] - 1) * eshift_[13];
2372 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2373 + (p[2] - 1) * eshift_[5];
2375 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2376 + (p[2] - 1) * eshift_[11];
2378 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2379 + p[2] * eshift_[3];
2381 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2382 + p[2] * eshift_[7];
2384 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2386 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2389 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2390 + p[2] * eshift_[5];
2392 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2394 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2397 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2398 + p[2] * eshift_[3];
2400 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
2403 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2404 + p[2] * eshift_[9];
2410 ttk::ImplicitTriangulation::getVertexTriangleA(
const SimplexId [3],
2411 const int id)
const {
2416 return tsetshift_[0];
2418 return tsetshift_[1];
2420 return tsetshift_[3];
2422 return tsetshift_[1] + 1;
2428 ttk::ImplicitTriangulation::getVertexTriangleB(
const SimplexId p[3],
2429 const int id)
const {
2432 return (p[0] - 1) * 2 + 1;
2434 return tsetshift_[4] + (p[0] - 1) * 2;
2436 return tsetshift_[2] + (p[0] - 1) * 2;
2438 return tsetshift_[3] + (p[0] - 1) * 2 + 1;
2440 return tsetshift_[1] + p[0] * 2;
2442 return tsetshift_[1] + p[0] * 2 + 1;
2444 return tsetshift_[4] + (p[0] - 1) * 2 + 1;
2446 return tsetshift_[0] + (p[0] - 1) * 2 + 1;
2448 return tsetshift_[2] + (p[0] - 1) * 2 + 1;
2450 return tsetshift_[3] + (p[0] - 1) * 2;
2452 return tsetshift_[0] + (p[0] - 1) * 2;
2454 return (p[0] - 1) * 2;
2460 ttk::ImplicitTriangulation::getVertexTriangleC(
const SimplexId p[3],
2461 const int id)
const {
2464 return (p[1] - 1) * tshift_[0];
2466 return (p[1] - 1) * tshift_[0] + 1;
2468 return tsetshift_[4] + (p[1] - 1) * tshift_[10];
2470 return tsetshift_[0] + p[1] * tshift_[2];
2472 return tsetshift_[1] + (p[1] - 1) * tshift_[4];
2478 ttk::ImplicitTriangulation::getVertexTriangleD(
const SimplexId p[3],
2479 const int id)
const {
2482 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
2484 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6];
2486 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2];
2488 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4];
2490 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2] + 1;
2496 ttk::ImplicitTriangulation::getVertexTriangleE(
const SimplexId p[3],
2497 const int id)
const {
2500 return tsetshift_[0] + (p[2] - 1) * tshift_[3];
2502 return tsetshift_[2] + (p[2] - 1) * tshift_[7] + 1;
2504 return tsetshift_[1] + (p[2] - 1) * tshift_[5] + 1;
2506 return p[2] * tshift_[1];
2508 return tsetshift_[0] + (p[2] - 1) * tshift_[3] + 1;
2514 ttk::ImplicitTriangulation::getVertexTriangleF(
const SimplexId p[3],
2515 const int id)
const {
2518 return tsetshift_[0] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[3] + 1;
2520 return (p[0] - 1) * 2 + p[2] * tshift_[1];
2522 return (p[0] - 1) * 2 + p[2] * tshift_[1] + 1;
2524 return tsetshift_[4] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[11] + 1;
2526 return tsetshift_[1] + p[0] * 2 + (p[2] - 1) * tshift_[5] + 1;
2532 ttk::ImplicitTriangulation::getVertexTriangleG(
const SimplexId p[3],
2533 const int id)
const {
2536 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7];
2538 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7]
2541 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5];
2543 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5]
2546 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9];
2548 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9]
2551 return tsetshift_[4] + (p[1] - 1) * tshift_[10]
2552 + (p[2] - 1) * tshift_[11];
2554 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + (p[2] - 1) * tshift_[11]
2557 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
2559 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2561 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3];
2563 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3] + 1;
2569 ttk::ImplicitTriangulation::getVertexTriangleH(
const SimplexId p[3],
2570 const int id)
const {
2573 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
2574 + (p[2] - 1) * tshift_[9] + 1;
2576 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2578 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2579 + (p[2] - 1) * tshift_[5];
2581 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2582 + (p[2] - 1) * tshift_[5] + 1;
2584 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
2585 + (p[2] - 1) * tshift_[3] + 1;
2591 ttk::ImplicitTriangulation::getVertexTriangleAB(
const SimplexId p[3],
2592 const int id)
const {
2595 return (p[0] - 1) * 2 + 1;
2597 return tsetshift_[4] + (p[0] - 1) * 2;
2599 return tsetshift_[2] + (p[0] - 1) * 2;
2601 return tsetshift_[3] + (p[0] - 1) * 2 + 1;
2603 return tsetshift_[1] + p[0] * 2;
2605 return tsetshift_[1] + p[0] * 2 + 1;
2607 return tsetshift_[4] + (p[0] - 1) * 2 + 1;
2609 return tsetshift_[0] + (p[0] - 1) * 2 + 1;
2611 return tsetshift_[2] + (p[0] - 1) * 2 + 1;
2613 return tsetshift_[3] + (p[0] - 1) * 2;
2615 return tsetshift_[0] + (p[0] - 1) * 2;
2617 return (p[0] - 1) * 2;
2621 return tsetshift_[0] + p[0] * 2;
2623 return tsetshift_[3] + p[0] * 2;
2629 ttk::ImplicitTriangulation::getVertexTriangleCD(
const SimplexId p[3],
2630 const int id)
const {
2633 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
2635 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6];
2637 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2];
2639 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4];
2641 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2] + 1;
2643 return p[0] * 2 + (p[1] - 1) * tshift_[0];
2645 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
2647 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10];
2649 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2];
2655 ttk::ImplicitTriangulation::getVertexTriangleEF(
const SimplexId p[3],
2656 const int id)
const {
2659 return tsetshift_[0] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[3] + 1;
2661 return (p[0] - 1) * 2 + p[2] * tshift_[1];
2663 return (p[0] - 1) * 2 + p[2] * tshift_[1] + 1;
2665 return tsetshift_[4] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[11] + 1;
2667 return tsetshift_[1] + p[0] * 2 + (p[2] - 1) * tshift_[5] + 1;
2669 return p[0] * 2 + tsetshift_[0] + (p[2] - 1) * tshift_[3];
2671 return p[0] * 2 + tsetshift_[2] + (p[2] - 1) * tshift_[7] + 1;
2673 return p[0] * 2 + p[2] * tshift_[1];
2675 return p[0] * 2 + tsetshift_[0] + (p[2] - 1) * tshift_[3] + 1;
2681 ttk::ImplicitTriangulation::getVertexTriangleGH(
const SimplexId p[3],
2682 const int id)
const {
2685 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
2686 + (p[2] - 1) * tshift_[9] + 1;
2688 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2690 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2691 + (p[2] - 1) * tshift_[5];
2693 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2694 + (p[2] - 1) * tshift_[5] + 1;
2696 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
2697 + (p[2] - 1) * tshift_[3] + 1;
2699 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
2700 + (p[2] - 1) * tshift_[7];
2702 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
2703 + (p[2] - 1) * tshift_[7] + 1;
2705 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
2706 + (p[2] - 1) * tshift_[9];
2708 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
2709 + (p[2] - 1) * tshift_[9] + 1;
2711 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
2712 + (p[2] - 1) * tshift_[11];
2714 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
2715 + (p[2] - 1) * tshift_[11] + 1;
2717 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
2719 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2721 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
2722 + (p[2] - 1) * tshift_[3];
2724 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
2725 + (p[2] - 1) * tshift_[3] + 1;
2731 ttk::ImplicitTriangulation::getVertexTriangleAC(
const SimplexId p[3],
2732 const int id)
const {
2735 return (p[1] - 1) * tshift_[0];
2737 return (p[1] - 1) * tshift_[0] + 1;
2739 return tsetshift_[4] + (p[1] - 1) * tshift_[10];
2741 return tsetshift_[0] + p[1] * tshift_[2];
2743 return tsetshift_[1] + (p[1] - 1) * tshift_[4];
2745 return p[1] * tshift_[0];
2747 return tsetshift_[1] + p[1] * tshift_[4];
2749 return tsetshift_[3] + p[1] * tshift_[8];
2751 return tsetshift_[1] + p[1] * tshift_[4] + 1;
2757 ttk::ImplicitTriangulation::getVertexTriangleBD(
const SimplexId p[3],
2758 const int id)
const {
2761 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
2763 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6];
2765 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2];
2767 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4];
2769 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2] + 1;
2771 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
2773 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10];
2775 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6];
2777 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8] + 1;
2779 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4];
2781 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + 1;
2783 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10] + 1;
2785 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6] + 1;
2787 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8];
2789 return (p[0] - 1) * 2 + p[1] * tshift_[0];
2795 ttk::ImplicitTriangulation::getVertexTriangleEG(
const SimplexId p[3],
2796 const int id)
const {
2799 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7];
2801 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7]
2804 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5];
2806 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5]
2809 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9];
2811 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9]
2814 return tsetshift_[4] + (p[1] - 1) * tshift_[10]
2815 + (p[2] - 1) * tshift_[11];
2817 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + (p[2] - 1) * tshift_[11]
2820 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
2822 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2824 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3];
2826 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3] + 1;
2828 return tsetshift_[2] + p[1] * tshift_[6] + (p[2] - 1) * tshift_[7] + 1;
2830 return tsetshift_[1] + p[1] * tshift_[4] + (p[2] - 1) * tshift_[5] + 1;
2832 return p[1] * tshift_[0] + p[2] * tshift_[1];
2838 ttk::ImplicitTriangulation::getVertexTriangleFH(
const SimplexId p[3],
2839 const int id)
const {
2842 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
2843 + (p[2] - 1) * tshift_[9] + 1;
2845 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2847 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2848 + (p[2] - 1) * tshift_[5];
2850 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2851 + (p[2] - 1) * tshift_[5] + 1;
2853 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
2854 + (p[2] - 1) * tshift_[3] + 1;
2856 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
2858 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
2860 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
2861 + (p[2] - 1) * tshift_[11] + 1;
2863 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
2864 + (p[2] - 1) * tshift_[5] + 1;
2870 ttk::ImplicitTriangulation::getVertexTriangleAE(
const SimplexId p[3],
2871 const int id)
const {
2874 return tsetshift_[0] + (p[2] - 1) * tshift_[3];
2876 return tsetshift_[2] + (p[2] - 1) * tshift_[7] + 1;
2878 return tsetshift_[1] + (p[2] - 1) * tshift_[5] + 1;
2880 return p[2] * tshift_[1];
2882 return tsetshift_[0] + (p[2] - 1) * tshift_[3] + 1;
2884 return tsetshift_[0] + p[2] * tshift_[3];
2886 return tsetshift_[1] + p[2] * tshift_[5];
2888 return tsetshift_[3] + p[2] * tshift_[9];
2890 return tsetshift_[1] + p[2] * tshift_[5] + 1;
2896 ttk::ImplicitTriangulation::getVertexTriangleBF(
const SimplexId p[3],
2897 const int id)
const {
2900 return tsetshift_[0] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[3] + 1;
2902 return (p[0] - 1) * 2 + p[2] * tshift_[1];
2904 return (p[0] - 1) * 2 + p[2] * tshift_[1] + 1;
2906 return tsetshift_[4] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[11] + 1;
2908 return tsetshift_[1] + p[0] * 2 + (p[2] - 1) * tshift_[5] + 1;
2910 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11];
2912 return tsetshift_[2] + (p[0] - 1) * 2 + p[2] * tshift_[7];
2914 return tsetshift_[3] + (p[0] - 1) * 2 + p[2] * tshift_[9] + 1;
2916 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5];
2918 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5] + 1;
2920 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11] + 1;
2922 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3] + 1;
2924 return tsetshift_[2] + (p[0] - 1) * 2 + p[2] * tshift_[7] + 1;
2926 return tsetshift_[3] + (p[0] - 1) * 2 + p[2] * tshift_[9];
2928 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3];
2934 ttk::ImplicitTriangulation::getVertexTriangleCG(
const SimplexId p[3],
2935 const int id)
const {
2938 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7];
2940 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7]
2943 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5];
2945 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5]
2948 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9];
2950 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9]
2953 return tsetshift_[4] + (p[1] - 1) * tshift_[10]
2954 + (p[2] - 1) * tshift_[11];
2956 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + (p[2] - 1) * tshift_[11]
2959 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
2961 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2963 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3];
2965 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3] + 1;
2967 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + p[2] * tshift_[11];
2969 return tsetshift_[0] + p[1] * tshift_[2] + p[2] * tshift_[3];
2971 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + p[2] * tshift_[5];
2977 ttk::ImplicitTriangulation::getVertexTriangleDH(
const SimplexId p[3],
2978 const int id)
const {
2981 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
2982 + (p[2] - 1) * tshift_[9] + 1;
2984 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2986 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2987 + (p[2] - 1) * tshift_[5];
2989 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2990 + (p[2] - 1) * tshift_[5] + 1;
2992 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
2993 + (p[2] - 1) * tshift_[3] + 1;
2995 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
2996 + p[2] * tshift_[7];
2998 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
2999 + p[2] * tshift_[3];
3001 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3002 + p[2] * tshift_[5];
3004 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3005 + p[2] * tshift_[3] + 1;
3011 ttk::ImplicitTriangulation::getVertexTriangleABDC(
const SimplexId p[3],
3012 const int id)
const {
3015 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
3017 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10];
3019 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6];
3021 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8] + 1;
3023 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4];
3025 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + 1;
3027 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10] + 1;
3029 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2] + 1;
3031 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6] + 1;
3033 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8];
3035 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2];
3037 return (p[0] - 1) * 2 + p[1] * tshift_[0];
3039 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
3041 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6];
3043 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4];
3045 return p[0] * 2 + (p[1] - 1) * tshift_[0];
3047 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
3049 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10];
3051 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2];
3053 return p[0] * 2 + p[1] * tshift_[0];
3055 return p[0] * 2 + tsetshift_[3] + p[1] * tshift_[8];
3061 ttk::ImplicitTriangulation::getVertexTriangleEFHG(
const SimplexId p[3],
3062 const int id)
const {
3065 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3066 + (p[2] - 1) * tshift_[7];
3068 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3069 + (p[2] - 1) * tshift_[7] + 1;
3071 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3072 + (p[2] - 1) * tshift_[5];
3074 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3075 + (p[2] - 1) * tshift_[5] + 1;
3077 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3078 + (p[2] - 1) * tshift_[9];
3080 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3081 + (p[2] - 1) * tshift_[9] + 1;
3083 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3084 + (p[2] - 1) * tshift_[11];
3086 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3087 + (p[2] - 1) * tshift_[11] + 1;
3089 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
3091 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3093 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3094 + (p[2] - 1) * tshift_[3];
3096 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3097 + (p[2] - 1) * tshift_[3] + 1;
3099 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3100 + (p[2] - 1) * tshift_[9] + 1;
3102 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3104 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3105 + (p[2] - 1) * tshift_[3] + 1;
3107 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
3109 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
3111 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3112 + (p[2] - 1) * tshift_[11] + 1;
3114 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
3115 + (p[2] - 1) * tshift_[5] + 1;
3117 return p[0] * 2 + tsetshift_[2] + p[1] * tshift_[6]
3118 + (p[2] - 1) * tshift_[7] + 1;
3120 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
3126 ttk::ImplicitTriangulation::getVertexTriangleAEGC(
const SimplexId p[3],
3127 const int id)
const {
3130 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7];
3132 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7]
3135 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5];
3137 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5]
3140 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9];
3142 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9]
3145 return tsetshift_[4] + (p[1] - 1) * tshift_[10]
3146 + (p[2] - 1) * tshift_[11];
3148 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + (p[2] - 1) * tshift_[11]
3151 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
3153 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3155 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3];
3157 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3] + 1;
3159 return tsetshift_[2] + p[1] * tshift_[6] + (p[2] - 1) * tshift_[7] + 1;
3161 return tsetshift_[1] + p[1] * tshift_[4] + (p[2] - 1) * tshift_[5] + 1;
3163 return p[1] * tshift_[0] + p[2] * tshift_[1];
3165 return tsetshift_[0] + p[1] * tshift_[2] + p[2] * tshift_[3];
3167 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5];
3169 return tsetshift_[3] + p[1] * tshift_[8] + p[2] * tshift_[9];
3171 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5] + 1;
3173 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + p[2] * tshift_[11];
3175 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + p[2] * tshift_[5];
3181 ttk::ImplicitTriangulation::getVertexTriangleBFHD(
const SimplexId p[3],
3182 const int id)
const {
3185 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
3187 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3188 + p[2] * tshift_[11];
3190 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3191 + p[2] * tshift_[7];
3193 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3194 + p[2] * tshift_[9] + 1;
3196 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
3198 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
3201 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3202 + p[2] * tshift_[11] + 1;
3204 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3205 + p[2] * tshift_[3] + 1;
3207 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3208 + p[2] * tshift_[7] + 1;
3210 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3211 + p[2] * tshift_[9];
3213 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3214 + p[2] * tshift_[3];
3216 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
3218 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3220 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3221 + p[2] * tshift_[7];
3223 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3224 + p[2] * tshift_[5];
3226 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3227 + (p[2] - 1) * tshift_[9] + 1;
3229 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3230 + (p[2] - 1) * tshift_[5];
3232 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3233 + (p[2] - 1) * tshift_[5] + 1;
3235 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3236 + (p[2] - 1) * tshift_[3] + 1;
3238 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3239 + (p[2] - 1) * tshift_[11] + 1;
3241 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
3242 + (p[2] - 1) * tshift_[5] + 1;
3248 ttk::ImplicitTriangulation::getVertexTriangleAEFB(
const SimplexId p[3],
3249 const int id)
const {
3252 return (p[0] - 1) * 2 + p[2] * tshift_[1] + 1;
3254 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11];
3256 return tsetshift_[2] + (p[0] - 1) * 2 + p[2] * tshift_[7];
3258 return tsetshift_[3] + (p[0] - 1) * 2 + p[2] * tshift_[9] + 1;
3260 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5];
3262 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5] + 1;
3264 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11] + 1;
3266 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3] + 1;
3268 return tsetshift_[2] + (p[0] - 1) * 2 + p[2] * tshift_[7] + 1;
3270 return tsetshift_[3] + (p[0] - 1) * 2 + p[2] * tshift_[9];
3272 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3];
3274 return (p[0] - 1) * 2 + p[2] * tshift_[1];
3276 return tsetshift_[0] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[3] + 1;
3278 return tsetshift_[4] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[11] + 1;
3280 return tsetshift_[1] + p[0] * 2 + (p[2] - 1) * tshift_[5] + 1;
3282 return p[0] * 2 + tsetshift_[0] + (p[2] - 1) * tshift_[3];
3284 return p[0] * 2 + tsetshift_[2] + (p[2] - 1) * tshift_[7] + 1;
3286 return p[0] * 2 + p[2] * tshift_[1];
3288 return p[0] * 2 + tsetshift_[0] + (p[2] - 1) * tshift_[3] + 1;
3290 return p[0] * 2 + tsetshift_[0] + p[2] * tshift_[3];
3292 return p[0] * 2 + tsetshift_[3] + p[2] * tshift_[9];
3298 ttk::ImplicitTriangulation::getVertexTriangleGHDC(
const SimplexId p[3],
3299 const int id)
const {
3302 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3303 + (p[2] - 1) * tshift_[7];
3305 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3306 + (p[2] - 1) * tshift_[7] + 1;
3308 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3309 + (p[2] - 1) * tshift_[5];
3311 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3312 + (p[2] - 1) * tshift_[5] + 1;
3314 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3315 + (p[2] - 1) * tshift_[9];
3317 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3318 + (p[2] - 1) * tshift_[9] + 1;
3320 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3321 + (p[2] - 1) * tshift_[11];
3323 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3324 + (p[2] - 1) * tshift_[11] + 1;
3326 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
3328 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3330 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3331 + (p[2] - 1) * tshift_[3];
3333 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3334 + (p[2] - 1) * tshift_[3] + 1;
3336 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3337 + (p[2] - 1) * tshift_[9] + 1;
3339 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3341 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3342 + (p[2] - 1) * tshift_[3] + 1;
3344 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3345 + p[2] * tshift_[7];
3347 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3348 + p[2] * tshift_[3];
3350 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3351 + p[2] * tshift_[5];
3353 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3354 + p[2] * tshift_[3] + 1;
3356 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3357 + p[2] * tshift_[11];
3359 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2] + p[2] * tshift_[3];
3365 ttk::ImplicitTriangulation::getVertexTriangleABCDEFGH(
const SimplexId p[3],
3366 const int id)
const {
3369 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
3371 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3372 + p[2] * tshift_[11];
3374 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3375 + p[2] * tshift_[7];
3377 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3378 + p[2] * tshift_[9] + 1;
3380 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
3382 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
3385 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3386 + p[2] * tshift_[11] + 1;
3388 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3389 + p[2] * tshift_[3] + 1;
3391 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3392 + p[2] * tshift_[7] + 1;
3394 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3395 + p[2] * tshift_[9];
3397 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3398 + p[2] * tshift_[3];
3400 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
3402 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3403 + (p[2] - 1) * tshift_[7];
3405 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3406 + (p[2] - 1) * tshift_[7] + 1;
3408 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3409 + (p[2] - 1) * tshift_[5];
3411 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3412 + (p[2] - 1) * tshift_[5] + 1;
3414 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3415 + (p[2] - 1) * tshift_[9];
3417 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3418 + (p[2] - 1) * tshift_[9] + 1;
3420 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3421 + (p[2] - 1) * tshift_[11];
3423 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3424 + (p[2] - 1) * tshift_[11] + 1;
3426 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
3428 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3430 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3431 + (p[2] - 1) * tshift_[3];
3433 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3434 + (p[2] - 1) * tshift_[3] + 1;
3436 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3438 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3439 + p[2] * tshift_[7];
3441 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3442 + p[2] * tshift_[5];
3444 return p[0] * 2 + tsetshift_[2] + p[1] * tshift_[6]
3445 + (p[2] - 1) * tshift_[7] + 1;
3447 return p[0] * 2 + tsetshift_[1] + p[1] * tshift_[4]
3448 + (p[2] - 1) * tshift_[5] + 1;
3450 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
3452 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3453 + (p[2] - 1) * tshift_[9] + 1;
3455 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3456 + (p[2] - 1) * tshift_[3] + 1;
3458 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
3460 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
3462 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3463 + (p[2] - 1) * tshift_[11] + 1;
3465 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3466 + p[2] * tshift_[11];
3472 ttk::ImplicitTriangulation::getVertexLinkA(
const SimplexId p[3],
3473 const int id)
const {
3476 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3477 + p[2] * tshift_[11];
3479 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
3486 ttk::ImplicitTriangulation::getVertexLinkB(
const SimplexId p[3],
3487 const int id)
const {
3490 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3491 + p[2] * tshift_[5];
3493 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3494 + p[2] * tshift_[5] + 1;
3496 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3497 + p[2] * tshift_[3];
3499 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3500 + p[2] * tshift_[3] + 1;
3502 return (p[0] - 1) * 2 + p[1] * tshift_[0]
3503 + (p[2] + 1) * tshift_[1];
3505 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
3512 ttk::ImplicitTriangulation::getVertexLinkC(
const SimplexId p[3],
3513 const int id)
const {
3516 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
3517 + p[2] * tshift_[9];
3519 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
3520 + p[2] * tshift_[7];
3526 ttk::ImplicitTriangulation::getVertexLinkD(
const SimplexId p[3],
3527 const int id)
const {
3530 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3531 + p[2] * tshift_[11];
3533 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3534 + p[2] * tshift_[9] + 1;
3540 ttk::ImplicitTriangulation::getVertexLinkE(
const SimplexId p[3],
3541 const int id)
const {
3544 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
3545 + (p[2] - 1) * tshift_[9];
3547 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3548 + (p[2] - 1) * tshift_[11] + 1;
3554 ttk::ImplicitTriangulation::getVertexLinkF(
const SimplexId p[3],
3555 const int id)
const {
3558 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3559 + (p[2] - 1) * tshift_[7] + 1;
3561 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3562 + (p[2] - 1) * tshift_[9] + 1;
3568 ttk::ImplicitTriangulation::getVertexLinkG(
const SimplexId p[3],
3569 const int id)
const {
3572 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3573 + (p[2] - 1) * tshift_[5];
3575 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3576 + (p[2] - 1) * tshift_[5] + 1;
3578 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3579 + (p[2] - 1) * tshift_[3];
3581 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3582 + (p[2] - 1) * tshift_[3] + 1;
3584 return p[0] * 2 + (p[1] - 1) * tshift_[0]
3585 + (p[2] - 1) * tshift_[1];
3587 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
3594 ttk::ImplicitTriangulation::getVertexLinkH(
const SimplexId p[3],
3595 const int id)
const {
3598 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3599 + (p[2] - 1) * tshift_[11] + 1;
3601 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3602 + (p[2] - 1) * tshift_[7];
3608 ttk::ImplicitTriangulation::getVertexLinkAB(
const SimplexId p[3],
3609 const int id)
const {
3612 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3613 + p[2] * tshift_[11];
3615 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
3618 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3619 + p[2] * tshift_[5];
3621 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3622 + p[2] * tshift_[5] + 1;
3624 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3625 + p[2] * tshift_[3];
3627 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3628 + p[2] * tshift_[3] + 1;
3630 return (p[0] - 1) * 2 + p[1] * tshift_[0]
3631 + (p[2] + 1) * tshift_[1];
3633 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
3640 ttk::ImplicitTriangulation::getVertexLinkCD(
const SimplexId p[3],
3641 const int id)
const {
3644 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
3645 + p[2] * tshift_[9];
3647 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
3648 + p[2] * tshift_[7];
3650 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3651 + p[2] * tshift_[11];
3653 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3654 + p[2] * tshift_[9] + 1;
3660 ttk::ImplicitTriangulation::getVertexLinkEF(
const SimplexId p[3],
3661 const int id)
const {
3664 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
3665 + (p[2] - 1) * tshift_[9];
3667 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3668 + (p[2] - 1) * tshift_[11] + 1;
3670 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3671 + (p[2] - 1) * tshift_[7] + 1;
3673 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3674 + (p[2] - 1) * tshift_[9] + 1;
3680 ttk::ImplicitTriangulation::getVertexLinkGH(
const SimplexId p[3],
3681 const int id)
const {
3684 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3685 + (p[2] - 1) * tshift_[5];
3687 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3688 + (p[2] - 1) * tshift_[5] + 1;
3690 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3691 + (p[2] - 1) * tshift_[3];
3693 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3694 + (p[2] - 1) * tshift_[3] + 1;
3696 return p[0] * 2 + (p[1] - 1) * tshift_[0]
3697 + (p[2] - 1) * tshift_[1];
3699 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
3702 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3703 + (p[2] - 1) * tshift_[11] + 1;
3705 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3706 + (p[2] - 1) * tshift_[7];
3712 ttk::ImplicitTriangulation::getVertexLinkAC(
const SimplexId p[3],
3713 const int id)
const {
3716 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3717 + p[2] * tshift_[11];
3719 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
3722 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
3723 + p[2] * tshift_[9];
3725 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
3726 + p[2] * tshift_[7];
3732 ttk::ImplicitTriangulation::getVertexLinkBD(
const SimplexId p[3],
3733 const int id)
const {
3736 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3737 + p[2] * tshift_[5];
3739 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3740 + p[2] * tshift_[5] + 1;
3742 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3743 + p[2] * tshift_[3];
3745 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3746 + p[2] * tshift_[3] + 1;
3748 return (p[0] - 1) * 2 + p[1] * tshift_[0]
3749 + (p[2] + 1) * tshift_[1];
3751 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
3754 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3755 + p[2] * tshift_[11];
3757 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3758 + p[2] * tshift_[9] + 1;
3764 ttk::ImplicitTriangulation::getVertexLinkEG(
const SimplexId p[3],
3765 const int id)
const {
3768 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
3769 + (p[2] - 1) * tshift_[9];
3771 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3772 + (p[2] - 1) * tshift_[11] + 1;
3774 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3775 + (p[2] - 1) * tshift_[5];
3777 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3778 + (p[2] - 1) * tshift_[5] + 1;
3780 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3781 + (p[2] - 1) * tshift_[3];
3783 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3784 + (p[2] - 1) * tshift_[3] + 1;
3786 return p[0] * 2 + (p[1] - 1) * tshift_[0]
3787 + (p[2] - 1) * tshift_[1];
3789 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
3796 ttk::ImplicitTriangulation::getVertexLinkFH(
const SimplexId p[3],
3797 const int id)
const {
3800 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3801 + (p[2] - 1) * tshift_[7] + 1;
3803 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3804 + (p[2] - 1) * tshift_[9] + 1;
3806 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3807 + (p[2] - 1) * tshift_[11] + 1;
3809 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3810 + (p[2] - 1) * tshift_[7];
3816 ttk::ImplicitTriangulation::getVertexLinkAE(
const SimplexId p[3],
3817 const int id)
const {
3820 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3821 + p[2] * tshift_[11];
3823 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
3826 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
3827 + (p[2] - 1) * tshift_[9];
3829 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3830 + (p[2] - 1) * tshift_[11] + 1;
3836 ttk::ImplicitTriangulation::getVertexLinkBF(
const SimplexId p[3],
3837 const int id)
const {
3840 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3841 + p[2] * tshift_[5];
3843 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3844 + p[2] * tshift_[5] + 1;
3846 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3847 + p[2] * tshift_[3];
3849 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3850 + p[2] * tshift_[3] + 1;
3852 return (p[0] - 1) * 2 + p[1] * tshift_[0]
3853 + (p[2] + 1) * tshift_[1];
3855 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
3858 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3859 + (p[2] - 1) * tshift_[7] + 1;
3861 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3862 + (p[2] - 1) * tshift_[9] + 1;
3868 ttk::ImplicitTriangulation::getVertexLinkCG(
const SimplexId p[3],
3869 const int id)
const {
3872 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
3873 + p[2] * tshift_[9];
3875 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
3876 + p[2] * tshift_[7];
3878 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3879 + (p[2] - 1) * tshift_[5];
3881 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3882 + (p[2] - 1) * tshift_[5] + 1;
3884 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3885 + (p[2] - 1) * tshift_[3];
3887 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3888 + (p[2] - 1) * tshift_[3] + 1;
3890 return p[0] * 2 + (p[1] - 1) * tshift_[0]
3891 + (p[2] - 1) * tshift_[1];
3893 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
3900 ttk::ImplicitTriangulation::getVertexLinkDH(
const SimplexId p[3],
3901 const int id)
const {
3904 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3905 + p[2] * tshift_[11];
3907 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3908 + p[2] * tshift_[9] + 1;
3910 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3911 + (p[2] - 1) * tshift_[11] + 1;
3913 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3914 + (p[2] - 1) * tshift_[7];
3920 ttk::ImplicitTriangulation::getVertexLinkABDC(
const SimplexId p[3],
3921 const int id)
const {
3924 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3925 + p[2] * tshift_[11];
3927 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
3930 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3931 + p[2] * tshift_[5];
3933 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3934 + p[2] * tshift_[5] + 1;
3936 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3937 + p[2] * tshift_[3];
3939 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3940 + p[2] * tshift_[3] + 1;
3942 return (p[0] - 1) * 2 + p[1] * tshift_[0]
3943 + (p[2] + 1) * tshift_[1];
3945 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
3948 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3949 + p[2] * tshift_[11];
3951 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3952 + p[2] * tshift_[9] + 1;
3954 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
3955 + p[2] * tshift_[9];
3957 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
3958 + p[2] * tshift_[7];
3964 ttk::ImplicitTriangulation::getVertexLinkEFHG(
const SimplexId p[3],
3965 const int id)
const {
3968 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
3969 + (p[2] - 1) * tshift_[9];
3971 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3972 + (p[2] - 1) * tshift_[11] + 1;
3974 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3975 + (p[2] - 1) * tshift_[7] + 1;
3977 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3978 + (p[2] - 1) * tshift_[9] + 1;
3980 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3981 + (p[2] - 1) * tshift_[11] + 1;
3983 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3984 + (p[2] - 1) * tshift_[7];
3986 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3987 + (p[2] - 1) * tshift_[5];
3989 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3990 + (p[2] - 1) * tshift_[5] + 1;
3992 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3993 + (p[2] - 1) * tshift_[3];
3995 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3996 + (p[2] - 1) * tshift_[3] + 1;
3998 return p[0] * 2 + (p[1] - 1) * tshift_[0]
3999 + (p[2] - 1) * tshift_[1];
4001 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
4008 ttk::ImplicitTriangulation::getVertexLinkAEGC(
const SimplexId p[3],
4009 const int id)
const {
4012 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4013 + p[2] * tshift_[11];
4015 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
4018 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
4019 + (p[2] - 1) * tshift_[9];
4021 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4022 + (p[2] - 1) * tshift_[11] + 1;
4024 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4025 + (p[2] - 1) * tshift_[5];
4027 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4028 + (p[2] - 1) * tshift_[5] + 1;
4030 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4031 + (p[2] - 1) * tshift_[3];
4033 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4034 + (p[2] - 1) * tshift_[3] + 1;
4036 return p[0] * 2 + (p[1] - 1) * tshift_[0]
4037 + (p[2] - 1) * tshift_[1];
4039 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
4042 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
4043 + p[2] * tshift_[9];
4045 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
4046 + p[2] * tshift_[7];
4052 ttk::ImplicitTriangulation::getVertexLinkBFHD(
const SimplexId p[3],
4053 const int id)
const {
4056 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4057 + p[2] * tshift_[5];
4059 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4060 + p[2] * tshift_[5] + 1;
4062 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4063 + p[2] * tshift_[3];
4065 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4066 + p[2] * tshift_[3] + 1;
4068 return (p[0] - 1) * 2 + p[1] * tshift_[0]
4069 + (p[2] + 1) * tshift_[1];
4071 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
4074 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
4075 + (p[2] - 1) * tshift_[7] + 1;
4077 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
4078 + (p[2] - 1) * tshift_[9] + 1;
4080 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4081 + (p[2] - 1) * tshift_[11] + 1;
4083 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
4084 + (p[2] - 1) * tshift_[7];
4086 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4087 + p[2] * tshift_[11];
4089 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
4090 + p[2] * tshift_[9] + 1;
4096 ttk::ImplicitTriangulation::getVertexLinkAEFB(
const SimplexId p[3],
4097 const int id)
const {
4100 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4101 + p[2] * tshift_[11];
4103 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
4106 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
4107 + (p[2] - 1) * tshift_[9];
4109 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4110 + (p[2] - 1) * tshift_[11] + 1;
4112 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
4113 + (p[2] - 1) * tshift_[7] + 1;
4115 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
4116 + (p[2] - 1) * tshift_[9] + 1;
4118 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4119 + p[2] * tshift_[5];
4121 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4122 + p[2] * tshift_[5] + 1;
4124 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4125 + p[2] * tshift_[3];
4127 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4128 + p[2] * tshift_[3] + 1;
4130 return (p[0] - 1) * 2 + p[1] * tshift_[0]
4131 + (p[2] + 1) * tshift_[1];
4133 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
4140 ttk::ImplicitTriangulation::getVertexLinkGHDC(
const SimplexId p[3],
4141 const int id)
const {
4144 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4145 + (p[2] - 1) * tshift_[5];
4147 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4148 + (p[2] - 1) * tshift_[5] + 1;
4150 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4151 + (p[2] - 1) * tshift_[3];
4153 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4154 + (p[2] - 1) * tshift_[3] + 1;
4156 return p[0] * 2 + (p[1] - 1) * tshift_[0]
4157 + (p[2] - 1) * tshift_[1];
4159 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
4162 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4163 + (p[2] - 1) * tshift_[11] + 1;
4165 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
4166 + (p[2] - 1) * tshift_[7];
4168 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4169 + p[2] * tshift_[11];
4171 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
4172 + p[2] * tshift_[9] + 1;
4174 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
4175 + p[2] * tshift_[9];
4177 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
4178 + p[2] * tshift_[7];
4184 ttk::ImplicitTriangulation::getVertexLinkABCDEFGH(
const SimplexId p[3],
4185 const int id)
const {
4188 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4189 + p[2] * tshift_[11];
4191 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
4194 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4195 + p[2] * tshift_[5];
4197 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4198 + p[2] * tshift_[5] + 1;
4200 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4201 + p[2] * tshift_[3];
4203 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4204 + p[2] * tshift_[3] + 1;
4206 return (p[0] - 1) * 2 + p[1] * tshift_[0]
4207 + (p[2] + 1) * tshift_[1];
4209 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
4212 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
4213 + p[2] * tshift_[9];
4215 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
4216 + p[2] * tshift_[7];
4218 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4219 + p[2] * tshift_[11];
4221 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
4222 + p[2] * tshift_[9] + 1;
4224 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
4225 + (p[2] - 1) * tshift_[9];
4227 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4228 + (p[2] - 1) * tshift_[11] + 1;
4230 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
4231 + (p[2] - 1) * tshift_[7] + 1;
4233 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
4234 + (p[2] - 1) * tshift_[9] + 1;
4236 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4237 + (p[2] - 1) * tshift_[5];
4239 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4240 + (p[2] - 1) * tshift_[5] + 1;
4242 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4243 + (p[2] - 1) * tshift_[3];
4245 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4246 + (p[2] - 1) * tshift_[3] + 1;
4248 return p[0] * 2 + (p[1] - 1) * tshift_[0]
4249 + (p[2] - 1) * tshift_[1];
4251 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
4254 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4255 + (p[2] - 1) * tshift_[11] + 1;
4257 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
4258 + (p[2] - 1) * tshift_[7];
4264 ttk::ImplicitTriangulation::getVertexStarA(
const SimplexId p[3],
4265 const int id)
const {
4268 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
4270 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 2;
4276 ttk::ImplicitTriangulation::getVertexStarB(
const SimplexId p[3],
4277 const int id)
const {
4278 if(
id >= 0 &&
id <= 5)
4279 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + id;
4284 ttk::ImplicitTriangulation::getVertexStarC(
const SimplexId p[3],
4285 const int id)
const {
4288 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1];
4290 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4297 ttk::ImplicitTriangulation::getVertexStarD(
const SimplexId p[3],
4298 const int id)
const {
4301 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4304 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4311 ttk::ImplicitTriangulation::getVertexStarE(
const SimplexId p[3],
4312 const int id)
const {
4315 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4318 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4325 ttk::ImplicitTriangulation::getVertexStarF(
const SimplexId p[3],
4326 const int id)
const {
4329 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4332 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4339 ttk::ImplicitTriangulation::getVertexStarG(
const SimplexId p[3],
4340 const int id)
const {
4341 if(
id >= 0 &&
id <= 5)
4342 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4348 ttk::ImplicitTriangulation::getVertexStarH(
const SimplexId p[3],
4349 const int id)
const {
4352 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4353 + (p[2] - 1) * tetshift_[1] + 4;
4355 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4356 + (p[2] - 1) * tetshift_[1] + 5;
4362 ttk::ImplicitTriangulation::getVertexStarAB(
const SimplexId p[3],
4363 const int id)
const {
4364 if(
id >= 0 &&
id <= 5)
4365 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4369 return p[0] * 6 + p[1] * tetshift_[0]
4370 + p[2] * tetshift_[1];
4372 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4379 ttk::ImplicitTriangulation::getVertexStarCD(
const SimplexId p[3],
4380 const int id)
const {
4383 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4386 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4389 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4390 + p[2] * tetshift_[1];
4392 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4399 ttk::ImplicitTriangulation::getVertexStarEF(
const SimplexId p[3],
4400 const int id)
const {
4403 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4406 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4409 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4412 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4419 ttk::ImplicitTriangulation::getVertexStarGH(
const SimplexId p[3],
4420 const int id)
const {
4421 if(
id >= 0 &&
id <= 5)
4422 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4426 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4427 + (p[2] - 1) * tetshift_[1] + 4;
4429 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4430 + (p[2] - 1) * tetshift_[1] + 5;
4436 ttk::ImplicitTriangulation::getVertexStarAC(
const SimplexId p[3],
4437 const int id)
const {
4440 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4441 + p[2] * tetshift_[1];
4443 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4446 return p[0] * 6 + p[1] * tetshift_[0]
4447 + p[2] * tetshift_[1];
4449 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4456 ttk::ImplicitTriangulation::getVertexStarBD(
const SimplexId p[3],
4457 const int id)
const {
4458 if(
id >= 0 &&
id <= 5)
4459 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4463 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4466 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4473 ttk::ImplicitTriangulation::getVertexStarEG(
const SimplexId p[3],
4474 const int id)
const {
4475 if(
id >= 0 &&
id <= 5)
4476 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4480 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4483 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4490 ttk::ImplicitTriangulation::getVertexStarFH(
const SimplexId p[3],
4491 const int id)
const {
4494 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4495 + (p[2] - 1) * tetshift_[1] + 4;
4497 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4498 + (p[2] - 1) * tetshift_[1] + 5;
4500 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4503 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4510 ttk::ImplicitTriangulation::getVertexStarAE(
const SimplexId p[3],
4511 const int id)
const {
4514 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4517 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4520 return p[0] * 6 + p[1] * tetshift_[0]
4521 + p[2] * tetshift_[1];
4523 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4530 ttk::ImplicitTriangulation::getVertexStarBF(
const SimplexId p[3],
4531 const int id)
const {
4532 if(
id >= 0 &&
id <= 5)
4533 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4537 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4540 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4547 ttk::ImplicitTriangulation::getVertexStarCG(
const SimplexId p[3],
4548 const int id)
const {
4549 if(
id >= 0 &&
id <= 5)
4550 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4554 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4555 + p[2] * tetshift_[1];
4557 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4564 ttk::ImplicitTriangulation::getVertexStarDH(
const SimplexId p[3],
4565 const int id)
const {
4568 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4569 + (p[2] - 1) * tetshift_[1] + 4;
4571 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4572 + (p[2] - 1) * tetshift_[1] + 5;
4574 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4577 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4584 ttk::ImplicitTriangulation::getVertexStarABDC(
const SimplexId p[3],
4585 const int id)
const {
4586 if(
id >= 0 &&
id <= 5)
4587 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4591 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4594 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4597 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4598 + p[2] * tetshift_[1];
4600 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4603 return p[0] * 6 + p[1] * tetshift_[0]
4604 + p[2] * tetshift_[1];
4606 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4613 ttk::ImplicitTriangulation::getVertexStarEFHG(
const SimplexId p[3],
4614 const int id)
const {
4615 if(
id >= 0 &&
id <= 5)
4616 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4620 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4621 + (p[2] - 1) * tetshift_[1] + 4;
4623 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4624 + (p[2] - 1) * tetshift_[1] + 5;
4626 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4629 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4632 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4635 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4642 ttk::ImplicitTriangulation::getVertexStarAEGC(
const SimplexId p[3],
4643 const int id)
const {
4644 if(
id >= 0 &&
id <= 5)
4645 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4649 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4650 + p[2] * tetshift_[1];
4652 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4655 return p[0] * 6 + p[1] * tetshift_[0]
4656 + p[2] * tetshift_[1];
4658 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4661 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4664 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4671 ttk::ImplicitTriangulation::getVertexStarBFHD(
const SimplexId p[3],
4672 const int id)
const {
4673 if(
id >= 0 &&
id <= 5)
4674 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4678 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4681 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4684 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4685 + (p[2] - 1) * tetshift_[1] + 4;
4687 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4688 + (p[2] - 1) * tetshift_[1] + 5;
4690 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4693 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4700 ttk::ImplicitTriangulation::getVertexStarAEFB(
const SimplexId p[3],
4701 const int id)
const {
4702 if(
id >= 0 &&
id <= 5)
4703 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4707 return p[0] * 6 + p[1] * tetshift_[0]
4708 + p[2] * tetshift_[1];
4710 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4713 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4716 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4719 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4722 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4729 ttk::ImplicitTriangulation::getVertexStarGHDC(
const SimplexId p[3],
4730 const int id)
const {
4731 if(
id >= 0 &&
id <= 5)
4732 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4736 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4737 + (p[2] - 1) * tetshift_[1] + 4;
4739 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4740 + (p[2] - 1) * tetshift_[1] + 5;
4742 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4743 + p[2] * tetshift_[1];
4745 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4748 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4751 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4758 ttk::ImplicitTriangulation::getVertexStarABCDEFGH(
const SimplexId p[3],
4759 const int id)
const {
4760 if(
id >= 0 &&
id <= 5)
4761 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4763 if(
id >= 6 &&
id <= 11)
4764 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1] +
id
4768 return p[0] * 6 + p[1] * tetshift_[0]
4769 + p[2] * tetshift_[1];
4771 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4774 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4775 + p[2] * tetshift_[1];
4777 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4780 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4783 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4786 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4789 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4792 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4795 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4798 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4799 + (p[2] - 1) * tetshift_[1] + 4;
4801 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4802 + (p[2] - 1) * tetshift_[1] + 5;
4808 ttk::ImplicitTriangulation::getEdgeTriangleL_x00(
const SimplexId p[3],
4809 const int id)
const {
4814 return tsetshift_[0] + p[0] * 2;
4816 return tsetshift_[3] + p[0] * 2;
4822 ttk::ImplicitTriangulation::getEdgeTriangleL_x0n(
const SimplexId p[3],
4823 const int id)
const {
4826 return p[0] * 2 + p[2] * tshift_[1];
4828 return tsetshift_[0] + p[0] * 2 + p[2] * tshift_[3];
4830 return tsetshift_[3] + p[0] * 2 + p[2] * tshift_[9];
4832 return tsetshift_[0] + p[0] * 2 + (p[2] - 1) * tshift_[3] + 1;
4838 ttk::ImplicitTriangulation::getEdgeTriangleL_x0N(
const SimplexId p[3],
4839 const int id)
const {
4842 return p[0] * 2 + p[2] * tshift_[1];
4844 return tsetshift_[0] + p[0] * 2 + (p[2] - 1) * tshift_[3] + 1;
4850 ttk::ImplicitTriangulation::getEdgeTriangleL_xn0(
const SimplexId p[3],
4851 const int id)
const {
4854 return p[0] * 2 + p[1] * tshift_[0];
4856 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2];
4858 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8];
4860 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
4866 ttk::ImplicitTriangulation::getEdgeTriangleL_xnn(
const SimplexId p[3],
4867 const int id)
const {
4870 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
4872 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
4874 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2]
4875 + (p[2] - 1) * tshift_[3] + 1;
4877 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
4878 + (p[2] - 1) * tshift_[9] + 1;
4880 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
4882 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
4888 ttk::ImplicitTriangulation::getEdgeTriangleL_xnN(
const SimplexId p[3],
4889 const int id)
const {
4892 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
4894 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2]
4895 + (p[2] - 1) * tshift_[3] + 1;
4897 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
4898 + (p[2] - 1) * tshift_[9] + 1;
4900 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
4906 ttk::ImplicitTriangulation::getEdgeTriangleL_xN0(
const SimplexId p[3],
4907 const int id)
const {
4910 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
4912 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2];
4918 ttk::ImplicitTriangulation::getEdgeTriangleL_xNn(
const SimplexId p[3],
4919 const int id)
const {
4922 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
4924 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2]
4925 + (p[2] - 1) * tshift_[3] + 1;
4927 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
4928 + (p[2] - 1) * tshift_[9] + 1;
4930 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
4936 ttk::ImplicitTriangulation::getEdgeTriangleL_xNN(
const SimplexId p[3],
4937 const int id)
const {
4940 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
4942 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2]
4943 + (p[2] - 1) * tshift_[3] + 1;
4945 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
4946 + (p[2] - 1) * tshift_[9] + 1;
4952 ttk::ImplicitTriangulation::getEdgeTriangleH_0y0(
const SimplexId p[3],
4953 const int id)
const {
4956 return p[1] * tshift_[0];
4958 return tsetshift_[1] + p[1] * tshift_[4];
4964 ttk::ImplicitTriangulation::getEdgeTriangleH_0yn(
const SimplexId p[3],
4965 const int id)
const {
4968 return tsetshift_[1] + p[1] * tshift_[4] + (p[2] - 1) * tshift_[5] + 1;
4970 return tsetshift_[2] + p[1] * tshift_[6] + (p[2] - 1) * tshift_[7] + 1;
4972 return p[1] * tshift_[0] + p[2] * tshift_[1];
4974 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5];
4980 ttk::ImplicitTriangulation::getEdgeTriangleH_0yN(
const SimplexId p[3],
4981 const int id)
const {
4984 return tsetshift_[1] + p[1] * tshift_[4] + (p[2] - 1) * tshift_[5] + 1;
4986 return tsetshift_[2] + p[1] * tshift_[6] + (p[2] - 1) * tshift_[7] + 1;
4988 return p[1] * tshift_[0] + p[2] * tshift_[1];
4994 ttk::ImplicitTriangulation::getEdgeTriangleH_ny0(
const SimplexId p[3],
4995 const int id)
const {
4998 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
5000 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6];
5002 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4];
5004 return p[0] * 2 + p[1] * tshift_[0];
5010 ttk::ImplicitTriangulation::getEdgeTriangleH_nyn(
const SimplexId p[3],
5011 const int id)
const {
5014 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5016 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
5017 + p[2] * tshift_[7];
5019 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
5021 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
5022 + (p[2] - 1) * tshift_[5] + 1;
5024 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6]
5025 + (p[2] - 1) * tshift_[7] + 1;
5027 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
5033 ttk::ImplicitTriangulation::getEdgeTriangleH_nyN(
const SimplexId p[3],
5034 const int id)
const {
5037 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
5038 + (p[2] - 1) * tshift_[5] + 1;
5040 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6]
5041 + (p[2] - 1) * tshift_[7] + 1;
5043 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
5045 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5051 ttk::ImplicitTriangulation::getEdgeTriangleH_Ny0(
const SimplexId p[3],
5052 const int id)
const {
5055 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
5057 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6];
5059 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4];
5065 ttk::ImplicitTriangulation::getEdgeTriangleH_Nyn(
const SimplexId p[3],
5066 const int id)
const {
5069 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5071 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
5072 + p[2] * tshift_[7];
5074 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
5076 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
5077 + (p[2] - 1) * tshift_[5] + 1;
5083 ttk::ImplicitTriangulation::getEdgeTriangleH_NyN(
const SimplexId p[3],
5084 const int id)
const {
5087 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
5088 + (p[2] - 1) * tshift_[5] + 1;
5090 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5096 ttk::ImplicitTriangulation::getEdgeTriangleP_00z(
const SimplexId p[3],
5097 const int id)
const {
5100 return tsetshift_[0] + p[2] * tshift_[3];
5102 return tsetshift_[1] + p[2] * tshift_[5] + 1;
5108 ttk::ImplicitTriangulation::getEdgeTriangleP_0nz(
const SimplexId p[3],
5109 const int id)
const {
5112 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + p[2] * tshift_[5];
5114 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + p[2] * tshift_[11];
5116 return tsetshift_[0] + p[1] * tshift_[2] + p[2] * tshift_[3];
5118 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5] + 1;
5124 ttk::ImplicitTriangulation::getEdgeTriangleP_0Nz(
const SimplexId p[3],
5125 const int id)
const {
5128 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + p[2] * tshift_[5];
5130 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + p[2] * tshift_[11];
5132 return tsetshift_[0] + p[1] * tshift_[2] + p[2] * tshift_[3];
5138 ttk::ImplicitTriangulation::getEdgeTriangleP_n0z(
const SimplexId p[3],
5139 const int id)
const {
5142 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3] + 1;
5144 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11] + 1;
5146 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5] + 1;
5148 return tsetshift_[0] + p[0] * 2 + p[2] * tshift_[3];
5154 ttk::ImplicitTriangulation::getEdgeTriangleP_nnz(
const SimplexId p[3],
5155 const int id)
const {
5158 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
5159 + p[2] * tshift_[3] + 1;
5161 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
5162 + p[2] * tshift_[11] + 1;
5164 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
5167 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
5169 return tsetshift_[4] + p[0] * 2 + (p[1] - 1) * tshift_[10]
5170 + p[2] * tshift_[11];
5172 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
5173 + p[2] * tshift_[5];
5179 ttk::ImplicitTriangulation::getEdgeTriangleP_nNz(
const SimplexId p[3],
5180 const int id)
const {
5183 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
5184 + p[2] * tshift_[3] + 1;
5186 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
5187 + p[2] * tshift_[5];
5189 return tsetshift_[4] + p[0] * 2 + (p[1] - 1) * tshift_[10]
5190 + p[2] * tshift_[11];
5192 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
5198 ttk::ImplicitTriangulation::getEdgeTriangleP_N0z(
const SimplexId p[3],
5199 const int id)
const {
5202 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3] + 1;
5204 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11] + 1;
5206 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5] + 1;
5212 ttk::ImplicitTriangulation::getEdgeTriangleP_Nnz(
const SimplexId p[3],
5213 const int id)
const {
5216 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
5217 + p[2] * tshift_[3] + 1;
5219 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
5220 + p[2] * tshift_[11] + 1;
5222 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
5225 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
5226 + p[2] * tshift_[5];
5232 ttk::ImplicitTriangulation::getEdgeTriangleP_NNz(
const SimplexId p[3],
5233 const int id)
const {
5236 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
5237 + p[2] * tshift_[3] + 1;
5239 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
5240 + p[2] * tshift_[5];
5246 ttk::ImplicitTriangulation::getEdgeTriangleD1_xy0(
const SimplexId p[3],
5247 const int id)
const {
5250 return p[0] * 2 + p[1] * tshift_[0];
5252 return p[0] * 2 + p[1] * tshift_[0] + 1;
5254 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10];
5260 ttk::ImplicitTriangulation::getEdgeTriangleD1_xyn(
const SimplexId p[3],
5261 const int id)
const {
5264 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
5266 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5268 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11];
5270 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
5271 + (p[2] - 1) * tshift_[11] + 1;
5277 ttk::ImplicitTriangulation::getEdgeTriangleD1_xyN(
const SimplexId p[3],
5278 const int id)
const {
5281 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
5283 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5285 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
5286 + (p[2] - 1) * tshift_[11] + 1;
5292 ttk::ImplicitTriangulation::getEdgeTriangleD2_0yz(
const SimplexId p[3],
5293 const int id)
const {
5296 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5];
5298 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5] + 1;
5300 return tsetshift_[3] + p[1] * tshift_[8] + p[2] * tshift_[9];
5306 ttk::ImplicitTriangulation::getEdgeTriangleD2_nyz(
const SimplexId p[3],
5307 const int id)
const {
5310 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
5312 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
5315 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
5317 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
5318 + p[2] * tshift_[9] + 1;
5324 ttk::ImplicitTriangulation::getEdgeTriangleD2_Nyz(
const SimplexId p[3],
5325 const int id)
const {
5328 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
5330 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
5333 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
5334 + p[2] * tshift_[9] + 1;
5340 ttk::ImplicitTriangulation::getEdgeTriangleD3_x0z(
const SimplexId p[3],
5341 const int id)
const {
5344 return tsetshift_[0] + p[0] * 2 + p[2] * tshift_[3];
5346 return tsetshift_[0] + p[0] * 2 + p[2] * tshift_[3] + 1;
5348 return tsetshift_[2] + p[0] * 2 + p[2] * tshift_[7] + 1;
5354 ttk::ImplicitTriangulation::getEdgeTriangleD3_xnz(
const SimplexId p[3],
5355 const int id)
const {
5358 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
5360 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3]
5363 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
5366 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
5367 + p[2] * tshift_[7];
5373 ttk::ImplicitTriangulation::getEdgeTriangleD3_xNz(
const SimplexId p[3],
5374 const int id)
const {
5377 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
5379 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3]
5382 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
5383 + p[2] * tshift_[7];
5389 ttk::ImplicitTriangulation::getEdgeTriangleD4_xyz(
const SimplexId p[3],
5390 const int id)
const {
5393 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7];
5395 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
5398 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
5400 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9]
5403 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11];
5405 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11]
5412 ttk::ImplicitTriangulation::getEdgeLinkL(
const SimplexId p[3],
5413 const int id)
const {
5414 if(p[2] == 0 and p[1] == 0) {
5417 return esetshift_[1] + p[0] + eshift_[4];
5419 return esetshift_[0] + p[0] + eshift_[3];
5421 }
else if(p[2] == 0 and p[1] == nbvoxels_[1])
5422 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12];
5423 else if(p[2] == nbvoxels_[2] and p[1] == 0)
5424 return esetshift_[5] + p[0] + (p[2] - 1) * eshift_[13];
5425 else if(p[2] == nbvoxels_[2] and p[1] == nbvoxels_[1]) {
5428 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4]
5429 + (p[2] - 1) * eshift_[5] + 1;
5431 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5432 + (p[2] - 1) * eshift_[3] + 1;
5434 }
else if(p[2] == 0 and p[1] > 0 and p[1] < nbvoxels_[1]) {
5437 return esetshift_[1] + p[0] + (p[1] + 1) * eshift_[4];
5439 return esetshift_[0] + p[0] + p[1] * eshift_[2] + eshift_[3];
5441 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12];
5443 }
else if(p[2] == nbvoxels_[2] and p[1] > 0 and p[1] < nbvoxels_[1]) {
5446 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4]
5447 + (p[2] - 1) * eshift_[5] + 1;
5449 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5450 + (p[2] - 1) * eshift_[3] + 1;
5452 return esetshift_[5] + p[0] + p[1] * eshift_[12]
5453 + (p[2] - 1) * eshift_[13];
5456 }
else if(p[2] > 0 and p[2] < nbvoxels_[2] and p[1] == 0) {
5459 return esetshift_[1] + p[0] + p[2] * eshift_[5] + eshift_[4];
5461 return esetshift_[0] + p[0] + (p[2] + 1) * eshift_[3];
5463 return esetshift_[5] + p[0] + (p[2] - 1) * eshift_[13];
5465 }
else if(p[2] > 0 and p[2] < nbvoxels_[2] and p[1] == nbvoxels_[1]) {
5468 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4]
5469 + (p[2] - 1) * eshift_[5] + 1;
5471 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5472 + (p[2] - 1) * eshift_[3] + 1;
5474 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
5475 + p[2] * eshift_[13];
5481 return esetshift_[1] + p[0] + (p[1] + 1) * eshift_[4]
5482 + p[2] * eshift_[5];
5485 return esetshift_[0] + p[0] + p[1] * eshift_[2]
5486 + (p[2] + 1) * eshift_[3];
5489 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
5490 + p[2] * eshift_[13];
5492 return esetshift_[1] + p[0] + 1 + (p[1] - 1) * eshift_[4]
5493 + (p[2] - 1) * eshift_[5];
5495 return esetshift_[0] + p[0] + 1 + (p[1] - 1) * eshift_[2]
5496 + (p[2] - 1) * eshift_[3];
5498 return esetshift_[5] + p[0] + p[1] * eshift_[12]
5499 + (p[2] - 1) * eshift_[13];
5506 ttk::ImplicitTriangulation::getEdgeLinkH(
const SimplexId p[3],
5507 const int id)
const {
5508 if(p[0] == 0 and p[2] == 0)
5509 return esetshift_[5] + p[1] * eshift_[12];
5510 else if(p[0] == nbvoxels_[0] and p[2] == 0) {
5513 return esetshift_[1] + p[0] + (p[1] + 1) * eshift_[4] - 1;
5515 return p[0] + (p[1] + 1) * eshift_[0] + eshift_[1] - 1;
5517 }
else if(p[0] == 0 and p[2] == nbvoxels_[2]) {
5520 return p[1] * eshift_[0] + (p[2] - 1) * eshift_[1];
5522 return esetshift_[1] + p[1] * eshift_[4] + (p[2] - 1) * eshift_[5] + 1;
5524 }
else if(p[0] == nbvoxels_[0] and p[2] == nbvoxels_[2])
5525 return esetshift_[5] + p[0] - 1 + p[1] * eshift_[12]
5526 + (p[2] - 1) * eshift_[13];
5527 else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[2] == 0) {
5530 return p[0] - 1 + (p[1] + 1) * eshift_[0] + eshift_[1];
5532 return esetshift_[1] + p[0] - 1 + (p[1] + 1) * eshift_[4];
5534 return esetshift_[5] + p[0] + p[1] * eshift_[12];
5536 }
else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[2] == nbvoxels_[2]) {
5539 return esetshift_[5] + p[0] - 1 + p[1] * eshift_[12]
5540 + (p[2] - 1) * eshift_[13];
5542 return p[0] + p[1] * eshift_[0] + (p[2] - 1) * eshift_[1];
5544 return esetshift_[1] + p[0] + 1 + p[1] * eshift_[4]
5545 + (p[2] - 1) * eshift_[5];
5547 }
else if(p[0] == 0 and p[2] > 0 and p[2] < nbvoxels_[2]) {
5550 return esetshift_[1] + p[1] * eshift_[4] + (p[2] - 1) * eshift_[5] + 1;
5552 return esetshift_[5] + p[1] * eshift_[12] + p[2] * eshift_[13];
5554 return p[1] * eshift_[0] + (p[2] - 1) * eshift_[1];
5556 }
else if(p[0] == nbvoxels_[0] and p[2] > 0 and p[2] < nbvoxels_[2]) {
5559 return esetshift_[5] + p[0] - 1 + p[1] * eshift_[12]
5560 + (p[2] - 1) * eshift_[13];
5562 return esetshift_[1] + p[0] - 1 + (p[1] + 1) * eshift_[4]
5563 + p[2] * eshift_[5];
5565 return p[0] - 1 + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1];
5570 return p[0] + p[1] * eshift_[0] + (p[2] - 1) * eshift_[1];
5572 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1] - 1;
5574 return esetshift_[1] + p[0] - 1 + (p[1] + 1) * eshift_[4]
5575 + p[2] * eshift_[5];
5577 return esetshift_[1] + p[0] + 1 + p[1] * eshift_[4]
5578 + (p[2] - 1) * eshift_[5];
5580 return esetshift_[5] + (p[0] - 1) + p[1] * eshift_[12]
5581 + (p[2] - 1) * eshift_[13];
5583 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13];
5590 ttk::ImplicitTriangulation::getEdgeLinkP(
const SimplexId p[3],
5591 const int id)
const {
5592 if(p[0] == 0 and p[1] == 0)
5593 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13];
5594 else if(p[0] == 0 and p[1] == nbvoxels_[1]) {
5597 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5598 + p[2] * eshift_[3] + 1;
5600 return p[0] + (p[1] - 1) * eshift_[0] + p[2] * eshift_[1];
5602 }
else if(p[0] == nbvoxels_[0] and p[1] == 0) {
5605 return esetshift_[0] + p[0] + p[1] * eshift_[2]
5606 + (p[2] + 1) * eshift_[3] - 1;
5608 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1] - 1;
5610 }
else if(p[0] == nbvoxels_[0] and p[1] == nbvoxels_[1])
5611 return esetshift_[5] + p[0] - 1 + (p[1] - 1) * eshift_[12]
5612 + p[2] * eshift_[13];
5613 else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[1] == 0) {
5616 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1] - 1;
5618 return esetshift_[0] + p[0] + p[1] * eshift_[2]
5619 + (p[2] + 1) * eshift_[3] - 1;
5621 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13];
5623 }
else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[1] == nbvoxels_[1]) {
5626 return p[0] + (p[1] - 1) * eshift_[0] + p[2] * eshift_[1];
5628 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5629 + p[2] * eshift_[3] + 1;
5631 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
5632 + p[2] * eshift_[13] - 1;
5634 }
else if(p[0] == 0 and p[1] > 0 and p[1] < nbvoxels_[1]) {
5637 return p[0] + (p[1] - 1) * eshift_[0] + p[2] * eshift_[1];
5639 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5640 + p[2] * eshift_[3] + 1;
5642 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13];
5644 }
else if(p[0] == nbvoxels_[0] and p[1] > 0 and p[1] < nbvoxels_[1]) {
5647 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
5648 + p[2] * eshift_[13] - 1;
5650 return esetshift_[0] + p[0] + p[1] * eshift_[2]
5651 + (p[2] + 1) * eshift_[3] - 1;
5653 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1] - 1;
5658 return p[0] + (p[1] - 1) * eshift_[0] + p[2] * eshift_[1];
5660 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1] - 1;
5662 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13];
5664 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
5665 + p[2] * eshift_[13] - 1;
5667 return esetshift_[0] + p[0] + p[1] * eshift_[2]
5668 + (p[2] + 1) * eshift_[3] - 1;
5670 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5671 + p[2] * eshift_[3] + 1;
5678 ttk::ImplicitTriangulation::getEdgeLinkD1(
const SimplexId p[3],
5679 const int id)
const {
5680 if(p[2] > 0 and p[2] < nbvoxels_[2]) {
5683 return esetshift_[4] + p[0] + p[1] * eshift_[10]
5684 + (p[2] - 1) * eshift_[11];
5686 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
5687 + p[2] * eshift_[11];
5689 return esetshift_[3] + p[0] + p[1] * eshift_[8] + p[2] * eshift_[9];
5691 return esetshift_[3] + p[0] + p[1] * eshift_[8]
5692 + (p[2] - 1) * eshift_[9] + 1;
5694 }
else if(p[2] == 0) {
5697 return esetshift_[3] + p[0] + p[1] * eshift_[8] + p[2] * eshift_[9];
5699 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
5700 + p[2] * eshift_[11];
5705 return esetshift_[3] + p[0] + p[1] * eshift_[8]
5706 + (p[2] - 1) * eshift_[9] + 1;
5708 return esetshift_[4] + p[0] + p[1] * eshift_[10]
5709 + (p[2] - 1) * eshift_[11];
5716 ttk::ImplicitTriangulation::getEdgeLinkD2(
const SimplexId p[3],
5717 const int id)
const {
5718 if(p[0] > 0 and p[0] < nbvoxels_[0]) {
5721 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11];
5723 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
5724 + p[2] * eshift_[11] - 1;
5726 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7];
5728 return esetshift_[2] + p[0] + p[1] * eshift_[6]
5729 + (p[2] + 1) * eshift_[7] - 1;
5731 }
else if(p[0] == 0) {
5734 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7];
5736 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11];
5741 return esetshift_[2] + p[0] + p[1] * eshift_[6]
5742 + (p[2] + 1) * eshift_[7] - 1;
5744 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
5745 + p[2] * eshift_[11] - 1;
5752 ttk::ImplicitTriangulation::getEdgeLinkD3(
const SimplexId p[3],
5753 const int id)
const {
5754 if(p[1] > 0 and p[1] < nbvoxels_[1]) {
5757 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
5758 + p[2] * eshift_[7];
5760 return esetshift_[2] + p[0] + p[1] * eshift_[6]
5761 + (p[2] + 1) * eshift_[7];
5763 return esetshift_[3] + p[0] + p[1] * eshift_[8] + p[2] * eshift_[9];
5765 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
5766 + p[2] * eshift_[9] + 1;
5768 }
else if(p[1] == 0) {
5771 return esetshift_[2] + p[0] + p[1] * eshift_[6]
5772 + (p[2] + 1) * eshift_[7];
5774 return esetshift_[3] + p[0] + p[1] * eshift_[8] + p[2] * eshift_[9];
5779 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
5780 + p[2] * eshift_[7];
5782 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
5783 + p[2] * eshift_[9] + 1;
5790 ttk::ImplicitTriangulation::getEdgeLinkD4(
const SimplexId p[3],
5791 const int id)
const {
5794 return p[0] + (p[1] + 1) * eshift_[0] + p[2] * eshift_[1];
5796 return p[0] + p[1] * eshift_[0] + (p[2] + 1) * eshift_[1];
5798 return esetshift_[1] + p[0] + p[1] * eshift_[4] + p[2] * eshift_[5];
5800 return esetshift_[1] + p[0] + 1 + (p[1] + 1) * eshift_[4]
5801 + p[2] * eshift_[5];
5803 return esetshift_[0] + p[0] + p[1] * eshift_[2] + p[2] * eshift_[3];
5805 return esetshift_[0] + p[0] + 1 + p[1] * eshift_[2]
5806 + (p[2] + 1) * eshift_[3];
5812 ttk::ImplicitTriangulation::getEdgeStarL(
const SimplexId p[3],
5813 const int id)
const {
5814 if(p[2] == 0 and p[1] == 0) {
5819 return p[0] * 6 + 2;
5821 }
else if(p[2] == 0 and p[1] == nbvoxels_[1])
5822 return (p[1] - 1) * tetshift_[0] + p[0] * 6 + 1;
5823 else if(p[2] == nbvoxels_[2] and p[1] == 0)
5824 return (p[2] - 1) * tetshift_[1] + p[0] * 6 + 3;
5825 else if(p[2] == nbvoxels_[2] and p[1] == nbvoxels_[1]) {
5828 return (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1] + p[0] * 6
5832 return (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1] + p[0] * 6
5836 }
else if(p[2] == 0 and p[1] > 0 and p[1] < nbvoxels_[1]) {
5839 return p[1] * tetshift_[0] + p[0] * 6;
5841 return p[1] * tetshift_[0] + p[0] * 6 + 2;
5843 return (p[1] - 1) * tetshift_[0] + p[0] * 6 + 1;
5845 }
else if(p[2] == nbvoxels_[2] and p[1] > 0 and p[1] < nbvoxels_[1]) {
5848 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
5851 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
5855 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
5859 }
else if(p[2] > 0 and p[2] < nbvoxels_[2] and p[1] == 0) {
5862 return p[2] * tetshift_[1] + p[0] * 6;
5864 return p[2] * tetshift_[1] + p[0] * 6 + 2;
5866 return (p[2] - 1) * tetshift_[1] + p[0] * 6 + 3;
5868 }
else if(p[2] > 0 and p[2] < nbvoxels_[2] and p[1] == nbvoxels_[1]) {
5871 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
5874 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
5878 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
5885 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6;
5887 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 2;
5889 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
5892 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
5895 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
5899 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
5909 ttk::ImplicitTriangulation::getEdgeStarH(
const SimplexId p[3],
5910 const int id)
const {
5911 if(p[0] == 0 and p[2] == 0)
5912 return p[1] * tetshift_[0];
5913 else if(p[0] == nbvoxels_[0] and p[2] == 0) {
5916 return p[1] * tetshift_[0] + (p[0] - 1) * 6 + 1;
5918 return p[1] * tetshift_[0] + (p[0] - 1) * 6 + 5;
5920 }
else if(p[0] == 0 and p[2] == nbvoxels_[2]) {
5923 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + 2;
5925 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + 3;
5927 }
else if(p[0] == nbvoxels_[0] and p[2] == nbvoxels_[2])
5928 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
5930 else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[2] == 0) {
5933 return p[1] * tetshift_[0] + (p[0] - 1) * 6 + 1;
5935 return p[1] * tetshift_[0] + (p[0] - 1) * 6 + 5;
5937 return p[1] * tetshift_[0] + p[0] * 6;
5939 }
else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[2] == nbvoxels_[2]) {
5942 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
5945 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
5948 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
5952 }
else if(p[0] == 0 and p[2] > 0 and p[2] < nbvoxels_[2]) {
5955 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + 2;
5957 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + 3;
5959 return p[2] * tetshift_[1] + p[1] * tetshift_[0];
5961 }
else if(p[0] == nbvoxels_[0] and p[2] > 0 and p[2] < nbvoxels_[2]) {
5964 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
5967 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
5970 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
5977 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6;
5979 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
5982 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
5985 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
5989 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
5992 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6000 ttk::ImplicitTriangulation::getEdgeStarP(
const SimplexId p[3],
6001 const int id)
const {
6002 if(p[0] == 0 and p[1] == 0)
6003 return p[2] * tetshift_[1] + 2;
6004 else if(p[0] == 0 and p[1] == nbvoxels_[1]) {
6007 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0];
6009 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + 1;
6011 }
else if(p[0] == nbvoxels_[0] and p[1] == 0) {
6014 return p[2] * tetshift_[1] + (p[0] - 1) * 6 + 3;
6016 return p[2] * tetshift_[1] + (p[0] - 1) * 6 + 4;
6018 }
else if(p[0] == nbvoxels_[0] and p[1] == nbvoxels_[1])
6019 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + (p[0] - 1) * 6
6021 else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[1] == 0) {
6024 return p[2] * tetshift_[1] + (p[0] - 1) * 6 + 3;
6026 return p[2] * tetshift_[1] + (p[0] - 1) * 6 + 4;
6028 return p[2] * tetshift_[1] + p[0] * 6 + 2;
6030 }
else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[1] == nbvoxels_[1]) {
6033 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0]
6036 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6039 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + (p[0] - 1) * 6
6043 }
else if(p[0] == 0 and p[1] > 0 and p[1] < nbvoxels_[1]) {
6046 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0];
6048 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + 1;
6050 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + 2;
6052 }
else if(p[0] == nbvoxels_[0] and p[1] > 0 and p[1] < nbvoxels_[1]) {
6055 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6058 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6061 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + (p[0] - 1) * 6
6068 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + (p[0] - 1) * 6
6072 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0]
6075 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6078 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 2;
6080 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6083 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6091 ttk::ImplicitTriangulation::getEdgeStarD1(
const SimplexId p[3],
6092 const int id)
const {
6093 if(p[2] > 0 and p[2] < nbvoxels_[2]) {
6096 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6;
6098 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 1;
6100 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6103 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6106 }
else if(p[2] == 0) {
6109 return p[1] * tetshift_[0] + p[0] * 6;
6111 return p[1] * tetshift_[0] + p[0] * 6 + 1;
6116 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6119 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6127 ttk::ImplicitTriangulation::getEdgeStarD2(
const SimplexId p[3],
6128 const int id)
const {
6129 if(p[0] > 0 and p[0] < nbvoxels_[0]) {
6132 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6;
6134 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 2;
6136 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6139 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6142 }
else if(p[0] == 0) {
6145 return p[2] * tetshift_[1] + p[1] * tetshift_[0];
6147 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + 2;
6152 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6155 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6163 ttk::ImplicitTriangulation::getEdgeStarD3(
const SimplexId p[3],
6164 const int id)
const {
6165 if(p[1] > 0 and p[1] < nbvoxels_[1]) {
6168 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 2;
6170 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 3;
6172 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6175 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6178 }
else if(p[1] == 0) {
6181 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 2;
6183 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 3;
6188 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6191 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6199 ttk::ImplicitTriangulation::getTriangleVertexF(
const SimplexId p[3],
6200 const int id)
const {
6203 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6205 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6207 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0] + 1;
6210 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1];
6212 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6214 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6219 ttk::ImplicitTriangulation::getTriangleVertexH(
const SimplexId p[3],
6220 const int id)
const {
6223 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6225 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1] + 1;
6227 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6230 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1];
6232 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6234 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6239 ttk::ImplicitTriangulation::getTriangleVertexC(
const SimplexId p[3],
6240 const int id)
const {
6243 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1];
6245 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6247 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1]
6251 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1];
6253 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6255 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1]
6261 ttk::ImplicitTriangulation::getTriangleVertexD1(
const SimplexId p[3],
6262 const int id)
const {
6265 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6267 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6269 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1]
6273 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6275 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0] + 1;
6277 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1]
6283 ttk::ImplicitTriangulation::getTriangleVertexD2(
const SimplexId p[3],
6284 const int id)
const {
6287 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6289 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6292 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6296 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1];
6298 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6300 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6306 ttk::ImplicitTriangulation::getTriangleVertexD3(
const SimplexId p[3],
6307 const int id)
const {
6310 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6312 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1] + 1;
6314 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6318 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6320 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6322 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6328 ttk::ImplicitTriangulation::getTriangleEdgeF_0(
const SimplexId p[3],
6329 const int id)
const {
6332 return p[0] / 2 + p[1] * eshift_[0] + p[2] * eshift_[1];
6334 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2] + p[2] * eshift_[3];
6336 return esetshift_[2] + p[0] / 2 + p[1] * eshift_[6] + p[2] * eshift_[7];
6342 ttk::ImplicitTriangulation::getTriangleEdgeF_1(
const SimplexId p[3],
6343 const int id)
const {
6346 return p[0] / 2 + (p[1] + 1) * eshift_[0] + p[2] * eshift_[1];
6348 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2] + p[2] * eshift_[3]
6351 return esetshift_[2] + p[0] / 2 + p[1] * eshift_[6] + p[2] * eshift_[7];
6357 ttk::ImplicitTriangulation::getTriangleEdgeH_0(
const SimplexId p[3],
6358 const int id)
const {
6361 return p[0] / 2 + p[1] * eshift_[0] + p[2] * eshift_[1];
6363 return esetshift_[1] + p[0] / 2 + p[1] * eshift_[4] + p[2] * eshift_[5];
6365 return esetshift_[4] + p[0] / 2 + p[1] * eshift_[10] + p[2] * eshift_[11];
6371 ttk::ImplicitTriangulation::getTriangleEdgeH_1(
const SimplexId p[3],
6372 const int id)
const {
6375 return p[0] / 2 + p[1] * eshift_[0] + (p[2] + 1) * eshift_[1];
6377 return esetshift_[1] + p[0] / 2 + p[1] * eshift_[4] + p[2] * eshift_[5]
6380 return esetshift_[4] + p[0] / 2 + p[1] * eshift_[10] + p[2] * eshift_[11];
6386 ttk::ImplicitTriangulation::getTriangleEdgeC_0(
const SimplexId p[3],
6387 const int id)
const {
6390 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2] + p[2] * eshift_[3];
6392 return esetshift_[1] + p[0] / 2 + (p[1] + 1) * eshift_[4]
6393 + p[2] * eshift_[5];
6395 return esetshift_[3] + p[0] / 2 + p[1] * eshift_[8] + p[2] * eshift_[9];
6401 ttk::ImplicitTriangulation::getTriangleEdgeC_1(
const SimplexId p[3],
6402 const int id)
const {
6405 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2]
6406 + (p[2] + 1) * eshift_[3];
6408 return esetshift_[1] + p[0] / 2 + p[1] * eshift_[4] + p[2] * eshift_[5];
6410 return esetshift_[3] + p[0] / 2 + p[1] * eshift_[8] + p[2] * eshift_[9];
6416 ttk::ImplicitTriangulation::getTriangleEdgeD1_0(
const SimplexId p[3],
6417 const int id)
const {
6420 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2] + p[2] * eshift_[3]
6423 return esetshift_[4] + p[0] / 2 + (p[1] + 1) * eshift_[10]
6424 + p[2] * eshift_[11];
6426 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6432 ttk::ImplicitTriangulation::getTriangleEdgeD1_1(
const SimplexId p[3],
6433 const int id)
const {
6436 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2]
6437 + (p[2] + 1) * eshift_[3];
6439 return esetshift_[4] + p[0] / 2 + p[1] * eshift_[10] + p[2] * eshift_[11];
6441 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6447 ttk::ImplicitTriangulation::getTriangleEdgeD2_0(
const SimplexId p[3],
6448 const int id)
const {
6451 return p[0] / 2 + p[1] * eshift_[0] + p[2] * eshift_[1];
6453 return esetshift_[3] + p[0] / 2 + p[1] * eshift_[8] + p[2] * eshift_[9];
6455 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6461 ttk::ImplicitTriangulation::getTriangleEdgeD2_1(
const SimplexId p[3],
6462 const int id)
const {
6465 return p[0] / 2 + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1];
6467 return esetshift_[3] + p[0] / 2 + p[1] * eshift_[8] + p[2] * eshift_[9]
6470 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6476 ttk::ImplicitTriangulation::getTriangleEdgeD3_0(
const SimplexId p[3],
6477 const int id)
const {
6480 return esetshift_[1] + p[0] / 2 + (p[1] + 1) * eshift_[4]
6481 + p[2] * eshift_[5];
6483 return esetshift_[2] + p[0] / 2 + p[1] * eshift_[6] + p[2] * eshift_[7];
6485 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6491 ttk::ImplicitTriangulation::getTriangleEdgeD3_1(
const SimplexId p[3],
6492 const int id)
const {
6495 return esetshift_[1] + p[0] / 2 + p[1] * eshift_[4] + p[2] * eshift_[5]
6498 return esetshift_[2] + p[0] / 2 + p[1] * eshift_[6]
6499 + (p[2] + 1) * eshift_[7];
6501 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6507 ttk::ImplicitTriangulation::getTriangleLinkF(
const SimplexId p[3],
6508 const int id)
const {
6509 if(p[2] > 0 and p[2] < nbvoxels_[2]) {
6512 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1];
6514 return p[0] / 2 + p[1] * vshift_[0] + (p[2] - 1) * vshift_[1] + 1;
6516 }
else if(p[2] == 0)
6517 return p[0] / 2 + (p[1] + 1) * vshift_[0] + vshift_[1];
6519 return p[0] / 2 + p[1] * vshift_[0] + (p[2] - 1) * vshift_[1] + 1;
6525 ttk::ImplicitTriangulation::getTriangleLinkH(
const SimplexId p[3],
6526 const int id)
const {
6527 if(p[1] > 0 and p[1] < nbvoxels_[1]) {
6530 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1];
6532 return p[0] / 2 + (p[1] - 1) * vshift_[0] + p[2] * vshift_[1] + 1;
6534 }
else if(p[1] == 0)
6535 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1];
6537 return p[0] / 2 + (p[1] - 1) * vshift_[0] + p[2] * vshift_[1] + 1;
6543 ttk::ImplicitTriangulation::getTriangleLinkC(
const SimplexId p[3],
6544 const int id)
const {
6545 if(p[0] > 1 and p[0] < (dimensions_[0] * 2 - 2)) {
6548 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6550 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1] - 1;
6553 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6555 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1] - 1;
6561 ttk::ImplicitTriangulation::getTriangleLinkD1(
const SimplexId p[3],
6562 const int id)
const {
6566 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1];
6568 return p[0] / 2 + p[1] * vshift_[0] + (p[2] + 1) * vshift_[1] + 1;
6573 return p[0] / 2 + (p[1] + 1) * vshift_[0] + p[2] * vshift_[1];
6575 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1] + 1;
6582 ttk::ImplicitTriangulation::getTriangleLinkD2(
const SimplexId p[3],
6583 const int id)
const {
6587 return p[0] / 2 + (p[1] + 1) * vshift_[0] + p[2] * vshift_[1] + 1;
6589 return p[0] / 2 + p[1] * vshift_[0] + (p[2] + 1) * vshift_[1] + 1;
6594 return p[0] / 2 + (p[1] + 1) * vshift_[0] + p[2] * vshift_[1];
6596 return p[0] / 2 + p[1] * vshift_[0] + (p[2] + 1) * vshift_[1];
6603 ttk::ImplicitTriangulation::getTriangleLinkD3(
const SimplexId p[3],
6604 const int id)
const {
6608 return p[0] / 2 + p[1] * vshift_[0] + (p[2] + 1) * vshift_[1];
6610 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1] + 1;
6615 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1];
6617 return p[0] / 2 + (p[1] + 1) * vshift_[0] + p[2] * vshift_[1] + 1;
6624 ttk::ImplicitTriangulation::getTriangleStarF(
const SimplexId p[3],
6625 const int id)
const {
6627 if(p[2] > 0 and p[2] < nbvoxels_[2]) {
6630 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6633 return (p[0] - 1) * 3 + p[1] * tetshift_[0]
6634 + (p[2] - 1) * tetshift_[1] + 4;
6636 }
else if(p[2] == 0)
6637 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6640 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
6643 if(p[2] > 0 and p[2] < nbvoxels_[2]) {
6646 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6648 return p[0] * 3 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
6651 }
else if(p[2] == 0)
6652 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6654 return p[0] * 3 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
6662 ttk::ImplicitTriangulation::getTriangleStarH(
const SimplexId p[3],
6663 const int id)
const {
6665 if(p[1] > 0 and p[1] < nbvoxels_[1]) {
6668 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6671 return (p[0] - 1) * 3 + (p[1] - 1) * tetshift_[0]
6672 + p[2] * tetshift_[1] + 5;
6674 }
else if(p[1] == 0)
6675 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6678 return (p[0] - 1) * 3 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
6681 if(p[1] > 0 and p[1] < nbvoxels_[1]) {
6684 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6687 return p[0] * 3 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
6690 }
else if(p[1] == 0)
6691 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 2;
6693 return p[0] * 3 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
6700 ttk::ImplicitTriangulation::getTriangleStarC(
const SimplexId p[3],
6701 const int id)
const {
6703 if(p[0] > 1 and p[0] < (dimensions_[0] * 2 - 2)) {
6706 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6709 return ((p[0] - 2) / 2) * 6 + p[1] * tetshift_[0]
6710 + p[2] * tetshift_[1] + 4;
6713 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6716 return ((p[0] - 2) / 2) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6719 if(p[0] > 1 and p[0] < (dimensions_[0] * 2 - 2)) {
6722 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6724 return ((p[0] - 1) / 2) * 6 + p[1] * tetshift_[0]
6725 + p[2] * tetshift_[1] + 5;
6728 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6730 return ((p[0] - 1) / 2) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6738 ttk::ImplicitTriangulation::getTriangleStarD1(
const SimplexId p[3],
6739 const int id)
const {
6743 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6746 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6752 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 1;
6754 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 5;
6761 ttk::ImplicitTriangulation::getTriangleStarD2(
const SimplexId p[3],
6762 const int id)
const {
6766 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6769 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6775 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6777 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 2;
6784 ttk::ImplicitTriangulation::getTriangleStarD3(
const SimplexId p[3],
6785 const int id)
const {
6789 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6792 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6798 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6800 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 1;
6807 ttk::ImplicitTriangulation::getTetrahedronVertexABCG(
const SimplexId p[3],
6808 const int id)
const {
6811 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1];
6813 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6815 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6817 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6824 ttk::ImplicitTriangulation::getTetrahedronVertexBCDG(
const SimplexId p[3],
6825 const int id)
const {
6828 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6830 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6832 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0] + 1;
6834 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6841 ttk::ImplicitTriangulation::getTetrahedronVertexABEG(
const SimplexId p[3],
6842 const int id)
const {
6845 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1];
6847 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6849 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6851 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6858 ttk::ImplicitTriangulation::getTetrahedronVertexBEFG(
const SimplexId p[3],
6859 const int id)
const {
6862 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6864 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6866 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1] + 1;
6868 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6875 ttk::ImplicitTriangulation::getTetrahedronVertexBFGH(
const SimplexId p[3],
6876 const int id)
const {
6879 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6881 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1] + 1;
6883 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6886 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6893 ttk::ImplicitTriangulation::getTetrahedronVertexBDGH(
const SimplexId p[3],
6894 const int id)
const {
6897 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6899 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0] + 1;
6901 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6904 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6911 ttk::ImplicitTriangulation::getTetrahedronEdgeABCG(
const SimplexId p[3],
6912 const int id)
const {
6915 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
6917 return esetshift_[0] + p[0] + p[1] * eshift_[2]
6918 + p[2] * eshift_[3];
6920 return esetshift_[1] + p[0] + (p[1] + 1) * eshift_[4]
6921 + p[2] * eshift_[5];
6923 return esetshift_[2] + p[0] + p[1] * eshift_[6]
6924 + p[2] * eshift_[7];
6926 return esetshift_[3] + p[0] + p[1] * eshift_[8]
6927 + p[2] * eshift_[9];
6929 return esetshift_[5] + p[0] + p[1] * eshift_[12]
6930 + p[2] * eshift_[13];
6936 ttk::ImplicitTriangulation::getTetrahedronEdgeBCDG(
const SimplexId p[3],
6937 const int id)
const {
6940 return p[0] + (p[1] + 1) * eshift_[0] + p[2] * eshift_[1];
6942 return esetshift_[0] + (p[0] + 1) + p[1] * eshift_[2]
6943 + p[2] * eshift_[3];
6945 return esetshift_[1] + p[0] + (p[1] + 1) * eshift_[4]
6946 + p[2] * eshift_[5];
6948 return esetshift_[2] + p[0] + p[1] * eshift_[6]
6949 + p[2] * eshift_[7];
6951 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
6952 + p[2] * eshift_[11];
6954 return esetshift_[5] + p[0] + p[1] * eshift_[12]
6955 + p[2] * eshift_[13];
6961 ttk::ImplicitTriangulation::getTetrahedronEdgeABEG(
const SimplexId p[3],
6962 const int id)
const {
6965 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
6967 return esetshift_[0] + p[0] + p[1] * eshift_[2]
6968 + (p[2] + 1) * eshift_[3];
6970 return esetshift_[1] + p[0] + p[1] * eshift_[4]
6971 + p[2] * eshift_[5];
6973 return esetshift_[3] + p[0] + p[1] * eshift_[8]
6974 + p[2] * eshift_[9];
6976 return esetshift_[4] + p[0] + p[1] * eshift_[10]
6977 + p[2] * eshift_[11];
6979 return esetshift_[5] + p[0] + p[1] * eshift_[12]
6980 + p[2] * eshift_[13];
6986 ttk::ImplicitTriangulation::getTetrahedronEdgeBEFG(
const SimplexId p[3],
6987 const int id)
const {
6990 return p[0] + p[1] * eshift_[0] + (p[2] + 1) * eshift_[1];
6992 return esetshift_[0] + p[0] + p[1] * eshift_[2]
6993 + (p[2] + 1) * eshift_[3];
6995 return esetshift_[1] + (p[0] + 1) + p[1] * eshift_[4]
6996 + p[2] * eshift_[5];
6998 return esetshift_[2] + p[0] + p[1] * eshift_[6]
6999 + (p[2] + 1) * eshift_[7];
7001 return esetshift_[4] + p[0] + p[1] * eshift_[10]
7002 + p[2] * eshift_[11];
7004 return esetshift_[5] + p[0] + p[1] * eshift_[12]
7005 + p[2] * eshift_[13];
7011 ttk::ImplicitTriangulation::getTetrahedronEdgeBFGH(
const SimplexId p[3],
7012 const int id)
const {
7015 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1];
7017 return esetshift_[0] + (p[0] + 1) + p[1] * eshift_[2]
7018 + (p[2] + 1) * eshift_[3];
7020 return esetshift_[1] + (p[0] + 1) + p[1] * eshift_[4]
7021 + p[2] * eshift_[5];
7023 return esetshift_[2] + p[0] + p[1] * eshift_[6]
7024 + (p[2] + 1) * eshift_[7];
7026 return esetshift_[3] + (p[0] + 1) + p[1] * eshift_[8]
7027 + p[2] * eshift_[9];
7029 return esetshift_[5] + p[0] + p[1] * eshift_[12]
7030 + p[2] * eshift_[13];
7036 ttk::ImplicitTriangulation::getTetrahedronEdgeBDGH(
const SimplexId p[3],
7037 const int id)
const {
7040 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1];
7042 return esetshift_[0] + (p[0] + 1) + p[1] * eshift_[2]
7043 + p[2] * eshift_[3];
7045 return esetshift_[1] + (p[0] + 1) + (p[1] + 1) * eshift_[4]
7046 + p[2] * eshift_[5];
7048 return esetshift_[3] + (p[0] + 1) + p[1] * eshift_[8]
7049 + p[2] * eshift_[9];
7051 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
7052 + p[2] * eshift_[11];
7054 return esetshift_[5] + p[0] + p[1] * eshift_[12]
7055 + p[2] * eshift_[13];
7061 ttk::ImplicitTriangulation::getTetrahedronTriangleABCG(
const SimplexId p[3],
7062 const int id)
const {
7065 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
7067 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
7069 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
7071 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11];
7077 ttk::ImplicitTriangulation::getTetrahedronTriangleBCDG(
const SimplexId p[3],
7078 const int id)
const {
7081 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
7083 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11];
7085 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7];
7087 return tsetshift_[0] + p[0] * 2 + (p[1] + 1) * tshift_[2]
7088 + p[2] * tshift_[3];
7094 ttk::ImplicitTriangulation::getTetrahedronTriangleABEG(
const SimplexId p[3],
7095 const int id)
const {
7098 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
7100 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
7102 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
7105 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
7112 ttk::ImplicitTriangulation::getTetrahedronTriangleBEFG(
const SimplexId p[3],
7113 const int id)
const {
7116 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
7119 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3]
7122 return p[0] * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1];
7124 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11]
7131 ttk::ImplicitTriangulation::getTetrahedronTriangleBFGH(
const SimplexId p[3],
7132 const int id)
const {
7135 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9]
7138 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11]
7141 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
7144 return p[0] * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1] + 1;
7150 ttk::ImplicitTriangulation::getTetrahedronTriangleBDGH(
const SimplexId p[3],
7151 const int id)
const {
7154 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
7157 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7];
7159 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9]
7162 return tsetshift_[0] + p[0] * 2 + (p[1] + 1) * tshift_[2]
7163 + p[2] * tshift_[3] + 1;
7168inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborABCG(
7179 return t - tetshift_[1] + 3;
7181 return t - tetshift_[1] + 3;
7186inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborBCDG(
7195 return t - tetshift_[1] + 3;
7197 return t + tetshift_[0] + 1;
7199 return t + tetshift_[0] + 1;
7204inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborABEG(
7215 return t - tetshift_[0] - 1;
7217 return t - tetshift_[0] - 1;
7222inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborBEFG(
7231 return t - tetshift_[0] + 2;
7233 return t + tetshift_[1] - 3;
7235 return t + tetshift_[1] - 3;
7240inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborBFGH(
7248 if(p[0] < nbvoxels_[0] - 1)
7251 return t + tetshift_[1] - 3;
7253 return t + tetshift_[1] - 3;
7258inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborBDGH(
7266 if(p[0] < nbvoxels_[0] - 1)
7269 return t + tetshift_[0] - 2;
7271 return t + tetshift_[0] - 2;
#define TTK_TRIANGULATION_INTERNAL(NAME)
bool hasPreconditionedTriangles_
int getTriangleVertexInternal(const SimplexId &triangleId, const int &localVertexId, SimplexId &vertexId) const override
int TTK_TRIANGULATION_INTERNAL() getVertexNeighbor(const SimplexId &vertexId, const int &localNeighborId, SimplexId &neighborId) const override
int getTetrahedronVertex(const SimplexId &tetId, const int &localVertexId, SimplexId &vertexId) const override
int TTK_TRIANGULATION_INTERNAL() getEdgeStar(const SimplexId &edgeId, const int &localStarId, SimplexId &starId) const override
int TTK_TRIANGULATION_INTERNAL() getVertexLink(const SimplexId &vertexId, const int &localLinkId, SimplexId &linkId) const override
int getTetrahedronTriangle(const SimplexId &tetId, const int &id, SimplexId &triangleId) const override
SimplexId getEdgeTriangleNumberInternal(const SimplexId &edgeId) const override
int TTK_TRIANGULATION_INTERNAL() getVertexStar(const SimplexId &vertexId, const int &localStarId, SimplexId &starId) const override
int TTK_TRIANGULATION_INTERNAL() getVertexPoint(const SimplexId &vertexId, float &x, float &y, float &z) const override
int getVertexEdgeInternal(const SimplexId &vertexId, const int &id, SimplexId &edgeId) const override
int getEdgeVertexInternal(const SimplexId &edgeId, const int &localVertexId, SimplexId &vertexId) const override
SimplexId TTK_TRIANGULATION_INTERNAL() getEdgeStarNumber(const SimplexId &edgeId) const override
int TTK_TRIANGULATION_INTERNAL() getTriangleStar(const SimplexId &triangleId, const int &localStarId, SimplexId &starId) const override
int TTK_TRIANGULATION_INTERNAL() getEdgeLink(const SimplexId &edgeId, const int &localLinkId, SimplexId &linkId) const override
bool TTK_TRIANGULATION_INTERNAL() isVertexOnBoundary(const SimplexId &vertexId) const override
bool TTK_TRIANGULATION_INTERNAL() isEdgeOnBoundary(const SimplexId &edgeId) const override
SimplexId TTK_TRIANGULATION_INTERNAL() getVertexNeighborNumber(const SimplexId &vertexId) const override
SimplexId getVertexTriangleNumberInternal(const SimplexId &vertexId) const override
SimplexId getTriangleNeighborNumber(const SimplexId &triangleId) const override
int getEdgeTriangleInternal(const SimplexId &edgeId, const int &id, SimplexId &triangleId) const override
SimplexId TTK_TRIANGULATION_INTERNAL() getVertexStarNumber(const SimplexId &vertexId) const override
int TTK_TRIANGULATION_INTERNAL() getTriangleLink(const SimplexId &triangleId, const int &localLinkId, SimplexId &linkId) const override
SimplexId TTK_TRIANGULATION_INTERNAL() getTriangleStarNumber(const SimplexId &triangleId) const override
int getTetrahedronNeighbor(const SimplexId &tetId, const int &localNeighborId, SimplexId &neighborId) const override
int getVertexTriangleInternal(const SimplexId &vertexId, const int &id, SimplexId &triangleId) const override
SimplexId getTetrahedronNeighborNumber(const SimplexId &tetId) const override
int getTriangleNeighbor(const SimplexId &triangleId, const int &localNeighborId, SimplexId &neighborId) const override
int getTriangleEdgeInternal(const SimplexId &triangleId, const int &id, SimplexId &edgeId) const override
int getTetrahedronEdge(const SimplexId &tetId, const int &id, SimplexId &edgeId) const override
ImplicitTriangulation is a class that provides time and memory efficient traversal methods on triangu...
std::array< SimplexId, 8 > vertexNeighborGH_
std::array< SimplexId, 4 > vertexNeighbor2dAC_
const std::vector< std::array< SimplexId, 3 > > *TTK_TRIANGULATION_INTERNAL() getTriangles() override
std::array< SimplexId, 8 > vertexNeighborBF_
ImplicitTriangulation & operator=(const ImplicitTriangulation &)=default
std::array< SimplexId, 8 > vertexNeighborBD_
std::array< SimplexId, 3 > vertexNeighbor2dB_
std::array< SimplexId, 7 > vertexNeighborB_
std::array< SimplexId, 6 > vertexNeighborEF_
SimplexId TTK_TRIANGULATION_INTERNAL() getCellVertexNumber(const SimplexId &cellId) const override
SimplexId tetrahedronNumber_
std::array< SimplexId, 14 > vertexNeighborABCDEFGH_
const std::vector< std::vector< SimplexId > > * getTriangleEdgesInternal() override
bool isEmpty() const override
SimplexId getCellEdgeNumberInternal(const SimplexId &cellId) const override
int TTK_TRIANGULATION_INTERNAL() getDimensionality() const override
ImplicitTriangulation(const ImplicitTriangulation &)=default
std::array< SimplexId, 8 > vertexNeighborEG_
int preconditionEdgesInternal() override=0
int getCellTriangleInternal(const SimplexId &cellId, const int &id, SimplexId &triangleId) const override
std::array< SimplexId, 4 > vertexNeighborH_
std::array< SimplexId, 4 > vertexNeighborE_
std::array< SimplexId, 2 > vertexNeighbor2dD_
const std::vector< std::vector< SimplexId > > *TTK_TRIANGULATION_INTERNAL() getTriangleStars() override
int getCellVTKIDInternal(const int &ttkId, int &vtkId) const override
bool TTK_TRIANGULATION_INTERNAL() isTriangleOnBoundary(const SimplexId &triangleId) const override
SimplexId getTriangleEdgeNumberInternal(const SimplexId &) const override
const std::vector< std::vector< SimplexId > > *TTK_TRIANGULATION_INTERNAL() getEdgeLinks() override
const std::vector< std::vector< SimplexId > > * getVertexEdgesInternal() override
std::array< SimplexId, 10 > vertexNeighborAEFB_
virtual int getTriangleNeighbor(const SimplexId &triangleId, const int &localNeighborId, SimplexId &neighborId) const =0
std::array< SimplexId, 6 > vertexNeighbor2dABCD_
std::array< SimplexId, 6 > vertexNeighborFH_
SimplexId TTK_TRIANGULATION_INTERNAL() getNumberOfCells() const override
const std::vector< std::vector< SimplexId > > *TTK_TRIANGULATION_INTERNAL() getVertexStars() override
int preconditionCellsInternal()
const std::vector< std::vector< SimplexId > > *TTK_TRIANGULATION_INTERNAL() getEdgeStars() override
std::array< SimplexId, 6 > vertexNeighborDH_
std::array< SimplexId, 6 > vertexNeighborCD_
const std::vector< std::vector< SimplexId > > * getCellEdgesInternal() override
std::array< SimplexId, 7 > vertexNeighborG_
int setInputGrid(const float &xOrigin, const float &yOrigin, const float &zOrigin, const float &xSpacing, const float &ySpacing, const float &zSpacing, const SimplexId &xDim, const SimplexId &yDim, const SimplexId &zDim) override
int getTetrahedronNeighbors(std::vector< std::vector< SimplexId > > &neighbors)
int TTK_TRIANGULATION_INTERNAL() getCellNeighbor(const SimplexId &cellId, const int &localNeighborId, SimplexId &neighborId) const override
const std::vector< std::vector< SimplexId > > * getVertexTrianglesInternal() override
virtual int preconditionTetrahedronsInternal()=0
virtual SimplexId getTetrahedronNeighborNumber(const SimplexId &tetId) const =0
virtual int getTetrahedronNeighbor(const SimplexId &tetId, const int &localNeighborId, SimplexId &neighborId) const =0
std::array< SimplexId, 10 > vertexNeighborAEGC_
virtual int getTetrahedronTriangle(const SimplexId &tetId, const int &id, SimplexId &triangleId) const =0
SimplexId getCellTriangleNumberInternal(const SimplexId &) const override
std::array< SimplexId, 10 > vertexNeighborEFGH_
ImplicitTriangulation & operator=(ImplicitTriangulation &&)=default
std::array< SimplexId, 2 > vertexNeighbor2dA_
bool isPowerOfTwo(unsigned long long int v, unsigned long long int &r)
SimplexId TTK_TRIANGULATION_INTERNAL() getNumberOfVertices() const override
SimplexId getVertexEdgeNumberInternal(const SimplexId &vertexId) const override
const std::vector< std::array< SimplexId, 2 > > *TTK_TRIANGULATION_INTERNAL() getEdges() override
const std::vector< std::vector< SimplexId > > *TTK_TRIANGULATION_INTERNAL() getCellNeighbors() override
const std::vector< std::vector< SimplexId > > *TTK_TRIANGULATION_INTERNAL() getVertexNeighbors() override
std::array< SimplexId, 4 > vertexNeighbor2dBD_
std::array< SimplexId, 10 > vertexNeighborBFHD_
int getTriangleNeighbors(std::vector< std::vector< SimplexId > > &neighbors)
virtual int getTetrahedronVertex(const SimplexId &tetId, const int &localVertexId, SimplexId &vertexId) const =0
std::array< SimplexId, 4 > vertexNeighborD_
SimplexId getNumberOfEdgesInternal() const override
std::array< SimplexId, 4 > vertexNeighborC_
virtual int getTetrahedronEdge(const SimplexId &tetId, const int &id, SimplexId &edgeId) const =0
virtual SimplexId getTriangleNeighborNumber(const SimplexId &triangleId) const =0
int getTetrahedronEdges(std::vector< std::vector< SimplexId > > &edges) const
std::array< SimplexId, 4 > vertexNeighbor2dCD_
std::array< SimplexId, 8 > vertexNeighborCG_
std::array< SimplexId, 3 > vertexNeighbor2dC_
std::array< SimplexId, 6 > vertexNeighborAC_
SimplexId TTK_TRIANGULATION_INTERNAL() getCellNeighborNumber(const SimplexId &cellId) const override
bool hasPreconditionedVerticesAndCells_
ImplicitTriangulation(ImplicitTriangulation &&)=default
int TTK_TRIANGULATION_INTERNAL() getCellVertex(const SimplexId &cellId, const int &localVertexId, SimplexId &vertexId) const override
const std::vector< std::vector< SimplexId > > * getEdgeTrianglesInternal() override
std::array< SimplexId, 10 > vertexNeighborABCD_
std::array< SimplexId, 10 > vertexNeighborGHDC_
const std::vector< std::vector< SimplexId > > *TTK_TRIANGULATION_INTERNAL() getTriangleLinks() override
std::array< SimplexId, 8 > vertexNeighborAB_
std::array< SimplexId, 6 > vertexNeighborAE_
int getCellEdgeInternal(const SimplexId &cellId, const int &id, SimplexId &edgeId) const override
std::array< SimplexId, 4 > vertexNeighborA_
SimplexId getNumberOfTrianglesInternal() const override
std::array< SimplexId, 4 > vertexNeighborF_
SimplexId TTK_TRIANGULATION_INTERNAL() getVertexLinkNumber(const SimplexId &vertexId) const override
@ BOTTOM_RIGHT_BACK_CORNER_3D
@ BOTTOM_LEFT_FRONT_CORNER_3D
@ BOTTOM_LEFT_BACK_CORNER_3D
@ TOP_LEFT_FRONT_CORNER_3D
@ BOTTOM_RIGHT_FRONT_CORNER_3D
@ TOP_RIGHT_BACK_CORNER_3D
@ TOP_RIGHT_FRONT_CORNER_3D
@ TOP_LEFT_BACK_CORNER_3D
const std::vector< std::vector< SimplexId > > * getCellTrianglesInternal() override
std::array< SimplexId, 4 > vertexNeighbor2dAB_
virtual int preconditionVerticesInternal()=0
SimplexId TTK_TRIANGULATION_INTERNAL() getTriangleLinkNumber(const SimplexId &triangleId) const override
int preconditionVertexNeighborsInternal() override
SimplexId TTK_TRIANGULATION_INTERNAL() getEdgeLinkNumber(const SimplexId &edgeId) const override
const std::vector< std::vector< SimplexId > > *TTK_TRIANGULATION_INTERNAL() getVertexLinks() override
~ImplicitTriangulation() override
SimplexId triangleNumber_
const std::array< SimplexId, 3 > & getGridDimensions() const override
int preconditionVerticesAndCells()
int preconditionTrianglesInternal() override=0
int getTetrahedronTriangles(std::vector< std::vector< SimplexId > > &triangles) const
RegularGridTriangulation is an abstract subclass of ttk::AbstractTriangulation that exposes a common ...
virtual void tetrahedronToPosition(const SimplexId tetrahedron, SimplexId p[3]) const =0
virtual void vertexToPosition(const SimplexId vertex, SimplexId p[3]) const =0
virtual void triangleToPosition2d(const SimplexId triangle, SimplexId p[2]) const =0
std::array< SimplexId, 3 > dimensions_
virtual void vertexToPosition2d(const SimplexId vertex, SimplexId p[2]) const =0
virtual void triangleToPosition(const SimplexId triangle, const int k, SimplexId p[3]) const =0
int SimplexId
Identifier type for simplices of any dimension.