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);
856#ifndef TTK_ENABLE_KAMIKAZE
861 switch(this->underlying().getVertexPosition(vertexId)) {
916 const SimplexId &vertexId)
const override;
923 const int &localNeighborId,
926#ifndef TTK_ENABLE_KAMIKAZE
927 if(localNeighborId < 0
932 switch(this->underlying().getVertexPosition(vertexId)) {
1043 neighborId = (localNeighborId == 0 ? vertexId + 1 : vertexId - 1);
1046 neighborId = vertexId + 1;
1049 neighborId = vertexId - 1;
1072 const int &localLinkId,
1076 const SimplexId &vertexId)
const override;
1080 const int &localStarId,
1086 float &z)
const override;
1089 const int &localVertexId,
1101 const int &localLinkId,
1106 const int &localStarId,
1110 const SimplexId &edgeId)
const override;
1113 const int &localVertexId,
1122 const int &localLinkId,
1127 const int &localStarId,
1131 const SimplexId &triangleId)
const override;
1134 const int &localNeighborId,
1141 const int &localVertexId,
1156 const int &localNeighborId,
1165 SimplexId p[2])
const {
1167 p[0] = vertex &
mod_[0];
1168 p[1] = vertex >>
div_[0];
1175inline void ttk::ImplicitTriangulation::edgeToPosition2d(
const SimplexId edge,
1178 const int e = (k) ? edge - esetshift_[k - 1] : edge;
1179 p[0] = e % eshift_[2 * k];
1180 p[1] = e / eshift_[2 * k];
1186 p[0] = triangle % tshift_[0];
1187 p[1] = triangle / tshift_[0];
1191 ttk::ImplicitTriangulation::getVertexEdge2dA(
const SimplexId p[2],
1192 const int id)
const {
1196 return p[0] + p[1] * eshift_[0];
1198 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1204 ttk::ImplicitTriangulation::getVertexEdge2dB(
const SimplexId p[2],
1205 const int id)
const {
1209 return p[0] + p[1] * eshift_[0] - 1;
1211 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1213 return esetshift_[1] + p[0] + p[1] * eshift_[4] - 1;
1219 ttk::ImplicitTriangulation::getVertexEdge2dC(
const SimplexId p[2],
1220 const int id)
const {
1224 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1226 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4];
1228 return p[0] + p[1] * eshift_[0];
1234 ttk::ImplicitTriangulation::getVertexEdge2dD(
const SimplexId p[2],
1235 const int id)
const {
1239 return p[0] + p[1] * eshift_[0] - 1;
1241 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1247 ttk::ImplicitTriangulation::getVertexEdge2dAB(
const SimplexId p[2],
1248 const int id)
const {
1252 return p[0] + p[1] * eshift_[0] - 1;
1254 return esetshift_[1] + p[0] + p[1] * eshift_[4] - 1;
1256 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1258 return p[0] + p[1] * eshift_[0];
1264 ttk::ImplicitTriangulation::getVertexEdge2dCD(
const SimplexId p[2],
1265 const int id)
const {
1269 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1271 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4];
1273 return p[0] + p[1] * eshift_[0];
1275 return p[0] + p[1] * eshift_[0] - 1;
1281 ttk::ImplicitTriangulation::getVertexEdge2dAC(
const SimplexId p[2],
1282 const int id)
const {
1286 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1288 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4];
1290 return p[0] + p[1] * eshift_[0];
1292 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1298 ttk::ImplicitTriangulation::getVertexEdge2dBD(
const SimplexId p[2],
1299 const int id)
const {
1303 return esetshift_[1] + p[0] + p[1] * eshift_[4] - 1;
1305 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1307 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1309 return p[0] + p[1] * eshift_[0] - 1;
1315 ttk::ImplicitTriangulation::getVertexEdge2dABCD(
const SimplexId p[2],
1316 const int id)
const {
1320 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1322 return p[0] + p[1] * eshift_[0] - 1;
1324 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4];
1326 return p[0] + p[1] * eshift_[0];
1328 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1330 return esetshift_[1] + p[0] + p[1] * eshift_[4] - 1;
1336 ttk::ImplicitTriangulation::getVertexStar2dA(
const SimplexId p[2],
1338 return p[0] * 2 + p[1] * tshift_[0];
1342 ttk::ImplicitTriangulation::getVertexStar2dB(
const SimplexId p[2],
1343 const int id)
const {
1346 return (p[0] - 1) * 2 + p[1] * tshift_[0];
1348 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1354 ttk::ImplicitTriangulation::getVertexStar2dC(
const SimplexId p[2],
1355 const int id)
const {
1358 return p[0] * 2 + (p[1] - 1) * tshift_[0];
1360 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1366 ttk::ImplicitTriangulation::getVertexStar2dD(
const SimplexId p[2],
1368 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
1372 ttk::ImplicitTriangulation::getVertexStar2dAB(
const SimplexId p[2],
1373 const int id)
const {
1376 return (p[0] - 1) * 2 + p[1] * tshift_[0];
1378 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1380 return p[0] * 2 + p[1] * tshift_[0];
1386 ttk::ImplicitTriangulation::getVertexStar2dCD(
const SimplexId p[2],
1387 const int id)
const {
1390 return p[0] * 2 + (p[1] - 1) * tshift_[0];
1392 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1394 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
1400 ttk::ImplicitTriangulation::getVertexStar2dAC(
const SimplexId p[2],
1401 const int id)
const {
1404 return p[0] * 2 + (p[1] - 1) * tshift_[0];
1406 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1408 return p[0] * 2 + p[1] * tshift_[0];
1414 ttk::ImplicitTriangulation::getVertexStar2dBD(
const SimplexId p[2],
1415 const int id)
const {
1418 return (p[0] - 1) * 2 + p[1] * tshift_[0];
1420 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1422 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
1428 ttk::ImplicitTriangulation::getVertexStar2dABCD(
const SimplexId p[2],
1429 const int id)
const {
1432 return (p[0] - 1) * 2 + p[1] * tshift_[0];
1434 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1436 return p[0] * 2 + p[1] * tshift_[0];
1438 return p[0] * 2 + (p[1] - 1) * tshift_[0];
1440 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1442 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
1448 ttk::ImplicitTriangulation::getVertexLink2dA(
const SimplexId p[2],
1450 return esetshift_[1] + p[0] + p[1] * eshift_[4];
1454 ttk::ImplicitTriangulation::getVertexLink2dB(
const SimplexId p[2],
1455 const int id)
const {
1458 return esetshift_[0] + p[0] + p[1] * eshift_[2] - 1;
1460 return p[0] + (p[1] + 1) * eshift_[0] - 1;
1466 ttk::ImplicitTriangulation::getVertexLink2dC(
const SimplexId p[2],
1467 const int id)
const {
1470 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2] + 1;
1472 return p[0] + (p[1] - 1) * eshift_[0];
1478 ttk::ImplicitTriangulation::getVertexLink2dD(
const SimplexId p[2],
1480 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4] - 1;
1484 ttk::ImplicitTriangulation::getVertexLink2dAB(
const SimplexId p[2],
1485 const int id)
const {
1488 return esetshift_[0] + p[0] + p[1] * eshift_[2] - 1;
1490 return p[0] + (p[1] + 1) * eshift_[0] - 1;
1492 return esetshift_[1] + p[0] + p[1] * eshift_[4];
1498 ttk::ImplicitTriangulation::getVertexLink2dCD(
const SimplexId p[2],
1499 const int id)
const {
1502 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2] + 1;
1504 return p[0] + (p[1] - 1) * eshift_[0];
1506 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4] - 1;
1512 ttk::ImplicitTriangulation::getVertexLink2dAC(
const SimplexId p[2],
1513 const int id)
const {
1516 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2] + 1;
1518 return p[0] + (p[1] - 1) * eshift_[0];
1520 return esetshift_[1] + p[0] + p[1] * eshift_[4];
1526 ttk::ImplicitTriangulation::getVertexLink2dBD(
const SimplexId p[2],
1527 const int id)
const {
1530 return esetshift_[0] + p[0] + p[1] * eshift_[2] - 1;
1532 return p[0] + (p[1] + 1) * eshift_[0] - 1;
1534 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4] - 1;
1540 ttk::ImplicitTriangulation::getVertexLink2dABCD(
const SimplexId p[2],
1541 const int id)
const {
1544 return esetshift_[0] + p[0] + p[1] * eshift_[2] - 1;
1546 return p[0] + (p[1] + 1) * eshift_[0] - 1;
1548 return esetshift_[1] + p[0] + p[1] * eshift_[4];
1550 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2] + 1;
1552 return p[0] + (p[1] - 1) * eshift_[0];
1554 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4] - 1;
1560 ttk::ImplicitTriangulation::getEdgeTriangleL_x0(
const SimplexId p[3],
1561 const int id)
const {
1570 ttk::ImplicitTriangulation::getEdgeTriangleL_xn(
const SimplexId p[3],
1571 const int id)
const {
1574 return p[Di_] * 2 + p[Dj_] * tshift_[0];
1576 return p[Di_] * 2 + (p[Dj_] - 1) * tshift_[0] + 1;
1582 ttk::ImplicitTriangulation::getEdgeTriangleL_xN(
const SimplexId p[3],
1583 const int id)
const {
1586 return p[Di_] * 2 + (p[Dj_] - 1) * tshift_[0] + 1;
1592 ttk::ImplicitTriangulation::getEdgeTriangleH_0y(
const SimplexId p[3],
1593 const int id)
const {
1596 return p[Dj_] * tshift_[0];
1602 ttk::ImplicitTriangulation::getEdgeTriangleH_ny(
const SimplexId p[3],
1603 const int id)
const {
1606 return p[Di_] * 2 + p[Dj_] * tshift_[0];
1608 return (p[Di_] - 1) * 2 + p[Dj_] * tshift_[0] + 1;
1614 ttk::ImplicitTriangulation::getEdgeTriangleH_Ny(
const SimplexId p[3],
1615 const int id)
const {
1618 return (p[Di_] - 1) * 2 + p[Dj_] * tshift_[0] + 1;
1624 ttk::ImplicitTriangulation::getEdgeTriangleD1_xy(
const SimplexId p[3],
1625 const int id)
const {
1628 return p[Di_] * 2 + p[Dj_] * tshift_[0];
1630 return p[Di_] * 2 + p[Dj_] * tshift_[0] + 1;
1636 ttk::ImplicitTriangulation::getEdgeLink2dL(
const SimplexId p[2],
1637 const int id)
const {
1638 if(p[1] > 0 and p[1] < nbvoxels_[Dj_]) {
1641 return p[0] + (p[1] + 1) * vshift_[0];
1643 return p[0] + (p[1] - 1) * vshift_[0] + 1;
1645 }
else if(p[1] == 0)
1646 return p[0] + vshift_[0];
1648 return p[0] + (p[1] - 1) * vshift_[0] + 1;
1653 ttk::ImplicitTriangulation::getEdgeLink2dH(
const SimplexId p[2],
1654 const int id)
const {
1655 if(p[0] > 0 and p[0] < nbvoxels_[Di_]) {
1658 return p[0] + p[1] * vshift_[0] + 1;
1660 return p[0] + (p[1] + 1) * vshift_[0] - 1;
1662 }
else if(p[0] == 0)
1663 return p[1] * vshift_[0] + 1;
1665 return p[0] + (p[1] + 1) * vshift_[0] - 1;
1670 ttk::ImplicitTriangulation::getEdgeLink2dD1(
const SimplexId p[2],
1671 const int id)
const {
1674 return p[0] + p[1] * vshift_[0];
1676 return p[0] + (p[1] + 1) * vshift_[0] + 1;
1682 ttk::ImplicitTriangulation::getEdgeStar2dL(
const SimplexId p[2],
1683 const int id)
const {
1684 if(p[1] > 0 and p[1] < nbvoxels_[Dj_]) {
1686 return p[0] * 2 + p[1] * tshift_[0];
1688 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1689 }
else if(p[1] == 0)
1690 return p[0] * 2 + p[1] * tshift_[0];
1692 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1696 ttk::ImplicitTriangulation::getEdgeStar2dH(
const SimplexId p[2],
1697 const int id)
const {
1698 if(p[0] > 0 and p[0] < nbvoxels_[Di_]) {
1700 return p[0] * 2 + p[1] * tshift_[0];
1702 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1703 }
else if(p[0] == 0)
1704 return p[0] * 2 + p[1] * tshift_[0];
1706 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1711 if(isAccelerated_) {
1712 p[0] = vertex & mod_[0];
1713 p[1] = (vertex & mod_[1]) >> div_[0];
1714 p[2] = vertex >> div_[1];
1716 p[0] = vertex % vshift_[0];
1717 p[1] = (vertex % vshift_[1]) / vshift_[0];
1718 p[2] = vertex / vshift_[1];
1722inline void ttk::ImplicitTriangulation::edgeToPosition(
const SimplexId edge,
1725 const int e = (k) ? edge - esetshift_[k - 1] : edge;
1726 p[0] = e % eshift_[2 * k];
1727 p[1] = (e % eshift_[2 * k + 1]) / eshift_[2 * k];
1728 p[2] = e / eshift_[2 * k + 1];
1733 const SimplexId t = (k) ? triangle - tsetshift_[k - 1] : triangle;
1734 p[0] = t % tshift_[2 * k];
1735 p[1] = (t % tshift_[2 * k + 1]) / tshift_[2 * k];
1736 p[2] = t / tshift_[2 * k + 1];
1742 p[0] = (tetrahedron % tetshift_[0]) / 6;
1743 p[1] = (tetrahedron % tetshift_[1]) / tetshift_[0];
1744 p[2] = tetrahedron / tetshift_[1];
1748 ttk::ImplicitTriangulation::getVertexEdgeA(
const SimplexId p[3],
1749 const int id)
const {
1753 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1755 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1756 + p[2] * eshift_[3];
1758 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1759 + p[2] * eshift_[5];
1761 return esetshift_[3] + p[0] + p[1] * eshift_[8]
1762 + p[2] * eshift_[9];
1768 ttk::ImplicitTriangulation::getVertexEdgeB(
const SimplexId p[3],
1769 const int id)
const {
1773 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1775 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
1778 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1779 + p[2] * eshift_[3];
1781 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
1784 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1785 + p[2] * eshift_[5];
1787 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
1790 return esetshift_[3] + p[0] + p[1] * eshift_[8]
1791 + p[2] * eshift_[9];
1797 ttk::ImplicitTriangulation::getVertexEdgeC(
const SimplexId p[3],
1798 const int id)
const {
1802 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1803 + p[2] * eshift_[3];
1805 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
1806 + p[2] * eshift_[7];
1808 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1810 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1811 + p[2] * eshift_[5];
1817 ttk::ImplicitTriangulation::getVertexEdgeD(
const SimplexId p[3],
1818 const int id)
const {
1822 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1823 + p[2] * eshift_[3];
1825 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1827 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
1830 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1831 + p[2] * eshift_[5];
1837 ttk::ImplicitTriangulation::getVertexEdgeE(
const SimplexId p[3],
1838 const int id)
const {
1842 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1843 + (p[2] - 1) * eshift_[5];
1845 return esetshift_[4] + p[0] + p[1] * eshift_[10]
1846 + (p[2] - 1) * eshift_[11];
1848 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1850 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1851 + p[2] * eshift_[3];
1857 ttk::ImplicitTriangulation::getVertexEdgeF(
const SimplexId p[3],
1858 const int id)
const {
1862 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1863 + (p[2] - 1) * eshift_[5];
1865 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1867 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
1870 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1871 + p[2] * eshift_[3];
1877 ttk::ImplicitTriangulation::getVertexEdgeG(
const SimplexId p[3],
1878 const int id)
const {
1882 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
1883 + (p[2] - 1) * eshift_[9];
1885 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
1886 + (p[2] - 1) * eshift_[13];
1888 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1889 + (p[2] - 1) * eshift_[5];
1891 return esetshift_[4] + p[0] + p[1] * eshift_[10]
1892 + (p[2] - 1) * eshift_[11];
1894 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1895 + p[2] * eshift_[3];
1897 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
1898 + p[2] * eshift_[7];
1900 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1906 ttk::ImplicitTriangulation::getVertexEdgeH(
const SimplexId p[3],
1907 const int id)
const {
1911 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
1912 + (p[2] - 1) * eshift_[9];
1914 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1915 + (p[2] - 1) * eshift_[5];
1917 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1918 + p[2] * eshift_[3];
1920 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1926 ttk::ImplicitTriangulation::getVertexEdgeAB(
const SimplexId p[3],
1927 const int id)
const {
1931 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1933 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
1936 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1937 + p[2] * eshift_[3];
1939 return esetshift_[4] + p[0] + p[1] * eshift_[11] + p[2] * eshift_[12]
1942 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1943 + p[2] * eshift_[5];
1945 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
1948 return esetshift_[3] + p[0] + p[1] * eshift_[8]
1949 + p[2] * eshift_[9];
1951 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1957 ttk::ImplicitTriangulation::getVertexEdgeCD(
const SimplexId p[3],
1958 const int id)
const {
1962 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1963 + p[2] * eshift_[3];
1965 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1967 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
1970 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1971 + p[2] * eshift_[5];
1973 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
1974 + p[2] * eshift_[7];
1976 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1982 ttk::ImplicitTriangulation::getVertexEdgeEF(
const SimplexId p[3],
1983 const int id)
const {
1987 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1988 + (p[2] - 1) * eshift_[5];
1990 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1992 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
1995 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1996 + p[2] * eshift_[3];
1998 return esetshift_[4] + p[0] + p[1] * eshift_[10]
1999 + (p[2] - 1) * eshift_[11];
2001 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2007 ttk::ImplicitTriangulation::getVertexEdgeGH(
const SimplexId p[3],
2008 const int id)
const {
2012 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2013 + (p[2] - 1) * eshift_[9];
2015 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2016 + (p[2] - 1) * eshift_[13];
2018 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2019 + (p[2] - 1) * eshift_[5];
2021 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2022 + (p[2] - 1) * eshift_[11];
2024 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2025 + p[2] * eshift_[3];
2027 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2028 + p[2] * eshift_[7];
2030 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2032 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2038 ttk::ImplicitTriangulation::getVertexEdgeAC(
const SimplexId p[3],
2039 const int id)
const {
2043 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2044 + p[2] * eshift_[3];
2046 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2047 + p[2] * eshift_[7];
2049 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2051 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2052 + p[2] * eshift_[5];
2054 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2055 + p[2] * eshift_[3];
2057 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2058 + p[2] * eshift_[9];
2064 ttk::ImplicitTriangulation::getVertexEdgeBD(
const SimplexId p[3],
2065 const int id)
const {
2069 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2071 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2074 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2075 + p[2] * eshift_[3];
2077 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2080 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2081 + p[2] * eshift_[5];
2083 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
2086 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2087 + p[2] * eshift_[9];
2089 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2090 + p[2] * eshift_[3];
2096 ttk::ImplicitTriangulation::getVertexEdgeEG(
const SimplexId p[3],
2097 const int id)
const {
2101 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2102 + (p[2] - 1) * eshift_[9];
2104 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2105 + (p[2] - 1) * eshift_[13];
2107 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2108 + (p[2] - 1) * eshift_[5];
2110 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2111 + (p[2] - 1) * eshift_[11];
2113 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2114 + p[2] * eshift_[3];
2116 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2117 + p[2] * eshift_[7];
2119 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2121 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2122 + p[2] * eshift_[3];
2128 ttk::ImplicitTriangulation::getVertexEdgeFH(
const SimplexId p[3],
2129 const int id)
const {
2133 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2134 + (p[2] - 1) * eshift_[5];
2136 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2138 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2141 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2142 + p[2] * eshift_[3];
2144 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2145 + (p[2] - 1) * eshift_[9];
2147 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2148 + p[2] * eshift_[3];
2154 ttk::ImplicitTriangulation::getVertexEdgeAE(
const SimplexId p[3],
2155 const int id)
const {
2159 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2161 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2162 + p[2] * eshift_[3];
2164 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2165 + p[2] * eshift_[5];
2167 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2168 + p[2] * eshift_[9];
2170 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2171 + (p[2] - 1) * eshift_[5];
2173 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2174 + (p[2] - 1) * eshift_[11];
2180 ttk::ImplicitTriangulation::getVertexEdgeBF(
const SimplexId p[3],
2181 const int id)
const {
2185 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2187 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2190 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2191 + p[2] * eshift_[3];
2193 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2196 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2197 + p[2] * eshift_[5];
2199 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
2202 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2203 + p[2] * eshift_[9];
2205 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2206 + (p[2] - 1) * eshift_[5];
2212 ttk::ImplicitTriangulation::getVertexEdgeCG(
const SimplexId p[3],
2213 const int id)
const {
2217 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2218 + (p[2] - 1) * eshift_[9];
2220 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2221 + (p[2] - 1) * eshift_[13];
2223 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2224 + (p[2] - 1) * eshift_[5];
2226 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2227 + (p[2] - 1) * eshift_[11];
2229 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2230 + p[2] * eshift_[3];
2232 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2233 + p[2] * eshift_[7];
2235 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2237 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2238 + p[2] * eshift_[5];
2244 ttk::ImplicitTriangulation::getVertexEdgeDH(
const SimplexId p[3],
2245 const int id)
const {
2249 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2250 + p[2] * eshift_[3];
2252 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2254 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2257 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2258 + p[2] * eshift_[5];
2260 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2261 + (p[2] - 1) * eshift_[9];
2263 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2264 + (p[2] - 1) * eshift_[5];
2270 ttk::ImplicitTriangulation::getVertexEdgeABDC(
const SimplexId p[3],
2271 const int id)
const {
2275 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2277 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2280 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2281 + p[2] * eshift_[3];
2283 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2286 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2287 + p[2] * eshift_[5];
2289 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
2292 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2293 + p[2] * eshift_[9];
2295 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2296 + p[2] * eshift_[3];
2298 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2299 + p[2] * eshift_[7];
2301 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2307 ttk::ImplicitTriangulation::getVertexEdgeEFHG(
const SimplexId p[3],
2308 const int id)
const {
2312 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2313 + (p[2] - 1) * eshift_[9];
2315 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2316 + (p[2] - 1) * eshift_[13];
2318 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2319 + (p[2] - 1) * eshift_[5];
2321 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2322 + (p[2] - 1) * eshift_[11];
2324 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2325 + p[2] * eshift_[3];
2327 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2328 + p[2] * eshift_[7];
2330 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2332 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2334 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2337 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2338 + p[2] * eshift_[3];
2344 ttk::ImplicitTriangulation::getVertexEdgeAEGC(
const SimplexId p[3],
2345 const int id)
const {
2349 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2350 + (p[2] - 1) * eshift_[9];
2352 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2353 + (p[2] - 1) * eshift_[13];
2355 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2356 + (p[2] - 1) * eshift_[5];
2358 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2359 + (p[2] - 1) * eshift_[11];
2361 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2362 + p[2] * eshift_[3];
2364 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2365 + p[2] * eshift_[7];
2367 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2369 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2370 + p[2] * eshift_[3];
2372 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2373 + p[2] * eshift_[9];
2375 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2376 + p[2] * eshift_[5];
2382 ttk::ImplicitTriangulation::getVertexEdgeBFHD(
const SimplexId p[3],
2383 const int id)
const {
2387 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2389 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2392 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2393 + p[2] * eshift_[3];
2395 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2398 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2399 + p[2] * eshift_[5];
2401 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
2404 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2405 + p[2] * eshift_[9];
2407 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2408 + (p[2] - 1) * eshift_[5];
2410 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2411 + (p[2] - 1) * eshift_[9];
2413 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2414 + p[2] * eshift_[3];
2420 ttk::ImplicitTriangulation::getVertexEdgeAEFB(
const SimplexId p[3],
2421 const int id)
const {
2425 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2427 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2430 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2431 + p[2] * eshift_[3];
2433 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2436 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2437 + p[2] * eshift_[5];
2439 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
2442 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2443 + p[2] * eshift_[9];
2445 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2447 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2448 + (p[2] - 1) * eshift_[11];
2450 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2451 + (p[2] - 1) * eshift_[5];
2457 ttk::ImplicitTriangulation::getVertexEdgeGHDC(
const SimplexId p[3],
2458 const int id)
const {
2462 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2463 + (p[2] - 1) * eshift_[9];
2465 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2466 + (p[2] - 1) * eshift_[13];
2468 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2469 + (p[2] - 1) * eshift_[5];
2471 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2472 + (p[2] - 1) * eshift_[11];
2474 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2475 + p[2] * eshift_[3];
2477 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2478 + p[2] * eshift_[7];
2480 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2482 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2484 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2487 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2488 + p[2] * eshift_[5];
2494 ttk::ImplicitTriangulation::getVertexEdgeABCDEFGH(
const SimplexId p[3],
2495 const int id)
const {
2499 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2500 + (p[2] - 1) * eshift_[9];
2502 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2503 + (p[2] - 1) * eshift_[13];
2505 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2506 + (p[2] - 1) * eshift_[5];
2508 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2509 + (p[2] - 1) * eshift_[11];
2511 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2512 + p[2] * eshift_[3];
2514 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2515 + p[2] * eshift_[7];
2517 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2519 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2522 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2523 + p[2] * eshift_[5];
2525 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2527 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2530 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2531 + p[2] * eshift_[3];
2533 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
2536 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2537 + p[2] * eshift_[9];
2543 ttk::ImplicitTriangulation::getVertexTriangleA(
const SimplexId [3],
2544 const int id)
const {
2549 return tsetshift_[0];
2551 return tsetshift_[1];
2553 return tsetshift_[3];
2555 return tsetshift_[1] + 1;
2561 ttk::ImplicitTriangulation::getVertexTriangleB(
const SimplexId p[3],
2562 const int id)
const {
2565 return (p[0] - 1) * 2 + 1;
2567 return tsetshift_[4] + (p[0] - 1) * 2;
2569 return tsetshift_[2] + (p[0] - 1) * 2;
2571 return tsetshift_[3] + (p[0] - 1) * 2 + 1;
2573 return tsetshift_[1] + p[0] * 2;
2575 return tsetshift_[1] + p[0] * 2 + 1;
2577 return tsetshift_[4] + (p[0] - 1) * 2 + 1;
2579 return tsetshift_[0] + (p[0] - 1) * 2 + 1;
2581 return tsetshift_[2] + (p[0] - 1) * 2 + 1;
2583 return tsetshift_[3] + (p[0] - 1) * 2;
2585 return tsetshift_[0] + (p[0] - 1) * 2;
2587 return (p[0] - 1) * 2;
2593 ttk::ImplicitTriangulation::getVertexTriangleC(
const SimplexId p[3],
2594 const int id)
const {
2597 return (p[1] - 1) * tshift_[0];
2599 return (p[1] - 1) * tshift_[0] + 1;
2601 return tsetshift_[4] + (p[1] - 1) * tshift_[10];
2603 return tsetshift_[0] + p[1] * tshift_[2];
2605 return tsetshift_[1] + (p[1] - 1) * tshift_[4];
2611 ttk::ImplicitTriangulation::getVertexTriangleD(
const SimplexId p[3],
2612 const int id)
const {
2615 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
2617 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6];
2619 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2];
2621 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4];
2623 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2] + 1;
2629 ttk::ImplicitTriangulation::getVertexTriangleE(
const SimplexId p[3],
2630 const int id)
const {
2633 return tsetshift_[0] + (p[2] - 1) * tshift_[3];
2635 return tsetshift_[2] + (p[2] - 1) * tshift_[7] + 1;
2637 return tsetshift_[1] + (p[2] - 1) * tshift_[5] + 1;
2639 return p[2] * tshift_[1];
2641 return tsetshift_[0] + (p[2] - 1) * tshift_[3] + 1;
2647 ttk::ImplicitTriangulation::getVertexTriangleF(
const SimplexId p[3],
2648 const int id)
const {
2651 return tsetshift_[0] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[3] + 1;
2653 return (p[0] - 1) * 2 + p[2] * tshift_[1];
2655 return (p[0] - 1) * 2 + p[2] * tshift_[1] + 1;
2657 return tsetshift_[4] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[11] + 1;
2659 return tsetshift_[1] + p[0] * 2 + (p[2] - 1) * tshift_[5] + 1;
2665 ttk::ImplicitTriangulation::getVertexTriangleG(
const SimplexId p[3],
2666 const int id)
const {
2669 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7];
2671 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7]
2674 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5];
2676 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5]
2679 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9];
2681 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9]
2684 return tsetshift_[4] + (p[1] - 1) * tshift_[10]
2685 + (p[2] - 1) * tshift_[11];
2687 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + (p[2] - 1) * tshift_[11]
2690 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
2692 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2694 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3];
2696 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3] + 1;
2702 ttk::ImplicitTriangulation::getVertexTriangleH(
const SimplexId p[3],
2703 const int id)
const {
2706 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
2707 + (p[2] - 1) * tshift_[9] + 1;
2709 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2711 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2712 + (p[2] - 1) * tshift_[5];
2714 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2715 + (p[2] - 1) * tshift_[5] + 1;
2717 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
2718 + (p[2] - 1) * tshift_[3] + 1;
2724 ttk::ImplicitTriangulation::getVertexTriangleAB(
const SimplexId p[3],
2725 const int id)
const {
2728 return (p[0] - 1) * 2 + 1;
2730 return tsetshift_[4] + (p[0] - 1) * 2;
2732 return tsetshift_[2] + (p[0] - 1) * 2;
2734 return tsetshift_[3] + (p[0] - 1) * 2 + 1;
2736 return tsetshift_[1] + p[0] * 2;
2738 return tsetshift_[1] + p[0] * 2 + 1;
2740 return tsetshift_[4] + (p[0] - 1) * 2 + 1;
2742 return tsetshift_[0] + (p[0] - 1) * 2 + 1;
2744 return tsetshift_[2] + (p[0] - 1) * 2 + 1;
2746 return tsetshift_[3] + (p[0] - 1) * 2;
2748 return tsetshift_[0] + (p[0] - 1) * 2;
2750 return (p[0] - 1) * 2;
2754 return tsetshift_[0] + p[0] * 2;
2756 return tsetshift_[3] + p[0] * 2;
2762 ttk::ImplicitTriangulation::getVertexTriangleCD(
const SimplexId p[3],
2763 const int id)
const {
2766 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
2768 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6];
2770 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2];
2772 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4];
2774 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2] + 1;
2776 return p[0] * 2 + (p[1] - 1) * tshift_[0];
2778 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
2780 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10];
2782 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2];
2788 ttk::ImplicitTriangulation::getVertexTriangleEF(
const SimplexId p[3],
2789 const int id)
const {
2792 return tsetshift_[0] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[3] + 1;
2794 return (p[0] - 1) * 2 + p[2] * tshift_[1];
2796 return (p[0] - 1) * 2 + p[2] * tshift_[1] + 1;
2798 return tsetshift_[4] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[11] + 1;
2800 return tsetshift_[1] + p[0] * 2 + (p[2] - 1) * tshift_[5] + 1;
2802 return p[0] * 2 + tsetshift_[0] + (p[2] - 1) * tshift_[3];
2804 return p[0] * 2 + tsetshift_[2] + (p[2] - 1) * tshift_[7] + 1;
2806 return p[0] * 2 + p[2] * tshift_[1];
2808 return p[0] * 2 + tsetshift_[0] + (p[2] - 1) * tshift_[3] + 1;
2814 ttk::ImplicitTriangulation::getVertexTriangleGH(
const SimplexId p[3],
2815 const int id)
const {
2818 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
2819 + (p[2] - 1) * tshift_[9] + 1;
2821 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2823 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2824 + (p[2] - 1) * tshift_[5];
2826 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2827 + (p[2] - 1) * tshift_[5] + 1;
2829 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
2830 + (p[2] - 1) * tshift_[3] + 1;
2832 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
2833 + (p[2] - 1) * tshift_[7];
2835 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
2836 + (p[2] - 1) * tshift_[7] + 1;
2838 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
2839 + (p[2] - 1) * tshift_[9];
2841 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
2842 + (p[2] - 1) * tshift_[9] + 1;
2844 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
2845 + (p[2] - 1) * tshift_[11];
2847 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
2848 + (p[2] - 1) * tshift_[11] + 1;
2850 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
2852 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2854 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
2855 + (p[2] - 1) * tshift_[3];
2857 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
2858 + (p[2] - 1) * tshift_[3] + 1;
2864 ttk::ImplicitTriangulation::getVertexTriangleAC(
const SimplexId p[3],
2865 const int id)
const {
2868 return (p[1] - 1) * tshift_[0];
2870 return (p[1] - 1) * tshift_[0] + 1;
2872 return tsetshift_[4] + (p[1] - 1) * tshift_[10];
2874 return tsetshift_[0] + p[1] * tshift_[2];
2876 return tsetshift_[1] + (p[1] - 1) * tshift_[4];
2878 return p[1] * tshift_[0];
2880 return tsetshift_[1] + p[1] * tshift_[4];
2882 return tsetshift_[3] + p[1] * tshift_[8];
2884 return tsetshift_[1] + p[1] * tshift_[4] + 1;
2890 ttk::ImplicitTriangulation::getVertexTriangleBD(
const SimplexId p[3],
2891 const int id)
const {
2894 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
2896 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6];
2898 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2];
2900 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4];
2902 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2] + 1;
2904 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
2906 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10];
2908 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6];
2910 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8] + 1;
2912 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4];
2914 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + 1;
2916 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10] + 1;
2918 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6] + 1;
2920 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8];
2922 return (p[0] - 1) * 2 + p[1] * tshift_[0];
2928 ttk::ImplicitTriangulation::getVertexTriangleEG(
const SimplexId p[3],
2929 const int id)
const {
2932 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7];
2934 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7]
2937 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5];
2939 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5]
2942 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9];
2944 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9]
2947 return tsetshift_[4] + (p[1] - 1) * tshift_[10]
2948 + (p[2] - 1) * tshift_[11];
2950 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + (p[2] - 1) * tshift_[11]
2953 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
2955 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2957 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3];
2959 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3] + 1;
2961 return tsetshift_[2] + p[1] * tshift_[6] + (p[2] - 1) * tshift_[7] + 1;
2963 return tsetshift_[1] + p[1] * tshift_[4] + (p[2] - 1) * tshift_[5] + 1;
2965 return p[1] * tshift_[0] + p[2] * tshift_[1];
2971 ttk::ImplicitTriangulation::getVertexTriangleFH(
const SimplexId p[3],
2972 const int id)
const {
2975 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
2976 + (p[2] - 1) * tshift_[9] + 1;
2978 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2980 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2981 + (p[2] - 1) * tshift_[5];
2983 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2984 + (p[2] - 1) * tshift_[5] + 1;
2986 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
2987 + (p[2] - 1) * tshift_[3] + 1;
2989 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
2991 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
2993 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
2994 + (p[2] - 1) * tshift_[11] + 1;
2996 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
2997 + (p[2] - 1) * tshift_[5] + 1;
3003 ttk::ImplicitTriangulation::getVertexTriangleAE(
const SimplexId p[3],
3004 const int id)
const {
3007 return tsetshift_[0] + (p[2] - 1) * tshift_[3];
3009 return tsetshift_[2] + (p[2] - 1) * tshift_[7] + 1;
3011 return tsetshift_[1] + (p[2] - 1) * tshift_[5] + 1;
3013 return p[2] * tshift_[1];
3015 return tsetshift_[0] + (p[2] - 1) * tshift_[3] + 1;
3017 return tsetshift_[0] + p[2] * tshift_[3];
3019 return tsetshift_[1] + p[2] * tshift_[5];
3021 return tsetshift_[3] + p[2] * tshift_[9];
3023 return tsetshift_[1] + p[2] * tshift_[5] + 1;
3029 ttk::ImplicitTriangulation::getVertexTriangleBF(
const SimplexId p[3],
3030 const int id)
const {
3033 return tsetshift_[0] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[3] + 1;
3035 return (p[0] - 1) * 2 + p[2] * tshift_[1];
3037 return (p[0] - 1) * 2 + p[2] * tshift_[1] + 1;
3039 return tsetshift_[4] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[11] + 1;
3041 return tsetshift_[1] + p[0] * 2 + (p[2] - 1) * tshift_[5] + 1;
3043 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11];
3045 return tsetshift_[2] + (p[0] - 1) * 2 + p[2] * tshift_[7];
3047 return tsetshift_[3] + (p[0] - 1) * 2 + p[2] * tshift_[9] + 1;
3049 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5];
3051 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5] + 1;
3053 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11] + 1;
3055 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3] + 1;
3057 return tsetshift_[2] + (p[0] - 1) * 2 + p[2] * tshift_[7] + 1;
3059 return tsetshift_[3] + (p[0] - 1) * 2 + p[2] * tshift_[9];
3061 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3];
3067 ttk::ImplicitTriangulation::getVertexTriangleCG(
const SimplexId p[3],
3068 const int id)
const {
3071 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7];
3073 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7]
3076 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5];
3078 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5]
3081 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9];
3083 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9]
3086 return tsetshift_[4] + (p[1] - 1) * tshift_[10]
3087 + (p[2] - 1) * tshift_[11];
3089 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + (p[2] - 1) * tshift_[11]
3092 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
3094 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3096 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3];
3098 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3] + 1;
3100 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + p[2] * tshift_[11];
3102 return tsetshift_[0] + p[1] * tshift_[2] + p[2] * tshift_[3];
3104 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + p[2] * tshift_[5];
3110 ttk::ImplicitTriangulation::getVertexTriangleDH(
const SimplexId p[3],
3111 const int id)
const {
3114 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3115 + (p[2] - 1) * tshift_[9] + 1;
3117 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3119 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3120 + (p[2] - 1) * tshift_[5];
3122 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3123 + (p[2] - 1) * tshift_[5] + 1;
3125 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3126 + (p[2] - 1) * tshift_[3] + 1;
3128 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3129 + p[2] * tshift_[7];
3131 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3132 + p[2] * tshift_[3];
3134 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3135 + p[2] * tshift_[5];
3137 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3138 + p[2] * tshift_[3] + 1;
3144 ttk::ImplicitTriangulation::getVertexTriangleABDC(
const SimplexId p[3],
3145 const int id)
const {
3148 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
3150 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10];
3152 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6];
3154 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8] + 1;
3156 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4];
3158 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + 1;
3160 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10] + 1;
3162 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2] + 1;
3164 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6] + 1;
3166 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8];
3168 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2];
3170 return (p[0] - 1) * 2 + p[1] * tshift_[0];
3172 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
3174 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6];
3176 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4];
3178 return p[0] * 2 + (p[1] - 1) * tshift_[0];
3180 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
3182 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10];
3184 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2];
3186 return p[0] * 2 + p[1] * tshift_[0];
3188 return p[0] * 2 + tsetshift_[3] + p[1] * tshift_[8];
3194 ttk::ImplicitTriangulation::getVertexTriangleEFHG(
const SimplexId p[3],
3195 const int id)
const {
3198 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3199 + (p[2] - 1) * tshift_[7];
3201 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3202 + (p[2] - 1) * tshift_[7] + 1;
3204 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3205 + (p[2] - 1) * tshift_[5];
3207 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3208 + (p[2] - 1) * tshift_[5] + 1;
3210 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3211 + (p[2] - 1) * tshift_[9];
3213 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3214 + (p[2] - 1) * tshift_[9] + 1;
3216 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3217 + (p[2] - 1) * tshift_[11];
3219 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3220 + (p[2] - 1) * tshift_[11] + 1;
3222 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
3224 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3226 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3227 + (p[2] - 1) * tshift_[3];
3229 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3230 + (p[2] - 1) * tshift_[3] + 1;
3232 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3233 + (p[2] - 1) * tshift_[9] + 1;
3235 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3237 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3238 + (p[2] - 1) * tshift_[3] + 1;
3240 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
3242 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
3244 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3245 + (p[2] - 1) * tshift_[11] + 1;
3247 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
3248 + (p[2] - 1) * tshift_[5] + 1;
3250 return p[0] * 2 + tsetshift_[2] + p[1] * tshift_[6]
3251 + (p[2] - 1) * tshift_[7] + 1;
3253 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
3259 ttk::ImplicitTriangulation::getVertexTriangleAEGC(
const SimplexId p[3],
3260 const int id)
const {
3263 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7];
3265 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7]
3268 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5];
3270 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5]
3273 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9];
3275 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9]
3278 return tsetshift_[4] + (p[1] - 1) * tshift_[10]
3279 + (p[2] - 1) * tshift_[11];
3281 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + (p[2] - 1) * tshift_[11]
3284 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
3286 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3288 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3];
3290 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3] + 1;
3292 return tsetshift_[2] + p[1] * tshift_[6] + (p[2] - 1) * tshift_[7] + 1;
3294 return tsetshift_[1] + p[1] * tshift_[4] + (p[2] - 1) * tshift_[5] + 1;
3296 return p[1] * tshift_[0] + p[2] * tshift_[1];
3298 return tsetshift_[0] + p[1] * tshift_[2] + p[2] * tshift_[3];
3300 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5];
3302 return tsetshift_[3] + p[1] * tshift_[8] + p[2] * tshift_[9];
3304 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5] + 1;
3306 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + p[2] * tshift_[11];
3308 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + p[2] * tshift_[5];
3314 ttk::ImplicitTriangulation::getVertexTriangleBFHD(
const SimplexId p[3],
3315 const int id)
const {
3318 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
3320 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3321 + p[2] * tshift_[11];
3323 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3324 + p[2] * tshift_[7];
3326 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3327 + p[2] * tshift_[9] + 1;
3329 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
3331 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
3334 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3335 + p[2] * tshift_[11] + 1;
3337 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3338 + p[2] * tshift_[3] + 1;
3340 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3341 + p[2] * tshift_[7] + 1;
3343 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3344 + p[2] * tshift_[9];
3346 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3347 + p[2] * tshift_[3];
3349 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
3351 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3353 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3354 + p[2] * tshift_[7];
3356 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3357 + p[2] * tshift_[5];
3359 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3360 + (p[2] - 1) * tshift_[9] + 1;
3362 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3363 + (p[2] - 1) * tshift_[5];
3365 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3366 + (p[2] - 1) * tshift_[5] + 1;
3368 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3369 + (p[2] - 1) * tshift_[3] + 1;
3371 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3372 + (p[2] - 1) * tshift_[11] + 1;
3374 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
3375 + (p[2] - 1) * tshift_[5] + 1;
3381 ttk::ImplicitTriangulation::getVertexTriangleAEFB(
const SimplexId p[3],
3382 const int id)
const {
3385 return (p[0] - 1) * 2 + p[2] * tshift_[1] + 1;
3387 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11];
3389 return tsetshift_[2] + (p[0] - 1) * 2 + p[2] * tshift_[7];
3391 return tsetshift_[3] + (p[0] - 1) * 2 + p[2] * tshift_[9] + 1;
3393 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5];
3395 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5] + 1;
3397 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11] + 1;
3399 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3] + 1;
3401 return tsetshift_[2] + (p[0] - 1) * 2 + p[2] * tshift_[7] + 1;
3403 return tsetshift_[3] + (p[0] - 1) * 2 + p[2] * tshift_[9];
3405 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3];
3407 return (p[0] - 1) * 2 + p[2] * tshift_[1];
3409 return tsetshift_[0] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[3] + 1;
3411 return tsetshift_[4] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[11] + 1;
3413 return tsetshift_[1] + p[0] * 2 + (p[2] - 1) * tshift_[5] + 1;
3415 return p[0] * 2 + tsetshift_[0] + (p[2] - 1) * tshift_[3];
3417 return p[0] * 2 + tsetshift_[2] + (p[2] - 1) * tshift_[7] + 1;
3419 return p[0] * 2 + p[2] * tshift_[1];
3421 return p[0] * 2 + tsetshift_[0] + (p[2] - 1) * tshift_[3] + 1;
3423 return p[0] * 2 + tsetshift_[0] + p[2] * tshift_[3];
3425 return p[0] * 2 + tsetshift_[3] + p[2] * tshift_[9];
3431 ttk::ImplicitTriangulation::getVertexTriangleGHDC(
const SimplexId p[3],
3432 const int id)
const {
3435 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3436 + (p[2] - 1) * tshift_[7];
3438 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3439 + (p[2] - 1) * tshift_[7] + 1;
3441 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3442 + (p[2] - 1) * tshift_[5];
3444 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3445 + (p[2] - 1) * tshift_[5] + 1;
3447 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3448 + (p[2] - 1) * tshift_[9];
3450 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3451 + (p[2] - 1) * tshift_[9] + 1;
3453 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3454 + (p[2] - 1) * tshift_[11];
3456 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3457 + (p[2] - 1) * tshift_[11] + 1;
3459 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
3461 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3463 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3464 + (p[2] - 1) * tshift_[3];
3466 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3467 + (p[2] - 1) * tshift_[3] + 1;
3469 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3470 + (p[2] - 1) * tshift_[9] + 1;
3472 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3474 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3475 + (p[2] - 1) * tshift_[3] + 1;
3477 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3478 + p[2] * tshift_[7];
3480 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3481 + p[2] * tshift_[3];
3483 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3484 + p[2] * tshift_[5];
3486 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3487 + p[2] * tshift_[3] + 1;
3489 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3490 + p[2] * tshift_[11];
3492 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2] + p[2] * tshift_[3];
3498 ttk::ImplicitTriangulation::getVertexTriangleABCDEFGH(
const SimplexId p[3],
3499 const int id)
const {
3502 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
3504 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3505 + p[2] * tshift_[11];
3507 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3508 + p[2] * tshift_[7];
3510 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3511 + p[2] * tshift_[9] + 1;
3513 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
3515 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
3518 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3519 + p[2] * tshift_[11] + 1;
3521 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3522 + p[2] * tshift_[3] + 1;
3524 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3525 + p[2] * tshift_[7] + 1;
3527 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3528 + p[2] * tshift_[9];
3530 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3531 + p[2] * tshift_[3];
3533 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
3535 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3536 + (p[2] - 1) * tshift_[7];
3538 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3539 + (p[2] - 1) * tshift_[7] + 1;
3541 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3542 + (p[2] - 1) * tshift_[5];
3544 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3545 + (p[2] - 1) * tshift_[5] + 1;
3547 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3548 + (p[2] - 1) * tshift_[9];
3550 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3551 + (p[2] - 1) * tshift_[9] + 1;
3553 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3554 + (p[2] - 1) * tshift_[11];
3556 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3557 + (p[2] - 1) * tshift_[11] + 1;
3559 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
3561 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3563 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3564 + (p[2] - 1) * tshift_[3];
3566 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3567 + (p[2] - 1) * tshift_[3] + 1;
3569 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3571 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3572 + p[2] * tshift_[7];
3574 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3575 + p[2] * tshift_[5];
3577 return p[0] * 2 + tsetshift_[2] + p[1] * tshift_[6]
3578 + (p[2] - 1) * tshift_[7] + 1;
3580 return p[0] * 2 + tsetshift_[1] + p[1] * tshift_[4]
3581 + (p[2] - 1) * tshift_[5] + 1;
3583 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
3585 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3586 + (p[2] - 1) * tshift_[9] + 1;
3588 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3589 + (p[2] - 1) * tshift_[3] + 1;
3591 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
3593 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
3595 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3596 + (p[2] - 1) * tshift_[11] + 1;
3598 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3599 + p[2] * tshift_[11];
3605 ttk::ImplicitTriangulation::getVertexLinkA(
const SimplexId p[3],
3606 const int id)
const {
3609 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3610 + p[2] * tshift_[11];
3612 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
3619 ttk::ImplicitTriangulation::getVertexLinkB(
const SimplexId p[3],
3620 const int id)
const {
3623 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3624 + p[2] * tshift_[5];
3626 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3627 + p[2] * tshift_[5] + 1;
3629 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3630 + p[2] * tshift_[3];
3632 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3633 + p[2] * tshift_[3] + 1;
3635 return (p[0] - 1) * 2 + p[1] * tshift_[0]
3636 + (p[2] + 1) * tshift_[1];
3638 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
3645 ttk::ImplicitTriangulation::getVertexLinkC(
const SimplexId p[3],
3646 const int id)
const {
3649 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
3650 + p[2] * tshift_[9];
3652 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
3653 + p[2] * tshift_[7];
3659 ttk::ImplicitTriangulation::getVertexLinkD(
const SimplexId p[3],
3660 const int id)
const {
3663 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3664 + p[2] * tshift_[11];
3666 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3667 + p[2] * tshift_[9] + 1;
3673 ttk::ImplicitTriangulation::getVertexLinkE(
const SimplexId p[3],
3674 const int id)
const {
3677 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
3678 + (p[2] - 1) * tshift_[9];
3680 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3681 + (p[2] - 1) * tshift_[11] + 1;
3687 ttk::ImplicitTriangulation::getVertexLinkF(
const SimplexId p[3],
3688 const int id)
const {
3691 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3692 + (p[2] - 1) * tshift_[7] + 1;
3694 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3695 + (p[2] - 1) * tshift_[9] + 1;
3701 ttk::ImplicitTriangulation::getVertexLinkG(
const SimplexId p[3],
3702 const int id)
const {
3705 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3706 + (p[2] - 1) * tshift_[5];
3708 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3709 + (p[2] - 1) * tshift_[5] + 1;
3711 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3712 + (p[2] - 1) * tshift_[3];
3714 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3715 + (p[2] - 1) * tshift_[3] + 1;
3717 return p[0] * 2 + (p[1] - 1) * tshift_[0]
3718 + (p[2] - 1) * tshift_[1];
3720 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
3727 ttk::ImplicitTriangulation::getVertexLinkH(
const SimplexId p[3],
3728 const int id)
const {
3731 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3732 + (p[2] - 1) * tshift_[11] + 1;
3734 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3735 + (p[2] - 1) * tshift_[7];
3741 ttk::ImplicitTriangulation::getVertexLinkAB(
const SimplexId p[3],
3742 const int id)
const {
3745 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3746 + p[2] * tshift_[11];
3748 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
3751 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3752 + p[2] * tshift_[5];
3754 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3755 + p[2] * tshift_[5] + 1;
3757 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3758 + p[2] * tshift_[3];
3760 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3761 + p[2] * tshift_[3] + 1;
3763 return (p[0] - 1) * 2 + p[1] * tshift_[0]
3764 + (p[2] + 1) * tshift_[1];
3766 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
3773 ttk::ImplicitTriangulation::getVertexLinkCD(
const SimplexId p[3],
3774 const int id)
const {
3777 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
3778 + p[2] * tshift_[9];
3780 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
3781 + p[2] * tshift_[7];
3783 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3784 + p[2] * tshift_[11];
3786 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3787 + p[2] * tshift_[9] + 1;
3793 ttk::ImplicitTriangulation::getVertexLinkEF(
const SimplexId p[3],
3794 const int id)
const {
3797 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
3798 + (p[2] - 1) * tshift_[9];
3800 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3801 + (p[2] - 1) * tshift_[11] + 1;
3803 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3804 + (p[2] - 1) * tshift_[7] + 1;
3806 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3807 + (p[2] - 1) * tshift_[9] + 1;
3813 ttk::ImplicitTriangulation::getVertexLinkGH(
const SimplexId p[3],
3814 const int id)
const {
3817 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3818 + (p[2] - 1) * tshift_[5];
3820 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3821 + (p[2] - 1) * tshift_[5] + 1;
3823 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3824 + (p[2] - 1) * tshift_[3];
3826 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3827 + (p[2] - 1) * tshift_[3] + 1;
3829 return p[0] * 2 + (p[1] - 1) * tshift_[0]
3830 + (p[2] - 1) * tshift_[1];
3832 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
3835 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3836 + (p[2] - 1) * tshift_[11] + 1;
3838 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3839 + (p[2] - 1) * tshift_[7];
3845 ttk::ImplicitTriangulation::getVertexLinkAC(
const SimplexId p[3],
3846 const int id)
const {
3849 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3850 + p[2] * tshift_[11];
3852 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
3855 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
3856 + p[2] * tshift_[9];
3858 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
3859 + p[2] * tshift_[7];
3865 ttk::ImplicitTriangulation::getVertexLinkBD(
const SimplexId p[3],
3866 const int id)
const {
3869 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3870 + p[2] * tshift_[5];
3872 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3873 + p[2] * tshift_[5] + 1;
3875 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3876 + p[2] * tshift_[3];
3878 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3879 + p[2] * tshift_[3] + 1;
3881 return (p[0] - 1) * 2 + p[1] * tshift_[0]
3882 + (p[2] + 1) * tshift_[1];
3884 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
3887 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3888 + p[2] * tshift_[11];
3890 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3891 + p[2] * tshift_[9] + 1;
3897 ttk::ImplicitTriangulation::getVertexLinkEG(
const SimplexId p[3],
3898 const int id)
const {
3901 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
3902 + (p[2] - 1) * tshift_[9];
3904 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3905 + (p[2] - 1) * tshift_[11] + 1;
3907 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3908 + (p[2] - 1) * tshift_[5];
3910 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3911 + (p[2] - 1) * tshift_[5] + 1;
3913 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3914 + (p[2] - 1) * tshift_[3];
3916 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3917 + (p[2] - 1) * tshift_[3] + 1;
3919 return p[0] * 2 + (p[1] - 1) * tshift_[0]
3920 + (p[2] - 1) * tshift_[1];
3922 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
3929 ttk::ImplicitTriangulation::getVertexLinkFH(
const SimplexId p[3],
3930 const int id)
const {
3933 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3934 + (p[2] - 1) * tshift_[7] + 1;
3936 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3937 + (p[2] - 1) * tshift_[9] + 1;
3939 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3940 + (p[2] - 1) * tshift_[11] + 1;
3942 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3943 + (p[2] - 1) * tshift_[7];
3949 ttk::ImplicitTriangulation::getVertexLinkAE(
const SimplexId p[3],
3950 const int id)
const {
3953 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3954 + p[2] * tshift_[11];
3956 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
3959 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
3960 + (p[2] - 1) * tshift_[9];
3962 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3963 + (p[2] - 1) * tshift_[11] + 1;
3969 ttk::ImplicitTriangulation::getVertexLinkBF(
const SimplexId p[3],
3970 const int id)
const {
3973 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3974 + p[2] * tshift_[5];
3976 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3977 + p[2] * tshift_[5] + 1;
3979 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3980 + p[2] * tshift_[3];
3982 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3983 + p[2] * tshift_[3] + 1;
3985 return (p[0] - 1) * 2 + p[1] * tshift_[0]
3986 + (p[2] + 1) * tshift_[1];
3988 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
3991 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3992 + (p[2] - 1) * tshift_[7] + 1;
3994 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3995 + (p[2] - 1) * tshift_[9] + 1;
4001 ttk::ImplicitTriangulation::getVertexLinkCG(
const SimplexId p[3],
4002 const int id)
const {
4005 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
4006 + p[2] * tshift_[9];
4008 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
4009 + p[2] * tshift_[7];
4011 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4012 + (p[2] - 1) * tshift_[5];
4014 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4015 + (p[2] - 1) * tshift_[5] + 1;
4017 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4018 + (p[2] - 1) * tshift_[3];
4020 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4021 + (p[2] - 1) * tshift_[3] + 1;
4023 return p[0] * 2 + (p[1] - 1) * tshift_[0]
4024 + (p[2] - 1) * tshift_[1];
4026 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
4033 ttk::ImplicitTriangulation::getVertexLinkDH(
const SimplexId p[3],
4034 const int id)
const {
4037 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4038 + p[2] * tshift_[11];
4040 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
4041 + p[2] * tshift_[9] + 1;
4043 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4044 + (p[2] - 1) * tshift_[11] + 1;
4046 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
4047 + (p[2] - 1) * tshift_[7];
4053 ttk::ImplicitTriangulation::getVertexLinkABDC(
const SimplexId p[3],
4054 const int id)
const {
4057 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4058 + p[2] * tshift_[11];
4060 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
4063 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4064 + p[2] * tshift_[5];
4066 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4067 + p[2] * tshift_[5] + 1;
4069 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4070 + p[2] * tshift_[3];
4072 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4073 + p[2] * tshift_[3] + 1;
4075 return (p[0] - 1) * 2 + p[1] * tshift_[0]
4076 + (p[2] + 1) * tshift_[1];
4078 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
4081 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4082 + p[2] * tshift_[11];
4084 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
4085 + p[2] * tshift_[9] + 1;
4087 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
4088 + p[2] * tshift_[9];
4090 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
4091 + p[2] * tshift_[7];
4097 ttk::ImplicitTriangulation::getVertexLinkEFHG(
const SimplexId p[3],
4098 const int id)
const {
4101 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
4102 + (p[2] - 1) * tshift_[9];
4104 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4105 + (p[2] - 1) * tshift_[11] + 1;
4107 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
4108 + (p[2] - 1) * tshift_[7] + 1;
4110 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
4111 + (p[2] - 1) * tshift_[9] + 1;
4113 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4114 + (p[2] - 1) * tshift_[11] + 1;
4116 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
4117 + (p[2] - 1) * tshift_[7];
4119 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4120 + (p[2] - 1) * tshift_[5];
4122 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4123 + (p[2] - 1) * tshift_[5] + 1;
4125 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4126 + (p[2] - 1) * tshift_[3];
4128 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4129 + (p[2] - 1) * tshift_[3] + 1;
4131 return p[0] * 2 + (p[1] - 1) * tshift_[0]
4132 + (p[2] - 1) * tshift_[1];
4134 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
4141 ttk::ImplicitTriangulation::getVertexLinkAEGC(
const SimplexId p[3],
4142 const int id)
const {
4145 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4146 + p[2] * tshift_[11];
4148 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
4151 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
4152 + (p[2] - 1) * tshift_[9];
4154 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4155 + (p[2] - 1) * tshift_[11] + 1;
4157 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4158 + (p[2] - 1) * tshift_[5];
4160 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4161 + (p[2] - 1) * tshift_[5] + 1;
4163 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4164 + (p[2] - 1) * tshift_[3];
4166 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4167 + (p[2] - 1) * tshift_[3] + 1;
4169 return p[0] * 2 + (p[1] - 1) * tshift_[0]
4170 + (p[2] - 1) * tshift_[1];
4172 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
4175 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
4176 + p[2] * tshift_[9];
4178 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
4179 + p[2] * tshift_[7];
4185 ttk::ImplicitTriangulation::getVertexLinkBFHD(
const SimplexId p[3],
4186 const int id)
const {
4189 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4190 + p[2] * tshift_[5];
4192 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4193 + p[2] * tshift_[5] + 1;
4195 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4196 + p[2] * tshift_[3];
4198 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4199 + p[2] * tshift_[3] + 1;
4201 return (p[0] - 1) * 2 + p[1] * tshift_[0]
4202 + (p[2] + 1) * tshift_[1];
4204 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
4207 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
4208 + (p[2] - 1) * tshift_[7] + 1;
4210 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
4211 + (p[2] - 1) * tshift_[9] + 1;
4213 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4214 + (p[2] - 1) * tshift_[11] + 1;
4216 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
4217 + (p[2] - 1) * tshift_[7];
4219 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4220 + p[2] * tshift_[11];
4222 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
4223 + p[2] * tshift_[9] + 1;
4229 ttk::ImplicitTriangulation::getVertexLinkAEFB(
const SimplexId p[3],
4230 const int id)
const {
4233 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4234 + p[2] * tshift_[11];
4236 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
4239 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
4240 + (p[2] - 1) * tshift_[9];
4242 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4243 + (p[2] - 1) * tshift_[11] + 1;
4245 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
4246 + (p[2] - 1) * tshift_[7] + 1;
4248 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
4249 + (p[2] - 1) * tshift_[9] + 1;
4251 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4252 + p[2] * tshift_[5];
4254 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4255 + p[2] * tshift_[5] + 1;
4257 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4258 + p[2] * tshift_[3];
4260 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4261 + p[2] * tshift_[3] + 1;
4263 return (p[0] - 1) * 2 + p[1] * tshift_[0]
4264 + (p[2] + 1) * tshift_[1];
4266 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
4273 ttk::ImplicitTriangulation::getVertexLinkGHDC(
const SimplexId p[3],
4274 const int id)
const {
4277 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4278 + (p[2] - 1) * tshift_[5];
4280 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4281 + (p[2] - 1) * tshift_[5] + 1;
4283 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4284 + (p[2] - 1) * tshift_[3];
4286 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4287 + (p[2] - 1) * tshift_[3] + 1;
4289 return p[0] * 2 + (p[1] - 1) * tshift_[0]
4290 + (p[2] - 1) * tshift_[1];
4292 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
4295 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4296 + (p[2] - 1) * tshift_[11] + 1;
4298 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
4299 + (p[2] - 1) * tshift_[7];
4301 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4302 + p[2] * tshift_[11];
4304 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
4305 + p[2] * tshift_[9] + 1;
4307 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
4308 + p[2] * tshift_[9];
4310 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
4311 + p[2] * tshift_[7];
4317 ttk::ImplicitTriangulation::getVertexLinkABCDEFGH(
const SimplexId p[3],
4318 const int id)
const {
4321 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4322 + p[2] * tshift_[11];
4324 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
4327 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4328 + p[2] * tshift_[5];
4330 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4331 + p[2] * tshift_[5] + 1;
4333 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4334 + p[2] * tshift_[3];
4336 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4337 + p[2] * tshift_[3] + 1;
4339 return (p[0] - 1) * 2 + p[1] * tshift_[0]
4340 + (p[2] + 1) * tshift_[1];
4342 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
4345 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
4346 + p[2] * tshift_[9];
4348 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
4349 + p[2] * tshift_[7];
4351 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4352 + p[2] * tshift_[11];
4354 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
4355 + p[2] * tshift_[9] + 1;
4357 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
4358 + (p[2] - 1) * tshift_[9];
4360 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4361 + (p[2] - 1) * tshift_[11] + 1;
4363 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
4364 + (p[2] - 1) * tshift_[7] + 1;
4366 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
4367 + (p[2] - 1) * tshift_[9] + 1;
4369 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4370 + (p[2] - 1) * tshift_[5];
4372 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4373 + (p[2] - 1) * tshift_[5] + 1;
4375 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4376 + (p[2] - 1) * tshift_[3];
4378 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4379 + (p[2] - 1) * tshift_[3] + 1;
4381 return p[0] * 2 + (p[1] - 1) * tshift_[0]
4382 + (p[2] - 1) * tshift_[1];
4384 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
4387 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4388 + (p[2] - 1) * tshift_[11] + 1;
4390 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
4391 + (p[2] - 1) * tshift_[7];
4397 ttk::ImplicitTriangulation::getVertexStarA(
const SimplexId p[3],
4398 const int id)
const {
4401 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
4403 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 2;
4409 ttk::ImplicitTriangulation::getVertexStarB(
const SimplexId p[3],
4410 const int id)
const {
4411 if(
id >= 0 &&
id <= 5)
4412 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + id;
4417 ttk::ImplicitTriangulation::getVertexStarC(
const SimplexId p[3],
4418 const int id)
const {
4421 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1];
4423 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4430 ttk::ImplicitTriangulation::getVertexStarD(
const SimplexId p[3],
4431 const int id)
const {
4434 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4437 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4444 ttk::ImplicitTriangulation::getVertexStarE(
const SimplexId p[3],
4445 const int id)
const {
4448 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4451 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4458 ttk::ImplicitTriangulation::getVertexStarF(
const SimplexId p[3],
4459 const int id)
const {
4462 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4465 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4472 ttk::ImplicitTriangulation::getVertexStarG(
const SimplexId p[3],
4473 const int id)
const {
4474 if(
id >= 0 &&
id <= 5)
4475 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4481 ttk::ImplicitTriangulation::getVertexStarH(
const SimplexId p[3],
4482 const int id)
const {
4485 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4486 + (p[2] - 1) * tetshift_[1] + 4;
4488 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4489 + (p[2] - 1) * tetshift_[1] + 5;
4495 ttk::ImplicitTriangulation::getVertexStarAB(
const SimplexId p[3],
4496 const int id)
const {
4497 if(
id >= 0 &&
id <= 5)
4498 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4502 return p[0] * 6 + p[1] * tetshift_[0]
4503 + p[2] * tetshift_[1];
4505 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4512 ttk::ImplicitTriangulation::getVertexStarCD(
const SimplexId p[3],
4513 const int id)
const {
4516 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4519 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4522 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4523 + p[2] * tetshift_[1];
4525 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4532 ttk::ImplicitTriangulation::getVertexStarEF(
const SimplexId p[3],
4533 const int id)
const {
4536 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4539 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4542 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4545 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4552 ttk::ImplicitTriangulation::getVertexStarGH(
const SimplexId p[3],
4553 const int id)
const {
4554 if(
id >= 0 &&
id <= 5)
4555 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4559 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4560 + (p[2] - 1) * tetshift_[1] + 4;
4562 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4563 + (p[2] - 1) * tetshift_[1] + 5;
4569 ttk::ImplicitTriangulation::getVertexStarAC(
const SimplexId p[3],
4570 const int id)
const {
4573 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4574 + p[2] * tetshift_[1];
4576 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4579 return p[0] * 6 + p[1] * tetshift_[0]
4580 + p[2] * tetshift_[1];
4582 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4589 ttk::ImplicitTriangulation::getVertexStarBD(
const SimplexId p[3],
4590 const int id)
const {
4591 if(
id >= 0 &&
id <= 5)
4592 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4596 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4599 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4606 ttk::ImplicitTriangulation::getVertexStarEG(
const SimplexId p[3],
4607 const int id)
const {
4608 if(
id >= 0 &&
id <= 5)
4609 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4613 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4616 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4623 ttk::ImplicitTriangulation::getVertexStarFH(
const SimplexId p[3],
4624 const int id)
const {
4627 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4628 + (p[2] - 1) * tetshift_[1] + 4;
4630 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4631 + (p[2] - 1) * tetshift_[1] + 5;
4633 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4636 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4643 ttk::ImplicitTriangulation::getVertexStarAE(
const SimplexId p[3],
4644 const int id)
const {
4647 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4650 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4653 return p[0] * 6 + p[1] * tetshift_[0]
4654 + p[2] * tetshift_[1];
4656 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4663 ttk::ImplicitTriangulation::getVertexStarBF(
const SimplexId p[3],
4664 const int id)
const {
4665 if(
id >= 0 &&
id <= 5)
4666 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4670 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4673 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4680 ttk::ImplicitTriangulation::getVertexStarCG(
const SimplexId p[3],
4681 const int id)
const {
4682 if(
id >= 0 &&
id <= 5)
4683 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4687 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4688 + p[2] * tetshift_[1];
4690 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4697 ttk::ImplicitTriangulation::getVertexStarDH(
const SimplexId p[3],
4698 const int id)
const {
4701 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4702 + (p[2] - 1) * tetshift_[1] + 4;
4704 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4705 + (p[2] - 1) * tetshift_[1] + 5;
4707 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4710 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4717 ttk::ImplicitTriangulation::getVertexStarABDC(
const SimplexId p[3],
4718 const int id)
const {
4719 if(
id >= 0 &&
id <= 5)
4720 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4724 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4727 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4730 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4731 + p[2] * tetshift_[1];
4733 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4736 return p[0] * 6 + p[1] * tetshift_[0]
4737 + p[2] * tetshift_[1];
4739 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4746 ttk::ImplicitTriangulation::getVertexStarEFHG(
const SimplexId p[3],
4747 const int id)
const {
4748 if(
id >= 0 &&
id <= 5)
4749 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4753 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4754 + (p[2] - 1) * tetshift_[1] + 4;
4756 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4757 + (p[2] - 1) * tetshift_[1] + 5;
4759 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4762 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4765 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4768 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4775 ttk::ImplicitTriangulation::getVertexStarAEGC(
const SimplexId p[3],
4776 const int id)
const {
4777 if(
id >= 0 &&
id <= 5)
4778 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4782 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4783 + p[2] * tetshift_[1];
4785 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4788 return p[0] * 6 + p[1] * tetshift_[0]
4789 + p[2] * tetshift_[1];
4791 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4794 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4797 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4804 ttk::ImplicitTriangulation::getVertexStarBFHD(
const SimplexId p[3],
4805 const int id)
const {
4806 if(
id >= 0 &&
id <= 5)
4807 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4811 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4814 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4817 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4818 + (p[2] - 1) * tetshift_[1] + 4;
4820 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4821 + (p[2] - 1) * tetshift_[1] + 5;
4823 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4826 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4833 ttk::ImplicitTriangulation::getVertexStarAEFB(
const SimplexId p[3],
4834 const int id)
const {
4835 if(
id >= 0 &&
id <= 5)
4836 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4840 return p[0] * 6 + p[1] * tetshift_[0]
4841 + p[2] * tetshift_[1];
4843 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4846 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4849 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4852 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4855 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4862 ttk::ImplicitTriangulation::getVertexStarGHDC(
const SimplexId p[3],
4863 const int id)
const {
4864 if(
id >= 0 &&
id <= 5)
4865 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4869 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4870 + (p[2] - 1) * tetshift_[1] + 4;
4872 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4873 + (p[2] - 1) * tetshift_[1] + 5;
4875 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4876 + p[2] * tetshift_[1];
4878 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4881 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4884 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4891 ttk::ImplicitTriangulation::getVertexStarABCDEFGH(
const SimplexId p[3],
4892 const int id)
const {
4893 if(
id >= 0 &&
id <= 5)
4894 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4896 if(
id >= 6 &&
id <= 11)
4897 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1] +
id
4901 return p[0] * 6 + p[1] * tetshift_[0]
4902 + p[2] * tetshift_[1];
4904 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4907 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4908 + p[2] * tetshift_[1];
4910 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4913 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4916 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4919 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4922 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4925 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4928 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4931 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4932 + (p[2] - 1) * tetshift_[1] + 4;
4934 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4935 + (p[2] - 1) * tetshift_[1] + 5;
4941 ttk::ImplicitTriangulation::getEdgeTriangleL_x00(
const SimplexId p[3],
4942 const int id)
const {
4947 return tsetshift_[0] + p[0] * 2;
4949 return tsetshift_[3] + p[0] * 2;
4955 ttk::ImplicitTriangulation::getEdgeTriangleL_x0n(
const SimplexId p[3],
4956 const int id)
const {
4959 return p[0] * 2 + p[2] * tshift_[1];
4961 return tsetshift_[0] + p[0] * 2 + p[2] * tshift_[3];
4963 return tsetshift_[3] + p[0] * 2 + p[2] * tshift_[9];
4965 return tsetshift_[0] + p[0] * 2 + (p[2] - 1) * tshift_[3] + 1;
4971 ttk::ImplicitTriangulation::getEdgeTriangleL_x0N(
const SimplexId p[3],
4972 const int id)
const {
4975 return p[0] * 2 + p[2] * tshift_[1];
4977 return tsetshift_[0] + p[0] * 2 + (p[2] - 1) * tshift_[3] + 1;
4983 ttk::ImplicitTriangulation::getEdgeTriangleL_xn0(
const SimplexId p[3],
4984 const int id)
const {
4987 return p[0] * 2 + p[1] * tshift_[0];
4989 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2];
4991 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8];
4993 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
4999 ttk::ImplicitTriangulation::getEdgeTriangleL_xnn(
const SimplexId p[3],
5000 const int id)
const {
5003 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
5005 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
5007 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2]
5008 + (p[2] - 1) * tshift_[3] + 1;
5010 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
5011 + (p[2] - 1) * tshift_[9] + 1;
5013 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
5015 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
5021 ttk::ImplicitTriangulation::getEdgeTriangleL_xnN(
const SimplexId p[3],
5022 const int id)
const {
5025 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
5027 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2]
5028 + (p[2] - 1) * tshift_[3] + 1;
5030 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
5031 + (p[2] - 1) * tshift_[9] + 1;
5033 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
5039 ttk::ImplicitTriangulation::getEdgeTriangleL_xN0(
const SimplexId p[3],
5040 const int id)
const {
5043 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
5045 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2];
5051 ttk::ImplicitTriangulation::getEdgeTriangleL_xNn(
const SimplexId p[3],
5052 const int id)
const {
5055 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
5057 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2]
5058 + (p[2] - 1) * tshift_[3] + 1;
5060 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
5061 + (p[2] - 1) * tshift_[9] + 1;
5063 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
5069 ttk::ImplicitTriangulation::getEdgeTriangleL_xNN(
const SimplexId p[3],
5070 const int id)
const {
5073 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
5075 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2]
5076 + (p[2] - 1) * tshift_[3] + 1;
5078 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
5079 + (p[2] - 1) * tshift_[9] + 1;
5085 ttk::ImplicitTriangulation::getEdgeTriangleH_0y0(
const SimplexId p[3],
5086 const int id)
const {
5089 return p[1] * tshift_[0];
5091 return tsetshift_[1] + p[1] * tshift_[4];
5097 ttk::ImplicitTriangulation::getEdgeTriangleH_0yn(
const SimplexId p[3],
5098 const int id)
const {
5101 return tsetshift_[1] + p[1] * tshift_[4] + (p[2] - 1) * tshift_[5] + 1;
5103 return tsetshift_[2] + p[1] * tshift_[6] + (p[2] - 1) * tshift_[7] + 1;
5105 return p[1] * tshift_[0] + p[2] * tshift_[1];
5107 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5];
5113 ttk::ImplicitTriangulation::getEdgeTriangleH_0yN(
const SimplexId p[3],
5114 const int id)
const {
5117 return tsetshift_[1] + p[1] * tshift_[4] + (p[2] - 1) * tshift_[5] + 1;
5119 return tsetshift_[2] + p[1] * tshift_[6] + (p[2] - 1) * tshift_[7] + 1;
5121 return p[1] * tshift_[0] + p[2] * tshift_[1];
5127 ttk::ImplicitTriangulation::getEdgeTriangleH_ny0(
const SimplexId p[3],
5128 const int id)
const {
5131 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
5133 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6];
5135 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4];
5137 return p[0] * 2 + p[1] * tshift_[0];
5143 ttk::ImplicitTriangulation::getEdgeTriangleH_nyn(
const SimplexId p[3],
5144 const int id)
const {
5147 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5149 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
5150 + p[2] * tshift_[7];
5152 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
5154 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
5155 + (p[2] - 1) * tshift_[5] + 1;
5157 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6]
5158 + (p[2] - 1) * tshift_[7] + 1;
5160 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
5166 ttk::ImplicitTriangulation::getEdgeTriangleH_nyN(
const SimplexId p[3],
5167 const int id)
const {
5170 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
5171 + (p[2] - 1) * tshift_[5] + 1;
5173 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6]
5174 + (p[2] - 1) * tshift_[7] + 1;
5176 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
5178 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5184 ttk::ImplicitTriangulation::getEdgeTriangleH_Ny0(
const SimplexId p[3],
5185 const int id)
const {
5188 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
5190 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6];
5192 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4];
5198 ttk::ImplicitTriangulation::getEdgeTriangleH_Nyn(
const SimplexId p[3],
5199 const int id)
const {
5202 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5204 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
5205 + p[2] * tshift_[7];
5207 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
5209 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
5210 + (p[2] - 1) * tshift_[5] + 1;
5216 ttk::ImplicitTriangulation::getEdgeTriangleH_NyN(
const SimplexId p[3],
5217 const int id)
const {
5220 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
5221 + (p[2] - 1) * tshift_[5] + 1;
5223 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5229 ttk::ImplicitTriangulation::getEdgeTriangleP_00z(
const SimplexId p[3],
5230 const int id)
const {
5233 return tsetshift_[0] + p[2] * tshift_[3];
5235 return tsetshift_[1] + p[2] * tshift_[5] + 1;
5241 ttk::ImplicitTriangulation::getEdgeTriangleP_0nz(
const SimplexId p[3],
5242 const int id)
const {
5245 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + p[2] * tshift_[5];
5247 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + p[2] * tshift_[11];
5249 return tsetshift_[0] + p[1] * tshift_[2] + p[2] * tshift_[3];
5251 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5] + 1;
5257 ttk::ImplicitTriangulation::getEdgeTriangleP_0Nz(
const SimplexId p[3],
5258 const int id)
const {
5261 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + p[2] * tshift_[5];
5263 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + p[2] * tshift_[11];
5265 return tsetshift_[0] + p[1] * tshift_[2] + p[2] * tshift_[3];
5271 ttk::ImplicitTriangulation::getEdgeTriangleP_n0z(
const SimplexId p[3],
5272 const int id)
const {
5275 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3] + 1;
5277 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11] + 1;
5279 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5] + 1;
5281 return tsetshift_[0] + p[0] * 2 + p[2] * tshift_[3];
5287 ttk::ImplicitTriangulation::getEdgeTriangleP_nnz(
const SimplexId p[3],
5288 const int id)
const {
5291 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
5292 + p[2] * tshift_[3] + 1;
5294 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
5295 + p[2] * tshift_[11] + 1;
5297 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
5300 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
5302 return tsetshift_[4] + p[0] * 2 + (p[1] - 1) * tshift_[10]
5303 + p[2] * tshift_[11];
5305 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
5306 + p[2] * tshift_[5];
5312 ttk::ImplicitTriangulation::getEdgeTriangleP_nNz(
const SimplexId p[3],
5313 const int id)
const {
5316 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
5317 + p[2] * tshift_[3] + 1;
5319 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
5320 + p[2] * tshift_[5];
5322 return tsetshift_[4] + p[0] * 2 + (p[1] - 1) * tshift_[10]
5323 + p[2] * tshift_[11];
5325 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
5331 ttk::ImplicitTriangulation::getEdgeTriangleP_N0z(
const SimplexId p[3],
5332 const int id)
const {
5335 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3] + 1;
5337 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11] + 1;
5339 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5] + 1;
5345 ttk::ImplicitTriangulation::getEdgeTriangleP_Nnz(
const SimplexId p[3],
5346 const int id)
const {
5349 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
5350 + p[2] * tshift_[3] + 1;
5352 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
5353 + p[2] * tshift_[11] + 1;
5355 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
5358 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
5359 + p[2] * tshift_[5];
5365 ttk::ImplicitTriangulation::getEdgeTriangleP_NNz(
const SimplexId p[3],
5366 const int id)
const {
5369 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
5370 + p[2] * tshift_[3] + 1;
5372 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
5373 + p[2] * tshift_[5];
5379 ttk::ImplicitTriangulation::getEdgeTriangleD1_xy0(
const SimplexId p[3],
5380 const int id)
const {
5383 return p[0] * 2 + p[1] * tshift_[0];
5385 return p[0] * 2 + p[1] * tshift_[0] + 1;
5387 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10];
5393 ttk::ImplicitTriangulation::getEdgeTriangleD1_xyn(
const SimplexId p[3],
5394 const int id)
const {
5397 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
5399 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5401 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11];
5403 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
5404 + (p[2] - 1) * tshift_[11] + 1;
5410 ttk::ImplicitTriangulation::getEdgeTriangleD1_xyN(
const SimplexId p[3],
5411 const int id)
const {
5414 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
5416 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5418 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
5419 + (p[2] - 1) * tshift_[11] + 1;
5425 ttk::ImplicitTriangulation::getEdgeTriangleD2_0yz(
const SimplexId p[3],
5426 const int id)
const {
5429 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5];
5431 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5] + 1;
5433 return tsetshift_[3] + p[1] * tshift_[8] + p[2] * tshift_[9];
5439 ttk::ImplicitTriangulation::getEdgeTriangleD2_nyz(
const SimplexId p[3],
5440 const int id)
const {
5443 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
5445 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
5448 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
5450 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
5451 + p[2] * tshift_[9] + 1;
5457 ttk::ImplicitTriangulation::getEdgeTriangleD2_Nyz(
const SimplexId p[3],
5458 const int id)
const {
5461 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
5463 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
5466 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
5467 + p[2] * tshift_[9] + 1;
5473 ttk::ImplicitTriangulation::getEdgeTriangleD3_x0z(
const SimplexId p[3],
5474 const int id)
const {
5477 return tsetshift_[0] + p[0] * 2 + p[2] * tshift_[3];
5479 return tsetshift_[0] + p[0] * 2 + p[2] * tshift_[3] + 1;
5481 return tsetshift_[2] + p[0] * 2 + p[2] * tshift_[7] + 1;
5487 ttk::ImplicitTriangulation::getEdgeTriangleD3_xnz(
const SimplexId p[3],
5488 const int id)
const {
5491 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
5493 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3]
5496 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
5499 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
5500 + p[2] * tshift_[7];
5506 ttk::ImplicitTriangulation::getEdgeTriangleD3_xNz(
const SimplexId p[3],
5507 const int id)
const {
5510 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
5512 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3]
5515 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
5516 + p[2] * tshift_[7];
5522 ttk::ImplicitTriangulation::getEdgeTriangleD4_xyz(
const SimplexId p[3],
5523 const int id)
const {
5526 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7];
5528 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
5531 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
5533 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9]
5536 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11];
5538 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11]
5545 ttk::ImplicitTriangulation::getEdgeLinkL(
const SimplexId p[3],
5546 const int id)
const {
5547 if(p[2] == 0 and p[1] == 0) {
5550 return esetshift_[1] + p[0] + eshift_[4];
5552 return esetshift_[0] + p[0] + eshift_[3];
5554 }
else if(p[2] == 0 and p[1] == nbvoxels_[1])
5555 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12];
5556 else if(p[2] == nbvoxels_[2] and p[1] == 0)
5557 return esetshift_[5] + p[0] + (p[2] - 1) * eshift_[13];
5558 else if(p[2] == nbvoxels_[2] and p[1] == nbvoxels_[1]) {
5561 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4]
5562 + (p[2] - 1) * eshift_[5] + 1;
5564 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5565 + (p[2] - 1) * eshift_[3] + 1;
5567 }
else if(p[2] == 0 and p[1] > 0 and p[1] < nbvoxels_[1]) {
5570 return esetshift_[1] + p[0] + (p[1] + 1) * eshift_[4];
5572 return esetshift_[0] + p[0] + p[1] * eshift_[2] + eshift_[3];
5574 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12];
5576 }
else if(p[2] == nbvoxels_[2] and p[1] > 0 and p[1] < nbvoxels_[1]) {
5579 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4]
5580 + (p[2] - 1) * eshift_[5] + 1;
5582 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5583 + (p[2] - 1) * eshift_[3] + 1;
5585 return esetshift_[5] + p[0] + p[1] * eshift_[12]
5586 + (p[2] - 1) * eshift_[13];
5589 }
else if(p[2] > 0 and p[2] < nbvoxels_[2] and p[1] == 0) {
5592 return esetshift_[1] + p[0] + p[2] * eshift_[5] + eshift_[4];
5594 return esetshift_[0] + p[0] + (p[2] + 1) * eshift_[3];
5596 return esetshift_[5] + p[0] + (p[2] - 1) * eshift_[13];
5598 }
else if(p[2] > 0 and p[2] < nbvoxels_[2] and p[1] == nbvoxels_[1]) {
5601 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4]
5602 + (p[2] - 1) * eshift_[5] + 1;
5604 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5605 + (p[2] - 1) * eshift_[3] + 1;
5607 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
5608 + p[2] * eshift_[13];
5614 return esetshift_[1] + p[0] + (p[1] + 1) * eshift_[4]
5615 + p[2] * eshift_[5];
5618 return esetshift_[0] + p[0] + p[1] * eshift_[2]
5619 + (p[2] + 1) * eshift_[3];
5622 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
5623 + p[2] * eshift_[13];
5625 return esetshift_[1] + p[0] + 1 + (p[1] - 1) * eshift_[4]
5626 + (p[2] - 1) * eshift_[5];
5628 return esetshift_[0] + p[0] + 1 + (p[1] - 1) * eshift_[2]
5629 + (p[2] - 1) * eshift_[3];
5631 return esetshift_[5] + p[0] + p[1] * eshift_[12]
5632 + (p[2] - 1) * eshift_[13];
5639 ttk::ImplicitTriangulation::getEdgeLinkH(
const SimplexId p[3],
5640 const int id)
const {
5641 if(p[0] == 0 and p[2] == 0)
5642 return esetshift_[5] + p[1] * eshift_[12];
5643 else if(p[0] == nbvoxels_[0] and p[2] == 0) {
5646 return esetshift_[1] + p[0] + (p[1] + 1) * eshift_[4] - 1;
5648 return p[0] + (p[1] + 1) * eshift_[0] + eshift_[1] - 1;
5650 }
else if(p[0] == 0 and p[2] == nbvoxels_[2]) {
5653 return p[1] * eshift_[0] + (p[2] - 1) * eshift_[1];
5655 return esetshift_[1] + p[1] * eshift_[4] + (p[2] - 1) * eshift_[5] + 1;
5657 }
else if(p[0] == nbvoxels_[0] and p[2] == nbvoxels_[2])
5658 return esetshift_[5] + p[0] - 1 + p[1] * eshift_[12]
5659 + (p[2] - 1) * eshift_[13];
5660 else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[2] == 0) {
5663 return p[0] - 1 + (p[1] + 1) * eshift_[0] + eshift_[1];
5665 return esetshift_[1] + p[0] - 1 + (p[1] + 1) * eshift_[4];
5667 return esetshift_[5] + p[0] + p[1] * eshift_[12];
5669 }
else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[2] == nbvoxels_[2]) {
5672 return esetshift_[5] + p[0] - 1 + p[1] * eshift_[12]
5673 + (p[2] - 1) * eshift_[13];
5675 return p[0] + p[1] * eshift_[0] + (p[2] - 1) * eshift_[1];
5677 return esetshift_[1] + p[0] + 1 + p[1] * eshift_[4]
5678 + (p[2] - 1) * eshift_[5];
5680 }
else if(p[0] == 0 and p[2] > 0 and p[2] < nbvoxels_[2]) {
5683 return esetshift_[1] + p[1] * eshift_[4] + (p[2] - 1) * eshift_[5] + 1;
5685 return esetshift_[5] + p[1] * eshift_[12] + p[2] * eshift_[13];
5687 return p[1] * eshift_[0] + (p[2] - 1) * eshift_[1];
5689 }
else if(p[0] == nbvoxels_[0] and p[2] > 0 and p[2] < nbvoxels_[2]) {
5692 return esetshift_[5] + p[0] - 1 + p[1] * eshift_[12]
5693 + (p[2] - 1) * eshift_[13];
5695 return esetshift_[1] + p[0] - 1 + (p[1] + 1) * eshift_[4]
5696 + p[2] * eshift_[5];
5698 return p[0] - 1 + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1];
5703 return p[0] + p[1] * eshift_[0] + (p[2] - 1) * eshift_[1];
5705 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1] - 1;
5707 return esetshift_[1] + p[0] - 1 + (p[1] + 1) * eshift_[4]
5708 + p[2] * eshift_[5];
5710 return esetshift_[1] + p[0] + 1 + p[1] * eshift_[4]
5711 + (p[2] - 1) * eshift_[5];
5713 return esetshift_[5] + (p[0] - 1) + p[1] * eshift_[12]
5714 + (p[2] - 1) * eshift_[13];
5716 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13];
5723 ttk::ImplicitTriangulation::getEdgeLinkP(
const SimplexId p[3],
5724 const int id)
const {
5725 if(p[0] == 0 and p[1] == 0)
5726 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13];
5727 else if(p[0] == 0 and p[1] == nbvoxels_[1]) {
5730 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5731 + p[2] * eshift_[3] + 1;
5733 return p[0] + (p[1] - 1) * eshift_[0] + p[2] * eshift_[1];
5735 }
else if(p[0] == nbvoxels_[0] and p[1] == 0) {
5738 return esetshift_[0] + p[0] + p[1] * eshift_[2]
5739 + (p[2] + 1) * eshift_[3] - 1;
5741 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1] - 1;
5743 }
else if(p[0] == nbvoxels_[0] and p[1] == nbvoxels_[1])
5744 return esetshift_[5] + p[0] - 1 + (p[1] - 1) * eshift_[12]
5745 + p[2] * eshift_[13];
5746 else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[1] == 0) {
5749 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1] - 1;
5751 return esetshift_[0] + p[0] + p[1] * eshift_[2]
5752 + (p[2] + 1) * eshift_[3] - 1;
5754 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13];
5756 }
else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[1] == nbvoxels_[1]) {
5759 return p[0] + (p[1] - 1) * eshift_[0] + p[2] * eshift_[1];
5761 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5762 + p[2] * eshift_[3] + 1;
5764 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
5765 + p[2] * eshift_[13] - 1;
5767 }
else if(p[0] == 0 and p[1] > 0 and p[1] < nbvoxels_[1]) {
5770 return p[0] + (p[1] - 1) * eshift_[0] + p[2] * eshift_[1];
5772 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5773 + p[2] * eshift_[3] + 1;
5775 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13];
5777 }
else if(p[0] == nbvoxels_[0] and p[1] > 0 and p[1] < nbvoxels_[1]) {
5780 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
5781 + p[2] * eshift_[13] - 1;
5783 return esetshift_[0] + p[0] + p[1] * eshift_[2]
5784 + (p[2] + 1) * eshift_[3] - 1;
5786 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1] - 1;
5791 return p[0] + (p[1] - 1) * eshift_[0] + p[2] * eshift_[1];
5793 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1] - 1;
5795 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13];
5797 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
5798 + p[2] * eshift_[13] - 1;
5800 return esetshift_[0] + p[0] + p[1] * eshift_[2]
5801 + (p[2] + 1) * eshift_[3] - 1;
5803 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5804 + p[2] * eshift_[3] + 1;
5811 ttk::ImplicitTriangulation::getEdgeLinkD1(
const SimplexId p[3],
5812 const int id)
const {
5813 if(p[2] > 0 and p[2] < nbvoxels_[2]) {
5816 return esetshift_[4] + p[0] + p[1] * eshift_[10]
5817 + (p[2] - 1) * eshift_[11];
5819 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
5820 + p[2] * eshift_[11];
5822 return esetshift_[3] + p[0] + p[1] * eshift_[8] + p[2] * eshift_[9];
5824 return esetshift_[3] + p[0] + p[1] * eshift_[8]
5825 + (p[2] - 1) * eshift_[9] + 1;
5827 }
else if(p[2] == 0) {
5830 return esetshift_[3] + p[0] + p[1] * eshift_[8] + p[2] * eshift_[9];
5832 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
5833 + p[2] * eshift_[11];
5838 return esetshift_[3] + p[0] + p[1] * eshift_[8]
5839 + (p[2] - 1) * eshift_[9] + 1;
5841 return esetshift_[4] + p[0] + p[1] * eshift_[10]
5842 + (p[2] - 1) * eshift_[11];
5849 ttk::ImplicitTriangulation::getEdgeLinkD2(
const SimplexId p[3],
5850 const int id)
const {
5851 if(p[0] > 0 and p[0] < nbvoxels_[0]) {
5854 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11];
5856 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
5857 + p[2] * eshift_[11] - 1;
5859 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7];
5861 return esetshift_[2] + p[0] + p[1] * eshift_[6]
5862 + (p[2] + 1) * eshift_[7] - 1;
5864 }
else if(p[0] == 0) {
5867 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7];
5869 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11];
5874 return esetshift_[2] + p[0] + p[1] * eshift_[6]
5875 + (p[2] + 1) * eshift_[7] - 1;
5877 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
5878 + p[2] * eshift_[11] - 1;
5885 ttk::ImplicitTriangulation::getEdgeLinkD3(
const SimplexId p[3],
5886 const int id)
const {
5887 if(p[1] > 0 and p[1] < nbvoxels_[1]) {
5890 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
5891 + p[2] * eshift_[7];
5893 return esetshift_[2] + p[0] + p[1] * eshift_[6]
5894 + (p[2] + 1) * eshift_[7];
5896 return esetshift_[3] + p[0] + p[1] * eshift_[8] + p[2] * eshift_[9];
5898 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
5899 + p[2] * eshift_[9] + 1;
5901 }
else if(p[1] == 0) {
5904 return esetshift_[2] + p[0] + p[1] * eshift_[6]
5905 + (p[2] + 1) * eshift_[7];
5907 return esetshift_[3] + p[0] + p[1] * eshift_[8] + p[2] * eshift_[9];
5912 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
5913 + p[2] * eshift_[7];
5915 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
5916 + p[2] * eshift_[9] + 1;
5923 ttk::ImplicitTriangulation::getEdgeLinkD4(
const SimplexId p[3],
5924 const int id)
const {
5927 return p[0] + (p[1] + 1) * eshift_[0] + p[2] * eshift_[1];
5929 return p[0] + p[1] * eshift_[0] + (p[2] + 1) * eshift_[1];
5931 return esetshift_[1] + p[0] + p[1] * eshift_[4] + p[2] * eshift_[5];
5933 return esetshift_[1] + p[0] + 1 + (p[1] + 1) * eshift_[4]
5934 + p[2] * eshift_[5];
5936 return esetshift_[0] + p[0] + p[1] * eshift_[2] + p[2] * eshift_[3];
5938 return esetshift_[0] + p[0] + 1 + p[1] * eshift_[2]
5939 + (p[2] + 1) * eshift_[3];
5945 ttk::ImplicitTriangulation::getEdgeStarL(
const SimplexId p[3],
5946 const int id)
const {
5947 if(p[2] == 0 and p[1] == 0) {
5952 return p[0] * 6 + 2;
5954 }
else if(p[2] == 0 and p[1] == nbvoxels_[1])
5955 return (p[1] - 1) * tetshift_[0] + p[0] * 6 + 1;
5956 else if(p[2] == nbvoxels_[2] and p[1] == 0)
5957 return (p[2] - 1) * tetshift_[1] + p[0] * 6 + 3;
5958 else if(p[2] == nbvoxels_[2] and p[1] == nbvoxels_[1]) {
5961 return (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1] + p[0] * 6
5965 return (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1] + p[0] * 6
5969 }
else if(p[2] == 0 and p[1] > 0 and p[1] < nbvoxels_[1]) {
5972 return p[1] * tetshift_[0] + p[0] * 6;
5974 return p[1] * tetshift_[0] + p[0] * 6 + 2;
5976 return (p[1] - 1) * tetshift_[0] + p[0] * 6 + 1;
5978 }
else if(p[2] == nbvoxels_[2] and p[1] > 0 and p[1] < nbvoxels_[1]) {
5981 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
5984 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
5988 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
5992 }
else if(p[2] > 0 and p[2] < nbvoxels_[2] and p[1] == 0) {
5995 return p[2] * tetshift_[1] + p[0] * 6;
5997 return p[2] * tetshift_[1] + p[0] * 6 + 2;
5999 return (p[2] - 1) * tetshift_[1] + p[0] * 6 + 3;
6001 }
else if(p[2] > 0 and p[2] < nbvoxels_[2] and p[1] == nbvoxels_[1]) {
6004 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6007 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6011 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6018 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6;
6020 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 2;
6022 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6025 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6028 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6032 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6042 ttk::ImplicitTriangulation::getEdgeStarH(
const SimplexId p[3],
6043 const int id)
const {
6044 if(p[0] == 0 and p[2] == 0)
6045 return p[1] * tetshift_[0];
6046 else if(p[0] == nbvoxels_[0] and p[2] == 0) {
6049 return p[1] * tetshift_[0] + (p[0] - 1) * 6 + 1;
6051 return p[1] * tetshift_[0] + (p[0] - 1) * 6 + 5;
6053 }
else if(p[0] == 0 and p[2] == nbvoxels_[2]) {
6056 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + 2;
6058 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + 3;
6060 }
else if(p[0] == nbvoxels_[0] and p[2] == nbvoxels_[2])
6061 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6063 else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[2] == 0) {
6066 return p[1] * tetshift_[0] + (p[0] - 1) * 6 + 1;
6068 return p[1] * tetshift_[0] + (p[0] - 1) * 6 + 5;
6070 return p[1] * tetshift_[0] + p[0] * 6;
6072 }
else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[2] == nbvoxels_[2]) {
6075 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6078 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6081 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6085 }
else if(p[0] == 0 and p[2] > 0 and p[2] < nbvoxels_[2]) {
6088 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + 2;
6090 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + 3;
6092 return p[2] * tetshift_[1] + p[1] * tetshift_[0];
6094 }
else if(p[0] == nbvoxels_[0] and p[2] > 0 and p[2] < nbvoxels_[2]) {
6097 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6100 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6103 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6110 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6;
6112 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6115 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6118 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6122 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6125 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6133 ttk::ImplicitTriangulation::getEdgeStarP(
const SimplexId p[3],
6134 const int id)
const {
6135 if(p[0] == 0 and p[1] == 0)
6136 return p[2] * tetshift_[1] + 2;
6137 else if(p[0] == 0 and p[1] == nbvoxels_[1]) {
6140 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0];
6142 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + 1;
6144 }
else if(p[0] == nbvoxels_[0] and p[1] == 0) {
6147 return p[2] * tetshift_[1] + (p[0] - 1) * 6 + 3;
6149 return p[2] * tetshift_[1] + (p[0] - 1) * 6 + 4;
6151 }
else if(p[0] == nbvoxels_[0] and p[1] == nbvoxels_[1])
6152 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + (p[0] - 1) * 6
6154 else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[1] == 0) {
6157 return p[2] * tetshift_[1] + (p[0] - 1) * 6 + 3;
6159 return p[2] * tetshift_[1] + (p[0] - 1) * 6 + 4;
6161 return p[2] * tetshift_[1] + p[0] * 6 + 2;
6163 }
else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[1] == nbvoxels_[1]) {
6166 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0]
6169 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6172 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + (p[0] - 1) * 6
6176 }
else if(p[0] == 0 and p[1] > 0 and p[1] < nbvoxels_[1]) {
6179 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0];
6181 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + 1;
6183 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + 2;
6185 }
else if(p[0] == nbvoxels_[0] and p[1] > 0 and p[1] < nbvoxels_[1]) {
6188 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6191 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6194 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + (p[0] - 1) * 6
6201 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + (p[0] - 1) * 6
6205 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0]
6208 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6211 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 2;
6213 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6216 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6224 ttk::ImplicitTriangulation::getEdgeStarD1(
const SimplexId p[3],
6225 const int id)
const {
6226 if(p[2] > 0 and p[2] < nbvoxels_[2]) {
6229 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6;
6231 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 1;
6233 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6236 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6239 }
else if(p[2] == 0) {
6242 return p[1] * tetshift_[0] + p[0] * 6;
6244 return p[1] * tetshift_[0] + p[0] * 6 + 1;
6249 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6252 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6260 ttk::ImplicitTriangulation::getEdgeStarD2(
const SimplexId p[3],
6261 const int id)
const {
6262 if(p[0] > 0 and p[0] < nbvoxels_[0]) {
6265 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6;
6267 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 2;
6269 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6272 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6275 }
else if(p[0] == 0) {
6278 return p[2] * tetshift_[1] + p[1] * tetshift_[0];
6280 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + 2;
6285 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6288 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6296 ttk::ImplicitTriangulation::getEdgeStarD3(
const SimplexId p[3],
6297 const int id)
const {
6298 if(p[1] > 0 and p[1] < nbvoxels_[1]) {
6301 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 2;
6303 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 3;
6305 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6308 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6311 }
else if(p[1] == 0) {
6314 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 2;
6316 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 3;
6321 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6324 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6332 ttk::ImplicitTriangulation::getTriangleVertexF(
const SimplexId p[3],
6333 const int id)
const {
6336 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6338 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6340 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0] + 1;
6343 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1];
6345 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6347 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6352 ttk::ImplicitTriangulation::getTriangleVertexH(
const SimplexId p[3],
6353 const int id)
const {
6356 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6358 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1] + 1;
6360 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6363 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1];
6365 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6367 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6372 ttk::ImplicitTriangulation::getTriangleVertexC(
const SimplexId p[3],
6373 const int id)
const {
6376 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1];
6378 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6380 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1]
6384 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1];
6386 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6388 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1]
6394 ttk::ImplicitTriangulation::getTriangleVertexD1(
const SimplexId p[3],
6395 const int id)
const {
6398 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6400 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6402 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1]
6406 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6408 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0] + 1;
6410 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1]
6416 ttk::ImplicitTriangulation::getTriangleVertexD2(
const SimplexId p[3],
6417 const int id)
const {
6420 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6422 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6425 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6429 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1];
6431 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6433 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6439 ttk::ImplicitTriangulation::getTriangleVertexD3(
const SimplexId p[3],
6440 const int id)
const {
6443 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6445 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1] + 1;
6447 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6451 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6453 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6455 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6461 ttk::ImplicitTriangulation::getTriangleEdgeF_0(
const SimplexId p[3],
6462 const int id)
const {
6465 return p[0] / 2 + p[1] * eshift_[0] + p[2] * eshift_[1];
6467 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2] + p[2] * eshift_[3];
6469 return esetshift_[2] + p[0] / 2 + p[1] * eshift_[6] + p[2] * eshift_[7];
6475 ttk::ImplicitTriangulation::getTriangleEdgeF_1(
const SimplexId p[3],
6476 const int id)
const {
6479 return p[0] / 2 + (p[1] + 1) * eshift_[0] + p[2] * eshift_[1];
6481 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2] + p[2] * eshift_[3]
6484 return esetshift_[2] + p[0] / 2 + p[1] * eshift_[6] + p[2] * eshift_[7];
6490 ttk::ImplicitTriangulation::getTriangleEdgeH_0(
const SimplexId p[3],
6491 const int id)
const {
6494 return p[0] / 2 + p[1] * eshift_[0] + p[2] * eshift_[1];
6496 return esetshift_[1] + p[0] / 2 + p[1] * eshift_[4] + p[2] * eshift_[5];
6498 return esetshift_[4] + p[0] / 2 + p[1] * eshift_[10] + p[2] * eshift_[11];
6504 ttk::ImplicitTriangulation::getTriangleEdgeH_1(
const SimplexId p[3],
6505 const int id)
const {
6508 return p[0] / 2 + p[1] * eshift_[0] + (p[2] + 1) * eshift_[1];
6510 return esetshift_[1] + p[0] / 2 + p[1] * eshift_[4] + p[2] * eshift_[5]
6513 return esetshift_[4] + p[0] / 2 + p[1] * eshift_[10] + p[2] * eshift_[11];
6519 ttk::ImplicitTriangulation::getTriangleEdgeC_0(
const SimplexId p[3],
6520 const int id)
const {
6523 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2] + p[2] * eshift_[3];
6525 return esetshift_[1] + p[0] / 2 + (p[1] + 1) * eshift_[4]
6526 + p[2] * eshift_[5];
6528 return esetshift_[3] + p[0] / 2 + p[1] * eshift_[8] + p[2] * eshift_[9];
6534 ttk::ImplicitTriangulation::getTriangleEdgeC_1(
const SimplexId p[3],
6535 const int id)
const {
6538 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2]
6539 + (p[2] + 1) * eshift_[3];
6541 return esetshift_[1] + p[0] / 2 + p[1] * eshift_[4] + p[2] * eshift_[5];
6543 return esetshift_[3] + p[0] / 2 + p[1] * eshift_[8] + p[2] * eshift_[9];
6549 ttk::ImplicitTriangulation::getTriangleEdgeD1_0(
const SimplexId p[3],
6550 const int id)
const {
6553 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2] + p[2] * eshift_[3]
6556 return esetshift_[4] + p[0] / 2 + (p[1] + 1) * eshift_[10]
6557 + p[2] * eshift_[11];
6559 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6565 ttk::ImplicitTriangulation::getTriangleEdgeD1_1(
const SimplexId p[3],
6566 const int id)
const {
6569 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2]
6570 + (p[2] + 1) * eshift_[3];
6572 return esetshift_[4] + p[0] / 2 + p[1] * eshift_[10] + p[2] * eshift_[11];
6574 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6580 ttk::ImplicitTriangulation::getTriangleEdgeD2_0(
const SimplexId p[3],
6581 const int id)
const {
6584 return p[0] / 2 + p[1] * eshift_[0] + p[2] * eshift_[1];
6586 return esetshift_[3] + p[0] / 2 + p[1] * eshift_[8] + p[2] * eshift_[9];
6588 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6594 ttk::ImplicitTriangulation::getTriangleEdgeD2_1(
const SimplexId p[3],
6595 const int id)
const {
6598 return p[0] / 2 + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1];
6600 return esetshift_[3] + p[0] / 2 + p[1] * eshift_[8] + p[2] * eshift_[9]
6603 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6609 ttk::ImplicitTriangulation::getTriangleEdgeD3_0(
const SimplexId p[3],
6610 const int id)
const {
6613 return esetshift_[1] + p[0] / 2 + (p[1] + 1) * eshift_[4]
6614 + p[2] * eshift_[5];
6616 return esetshift_[2] + p[0] / 2 + p[1] * eshift_[6] + p[2] * eshift_[7];
6618 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6624 ttk::ImplicitTriangulation::getTriangleEdgeD3_1(
const SimplexId p[3],
6625 const int id)
const {
6628 return esetshift_[1] + p[0] / 2 + p[1] * eshift_[4] + p[2] * eshift_[5]
6631 return esetshift_[2] + p[0] / 2 + p[1] * eshift_[6]
6632 + (p[2] + 1) * eshift_[7];
6634 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6640 ttk::ImplicitTriangulation::getTriangleLinkF(
const SimplexId p[3],
6641 const int id)
const {
6642 if(p[2] > 0 and p[2] < nbvoxels_[2]) {
6645 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1];
6647 return p[0] / 2 + p[1] * vshift_[0] + (p[2] - 1) * vshift_[1] + 1;
6649 }
else if(p[2] == 0)
6650 return p[0] / 2 + (p[1] + 1) * vshift_[0] + vshift_[1];
6652 return p[0] / 2 + p[1] * vshift_[0] + (p[2] - 1) * vshift_[1] + 1;
6658 ttk::ImplicitTriangulation::getTriangleLinkH(
const SimplexId p[3],
6659 const int id)
const {
6660 if(p[1] > 0 and p[1] < nbvoxels_[1]) {
6663 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1];
6665 return p[0] / 2 + (p[1] - 1) * vshift_[0] + p[2] * vshift_[1] + 1;
6667 }
else if(p[1] == 0)
6668 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1];
6670 return p[0] / 2 + (p[1] - 1) * vshift_[0] + p[2] * vshift_[1] + 1;
6676 ttk::ImplicitTriangulation::getTriangleLinkC(
const SimplexId p[3],
6677 const int id)
const {
6678 if(p[0] > 1 and p[0] < (dimensions_[0] * 2 - 2)) {
6681 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6683 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1] - 1;
6686 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6688 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1] - 1;
6694 ttk::ImplicitTriangulation::getTriangleLinkD1(
const SimplexId p[3],
6695 const int id)
const {
6699 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1];
6701 return p[0] / 2 + p[1] * vshift_[0] + (p[2] + 1) * vshift_[1] + 1;
6706 return p[0] / 2 + (p[1] + 1) * vshift_[0] + p[2] * vshift_[1];
6708 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1] + 1;
6715 ttk::ImplicitTriangulation::getTriangleLinkD2(
const SimplexId p[3],
6716 const int id)
const {
6720 return p[0] / 2 + (p[1] + 1) * vshift_[0] + p[2] * vshift_[1] + 1;
6722 return p[0] / 2 + p[1] * vshift_[0] + (p[2] + 1) * vshift_[1] + 1;
6727 return p[0] / 2 + (p[1] + 1) * vshift_[0] + p[2] * vshift_[1];
6729 return p[0] / 2 + p[1] * vshift_[0] + (p[2] + 1) * vshift_[1];
6736 ttk::ImplicitTriangulation::getTriangleLinkD3(
const SimplexId p[3],
6737 const int id)
const {
6741 return p[0] / 2 + p[1] * vshift_[0] + (p[2] + 1) * vshift_[1];
6743 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1] + 1;
6748 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1];
6750 return p[0] / 2 + (p[1] + 1) * vshift_[0] + p[2] * vshift_[1] + 1;
6757 ttk::ImplicitTriangulation::getTriangleStarF(
const SimplexId p[3],
6758 const int id)
const {
6760 if(p[2] > 0 and p[2] < nbvoxels_[2]) {
6763 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6766 return (p[0] - 1) * 3 + p[1] * tetshift_[0]
6767 + (p[2] - 1) * tetshift_[1] + 4;
6769 }
else if(p[2] == 0)
6770 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6773 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
6776 if(p[2] > 0 and p[2] < nbvoxels_[2]) {
6779 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6781 return p[0] * 3 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
6784 }
else if(p[2] == 0)
6785 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6787 return p[0] * 3 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
6795 ttk::ImplicitTriangulation::getTriangleStarH(
const SimplexId p[3],
6796 const int id)
const {
6798 if(p[1] > 0 and p[1] < nbvoxels_[1]) {
6801 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6804 return (p[0] - 1) * 3 + (p[1] - 1) * tetshift_[0]
6805 + p[2] * tetshift_[1] + 5;
6807 }
else if(p[1] == 0)
6808 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6811 return (p[0] - 1) * 3 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
6814 if(p[1] > 0 and p[1] < nbvoxels_[1]) {
6817 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6820 return p[0] * 3 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
6823 }
else if(p[1] == 0)
6824 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 2;
6826 return p[0] * 3 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
6833 ttk::ImplicitTriangulation::getTriangleStarC(
const SimplexId p[3],
6834 const int id)
const {
6836 if(p[0] > 1 and p[0] < (dimensions_[0] * 2 - 2)) {
6839 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6842 return ((p[0] - 2) / 2) * 6 + p[1] * tetshift_[0]
6843 + p[2] * tetshift_[1] + 4;
6846 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6849 return ((p[0] - 2) / 2) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6852 if(p[0] > 1 and p[0] < (dimensions_[0] * 2 - 2)) {
6855 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6857 return ((p[0] - 1) / 2) * 6 + p[1] * tetshift_[0]
6858 + p[2] * tetshift_[1] + 5;
6861 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6863 return ((p[0] - 1) / 2) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6871 ttk::ImplicitTriangulation::getTriangleStarD1(
const SimplexId p[3],
6872 const int id)
const {
6876 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6879 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6885 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 1;
6887 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 5;
6894 ttk::ImplicitTriangulation::getTriangleStarD2(
const SimplexId p[3],
6895 const int id)
const {
6899 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6902 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6908 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6910 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 2;
6917 ttk::ImplicitTriangulation::getTriangleStarD3(
const SimplexId p[3],
6918 const int id)
const {
6922 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6925 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6931 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6933 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 1;
6940 ttk::ImplicitTriangulation::getTetrahedronVertexABCG(
const SimplexId p[3],
6941 const int id)
const {
6944 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1];
6946 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6948 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6950 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6957 ttk::ImplicitTriangulation::getTetrahedronVertexBCDG(
const SimplexId p[3],
6958 const int id)
const {
6961 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6963 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6965 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0] + 1;
6967 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6974 ttk::ImplicitTriangulation::getTetrahedronVertexABEG(
const SimplexId p[3],
6975 const int id)
const {
6978 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1];
6980 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6982 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6984 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6991 ttk::ImplicitTriangulation::getTetrahedronVertexBEFG(
const SimplexId p[3],
6992 const int id)
const {
6995 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6997 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6999 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1] + 1;
7001 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
7008 ttk::ImplicitTriangulation::getTetrahedronVertexBFGH(
const SimplexId p[3],
7009 const int id)
const {
7012 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
7014 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1] + 1;
7016 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
7019 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
7026 ttk::ImplicitTriangulation::getTetrahedronVertexBDGH(
const SimplexId p[3],
7027 const int id)
const {
7030 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
7032 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0] + 1;
7034 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
7037 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
7044 ttk::ImplicitTriangulation::getTetrahedronEdgeABCG(
const SimplexId p[3],
7045 const int id)
const {
7048 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
7050 return esetshift_[0] + p[0] + p[1] * eshift_[2]
7051 + p[2] * eshift_[3];
7053 return esetshift_[1] + p[0] + (p[1] + 1) * eshift_[4]
7054 + p[2] * eshift_[5];
7056 return esetshift_[2] + p[0] + p[1] * eshift_[6]
7057 + p[2] * eshift_[7];
7059 return esetshift_[3] + p[0] + p[1] * eshift_[8]
7060 + p[2] * eshift_[9];
7062 return esetshift_[5] + p[0] + p[1] * eshift_[12]
7063 + p[2] * eshift_[13];
7069 ttk::ImplicitTriangulation::getTetrahedronEdgeBCDG(
const SimplexId p[3],
7070 const int id)
const {
7073 return p[0] + (p[1] + 1) * eshift_[0] + p[2] * eshift_[1];
7075 return esetshift_[0] + (p[0] + 1) + p[1] * eshift_[2]
7076 + p[2] * eshift_[3];
7078 return esetshift_[1] + p[0] + (p[1] + 1) * eshift_[4]
7079 + p[2] * eshift_[5];
7081 return esetshift_[2] + p[0] + p[1] * eshift_[6]
7082 + p[2] * eshift_[7];
7084 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
7085 + p[2] * eshift_[11];
7087 return esetshift_[5] + p[0] + p[1] * eshift_[12]
7088 + p[2] * eshift_[13];
7094 ttk::ImplicitTriangulation::getTetrahedronEdgeABEG(
const SimplexId p[3],
7095 const int id)
const {
7098 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
7100 return esetshift_[0] + p[0] + p[1] * eshift_[2]
7101 + (p[2] + 1) * eshift_[3];
7103 return esetshift_[1] + p[0] + p[1] * eshift_[4]
7104 + p[2] * eshift_[5];
7106 return esetshift_[3] + p[0] + p[1] * eshift_[8]
7107 + p[2] * eshift_[9];
7109 return esetshift_[4] + p[0] + p[1] * eshift_[10]
7110 + p[2] * eshift_[11];
7112 return esetshift_[5] + p[0] + p[1] * eshift_[12]
7113 + p[2] * eshift_[13];
7119 ttk::ImplicitTriangulation::getTetrahedronEdgeBEFG(
const SimplexId p[3],
7120 const int id)
const {
7123 return p[0] + p[1] * eshift_[0] + (p[2] + 1) * eshift_[1];
7125 return esetshift_[0] + p[0] + p[1] * eshift_[2]
7126 + (p[2] + 1) * eshift_[3];
7128 return esetshift_[1] + (p[0] + 1) + p[1] * eshift_[4]
7129 + p[2] * eshift_[5];
7131 return esetshift_[2] + p[0] + p[1] * eshift_[6]
7132 + (p[2] + 1) * eshift_[7];
7134 return esetshift_[4] + p[0] + p[1] * eshift_[10]
7135 + p[2] * eshift_[11];
7137 return esetshift_[5] + p[0] + p[1] * eshift_[12]
7138 + p[2] * eshift_[13];
7144 ttk::ImplicitTriangulation::getTetrahedronEdgeBFGH(
const SimplexId p[3],
7145 const int id)
const {
7148 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1];
7150 return esetshift_[0] + (p[0] + 1) + p[1] * eshift_[2]
7151 + (p[2] + 1) * eshift_[3];
7153 return esetshift_[1] + (p[0] + 1) + p[1] * eshift_[4]
7154 + p[2] * eshift_[5];
7156 return esetshift_[2] + p[0] + p[1] * eshift_[6]
7157 + (p[2] + 1) * eshift_[7];
7159 return esetshift_[3] + (p[0] + 1) + p[1] * eshift_[8]
7160 + p[2] * eshift_[9];
7162 return esetshift_[5] + p[0] + p[1] * eshift_[12]
7163 + p[2] * eshift_[13];
7169 ttk::ImplicitTriangulation::getTetrahedronEdgeBDGH(
const SimplexId p[3],
7170 const int id)
const {
7173 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1];
7175 return esetshift_[0] + (p[0] + 1) + p[1] * eshift_[2]
7176 + p[2] * eshift_[3];
7178 return esetshift_[1] + (p[0] + 1) + (p[1] + 1) * eshift_[4]
7179 + p[2] * eshift_[5];
7181 return esetshift_[3] + (p[0] + 1) + p[1] * eshift_[8]
7182 + p[2] * eshift_[9];
7184 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
7185 + p[2] * eshift_[11];
7187 return esetshift_[5] + p[0] + p[1] * eshift_[12]
7188 + p[2] * eshift_[13];
7194 ttk::ImplicitTriangulation::getTetrahedronTriangleABCG(
const SimplexId p[3],
7195 const int id)
const {
7198 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
7200 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
7202 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
7204 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11];
7210 ttk::ImplicitTriangulation::getTetrahedronTriangleBCDG(
const SimplexId p[3],
7211 const int id)
const {
7214 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
7216 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11];
7218 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7];
7220 return tsetshift_[0] + p[0] * 2 + (p[1] + 1) * tshift_[2]
7221 + p[2] * tshift_[3];
7227 ttk::ImplicitTriangulation::getTetrahedronTriangleABEG(
const SimplexId p[3],
7228 const int id)
const {
7231 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
7233 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
7235 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
7238 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
7245 ttk::ImplicitTriangulation::getTetrahedronTriangleBEFG(
const SimplexId p[3],
7246 const int id)
const {
7249 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
7252 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3]
7255 return p[0] * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1];
7257 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11]
7264 ttk::ImplicitTriangulation::getTetrahedronTriangleBFGH(
const SimplexId p[3],
7265 const int id)
const {
7268 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9]
7271 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11]
7274 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
7277 return p[0] * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1] + 1;
7283 ttk::ImplicitTriangulation::getTetrahedronTriangleBDGH(
const SimplexId p[3],
7284 const int id)
const {
7287 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
7290 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7];
7292 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9]
7295 return tsetshift_[0] + p[0] * 2 + (p[1] + 1) * tshift_[2]
7296 + p[2] * tshift_[3] + 1;
7301inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborABCG(
7312 return t - tetshift_[1] + 3;
7314 return t - tetshift_[1] + 3;
7319inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborBCDG(
7328 return t - tetshift_[1] + 3;
7330 return t + tetshift_[0] + 1;
7332 return t + tetshift_[0] + 1;
7337inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborABEG(
7348 return t - tetshift_[0] - 1;
7350 return t - tetshift_[0] - 1;
7355inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborBEFG(
7364 return t - tetshift_[0] + 2;
7366 return t + tetshift_[1] - 3;
7368 return t + tetshift_[1] - 3;
7373inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborBFGH(
7381 if(p[0] < nbvoxels_[0] - 1)
7384 return t + tetshift_[1] - 3;
7386 return t + tetshift_[1] - 3;
7391inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborBDGH(
7399 if(p[0] < nbvoxels_[0] - 1)
7402 return t + tetshift_[0] - 2;
7404 return t + tetshift_[0] - 2;
#define TTK_TRIANGULATION_INTERNAL(NAME)
bool hasPreconditionedTriangles_
int getTriangleVertexInternal(const SimplexId &triangleId, const int &localVertexId, SimplexId &vertexId) const override
SimplexId TTK_TRIANGULATION_INTERNAL() getVertexNeighborNumber(const SimplexId &vertexId) const final
int TTK_TRIANGULATION_INTERNAL() getVertexNeighbor(const SimplexId &vertexId, const int &localNeighborId, SimplexId &neighborId) const final
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 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.