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;
514 bool isPowerOfTwo(
unsigned long long int v,
unsigned long long int &r);
841 template <
typename Derived>
843 inline Derived &underlying() {
844 return static_cast<Derived &
>(*this);
846 inline Derived
const &underlying()
const {
847 return static_cast<Derived
const &
>(*this);
854#ifndef TTK_ENABLE_KAMIKAZE
859 switch(this->underlying().getVertexPosition(vertexId)) {
914 const SimplexId &vertexId)
const override;
921 const int &localNeighborId,
924#ifndef TTK_ENABLE_KAMIKAZE
925 if(localNeighborId < 0
930 switch(this->underlying().getVertexPosition(vertexId)) {
1041 neighborId = (localNeighborId == 0 ? vertexId + 1 : vertexId - 1);
1044 neighborId = vertexId + 1;
1047 neighborId = vertexId - 1;
1070 const int &localLinkId,
1074 const SimplexId &vertexId)
const override;
1078 const int &localStarId,
1084 float &z)
const override;
1087 const int &localVertexId,
1099 const int &localLinkId,
1104 const int &localStarId,
1108 const SimplexId &edgeId)
const override;
1111 const int &localVertexId,
1120 const int &localLinkId,
1125 const int &localStarId,
1129 const SimplexId &triangleId)
const override;
1132 const int &localNeighborId,
1139 const int &localVertexId,
1154 const int &localNeighborId,
1163 SimplexId p[2])
const {
1165 p[0] = vertex &
mod_[0];
1166 p[1] = vertex >>
div_[0];
1173inline void ttk::ImplicitTriangulation::edgeToPosition2d(
const SimplexId edge,
1176 const int e = (k) ? edge - esetshift_[k - 1] : edge;
1177 p[0] = e % eshift_[2 * k];
1178 p[1] = e / eshift_[2 * k];
1184 p[0] = triangle % tshift_[0];
1185 p[1] = triangle / tshift_[0];
1189 ttk::ImplicitTriangulation::getVertexEdge2dA(
const SimplexId p[2],
1190 const int id)
const {
1194 return p[0] + p[1] * eshift_[0];
1196 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1202 ttk::ImplicitTriangulation::getVertexEdge2dB(
const SimplexId p[2],
1203 const int id)
const {
1207 return p[0] + p[1] * eshift_[0] - 1;
1209 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1211 return esetshift_[1] + p[0] + p[1] * eshift_[4] - 1;
1217 ttk::ImplicitTriangulation::getVertexEdge2dC(
const SimplexId p[2],
1218 const int id)
const {
1222 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1224 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4];
1226 return p[0] + p[1] * eshift_[0];
1232 ttk::ImplicitTriangulation::getVertexEdge2dD(
const SimplexId p[2],
1233 const int id)
const {
1237 return p[0] + p[1] * eshift_[0] - 1;
1239 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1245 ttk::ImplicitTriangulation::getVertexEdge2dAB(
const SimplexId p[2],
1246 const int id)
const {
1250 return p[0] + p[1] * eshift_[0] - 1;
1252 return esetshift_[1] + p[0] + p[1] * eshift_[4] - 1;
1254 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1256 return p[0] + p[1] * eshift_[0];
1262 ttk::ImplicitTriangulation::getVertexEdge2dCD(
const SimplexId p[2],
1263 const int id)
const {
1267 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1269 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4];
1271 return p[0] + p[1] * eshift_[0];
1273 return p[0] + p[1] * eshift_[0] - 1;
1279 ttk::ImplicitTriangulation::getVertexEdge2dAC(
const SimplexId p[2],
1280 const int id)
const {
1284 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1286 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4];
1288 return p[0] + p[1] * eshift_[0];
1290 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1296 ttk::ImplicitTriangulation::getVertexEdge2dBD(
const SimplexId p[2],
1297 const int id)
const {
1301 return esetshift_[1] + p[0] + p[1] * eshift_[4] - 1;
1303 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1305 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1307 return p[0] + p[1] * eshift_[0] - 1;
1313 ttk::ImplicitTriangulation::getVertexEdge2dABCD(
const SimplexId p[2],
1314 const int id)
const {
1318 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2];
1320 return p[0] + p[1] * eshift_[0] - 1;
1322 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4];
1324 return p[0] + p[1] * eshift_[0];
1326 return esetshift_[0] + p[0] + p[1] * eshift_[2];
1328 return esetshift_[1] + p[0] + p[1] * eshift_[4] - 1;
1334 ttk::ImplicitTriangulation::getVertexStar2dA(
const SimplexId p[2],
1336 return p[0] * 2 + p[1] * tshift_[0];
1340 ttk::ImplicitTriangulation::getVertexStar2dB(
const SimplexId p[2],
1341 const int id)
const {
1344 return (p[0] - 1) * 2 + p[1] * tshift_[0];
1346 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1352 ttk::ImplicitTriangulation::getVertexStar2dC(
const SimplexId p[2],
1353 const int id)
const {
1356 return p[0] * 2 + (p[1] - 1) * tshift_[0];
1358 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1364 ttk::ImplicitTriangulation::getVertexStar2dD(
const SimplexId p[2],
1366 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
1370 ttk::ImplicitTriangulation::getVertexStar2dAB(
const SimplexId p[2],
1371 const int id)
const {
1374 return (p[0] - 1) * 2 + p[1] * tshift_[0];
1376 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1378 return p[0] * 2 + p[1] * tshift_[0];
1384 ttk::ImplicitTriangulation::getVertexStar2dCD(
const SimplexId p[2],
1385 const int id)
const {
1388 return p[0] * 2 + (p[1] - 1) * tshift_[0];
1390 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1392 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
1398 ttk::ImplicitTriangulation::getVertexStar2dAC(
const SimplexId p[2],
1399 const int id)
const {
1402 return p[0] * 2 + (p[1] - 1) * tshift_[0];
1404 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1406 return p[0] * 2 + p[1] * tshift_[0];
1412 ttk::ImplicitTriangulation::getVertexStar2dBD(
const SimplexId p[2],
1413 const int id)
const {
1416 return (p[0] - 1) * 2 + p[1] * tshift_[0];
1418 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1420 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
1426 ttk::ImplicitTriangulation::getVertexStar2dABCD(
const SimplexId p[2],
1427 const int id)
const {
1430 return (p[0] - 1) * 2 + p[1] * tshift_[0];
1432 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1434 return p[0] * 2 + p[1] * tshift_[0];
1436 return p[0] * 2 + (p[1] - 1) * tshift_[0];
1438 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1440 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
1446 ttk::ImplicitTriangulation::getVertexLink2dA(
const SimplexId p[2],
1448 return esetshift_[1] + p[0] + p[1] * eshift_[4];
1452 ttk::ImplicitTriangulation::getVertexLink2dB(
const SimplexId p[2],
1453 const int id)
const {
1456 return esetshift_[0] + p[0] + p[1] * eshift_[2] - 1;
1458 return p[0] + (p[1] + 1) * eshift_[0] - 1;
1464 ttk::ImplicitTriangulation::getVertexLink2dC(
const SimplexId p[2],
1465 const int id)
const {
1468 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2] + 1;
1470 return p[0] + (p[1] - 1) * eshift_[0];
1476 ttk::ImplicitTriangulation::getVertexLink2dD(
const SimplexId p[2],
1478 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4] - 1;
1482 ttk::ImplicitTriangulation::getVertexLink2dAB(
const SimplexId p[2],
1483 const int id)
const {
1486 return esetshift_[0] + p[0] + p[1] * eshift_[2] - 1;
1488 return p[0] + (p[1] + 1) * eshift_[0] - 1;
1490 return esetshift_[1] + p[0] + p[1] * eshift_[4];
1496 ttk::ImplicitTriangulation::getVertexLink2dCD(
const SimplexId p[2],
1497 const int id)
const {
1500 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2] + 1;
1502 return p[0] + (p[1] - 1) * eshift_[0];
1504 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4] - 1;
1510 ttk::ImplicitTriangulation::getVertexLink2dAC(
const SimplexId p[2],
1511 const int id)
const {
1514 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2] + 1;
1516 return p[0] + (p[1] - 1) * eshift_[0];
1518 return esetshift_[1] + p[0] + p[1] * eshift_[4];
1524 ttk::ImplicitTriangulation::getVertexLink2dBD(
const SimplexId p[2],
1525 const int id)
const {
1528 return esetshift_[0] + p[0] + p[1] * eshift_[2] - 1;
1530 return p[0] + (p[1] + 1) * eshift_[0] - 1;
1532 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4] - 1;
1538 ttk::ImplicitTriangulation::getVertexLink2dABCD(
const SimplexId p[2],
1539 const int id)
const {
1542 return esetshift_[0] + p[0] + p[1] * eshift_[2] - 1;
1544 return p[0] + (p[1] + 1) * eshift_[0] - 1;
1546 return esetshift_[1] + p[0] + p[1] * eshift_[4];
1548 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2] + 1;
1550 return p[0] + (p[1] - 1) * eshift_[0];
1552 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4] - 1;
1558 ttk::ImplicitTriangulation::getEdgeTriangleL_x0(
const SimplexId p[3],
1559 const int id)
const {
1568 ttk::ImplicitTriangulation::getEdgeTriangleL_xn(
const SimplexId p[3],
1569 const int id)
const {
1572 return p[Di_] * 2 + p[Dj_] * tshift_[0];
1574 return p[Di_] * 2 + (p[Dj_] - 1) * tshift_[0] + 1;
1580 ttk::ImplicitTriangulation::getEdgeTriangleL_xN(
const SimplexId p[3],
1581 const int id)
const {
1584 return p[Di_] * 2 + (p[Dj_] - 1) * tshift_[0] + 1;
1590 ttk::ImplicitTriangulation::getEdgeTriangleH_0y(
const SimplexId p[3],
1591 const int id)
const {
1594 return p[Dj_] * tshift_[0];
1600 ttk::ImplicitTriangulation::getEdgeTriangleH_ny(
const SimplexId p[3],
1601 const int id)
const {
1604 return p[Di_] * 2 + p[Dj_] * tshift_[0];
1606 return (p[Di_] - 1) * 2 + p[Dj_] * tshift_[0] + 1;
1612 ttk::ImplicitTriangulation::getEdgeTriangleH_Ny(
const SimplexId p[3],
1613 const int id)
const {
1616 return (p[Di_] - 1) * 2 + p[Dj_] * tshift_[0] + 1;
1622 ttk::ImplicitTriangulation::getEdgeTriangleD1_xy(
const SimplexId p[3],
1623 const int id)
const {
1626 return p[Di_] * 2 + p[Dj_] * tshift_[0];
1628 return p[Di_] * 2 + p[Dj_] * tshift_[0] + 1;
1634 ttk::ImplicitTriangulation::getEdgeLink2dL(
const SimplexId p[2],
1635 const int id)
const {
1636 if(p[1] > 0 and p[1] < nbvoxels_[Dj_]) {
1639 return p[0] + (p[1] + 1) * vshift_[0];
1641 return p[0] + (p[1] - 1) * vshift_[0] + 1;
1643 }
else if(p[1] == 0)
1644 return p[0] + vshift_[0];
1646 return p[0] + (p[1] - 1) * vshift_[0] + 1;
1651 ttk::ImplicitTriangulation::getEdgeLink2dH(
const SimplexId p[2],
1652 const int id)
const {
1653 if(p[0] > 0 and p[0] < nbvoxels_[Di_]) {
1656 return p[0] + p[1] * vshift_[0] + 1;
1658 return p[0] + (p[1] + 1) * vshift_[0] - 1;
1660 }
else if(p[0] == 0)
1661 return p[1] * vshift_[0] + 1;
1663 return p[0] + (p[1] + 1) * vshift_[0] - 1;
1668 ttk::ImplicitTriangulation::getEdgeLink2dD1(
const SimplexId p[2],
1669 const int id)
const {
1672 return p[0] + p[1] * vshift_[0];
1674 return p[0] + (p[1] + 1) * vshift_[0] + 1;
1680 ttk::ImplicitTriangulation::getEdgeStar2dL(
const SimplexId p[2],
1681 const int id)
const {
1682 if(p[1] > 0 and p[1] < nbvoxels_[Dj_]) {
1684 return p[0] * 2 + p[1] * tshift_[0];
1686 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1687 }
else if(p[1] == 0)
1688 return p[0] * 2 + p[1] * tshift_[0];
1690 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
1694 ttk::ImplicitTriangulation::getEdgeStar2dH(
const SimplexId p[2],
1695 const int id)
const {
1696 if(p[0] > 0 and p[0] < nbvoxels_[Di_]) {
1698 return p[0] * 2 + p[1] * tshift_[0];
1700 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1701 }
else if(p[0] == 0)
1702 return p[0] * 2 + p[1] * tshift_[0];
1704 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
1709 if(isAccelerated_) {
1710 p[0] = vertex & mod_[0];
1711 p[1] = (vertex & mod_[1]) >> div_[0];
1712 p[2] = vertex >> div_[1];
1714 p[0] = vertex % vshift_[0];
1715 p[1] = (vertex % vshift_[1]) / vshift_[0];
1716 p[2] = vertex / vshift_[1];
1720inline void ttk::ImplicitTriangulation::edgeToPosition(
const SimplexId edge,
1723 const int e = (k) ? edge - esetshift_[k - 1] : edge;
1724 p[0] = e % eshift_[2 * k];
1725 p[1] = (e % eshift_[2 * k + 1]) / eshift_[2 * k];
1726 p[2] = e / eshift_[2 * k + 1];
1731 const SimplexId t = (k) ? triangle - tsetshift_[k - 1] : triangle;
1732 p[0] = t % tshift_[2 * k];
1733 p[1] = (t % tshift_[2 * k + 1]) / tshift_[2 * k];
1734 p[2] = t / tshift_[2 * k + 1];
1740 p[0] = (tetrahedron % tetshift_[0]) / 6;
1741 p[1] = (tetrahedron % tetshift_[1]) / tetshift_[0];
1742 p[2] = tetrahedron / tetshift_[1];
1746 ttk::ImplicitTriangulation::getVertexEdgeA(
const SimplexId p[3],
1747 const int id)
const {
1751 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1753 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1754 + p[2] * eshift_[3];
1756 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1757 + p[2] * eshift_[5];
1759 return esetshift_[3] + p[0] + p[1] * eshift_[8]
1760 + p[2] * eshift_[9];
1766 ttk::ImplicitTriangulation::getVertexEdgeB(
const SimplexId p[3],
1767 const int id)
const {
1771 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1773 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
1776 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1777 + p[2] * eshift_[3];
1779 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
1782 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1783 + p[2] * eshift_[5];
1785 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
1788 return esetshift_[3] + p[0] + p[1] * eshift_[8]
1789 + p[2] * eshift_[9];
1795 ttk::ImplicitTriangulation::getVertexEdgeC(
const SimplexId p[3],
1796 const int id)
const {
1800 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1801 + p[2] * eshift_[3];
1803 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
1804 + p[2] * eshift_[7];
1806 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1808 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1809 + p[2] * eshift_[5];
1815 ttk::ImplicitTriangulation::getVertexEdgeD(
const SimplexId p[3],
1816 const int id)
const {
1820 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1821 + p[2] * eshift_[3];
1823 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1825 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
1828 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1829 + p[2] * eshift_[5];
1835 ttk::ImplicitTriangulation::getVertexEdgeE(
const SimplexId p[3],
1836 const int id)
const {
1840 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1841 + (p[2] - 1) * eshift_[5];
1843 return esetshift_[4] + p[0] + p[1] * eshift_[10]
1844 + (p[2] - 1) * eshift_[11];
1846 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1848 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1849 + p[2] * eshift_[3];
1855 ttk::ImplicitTriangulation::getVertexEdgeF(
const SimplexId p[3],
1856 const int id)
const {
1860 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1861 + (p[2] - 1) * eshift_[5];
1863 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1865 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
1868 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1869 + p[2] * eshift_[3];
1875 ttk::ImplicitTriangulation::getVertexEdgeG(
const SimplexId p[3],
1876 const int id)
const {
1880 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
1881 + (p[2] - 1) * eshift_[9];
1883 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
1884 + (p[2] - 1) * eshift_[13];
1886 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1887 + (p[2] - 1) * eshift_[5];
1889 return esetshift_[4] + p[0] + p[1] * eshift_[10]
1890 + (p[2] - 1) * eshift_[11];
1892 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1893 + p[2] * eshift_[3];
1895 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
1896 + p[2] * eshift_[7];
1898 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1904 ttk::ImplicitTriangulation::getVertexEdgeH(
const SimplexId p[3],
1905 const int id)
const {
1909 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
1910 + (p[2] - 1) * eshift_[9];
1912 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1913 + (p[2] - 1) * eshift_[5];
1915 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1916 + p[2] * eshift_[3];
1918 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1924 ttk::ImplicitTriangulation::getVertexEdgeAB(
const SimplexId p[3],
1925 const int id)
const {
1929 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1931 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
1934 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1935 + p[2] * eshift_[3];
1937 return esetshift_[4] + p[0] + p[1] * eshift_[11] + p[2] * eshift_[12]
1940 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1941 + p[2] * eshift_[5];
1943 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
1946 return esetshift_[3] + p[0] + p[1] * eshift_[8]
1947 + p[2] * eshift_[9];
1949 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1955 ttk::ImplicitTriangulation::getVertexEdgeCD(
const SimplexId p[3],
1956 const int id)
const {
1960 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
1961 + p[2] * eshift_[3];
1963 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1965 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
1968 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1969 + p[2] * eshift_[5];
1971 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
1972 + p[2] * eshift_[7];
1974 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
1980 ttk::ImplicitTriangulation::getVertexEdgeEF(
const SimplexId p[3],
1981 const int id)
const {
1985 return esetshift_[1] + p[0] + p[1] * eshift_[4]
1986 + (p[2] - 1) * eshift_[5];
1988 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
1990 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
1993 return esetshift_[0] + p[0] + p[1] * eshift_[2]
1994 + p[2] * eshift_[3];
1996 return esetshift_[4] + p[0] + p[1] * eshift_[10]
1997 + (p[2] - 1) * eshift_[11];
1999 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2005 ttk::ImplicitTriangulation::getVertexEdgeGH(
const SimplexId p[3],
2006 const int id)
const {
2010 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2011 + (p[2] - 1) * eshift_[9];
2013 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2014 + (p[2] - 1) * eshift_[13];
2016 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2017 + (p[2] - 1) * eshift_[5];
2019 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2020 + (p[2] - 1) * eshift_[11];
2022 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2023 + p[2] * eshift_[3];
2025 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2026 + p[2] * eshift_[7];
2028 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2030 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2036 ttk::ImplicitTriangulation::getVertexEdgeAC(
const SimplexId p[3],
2037 const int id)
const {
2041 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2042 + p[2] * eshift_[3];
2044 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2045 + p[2] * eshift_[7];
2047 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2049 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2050 + p[2] * eshift_[5];
2052 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2053 + p[2] * eshift_[3];
2055 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2056 + p[2] * eshift_[9];
2062 ttk::ImplicitTriangulation::getVertexEdgeBD(
const SimplexId p[3],
2063 const int id)
const {
2067 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2069 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2072 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2073 + p[2] * eshift_[3];
2075 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2078 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2079 + p[2] * eshift_[5];
2081 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
2084 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2085 + p[2] * eshift_[9];
2087 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2088 + p[2] * eshift_[3];
2094 ttk::ImplicitTriangulation::getVertexEdgeEG(
const SimplexId p[3],
2095 const int id)
const {
2099 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2100 + (p[2] - 1) * eshift_[9];
2102 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2103 + (p[2] - 1) * eshift_[13];
2105 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2106 + (p[2] - 1) * eshift_[5];
2108 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2109 + (p[2] - 1) * eshift_[11];
2111 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2112 + p[2] * eshift_[3];
2114 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2115 + p[2] * eshift_[7];
2117 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2119 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2120 + p[2] * eshift_[3];
2126 ttk::ImplicitTriangulation::getVertexEdgeFH(
const SimplexId p[3],
2127 const int id)
const {
2131 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2132 + (p[2] - 1) * eshift_[5];
2134 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2136 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2139 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2140 + p[2] * eshift_[3];
2142 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2143 + (p[2] - 1) * eshift_[9];
2145 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2146 + p[2] * eshift_[3];
2152 ttk::ImplicitTriangulation::getVertexEdgeAE(
const SimplexId p[3],
2153 const int id)
const {
2157 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2159 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2160 + p[2] * eshift_[3];
2162 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2163 + p[2] * eshift_[5];
2165 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2166 + p[2] * eshift_[9];
2168 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2169 + (p[2] - 1) * eshift_[5];
2171 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2172 + (p[2] - 1) * eshift_[11];
2178 ttk::ImplicitTriangulation::getVertexEdgeBF(
const SimplexId p[3],
2179 const int id)
const {
2183 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2185 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2188 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2189 + p[2] * eshift_[3];
2191 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2194 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2195 + p[2] * eshift_[5];
2197 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
2200 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2201 + p[2] * eshift_[9];
2203 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2204 + (p[2] - 1) * eshift_[5];
2210 ttk::ImplicitTriangulation::getVertexEdgeCG(
const SimplexId p[3],
2211 const int id)
const {
2215 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2216 + (p[2] - 1) * eshift_[9];
2218 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2219 + (p[2] - 1) * eshift_[13];
2221 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2222 + (p[2] - 1) * eshift_[5];
2224 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2225 + (p[2] - 1) * eshift_[11];
2227 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2228 + p[2] * eshift_[3];
2230 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2231 + p[2] * eshift_[7];
2233 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2235 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2236 + p[2] * eshift_[5];
2242 ttk::ImplicitTriangulation::getVertexEdgeDH(
const SimplexId p[3],
2243 const int id)
const {
2247 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2248 + p[2] * eshift_[3];
2250 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2252 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2255 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2256 + p[2] * eshift_[5];
2258 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2259 + (p[2] - 1) * eshift_[9];
2261 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2262 + (p[2] - 1) * eshift_[5];
2268 ttk::ImplicitTriangulation::getVertexEdgeABDC(
const SimplexId p[3],
2269 const int id)
const {
2273 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2275 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2278 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2279 + p[2] * eshift_[3];
2281 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2284 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2285 + p[2] * eshift_[5];
2287 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
2290 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2291 + p[2] * eshift_[9];
2293 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2294 + p[2] * eshift_[3];
2296 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2297 + p[2] * eshift_[7];
2299 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2305 ttk::ImplicitTriangulation::getVertexEdgeEFHG(
const SimplexId p[3],
2306 const int id)
const {
2310 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2311 + (p[2] - 1) * eshift_[9];
2313 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2314 + (p[2] - 1) * eshift_[13];
2316 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2317 + (p[2] - 1) * eshift_[5];
2319 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2320 + (p[2] - 1) * eshift_[11];
2322 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2323 + p[2] * eshift_[3];
2325 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2326 + p[2] * eshift_[7];
2328 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2330 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2332 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2335 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2336 + p[2] * eshift_[3];
2342 ttk::ImplicitTriangulation::getVertexEdgeAEGC(
const SimplexId p[3],
2343 const int id)
const {
2347 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2348 + (p[2] - 1) * eshift_[9];
2350 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2351 + (p[2] - 1) * eshift_[13];
2353 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2354 + (p[2] - 1) * eshift_[5];
2356 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2357 + (p[2] - 1) * eshift_[11];
2359 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2360 + p[2] * eshift_[3];
2362 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2363 + p[2] * eshift_[7];
2365 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2367 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2368 + p[2] * eshift_[3];
2370 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2371 + p[2] * eshift_[9];
2373 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2374 + p[2] * eshift_[5];
2380 ttk::ImplicitTriangulation::getVertexEdgeBFHD(
const SimplexId p[3],
2381 const int id)
const {
2385 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2387 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2390 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2391 + p[2] * eshift_[3];
2393 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2396 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2397 + p[2] * eshift_[5];
2399 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
2402 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2403 + p[2] * eshift_[9];
2405 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2406 + (p[2] - 1) * eshift_[5];
2408 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2409 + (p[2] - 1) * eshift_[9];
2411 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2412 + p[2] * eshift_[3];
2418 ttk::ImplicitTriangulation::getVertexEdgeAEFB(
const SimplexId p[3],
2419 const int id)
const {
2423 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2425 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2428 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2429 + p[2] * eshift_[3];
2431 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2434 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2435 + p[2] * eshift_[5];
2437 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
2440 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2441 + p[2] * eshift_[9];
2443 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2445 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2446 + (p[2] - 1) * eshift_[11];
2448 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2449 + (p[2] - 1) * eshift_[5];
2455 ttk::ImplicitTriangulation::getVertexEdgeGHDC(
const SimplexId p[3],
2456 const int id)
const {
2460 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2461 + (p[2] - 1) * eshift_[9];
2463 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2464 + (p[2] - 1) * eshift_[13];
2466 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2467 + (p[2] - 1) * eshift_[5];
2469 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2470 + (p[2] - 1) * eshift_[11];
2472 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2473 + p[2] * eshift_[3];
2475 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2476 + p[2] * eshift_[7];
2478 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2480 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2482 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2485 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2486 + p[2] * eshift_[5];
2492 ttk::ImplicitTriangulation::getVertexEdgeABCDEFGH(
const SimplexId p[3],
2493 const int id)
const {
2497 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
2498 + (p[2] - 1) * eshift_[9];
2500 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
2501 + (p[2] - 1) * eshift_[13];
2503 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2504 + (p[2] - 1) * eshift_[5];
2506 return esetshift_[4] + p[0] + p[1] * eshift_[10]
2507 + (p[2] - 1) * eshift_[11];
2509 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
2510 + p[2] * eshift_[3];
2512 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
2513 + p[2] * eshift_[7];
2515 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
2517 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11]
2520 return esetshift_[1] + p[0] + p[1] * eshift_[4]
2521 + p[2] * eshift_[5];
2523 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1] - 1;
2525 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7]
2528 return esetshift_[0] + p[0] + p[1] * eshift_[2]
2529 + p[2] * eshift_[3];
2531 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13]
2534 return esetshift_[3] + p[0] + p[1] * eshift_[8]
2535 + p[2] * eshift_[9];
2541 ttk::ImplicitTriangulation::getVertexTriangleA(
const SimplexId [3],
2542 const int id)
const {
2547 return tsetshift_[0];
2549 return tsetshift_[1];
2551 return tsetshift_[3];
2553 return tsetshift_[1] + 1;
2559 ttk::ImplicitTriangulation::getVertexTriangleB(
const SimplexId p[3],
2560 const int id)
const {
2563 return (p[0] - 1) * 2 + 1;
2565 return tsetshift_[4] + (p[0] - 1) * 2;
2567 return tsetshift_[2] + (p[0] - 1) * 2;
2569 return tsetshift_[3] + (p[0] - 1) * 2 + 1;
2571 return tsetshift_[1] + p[0] * 2;
2573 return tsetshift_[1] + p[0] * 2 + 1;
2575 return tsetshift_[4] + (p[0] - 1) * 2 + 1;
2577 return tsetshift_[0] + (p[0] - 1) * 2 + 1;
2579 return tsetshift_[2] + (p[0] - 1) * 2 + 1;
2581 return tsetshift_[3] + (p[0] - 1) * 2;
2583 return tsetshift_[0] + (p[0] - 1) * 2;
2585 return (p[0] - 1) * 2;
2591 ttk::ImplicitTriangulation::getVertexTriangleC(
const SimplexId p[3],
2592 const int id)
const {
2595 return (p[1] - 1) * tshift_[0];
2597 return (p[1] - 1) * tshift_[0] + 1;
2599 return tsetshift_[4] + (p[1] - 1) * tshift_[10];
2601 return tsetshift_[0] + p[1] * tshift_[2];
2603 return tsetshift_[1] + (p[1] - 1) * tshift_[4];
2609 ttk::ImplicitTriangulation::getVertexTriangleD(
const SimplexId p[3],
2610 const int id)
const {
2613 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
2615 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6];
2617 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2];
2619 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4];
2621 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2] + 1;
2627 ttk::ImplicitTriangulation::getVertexTriangleE(
const SimplexId p[3],
2628 const int id)
const {
2631 return tsetshift_[0] + (p[2] - 1) * tshift_[3];
2633 return tsetshift_[2] + (p[2] - 1) * tshift_[7] + 1;
2635 return tsetshift_[1] + (p[2] - 1) * tshift_[5] + 1;
2637 return p[2] * tshift_[1];
2639 return tsetshift_[0] + (p[2] - 1) * tshift_[3] + 1;
2645 ttk::ImplicitTriangulation::getVertexTriangleF(
const SimplexId p[3],
2646 const int id)
const {
2649 return tsetshift_[0] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[3] + 1;
2651 return (p[0] - 1) * 2 + p[2] * tshift_[1];
2653 return (p[0] - 1) * 2 + p[2] * tshift_[1] + 1;
2655 return tsetshift_[4] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[11] + 1;
2657 return tsetshift_[1] + p[0] * 2 + (p[2] - 1) * tshift_[5] + 1;
2663 ttk::ImplicitTriangulation::getVertexTriangleG(
const SimplexId p[3],
2664 const int id)
const {
2667 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7];
2669 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7]
2672 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5];
2674 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5]
2677 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9];
2679 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9]
2682 return tsetshift_[4] + (p[1] - 1) * tshift_[10]
2683 + (p[2] - 1) * tshift_[11];
2685 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + (p[2] - 1) * tshift_[11]
2688 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
2690 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2692 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3];
2694 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3] + 1;
2700 ttk::ImplicitTriangulation::getVertexTriangleH(
const SimplexId p[3],
2701 const int id)
const {
2704 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
2705 + (p[2] - 1) * tshift_[9] + 1;
2707 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2709 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2710 + (p[2] - 1) * tshift_[5];
2712 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2713 + (p[2] - 1) * tshift_[5] + 1;
2715 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
2716 + (p[2] - 1) * tshift_[3] + 1;
2722 ttk::ImplicitTriangulation::getVertexTriangleAB(
const SimplexId p[3],
2723 const int id)
const {
2726 return (p[0] - 1) * 2 + 1;
2728 return tsetshift_[4] + (p[0] - 1) * 2;
2730 return tsetshift_[2] + (p[0] - 1) * 2;
2732 return tsetshift_[3] + (p[0] - 1) * 2 + 1;
2734 return tsetshift_[1] + p[0] * 2;
2736 return tsetshift_[1] + p[0] * 2 + 1;
2738 return tsetshift_[4] + (p[0] - 1) * 2 + 1;
2740 return tsetshift_[0] + (p[0] - 1) * 2 + 1;
2742 return tsetshift_[2] + (p[0] - 1) * 2 + 1;
2744 return tsetshift_[3] + (p[0] - 1) * 2;
2746 return tsetshift_[0] + (p[0] - 1) * 2;
2748 return (p[0] - 1) * 2;
2752 return tsetshift_[0] + p[0] * 2;
2754 return tsetshift_[3] + p[0] * 2;
2760 ttk::ImplicitTriangulation::getVertexTriangleCD(
const SimplexId p[3],
2761 const int id)
const {
2764 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
2766 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6];
2768 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2];
2770 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4];
2772 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2] + 1;
2774 return p[0] * 2 + (p[1] - 1) * tshift_[0];
2776 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
2778 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10];
2780 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2];
2786 ttk::ImplicitTriangulation::getVertexTriangleEF(
const SimplexId p[3],
2787 const int id)
const {
2790 return tsetshift_[0] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[3] + 1;
2792 return (p[0] - 1) * 2 + p[2] * tshift_[1];
2794 return (p[0] - 1) * 2 + p[2] * tshift_[1] + 1;
2796 return tsetshift_[4] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[11] + 1;
2798 return tsetshift_[1] + p[0] * 2 + (p[2] - 1) * tshift_[5] + 1;
2800 return p[0] * 2 + tsetshift_[0] + (p[2] - 1) * tshift_[3];
2802 return p[0] * 2 + tsetshift_[2] + (p[2] - 1) * tshift_[7] + 1;
2804 return p[0] * 2 + p[2] * tshift_[1];
2806 return p[0] * 2 + tsetshift_[0] + (p[2] - 1) * tshift_[3] + 1;
2812 ttk::ImplicitTriangulation::getVertexTriangleGH(
const SimplexId p[3],
2813 const int id)
const {
2816 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
2817 + (p[2] - 1) * tshift_[9] + 1;
2819 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2821 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2822 + (p[2] - 1) * tshift_[5];
2824 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2825 + (p[2] - 1) * tshift_[5] + 1;
2827 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
2828 + (p[2] - 1) * tshift_[3] + 1;
2830 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
2831 + (p[2] - 1) * tshift_[7];
2833 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
2834 + (p[2] - 1) * tshift_[7] + 1;
2836 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
2837 + (p[2] - 1) * tshift_[9];
2839 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
2840 + (p[2] - 1) * tshift_[9] + 1;
2842 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
2843 + (p[2] - 1) * tshift_[11];
2845 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
2846 + (p[2] - 1) * tshift_[11] + 1;
2848 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
2850 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2852 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
2853 + (p[2] - 1) * tshift_[3];
2855 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
2856 + (p[2] - 1) * tshift_[3] + 1;
2862 ttk::ImplicitTriangulation::getVertexTriangleAC(
const SimplexId p[3],
2863 const int id)
const {
2866 return (p[1] - 1) * tshift_[0];
2868 return (p[1] - 1) * tshift_[0] + 1;
2870 return tsetshift_[4] + (p[1] - 1) * tshift_[10];
2872 return tsetshift_[0] + p[1] * tshift_[2];
2874 return tsetshift_[1] + (p[1] - 1) * tshift_[4];
2876 return p[1] * tshift_[0];
2878 return tsetshift_[1] + p[1] * tshift_[4];
2880 return tsetshift_[3] + p[1] * tshift_[8];
2882 return tsetshift_[1] + p[1] * tshift_[4] + 1;
2888 ttk::ImplicitTriangulation::getVertexTriangleBD(
const SimplexId p[3],
2889 const int id)
const {
2892 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
2894 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6];
2896 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2];
2898 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4];
2900 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2] + 1;
2902 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
2904 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10];
2906 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6];
2908 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8] + 1;
2910 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4];
2912 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + 1;
2914 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10] + 1;
2916 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6] + 1;
2918 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8];
2920 return (p[0] - 1) * 2 + p[1] * tshift_[0];
2926 ttk::ImplicitTriangulation::getVertexTriangleEG(
const SimplexId p[3],
2927 const int id)
const {
2930 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7];
2932 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7]
2935 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5];
2937 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5]
2940 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9];
2942 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9]
2945 return tsetshift_[4] + (p[1] - 1) * tshift_[10]
2946 + (p[2] - 1) * tshift_[11];
2948 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + (p[2] - 1) * tshift_[11]
2951 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
2953 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2955 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3];
2957 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3] + 1;
2959 return tsetshift_[2] + p[1] * tshift_[6] + (p[2] - 1) * tshift_[7] + 1;
2961 return tsetshift_[1] + p[1] * tshift_[4] + (p[2] - 1) * tshift_[5] + 1;
2963 return p[1] * tshift_[0] + p[2] * tshift_[1];
2969 ttk::ImplicitTriangulation::getVertexTriangleFH(
const SimplexId p[3],
2970 const int id)
const {
2973 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
2974 + (p[2] - 1) * tshift_[9] + 1;
2976 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
2978 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2979 + (p[2] - 1) * tshift_[5];
2981 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
2982 + (p[2] - 1) * tshift_[5] + 1;
2984 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
2985 + (p[2] - 1) * tshift_[3] + 1;
2987 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
2989 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
2991 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
2992 + (p[2] - 1) * tshift_[11] + 1;
2994 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
2995 + (p[2] - 1) * tshift_[5] + 1;
3001 ttk::ImplicitTriangulation::getVertexTriangleAE(
const SimplexId p[3],
3002 const int id)
const {
3005 return tsetshift_[0] + (p[2] - 1) * tshift_[3];
3007 return tsetshift_[2] + (p[2] - 1) * tshift_[7] + 1;
3009 return tsetshift_[1] + (p[2] - 1) * tshift_[5] + 1;
3011 return p[2] * tshift_[1];
3013 return tsetshift_[0] + (p[2] - 1) * tshift_[3] + 1;
3015 return tsetshift_[0] + p[2] * tshift_[3];
3017 return tsetshift_[1] + p[2] * tshift_[5];
3019 return tsetshift_[3] + p[2] * tshift_[9];
3021 return tsetshift_[1] + p[2] * tshift_[5] + 1;
3027 ttk::ImplicitTriangulation::getVertexTriangleBF(
const SimplexId p[3],
3028 const int id)
const {
3031 return tsetshift_[0] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[3] + 1;
3033 return (p[0] - 1) * 2 + p[2] * tshift_[1];
3035 return (p[0] - 1) * 2 + p[2] * tshift_[1] + 1;
3037 return tsetshift_[4] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[11] + 1;
3039 return tsetshift_[1] + p[0] * 2 + (p[2] - 1) * tshift_[5] + 1;
3041 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11];
3043 return tsetshift_[2] + (p[0] - 1) * 2 + p[2] * tshift_[7];
3045 return tsetshift_[3] + (p[0] - 1) * 2 + p[2] * tshift_[9] + 1;
3047 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5];
3049 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5] + 1;
3051 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11] + 1;
3053 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3] + 1;
3055 return tsetshift_[2] + (p[0] - 1) * 2 + p[2] * tshift_[7] + 1;
3057 return tsetshift_[3] + (p[0] - 1) * 2 + p[2] * tshift_[9];
3059 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3];
3065 ttk::ImplicitTriangulation::getVertexTriangleCG(
const SimplexId p[3],
3066 const int id)
const {
3069 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7];
3071 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7]
3074 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5];
3076 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5]
3079 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9];
3081 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9]
3084 return tsetshift_[4] + (p[1] - 1) * tshift_[10]
3085 + (p[2] - 1) * tshift_[11];
3087 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + (p[2] - 1) * tshift_[11]
3090 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
3092 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3094 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3];
3096 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3] + 1;
3098 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + p[2] * tshift_[11];
3100 return tsetshift_[0] + p[1] * tshift_[2] + p[2] * tshift_[3];
3102 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + p[2] * tshift_[5];
3108 ttk::ImplicitTriangulation::getVertexTriangleDH(
const SimplexId p[3],
3109 const int id)
const {
3112 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3113 + (p[2] - 1) * tshift_[9] + 1;
3115 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3117 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3118 + (p[2] - 1) * tshift_[5];
3120 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3121 + (p[2] - 1) * tshift_[5] + 1;
3123 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3124 + (p[2] - 1) * tshift_[3] + 1;
3126 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3127 + p[2] * tshift_[7];
3129 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3130 + p[2] * tshift_[3];
3132 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3133 + p[2] * tshift_[5];
3135 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3136 + p[2] * tshift_[3] + 1;
3142 ttk::ImplicitTriangulation::getVertexTriangleABDC(
const SimplexId p[3],
3143 const int id)
const {
3146 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
3148 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10];
3150 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6];
3152 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8] + 1;
3154 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4];
3156 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + 1;
3158 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10] + 1;
3160 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2] + 1;
3162 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6] + 1;
3164 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8];
3166 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2];
3168 return (p[0] - 1) * 2 + p[1] * tshift_[0];
3170 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + 1;
3172 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6];
3174 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4];
3176 return p[0] * 2 + (p[1] - 1) * tshift_[0];
3178 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
3180 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10];
3182 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2];
3184 return p[0] * 2 + p[1] * tshift_[0];
3186 return p[0] * 2 + tsetshift_[3] + p[1] * tshift_[8];
3192 ttk::ImplicitTriangulation::getVertexTriangleEFHG(
const SimplexId p[3],
3193 const int id)
const {
3196 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3197 + (p[2] - 1) * tshift_[7];
3199 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3200 + (p[2] - 1) * tshift_[7] + 1;
3202 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3203 + (p[2] - 1) * tshift_[5];
3205 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3206 + (p[2] - 1) * tshift_[5] + 1;
3208 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3209 + (p[2] - 1) * tshift_[9];
3211 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3212 + (p[2] - 1) * tshift_[9] + 1;
3214 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3215 + (p[2] - 1) * tshift_[11];
3217 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3218 + (p[2] - 1) * tshift_[11] + 1;
3220 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
3222 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3224 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3225 + (p[2] - 1) * tshift_[3];
3227 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3228 + (p[2] - 1) * tshift_[3] + 1;
3230 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3231 + (p[2] - 1) * tshift_[9] + 1;
3233 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3235 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3236 + (p[2] - 1) * tshift_[3] + 1;
3238 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
3240 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
3242 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3243 + (p[2] - 1) * tshift_[11] + 1;
3245 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
3246 + (p[2] - 1) * tshift_[5] + 1;
3248 return p[0] * 2 + tsetshift_[2] + p[1] * tshift_[6]
3249 + (p[2] - 1) * tshift_[7] + 1;
3251 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
3257 ttk::ImplicitTriangulation::getVertexTriangleAEGC(
const SimplexId p[3],
3258 const int id)
const {
3261 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7];
3263 return tsetshift_[2] + (p[1] - 1) * tshift_[6] + (p[2] - 1) * tshift_[7]
3266 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5];
3268 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + (p[2] - 1) * tshift_[5]
3271 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9];
3273 return tsetshift_[3] + (p[1] - 1) * tshift_[8] + (p[2] - 1) * tshift_[9]
3276 return tsetshift_[4] + (p[1] - 1) * tshift_[10]
3277 + (p[2] - 1) * tshift_[11];
3279 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + (p[2] - 1) * tshift_[11]
3282 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
3284 return (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3286 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3];
3288 return tsetshift_[0] + p[1] * tshift_[2] + (p[2] - 1) * tshift_[3] + 1;
3290 return tsetshift_[2] + p[1] * tshift_[6] + (p[2] - 1) * tshift_[7] + 1;
3292 return tsetshift_[1] + p[1] * tshift_[4] + (p[2] - 1) * tshift_[5] + 1;
3294 return p[1] * tshift_[0] + p[2] * tshift_[1];
3296 return tsetshift_[0] + p[1] * tshift_[2] + p[2] * tshift_[3];
3298 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5];
3300 return tsetshift_[3] + p[1] * tshift_[8] + p[2] * tshift_[9];
3302 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5] + 1;
3304 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + p[2] * tshift_[11];
3306 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + p[2] * tshift_[5];
3312 ttk::ImplicitTriangulation::getVertexTriangleBFHD(
const SimplexId p[3],
3313 const int id)
const {
3316 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
3318 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3319 + p[2] * tshift_[11];
3321 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3322 + p[2] * tshift_[7];
3324 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3325 + p[2] * tshift_[9] + 1;
3327 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
3329 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
3332 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3333 + p[2] * tshift_[11] + 1;
3335 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3336 + p[2] * tshift_[3] + 1;
3338 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3339 + p[2] * tshift_[7] + 1;
3341 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3342 + p[2] * tshift_[9];
3344 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3345 + p[2] * tshift_[3];
3347 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
3349 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3351 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3352 + p[2] * tshift_[7];
3354 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3355 + p[2] * tshift_[5];
3357 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3358 + (p[2] - 1) * tshift_[9] + 1;
3360 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3361 + (p[2] - 1) * tshift_[5];
3363 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3364 + (p[2] - 1) * tshift_[5] + 1;
3366 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3367 + (p[2] - 1) * tshift_[3] + 1;
3369 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3370 + (p[2] - 1) * tshift_[11] + 1;
3372 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
3373 + (p[2] - 1) * tshift_[5] + 1;
3379 ttk::ImplicitTriangulation::getVertexTriangleAEFB(
const SimplexId p[3],
3380 const int id)
const {
3383 return (p[0] - 1) * 2 + p[2] * tshift_[1] + 1;
3385 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11];
3387 return tsetshift_[2] + (p[0] - 1) * 2 + p[2] * tshift_[7];
3389 return tsetshift_[3] + (p[0] - 1) * 2 + p[2] * tshift_[9] + 1;
3391 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5];
3393 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5] + 1;
3395 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11] + 1;
3397 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3] + 1;
3399 return tsetshift_[2] + (p[0] - 1) * 2 + p[2] * tshift_[7] + 1;
3401 return tsetshift_[3] + (p[0] - 1) * 2 + p[2] * tshift_[9];
3403 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3];
3405 return (p[0] - 1) * 2 + p[2] * tshift_[1];
3407 return tsetshift_[0] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[3] + 1;
3409 return tsetshift_[4] + (p[0] - 1) * 2 + (p[2] - 1) * tshift_[11] + 1;
3411 return tsetshift_[1] + p[0] * 2 + (p[2] - 1) * tshift_[5] + 1;
3413 return p[0] * 2 + tsetshift_[0] + (p[2] - 1) * tshift_[3];
3415 return p[0] * 2 + tsetshift_[2] + (p[2] - 1) * tshift_[7] + 1;
3417 return p[0] * 2 + p[2] * tshift_[1];
3419 return p[0] * 2 + tsetshift_[0] + (p[2] - 1) * tshift_[3] + 1;
3421 return p[0] * 2 + tsetshift_[0] + p[2] * tshift_[3];
3423 return p[0] * 2 + tsetshift_[3] + p[2] * tshift_[9];
3429 ttk::ImplicitTriangulation::getVertexTriangleGHDC(
const SimplexId p[3],
3430 const int id)
const {
3433 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3434 + (p[2] - 1) * tshift_[7];
3436 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3437 + (p[2] - 1) * tshift_[7] + 1;
3439 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3440 + (p[2] - 1) * tshift_[5];
3442 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3443 + (p[2] - 1) * tshift_[5] + 1;
3445 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3446 + (p[2] - 1) * tshift_[9];
3448 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3449 + (p[2] - 1) * tshift_[9] + 1;
3451 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3452 + (p[2] - 1) * tshift_[11];
3454 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3455 + (p[2] - 1) * tshift_[11] + 1;
3457 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
3459 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3461 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3462 + (p[2] - 1) * tshift_[3];
3464 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3465 + (p[2] - 1) * tshift_[3] + 1;
3467 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3468 + (p[2] - 1) * tshift_[9] + 1;
3470 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3472 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3473 + (p[2] - 1) * tshift_[3] + 1;
3475 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3476 + p[2] * tshift_[7];
3478 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3479 + p[2] * tshift_[3];
3481 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3482 + p[2] * tshift_[5];
3484 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3485 + p[2] * tshift_[3] + 1;
3487 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3488 + p[2] * tshift_[11];
3490 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2] + p[2] * tshift_[3];
3496 ttk::ImplicitTriangulation::getVertexTriangleABCDEFGH(
const SimplexId p[3],
3497 const int id)
const {
3500 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
3502 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3503 + p[2] * tshift_[11];
3505 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3506 + p[2] * tshift_[7];
3508 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3509 + p[2] * tshift_[9] + 1;
3511 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
3513 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
3516 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3517 + p[2] * tshift_[11] + 1;
3519 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3520 + p[2] * tshift_[3] + 1;
3522 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3523 + p[2] * tshift_[7] + 1;
3525 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3526 + p[2] * tshift_[9];
3528 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3529 + p[2] * tshift_[3];
3531 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
3533 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3534 + (p[2] - 1) * tshift_[7];
3536 return p[0] * 2 + tsetshift_[2] + (p[1] - 1) * tshift_[6]
3537 + (p[2] - 1) * tshift_[7] + 1;
3539 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3540 + (p[2] - 1) * tshift_[5];
3542 return p[0] * 2 + tsetshift_[1] + (p[1] - 1) * tshift_[4]
3543 + (p[2] - 1) * tshift_[5] + 1;
3545 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3546 + (p[2] - 1) * tshift_[9];
3548 return p[0] * 2 + tsetshift_[3] + (p[1] - 1) * tshift_[8]
3549 + (p[2] - 1) * tshift_[9] + 1;
3551 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3552 + (p[2] - 1) * tshift_[11];
3554 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3555 + (p[2] - 1) * tshift_[11] + 1;
3557 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1];
3559 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3561 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3562 + (p[2] - 1) * tshift_[3];
3564 return p[0] * 2 + tsetshift_[0] + p[1] * tshift_[2]
3565 + (p[2] - 1) * tshift_[3] + 1;
3567 return (p[0] - 1) * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
3569 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3570 + p[2] * tshift_[7];
3572 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
3573 + p[2] * tshift_[5];
3575 return p[0] * 2 + tsetshift_[2] + p[1] * tshift_[6]
3576 + (p[2] - 1) * tshift_[7] + 1;
3578 return p[0] * 2 + tsetshift_[1] + p[1] * tshift_[4]
3579 + (p[2] - 1) * tshift_[5] + 1;
3581 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
3583 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3584 + (p[2] - 1) * tshift_[9] + 1;
3586 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
3587 + (p[2] - 1) * tshift_[3] + 1;
3589 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
3591 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
3593 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
3594 + (p[2] - 1) * tshift_[11] + 1;
3596 return p[0] * 2 + tsetshift_[4] + (p[1] - 1) * tshift_[10]
3597 + p[2] * tshift_[11];
3603 ttk::ImplicitTriangulation::getVertexLinkA(
const SimplexId p[3],
3604 const int id)
const {
3607 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3608 + p[2] * tshift_[11];
3610 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
3617 ttk::ImplicitTriangulation::getVertexLinkB(
const SimplexId p[3],
3618 const int id)
const {
3621 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3622 + p[2] * tshift_[5];
3624 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3625 + p[2] * tshift_[5] + 1;
3627 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3628 + p[2] * tshift_[3];
3630 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3631 + p[2] * tshift_[3] + 1;
3633 return (p[0] - 1) * 2 + p[1] * tshift_[0]
3634 + (p[2] + 1) * tshift_[1];
3636 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
3643 ttk::ImplicitTriangulation::getVertexLinkC(
const SimplexId p[3],
3644 const int id)
const {
3647 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
3648 + p[2] * tshift_[9];
3650 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
3651 + p[2] * tshift_[7];
3657 ttk::ImplicitTriangulation::getVertexLinkD(
const SimplexId p[3],
3658 const int id)
const {
3661 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3662 + p[2] * tshift_[11];
3664 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3665 + p[2] * tshift_[9] + 1;
3671 ttk::ImplicitTriangulation::getVertexLinkE(
const SimplexId p[3],
3672 const int id)
const {
3675 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
3676 + (p[2] - 1) * tshift_[9];
3678 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3679 + (p[2] - 1) * tshift_[11] + 1;
3685 ttk::ImplicitTriangulation::getVertexLinkF(
const SimplexId p[3],
3686 const int id)
const {
3689 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3690 + (p[2] - 1) * tshift_[7] + 1;
3692 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3693 + (p[2] - 1) * tshift_[9] + 1;
3699 ttk::ImplicitTriangulation::getVertexLinkG(
const SimplexId p[3],
3700 const int id)
const {
3703 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3704 + (p[2] - 1) * tshift_[5];
3706 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3707 + (p[2] - 1) * tshift_[5] + 1;
3709 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3710 + (p[2] - 1) * tshift_[3];
3712 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3713 + (p[2] - 1) * tshift_[3] + 1;
3715 return p[0] * 2 + (p[1] - 1) * tshift_[0]
3716 + (p[2] - 1) * tshift_[1];
3718 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
3725 ttk::ImplicitTriangulation::getVertexLinkH(
const SimplexId p[3],
3726 const int id)
const {
3729 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3730 + (p[2] - 1) * tshift_[11] + 1;
3732 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3733 + (p[2] - 1) * tshift_[7];
3739 ttk::ImplicitTriangulation::getVertexLinkAB(
const SimplexId p[3],
3740 const int id)
const {
3743 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3744 + p[2] * tshift_[11];
3746 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
3749 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3750 + p[2] * tshift_[5];
3752 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3753 + p[2] * tshift_[5] + 1;
3755 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3756 + p[2] * tshift_[3];
3758 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3759 + p[2] * tshift_[3] + 1;
3761 return (p[0] - 1) * 2 + p[1] * tshift_[0]
3762 + (p[2] + 1) * tshift_[1];
3764 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
3771 ttk::ImplicitTriangulation::getVertexLinkCD(
const SimplexId p[3],
3772 const int id)
const {
3775 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
3776 + p[2] * tshift_[9];
3778 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
3779 + p[2] * tshift_[7];
3781 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3782 + p[2] * tshift_[11];
3784 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3785 + p[2] * tshift_[9] + 1;
3791 ttk::ImplicitTriangulation::getVertexLinkEF(
const SimplexId p[3],
3792 const int id)
const {
3795 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
3796 + (p[2] - 1) * tshift_[9];
3798 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3799 + (p[2] - 1) * tshift_[11] + 1;
3801 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3802 + (p[2] - 1) * tshift_[7] + 1;
3804 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3805 + (p[2] - 1) * tshift_[9] + 1;
3811 ttk::ImplicitTriangulation::getVertexLinkGH(
const SimplexId p[3],
3812 const int id)
const {
3815 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3816 + (p[2] - 1) * tshift_[5];
3818 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3819 + (p[2] - 1) * tshift_[5] + 1;
3821 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3822 + (p[2] - 1) * tshift_[3];
3824 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3825 + (p[2] - 1) * tshift_[3] + 1;
3827 return p[0] * 2 + (p[1] - 1) * tshift_[0]
3828 + (p[2] - 1) * tshift_[1];
3830 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
3833 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3834 + (p[2] - 1) * tshift_[11] + 1;
3836 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3837 + (p[2] - 1) * tshift_[7];
3843 ttk::ImplicitTriangulation::getVertexLinkAC(
const SimplexId p[3],
3844 const int id)
const {
3847 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3848 + p[2] * tshift_[11];
3850 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
3853 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
3854 + p[2] * tshift_[9];
3856 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
3857 + p[2] * tshift_[7];
3863 ttk::ImplicitTriangulation::getVertexLinkBD(
const SimplexId p[3],
3864 const int id)
const {
3867 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3868 + p[2] * tshift_[5];
3870 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3871 + p[2] * tshift_[5] + 1;
3873 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3874 + p[2] * tshift_[3];
3876 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3877 + p[2] * tshift_[3] + 1;
3879 return (p[0] - 1) * 2 + p[1] * tshift_[0]
3880 + (p[2] + 1) * tshift_[1];
3882 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
3885 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3886 + p[2] * tshift_[11];
3888 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
3889 + p[2] * tshift_[9] + 1;
3895 ttk::ImplicitTriangulation::getVertexLinkEG(
const SimplexId p[3],
3896 const int id)
const {
3899 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
3900 + (p[2] - 1) * tshift_[9];
3902 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3903 + (p[2] - 1) * tshift_[11] + 1;
3905 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3906 + (p[2] - 1) * tshift_[5];
3908 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
3909 + (p[2] - 1) * tshift_[5] + 1;
3911 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3912 + (p[2] - 1) * tshift_[3];
3914 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
3915 + (p[2] - 1) * tshift_[3] + 1;
3917 return p[0] * 2 + (p[1] - 1) * tshift_[0]
3918 + (p[2] - 1) * tshift_[1];
3920 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
3927 ttk::ImplicitTriangulation::getVertexLinkFH(
const SimplexId p[3],
3928 const int id)
const {
3931 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3932 + (p[2] - 1) * tshift_[7] + 1;
3934 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3935 + (p[2] - 1) * tshift_[9] + 1;
3937 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
3938 + (p[2] - 1) * tshift_[11] + 1;
3940 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
3941 + (p[2] - 1) * tshift_[7];
3947 ttk::ImplicitTriangulation::getVertexLinkAE(
const SimplexId p[3],
3948 const int id)
const {
3951 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3952 + p[2] * tshift_[11];
3954 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
3957 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
3958 + (p[2] - 1) * tshift_[9];
3960 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
3961 + (p[2] - 1) * tshift_[11] + 1;
3967 ttk::ImplicitTriangulation::getVertexLinkBF(
const SimplexId p[3],
3968 const int id)
const {
3971 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3972 + p[2] * tshift_[5];
3974 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
3975 + p[2] * tshift_[5] + 1;
3977 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3978 + p[2] * tshift_[3];
3980 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
3981 + p[2] * tshift_[3] + 1;
3983 return (p[0] - 1) * 2 + p[1] * tshift_[0]
3984 + (p[2] + 1) * tshift_[1];
3986 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
3989 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
3990 + (p[2] - 1) * tshift_[7] + 1;
3992 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
3993 + (p[2] - 1) * tshift_[9] + 1;
3999 ttk::ImplicitTriangulation::getVertexLinkCG(
const SimplexId p[3],
4000 const int id)
const {
4003 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
4004 + p[2] * tshift_[9];
4006 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
4007 + p[2] * tshift_[7];
4009 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4010 + (p[2] - 1) * tshift_[5];
4012 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4013 + (p[2] - 1) * tshift_[5] + 1;
4015 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4016 + (p[2] - 1) * tshift_[3];
4018 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4019 + (p[2] - 1) * tshift_[3] + 1;
4021 return p[0] * 2 + (p[1] - 1) * tshift_[0]
4022 + (p[2] - 1) * tshift_[1];
4024 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
4031 ttk::ImplicitTriangulation::getVertexLinkDH(
const SimplexId p[3],
4032 const int id)
const {
4035 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4036 + p[2] * tshift_[11];
4038 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
4039 + p[2] * tshift_[9] + 1;
4041 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4042 + (p[2] - 1) * tshift_[11] + 1;
4044 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
4045 + (p[2] - 1) * tshift_[7];
4051 ttk::ImplicitTriangulation::getVertexLinkABDC(
const SimplexId p[3],
4052 const int id)
const {
4055 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4056 + p[2] * tshift_[11];
4058 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
4061 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4062 + p[2] * tshift_[5];
4064 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4065 + p[2] * tshift_[5] + 1;
4067 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4068 + p[2] * tshift_[3];
4070 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4071 + p[2] * tshift_[3] + 1;
4073 return (p[0] - 1) * 2 + p[1] * tshift_[0]
4074 + (p[2] + 1) * tshift_[1];
4076 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
4079 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4080 + p[2] * tshift_[11];
4082 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
4083 + p[2] * tshift_[9] + 1;
4085 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
4086 + p[2] * tshift_[9];
4088 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
4089 + p[2] * tshift_[7];
4095 ttk::ImplicitTriangulation::getVertexLinkEFHG(
const SimplexId p[3],
4096 const int id)
const {
4099 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
4100 + (p[2] - 1) * tshift_[9];
4102 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4103 + (p[2] - 1) * tshift_[11] + 1;
4105 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
4106 + (p[2] - 1) * tshift_[7] + 1;
4108 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
4109 + (p[2] - 1) * tshift_[9] + 1;
4111 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4112 + (p[2] - 1) * tshift_[11] + 1;
4114 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
4115 + (p[2] - 1) * tshift_[7];
4117 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4118 + (p[2] - 1) * tshift_[5];
4120 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4121 + (p[2] - 1) * tshift_[5] + 1;
4123 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4124 + (p[2] - 1) * tshift_[3];
4126 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4127 + (p[2] - 1) * tshift_[3] + 1;
4129 return p[0] * 2 + (p[1] - 1) * tshift_[0]
4130 + (p[2] - 1) * tshift_[1];
4132 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
4139 ttk::ImplicitTriangulation::getVertexLinkAEGC(
const SimplexId p[3],
4140 const int id)
const {
4143 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4144 + p[2] * tshift_[11];
4146 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
4149 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
4150 + (p[2] - 1) * tshift_[9];
4152 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4153 + (p[2] - 1) * tshift_[11] + 1;
4155 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4156 + (p[2] - 1) * tshift_[5];
4158 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4159 + (p[2] - 1) * tshift_[5] + 1;
4161 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4162 + (p[2] - 1) * tshift_[3];
4164 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4165 + (p[2] - 1) * tshift_[3] + 1;
4167 return p[0] * 2 + (p[1] - 1) * tshift_[0]
4168 + (p[2] - 1) * tshift_[1];
4170 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
4173 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
4174 + p[2] * tshift_[9];
4176 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
4177 + p[2] * tshift_[7];
4183 ttk::ImplicitTriangulation::getVertexLinkBFHD(
const SimplexId p[3],
4184 const int id)
const {
4187 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4188 + p[2] * tshift_[5];
4190 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4191 + p[2] * tshift_[5] + 1;
4193 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4194 + p[2] * tshift_[3];
4196 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4197 + p[2] * tshift_[3] + 1;
4199 return (p[0] - 1) * 2 + p[1] * tshift_[0]
4200 + (p[2] + 1) * tshift_[1];
4202 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
4205 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
4206 + (p[2] - 1) * tshift_[7] + 1;
4208 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
4209 + (p[2] - 1) * tshift_[9] + 1;
4211 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4212 + (p[2] - 1) * tshift_[11] + 1;
4214 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
4215 + (p[2] - 1) * tshift_[7];
4217 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4218 + p[2] * tshift_[11];
4220 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
4221 + p[2] * tshift_[9] + 1;
4227 ttk::ImplicitTriangulation::getVertexLinkAEFB(
const SimplexId p[3],
4228 const int id)
const {
4231 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4232 + p[2] * tshift_[11];
4234 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
4237 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
4238 + (p[2] - 1) * tshift_[9];
4240 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4241 + (p[2] - 1) * tshift_[11] + 1;
4243 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
4244 + (p[2] - 1) * tshift_[7] + 1;
4246 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
4247 + (p[2] - 1) * tshift_[9] + 1;
4249 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4250 + p[2] * tshift_[5];
4252 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4253 + p[2] * tshift_[5] + 1;
4255 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4256 + p[2] * tshift_[3];
4258 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4259 + p[2] * tshift_[3] + 1;
4261 return (p[0] - 1) * 2 + p[1] * tshift_[0]
4262 + (p[2] + 1) * tshift_[1];
4264 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
4271 ttk::ImplicitTriangulation::getVertexLinkGHDC(
const SimplexId p[3],
4272 const int id)
const {
4275 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4276 + (p[2] - 1) * tshift_[5];
4278 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4279 + (p[2] - 1) * tshift_[5] + 1;
4281 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4282 + (p[2] - 1) * tshift_[3];
4284 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4285 + (p[2] - 1) * tshift_[3] + 1;
4287 return p[0] * 2 + (p[1] - 1) * tshift_[0]
4288 + (p[2] - 1) * tshift_[1];
4290 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
4293 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4294 + (p[2] - 1) * tshift_[11] + 1;
4296 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
4297 + (p[2] - 1) * tshift_[7];
4299 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4300 + p[2] * tshift_[11];
4302 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
4303 + p[2] * tshift_[9] + 1;
4305 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
4306 + p[2] * tshift_[9];
4308 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
4309 + p[2] * tshift_[7];
4315 ttk::ImplicitTriangulation::getVertexLinkABCDEFGH(
const SimplexId p[3],
4316 const int id)
const {
4319 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4320 + p[2] * tshift_[11];
4322 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
4325 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4326 + p[2] * tshift_[5];
4328 return tsetshift_[1] + (p[0] - 1) * 2 + p[1] * tshift_[4]
4329 + p[2] * tshift_[5] + 1;
4331 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4332 + p[2] * tshift_[3];
4334 return tsetshift_[0] + (p[0] - 1) * 2 + (p[1] + 1) * tshift_[2]
4335 + p[2] * tshift_[3] + 1;
4337 return (p[0] - 1) * 2 + p[1] * tshift_[0]
4338 + (p[2] + 1) * tshift_[1];
4340 return (p[0] - 1) * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1]
4343 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
4344 + p[2] * tshift_[9];
4346 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
4347 + p[2] * tshift_[7];
4349 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4350 + p[2] * tshift_[11];
4352 return tsetshift_[3] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[8]
4353 + p[2] * tshift_[9] + 1;
4355 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8]
4356 + (p[2] - 1) * tshift_[9];
4358 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
4359 + (p[2] - 1) * tshift_[11] + 1;
4361 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
4362 + (p[2] - 1) * tshift_[7] + 1;
4364 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
4365 + (p[2] - 1) * tshift_[9] + 1;
4367 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4368 + (p[2] - 1) * tshift_[5];
4370 return tsetshift_[1] + (p[0] + 1) * 2 + (p[1] - 1) * tshift_[4]
4371 + (p[2] - 1) * tshift_[5] + 1;
4373 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4374 + (p[2] - 1) * tshift_[3];
4376 return tsetshift_[0] + p[0] * 2 + (p[1] - 1) * tshift_[2]
4377 + (p[2] - 1) * tshift_[3] + 1;
4379 return p[0] * 2 + (p[1] - 1) * tshift_[0]
4380 + (p[2] - 1) * tshift_[1];
4382 return p[0] * 2 + (p[1] - 1) * tshift_[0] + (p[2] - 1) * tshift_[1]
4385 return tsetshift_[4] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[10]
4386 + (p[2] - 1) * tshift_[11] + 1;
4388 return tsetshift_[2] + (p[0] - 1) * 2 + (p[1] - 1) * tshift_[6]
4389 + (p[2] - 1) * tshift_[7];
4395 ttk::ImplicitTriangulation::getVertexStarA(
const SimplexId p[3],
4396 const int id)
const {
4399 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
4401 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 2;
4407 ttk::ImplicitTriangulation::getVertexStarB(
const SimplexId p[3],
4408 const int id)
const {
4409 if(
id >= 0 &&
id <= 5)
4410 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + id;
4415 ttk::ImplicitTriangulation::getVertexStarC(
const SimplexId p[3],
4416 const int id)
const {
4419 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1];
4421 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4428 ttk::ImplicitTriangulation::getVertexStarD(
const SimplexId p[3],
4429 const int id)
const {
4432 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4435 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4442 ttk::ImplicitTriangulation::getVertexStarE(
const SimplexId p[3],
4443 const int id)
const {
4446 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4449 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4456 ttk::ImplicitTriangulation::getVertexStarF(
const SimplexId p[3],
4457 const int id)
const {
4460 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4463 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4470 ttk::ImplicitTriangulation::getVertexStarG(
const SimplexId p[3],
4471 const int id)
const {
4472 if(
id >= 0 &&
id <= 5)
4473 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4479 ttk::ImplicitTriangulation::getVertexStarH(
const SimplexId p[3],
4480 const int id)
const {
4483 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4484 + (p[2] - 1) * tetshift_[1] + 4;
4486 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4487 + (p[2] - 1) * tetshift_[1] + 5;
4493 ttk::ImplicitTriangulation::getVertexStarAB(
const SimplexId p[3],
4494 const int id)
const {
4495 if(
id >= 0 &&
id <= 5)
4496 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4500 return p[0] * 6 + p[1] * tetshift_[0]
4501 + p[2] * tetshift_[1];
4503 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4510 ttk::ImplicitTriangulation::getVertexStarCD(
const SimplexId p[3],
4511 const int id)
const {
4514 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4517 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4520 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4521 + p[2] * tetshift_[1];
4523 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4530 ttk::ImplicitTriangulation::getVertexStarEF(
const SimplexId p[3],
4531 const int id)
const {
4534 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4537 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4540 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4543 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4550 ttk::ImplicitTriangulation::getVertexStarGH(
const SimplexId p[3],
4551 const int id)
const {
4552 if(
id >= 0 &&
id <= 5)
4553 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4557 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4558 + (p[2] - 1) * tetshift_[1] + 4;
4560 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4561 + (p[2] - 1) * tetshift_[1] + 5;
4567 ttk::ImplicitTriangulation::getVertexStarAC(
const SimplexId p[3],
4568 const int id)
const {
4571 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4572 + p[2] * tetshift_[1];
4574 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4577 return p[0] * 6 + p[1] * tetshift_[0]
4578 + p[2] * tetshift_[1];
4580 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4587 ttk::ImplicitTriangulation::getVertexStarBD(
const SimplexId p[3],
4588 const int id)
const {
4589 if(
id >= 0 &&
id <= 5)
4590 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4594 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4597 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4604 ttk::ImplicitTriangulation::getVertexStarEG(
const SimplexId p[3],
4605 const int id)
const {
4606 if(
id >= 0 &&
id <= 5)
4607 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4611 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4614 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4621 ttk::ImplicitTriangulation::getVertexStarFH(
const SimplexId p[3],
4622 const int id)
const {
4625 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4626 + (p[2] - 1) * tetshift_[1] + 4;
4628 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4629 + (p[2] - 1) * tetshift_[1] + 5;
4631 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4634 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4641 ttk::ImplicitTriangulation::getVertexStarAE(
const SimplexId p[3],
4642 const int id)
const {
4645 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4648 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4651 return p[0] * 6 + p[1] * tetshift_[0]
4652 + p[2] * tetshift_[1];
4654 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4661 ttk::ImplicitTriangulation::getVertexStarBF(
const SimplexId p[3],
4662 const int id)
const {
4663 if(
id >= 0 &&
id <= 5)
4664 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4668 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4671 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4678 ttk::ImplicitTriangulation::getVertexStarCG(
const SimplexId p[3],
4679 const int id)
const {
4680 if(
id >= 0 &&
id <= 5)
4681 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4685 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4686 + p[2] * tetshift_[1];
4688 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4695 ttk::ImplicitTriangulation::getVertexStarDH(
const SimplexId p[3],
4696 const int id)
const {
4699 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4700 + (p[2] - 1) * tetshift_[1] + 4;
4702 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4703 + (p[2] - 1) * tetshift_[1] + 5;
4705 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4708 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4715 ttk::ImplicitTriangulation::getVertexStarABDC(
const SimplexId p[3],
4716 const int id)
const {
4717 if(
id >= 0 &&
id <= 5)
4718 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4722 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4725 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4728 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4729 + p[2] * tetshift_[1];
4731 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4734 return p[0] * 6 + p[1] * tetshift_[0]
4735 + p[2] * tetshift_[1];
4737 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4744 ttk::ImplicitTriangulation::getVertexStarEFHG(
const SimplexId p[3],
4745 const int id)
const {
4746 if(
id >= 0 &&
id <= 5)
4747 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4751 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4752 + (p[2] - 1) * tetshift_[1] + 4;
4754 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4755 + (p[2] - 1) * tetshift_[1] + 5;
4757 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4760 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4763 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4766 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4773 ttk::ImplicitTriangulation::getVertexStarAEGC(
const SimplexId p[3],
4774 const int id)
const {
4775 if(
id >= 0 &&
id <= 5)
4776 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4780 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4781 + p[2] * tetshift_[1];
4783 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4786 return p[0] * 6 + p[1] * tetshift_[0]
4787 + p[2] * tetshift_[1];
4789 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4792 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4795 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4802 ttk::ImplicitTriangulation::getVertexStarBFHD(
const SimplexId p[3],
4803 const int id)
const {
4804 if(
id >= 0 &&
id <= 5)
4805 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4809 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4812 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4815 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4816 + (p[2] - 1) * tetshift_[1] + 4;
4818 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4819 + (p[2] - 1) * tetshift_[1] + 5;
4821 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4824 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4831 ttk::ImplicitTriangulation::getVertexStarAEFB(
const SimplexId p[3],
4832 const int id)
const {
4833 if(
id >= 0 &&
id <= 5)
4834 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4838 return p[0] * 6 + p[1] * tetshift_[0]
4839 + p[2] * tetshift_[1];
4841 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4844 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4847 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4850 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4853 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4860 ttk::ImplicitTriangulation::getVertexStarGHDC(
const SimplexId p[3],
4861 const int id)
const {
4862 if(
id >= 0 &&
id <= 5)
4863 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4867 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4868 + (p[2] - 1) * tetshift_[1] + 4;
4870 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4871 + (p[2] - 1) * tetshift_[1] + 5;
4873 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4874 + p[2] * tetshift_[1];
4876 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4879 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4882 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4889 ttk::ImplicitTriangulation::getVertexStarABCDEFGH(
const SimplexId p[3],
4890 const int id)
const {
4891 if(
id >= 0 &&
id <= 5)
4892 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4894 if(
id >= 6 &&
id <= 11)
4895 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1] +
id
4899 return p[0] * 6 + p[1] * tetshift_[0]
4900 + p[2] * tetshift_[1];
4902 return p[0] * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
4905 return p[0] * 6 + (p[1] - 1) * tetshift_[0]
4906 + p[2] * tetshift_[1];
4908 return p[0] * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4911 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4914 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
4917 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4920 return p[0] * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4923 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4926 return (p[0] - 1) * 6 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
4929 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4930 + (p[2] - 1) * tetshift_[1] + 4;
4932 return (p[0] - 1) * 6 + (p[1] - 1) * tetshift_[0]
4933 + (p[2] - 1) * tetshift_[1] + 5;
4939 ttk::ImplicitTriangulation::getEdgeTriangleL_x00(
const SimplexId p[3],
4940 const int id)
const {
4945 return tsetshift_[0] + p[0] * 2;
4947 return tsetshift_[3] + p[0] * 2;
4953 ttk::ImplicitTriangulation::getEdgeTriangleL_x0n(
const SimplexId p[3],
4954 const int id)
const {
4957 return p[0] * 2 + p[2] * tshift_[1];
4959 return tsetshift_[0] + p[0] * 2 + p[2] * tshift_[3];
4961 return tsetshift_[3] + p[0] * 2 + p[2] * tshift_[9];
4963 return tsetshift_[0] + p[0] * 2 + (p[2] - 1) * tshift_[3] + 1;
4969 ttk::ImplicitTriangulation::getEdgeTriangleL_x0N(
const SimplexId p[3],
4970 const int id)
const {
4973 return p[0] * 2 + p[2] * tshift_[1];
4975 return tsetshift_[0] + p[0] * 2 + (p[2] - 1) * tshift_[3] + 1;
4981 ttk::ImplicitTriangulation::getEdgeTriangleL_xn0(
const SimplexId p[3],
4982 const int id)
const {
4985 return p[0] * 2 + p[1] * tshift_[0];
4987 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2];
4989 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8];
4991 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
4997 ttk::ImplicitTriangulation::getEdgeTriangleL_xnn(
const SimplexId p[3],
4998 const int id)
const {
5001 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
5003 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
5005 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2]
5006 + (p[2] - 1) * tshift_[3] + 1;
5008 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
5009 + (p[2] - 1) * tshift_[9] + 1;
5011 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
5013 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
5019 ttk::ImplicitTriangulation::getEdgeTriangleL_xnN(
const SimplexId p[3],
5020 const int id)
const {
5023 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
5025 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2]
5026 + (p[2] - 1) * tshift_[3] + 1;
5028 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
5029 + (p[2] - 1) * tshift_[9] + 1;
5031 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
5037 ttk::ImplicitTriangulation::getEdgeTriangleL_xN0(
const SimplexId p[3],
5038 const int id)
const {
5041 return p[0] * 2 + (p[1] - 1) * tshift_[0] + 1;
5043 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2];
5049 ttk::ImplicitTriangulation::getEdgeTriangleL_xNn(
const SimplexId p[3],
5050 const int id)
const {
5053 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
5055 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2]
5056 + (p[2] - 1) * tshift_[3] + 1;
5058 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
5059 + (p[2] - 1) * tshift_[9] + 1;
5061 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
5067 ttk::ImplicitTriangulation::getEdgeTriangleL_xNN(
const SimplexId p[3],
5068 const int id)
const {
5071 return p[0] * 2 + (p[1] - 1) * tshift_[0] + p[2] * tshift_[1] + 1;
5073 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2]
5074 + (p[2] - 1) * tshift_[3] + 1;
5076 return tsetshift_[3] + p[0] * 2 + (p[1] - 1) * tshift_[8]
5077 + (p[2] - 1) * tshift_[9] + 1;
5083 ttk::ImplicitTriangulation::getEdgeTriangleH_0y0(
const SimplexId p[3],
5084 const int id)
const {
5087 return p[1] * tshift_[0];
5089 return tsetshift_[1] + p[1] * tshift_[4];
5095 ttk::ImplicitTriangulation::getEdgeTriangleH_0yn(
const SimplexId p[3],
5096 const int id)
const {
5099 return tsetshift_[1] + p[1] * tshift_[4] + (p[2] - 1) * tshift_[5] + 1;
5101 return tsetshift_[2] + p[1] * tshift_[6] + (p[2] - 1) * tshift_[7] + 1;
5103 return p[1] * tshift_[0] + p[2] * tshift_[1];
5105 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5];
5111 ttk::ImplicitTriangulation::getEdgeTriangleH_0yN(
const SimplexId p[3],
5112 const int id)
const {
5115 return tsetshift_[1] + p[1] * tshift_[4] + (p[2] - 1) * tshift_[5] + 1;
5117 return tsetshift_[2] + p[1] * tshift_[6] + (p[2] - 1) * tshift_[7] + 1;
5119 return p[1] * tshift_[0] + p[2] * tshift_[1];
5125 ttk::ImplicitTriangulation::getEdgeTriangleH_ny0(
const SimplexId p[3],
5126 const int id)
const {
5129 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
5131 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6];
5133 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4];
5135 return p[0] * 2 + p[1] * tshift_[0];
5141 ttk::ImplicitTriangulation::getEdgeTriangleH_nyn(
const SimplexId p[3],
5142 const int id)
const {
5145 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5147 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
5148 + p[2] * tshift_[7];
5150 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
5152 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
5153 + (p[2] - 1) * tshift_[5] + 1;
5155 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6]
5156 + (p[2] - 1) * tshift_[7] + 1;
5158 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
5164 ttk::ImplicitTriangulation::getEdgeTriangleH_nyN(
const SimplexId p[3],
5165 const int id)
const {
5168 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
5169 + (p[2] - 1) * tshift_[5] + 1;
5171 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6]
5172 + (p[2] - 1) * tshift_[7] + 1;
5174 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
5176 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5182 ttk::ImplicitTriangulation::getEdgeTriangleH_Ny0(
const SimplexId p[3],
5183 const int id)
const {
5186 return (p[0] - 1) * 2 + p[1] * tshift_[0] + 1;
5188 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6];
5190 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4];
5196 ttk::ImplicitTriangulation::getEdgeTriangleH_Nyn(
const SimplexId p[3],
5197 const int id)
const {
5200 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5202 return tsetshift_[2] + (p[0] - 1) * 2 + p[1] * tshift_[6]
5203 + p[2] * tshift_[7];
5205 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
5207 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
5208 + (p[2] - 1) * tshift_[5] + 1;
5214 ttk::ImplicitTriangulation::getEdgeTriangleH_NyN(
const SimplexId p[3],
5215 const int id)
const {
5218 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4]
5219 + (p[2] - 1) * tshift_[5] + 1;
5221 return (p[0] - 1) * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5227 ttk::ImplicitTriangulation::getEdgeTriangleP_00z(
const SimplexId p[3],
5228 const int id)
const {
5231 return tsetshift_[0] + p[2] * tshift_[3];
5233 return tsetshift_[1] + p[2] * tshift_[5] + 1;
5239 ttk::ImplicitTriangulation::getEdgeTriangleP_0nz(
const SimplexId p[3],
5240 const int id)
const {
5243 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + p[2] * tshift_[5];
5245 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + p[2] * tshift_[11];
5247 return tsetshift_[0] + p[1] * tshift_[2] + p[2] * tshift_[3];
5249 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5] + 1;
5255 ttk::ImplicitTriangulation::getEdgeTriangleP_0Nz(
const SimplexId p[3],
5256 const int id)
const {
5259 return tsetshift_[1] + (p[1] - 1) * tshift_[4] + p[2] * tshift_[5];
5261 return tsetshift_[4] + (p[1] - 1) * tshift_[10] + p[2] * tshift_[11];
5263 return tsetshift_[0] + p[1] * tshift_[2] + p[2] * tshift_[3];
5269 ttk::ImplicitTriangulation::getEdgeTriangleP_n0z(
const SimplexId p[3],
5270 const int id)
const {
5273 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3] + 1;
5275 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11] + 1;
5277 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5] + 1;
5279 return tsetshift_[0] + p[0] * 2 + p[2] * tshift_[3];
5285 ttk::ImplicitTriangulation::getEdgeTriangleP_nnz(
const SimplexId p[3],
5286 const int id)
const {
5289 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
5290 + p[2] * tshift_[3] + 1;
5292 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
5293 + p[2] * tshift_[11] + 1;
5295 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
5298 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
5300 return tsetshift_[4] + p[0] * 2 + (p[1] - 1) * tshift_[10]
5301 + p[2] * tshift_[11];
5303 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
5304 + p[2] * tshift_[5];
5310 ttk::ImplicitTriangulation::getEdgeTriangleP_nNz(
const SimplexId p[3],
5311 const int id)
const {
5314 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
5315 + p[2] * tshift_[3] + 1;
5317 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
5318 + p[2] * tshift_[5];
5320 return tsetshift_[4] + p[0] * 2 + (p[1] - 1) * tshift_[10]
5321 + p[2] * tshift_[11];
5323 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
5329 ttk::ImplicitTriangulation::getEdgeTriangleP_N0z(
const SimplexId p[3],
5330 const int id)
const {
5333 return tsetshift_[0] + (p[0] - 1) * 2 + p[2] * tshift_[3] + 1;
5335 return tsetshift_[4] + (p[0] - 1) * 2 + p[2] * tshift_[11] + 1;
5337 return tsetshift_[1] + p[0] * 2 + p[2] * tshift_[5] + 1;
5343 ttk::ImplicitTriangulation::getEdgeTriangleP_Nnz(
const SimplexId p[3],
5344 const int id)
const {
5347 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
5348 + p[2] * tshift_[3] + 1;
5350 return tsetshift_[4] + (p[0] - 1) * 2 + p[1] * tshift_[10]
5351 + p[2] * tshift_[11] + 1;
5353 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
5356 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
5357 + p[2] * tshift_[5];
5363 ttk::ImplicitTriangulation::getEdgeTriangleP_NNz(
const SimplexId p[3],
5364 const int id)
const {
5367 return tsetshift_[0] + (p[0] - 1) * 2 + p[1] * tshift_[2]
5368 + p[2] * tshift_[3] + 1;
5370 return tsetshift_[1] + p[0] * 2 + (p[1] - 1) * tshift_[4]
5371 + p[2] * tshift_[5];
5377 ttk::ImplicitTriangulation::getEdgeTriangleD1_xy0(
const SimplexId p[3],
5378 const int id)
const {
5381 return p[0] * 2 + p[1] * tshift_[0];
5383 return p[0] * 2 + p[1] * tshift_[0] + 1;
5385 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10];
5391 ttk::ImplicitTriangulation::getEdgeTriangleD1_xyn(
const SimplexId p[3],
5392 const int id)
const {
5395 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
5397 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5399 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11];
5401 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
5402 + (p[2] - 1) * tshift_[11] + 1;
5408 ttk::ImplicitTriangulation::getEdgeTriangleD1_xyN(
const SimplexId p[3],
5409 const int id)
const {
5412 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
5414 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
5416 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10]
5417 + (p[2] - 1) * tshift_[11] + 1;
5423 ttk::ImplicitTriangulation::getEdgeTriangleD2_0yz(
const SimplexId p[3],
5424 const int id)
const {
5427 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5];
5429 return tsetshift_[1] + p[1] * tshift_[4] + p[2] * tshift_[5] + 1;
5431 return tsetshift_[3] + p[1] * tshift_[8] + p[2] * tshift_[9];
5437 ttk::ImplicitTriangulation::getEdgeTriangleD2_nyz(
const SimplexId p[3],
5438 const int id)
const {
5441 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
5443 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
5446 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
5448 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
5449 + p[2] * tshift_[9] + 1;
5455 ttk::ImplicitTriangulation::getEdgeTriangleD2_Nyz(
const SimplexId p[3],
5456 const int id)
const {
5459 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
5461 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
5464 return tsetshift_[3] + (p[0] - 1) * 2 + p[1] * tshift_[8]
5465 + p[2] * tshift_[9] + 1;
5471 ttk::ImplicitTriangulation::getEdgeTriangleD3_x0z(
const SimplexId p[3],
5472 const int id)
const {
5475 return tsetshift_[0] + p[0] * 2 + p[2] * tshift_[3];
5477 return tsetshift_[0] + p[0] * 2 + p[2] * tshift_[3] + 1;
5479 return tsetshift_[2] + p[0] * 2 + p[2] * tshift_[7] + 1;
5485 ttk::ImplicitTriangulation::getEdgeTriangleD3_xnz(
const SimplexId p[3],
5486 const int id)
const {
5489 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
5491 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3]
5494 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
5497 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
5498 + p[2] * tshift_[7];
5504 ttk::ImplicitTriangulation::getEdgeTriangleD3_xNz(
const SimplexId p[3],
5505 const int id)
const {
5508 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
5510 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3]
5513 return tsetshift_[2] + p[0] * 2 + (p[1] - 1) * tshift_[6]
5514 + p[2] * tshift_[7];
5520 ttk::ImplicitTriangulation::getEdgeTriangleD4_xyz(
const SimplexId p[3],
5521 const int id)
const {
5524 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7];
5526 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
5529 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
5531 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9]
5534 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11];
5536 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11]
5543 ttk::ImplicitTriangulation::getEdgeLinkL(
const SimplexId p[3],
5544 const int id)
const {
5545 if(p[2] == 0 and p[1] == 0) {
5548 return esetshift_[1] + p[0] + eshift_[4];
5550 return esetshift_[0] + p[0] + eshift_[3];
5552 }
else if(p[2] == 0 and p[1] == nbvoxels_[1])
5553 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12];
5554 else if(p[2] == nbvoxels_[2] and p[1] == 0)
5555 return esetshift_[5] + p[0] + (p[2] - 1) * eshift_[13];
5556 else if(p[2] == nbvoxels_[2] and p[1] == nbvoxels_[1]) {
5559 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4]
5560 + (p[2] - 1) * eshift_[5] + 1;
5562 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5563 + (p[2] - 1) * eshift_[3] + 1;
5565 }
else if(p[2] == 0 and p[1] > 0 and p[1] < nbvoxels_[1]) {
5568 return esetshift_[1] + p[0] + (p[1] + 1) * eshift_[4];
5570 return esetshift_[0] + p[0] + p[1] * eshift_[2] + eshift_[3];
5572 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12];
5574 }
else if(p[2] == nbvoxels_[2] and p[1] > 0 and p[1] < nbvoxels_[1]) {
5577 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4]
5578 + (p[2] - 1) * eshift_[5] + 1;
5580 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5581 + (p[2] - 1) * eshift_[3] + 1;
5583 return esetshift_[5] + p[0] + p[1] * eshift_[12]
5584 + (p[2] - 1) * eshift_[13];
5587 }
else if(p[2] > 0 and p[2] < nbvoxels_[2] and p[1] == 0) {
5590 return esetshift_[1] + p[0] + p[2] * eshift_[5] + eshift_[4];
5592 return esetshift_[0] + p[0] + (p[2] + 1) * eshift_[3];
5594 return esetshift_[5] + p[0] + (p[2] - 1) * eshift_[13];
5596 }
else if(p[2] > 0 and p[2] < nbvoxels_[2] and p[1] == nbvoxels_[1]) {
5599 return esetshift_[1] + p[0] + (p[1] - 1) * eshift_[4]
5600 + (p[2] - 1) * eshift_[5] + 1;
5602 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5603 + (p[2] - 1) * eshift_[3] + 1;
5605 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
5606 + p[2] * eshift_[13];
5612 return esetshift_[1] + p[0] + (p[1] + 1) * eshift_[4]
5613 + p[2] * eshift_[5];
5616 return esetshift_[0] + p[0] + p[1] * eshift_[2]
5617 + (p[2] + 1) * eshift_[3];
5620 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
5621 + p[2] * eshift_[13];
5623 return esetshift_[1] + p[0] + 1 + (p[1] - 1) * eshift_[4]
5624 + (p[2] - 1) * eshift_[5];
5626 return esetshift_[0] + p[0] + 1 + (p[1] - 1) * eshift_[2]
5627 + (p[2] - 1) * eshift_[3];
5629 return esetshift_[5] + p[0] + p[1] * eshift_[12]
5630 + (p[2] - 1) * eshift_[13];
5637 ttk::ImplicitTriangulation::getEdgeLinkH(
const SimplexId p[3],
5638 const int id)
const {
5639 if(p[0] == 0 and p[2] == 0)
5640 return esetshift_[5] + p[1] * eshift_[12];
5641 else if(p[0] == nbvoxels_[0] and p[2] == 0) {
5644 return esetshift_[1] + p[0] + (p[1] + 1) * eshift_[4] - 1;
5646 return p[0] + (p[1] + 1) * eshift_[0] + eshift_[1] - 1;
5648 }
else if(p[0] == 0 and p[2] == nbvoxels_[2]) {
5651 return p[1] * eshift_[0] + (p[2] - 1) * eshift_[1];
5653 return esetshift_[1] + p[1] * eshift_[4] + (p[2] - 1) * eshift_[5] + 1;
5655 }
else if(p[0] == nbvoxels_[0] and p[2] == nbvoxels_[2])
5656 return esetshift_[5] + p[0] - 1 + p[1] * eshift_[12]
5657 + (p[2] - 1) * eshift_[13];
5658 else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[2] == 0) {
5661 return p[0] - 1 + (p[1] + 1) * eshift_[0] + eshift_[1];
5663 return esetshift_[1] + p[0] - 1 + (p[1] + 1) * eshift_[4];
5665 return esetshift_[5] + p[0] + p[1] * eshift_[12];
5667 }
else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[2] == nbvoxels_[2]) {
5670 return esetshift_[5] + p[0] - 1 + p[1] * eshift_[12]
5671 + (p[2] - 1) * eshift_[13];
5673 return p[0] + p[1] * eshift_[0] + (p[2] - 1) * eshift_[1];
5675 return esetshift_[1] + p[0] + 1 + p[1] * eshift_[4]
5676 + (p[2] - 1) * eshift_[5];
5678 }
else if(p[0] == 0 and p[2] > 0 and p[2] < nbvoxels_[2]) {
5681 return esetshift_[1] + p[1] * eshift_[4] + (p[2] - 1) * eshift_[5] + 1;
5683 return esetshift_[5] + p[1] * eshift_[12] + p[2] * eshift_[13];
5685 return p[1] * eshift_[0] + (p[2] - 1) * eshift_[1];
5687 }
else if(p[0] == nbvoxels_[0] and p[2] > 0 and p[2] < nbvoxels_[2]) {
5690 return esetshift_[5] + p[0] - 1 + p[1] * eshift_[12]
5691 + (p[2] - 1) * eshift_[13];
5693 return esetshift_[1] + p[0] - 1 + (p[1] + 1) * eshift_[4]
5694 + p[2] * eshift_[5];
5696 return p[0] - 1 + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1];
5701 return p[0] + p[1] * eshift_[0] + (p[2] - 1) * eshift_[1];
5703 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1] - 1;
5705 return esetshift_[1] + p[0] - 1 + (p[1] + 1) * eshift_[4]
5706 + p[2] * eshift_[5];
5708 return esetshift_[1] + p[0] + 1 + p[1] * eshift_[4]
5709 + (p[2] - 1) * eshift_[5];
5711 return esetshift_[5] + (p[0] - 1) + p[1] * eshift_[12]
5712 + (p[2] - 1) * eshift_[13];
5714 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13];
5721 ttk::ImplicitTriangulation::getEdgeLinkP(
const SimplexId p[3],
5722 const int id)
const {
5723 if(p[0] == 0 and p[1] == 0)
5724 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13];
5725 else if(p[0] == 0 and p[1] == nbvoxels_[1]) {
5728 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5729 + p[2] * eshift_[3] + 1;
5731 return p[0] + (p[1] - 1) * eshift_[0] + p[2] * eshift_[1];
5733 }
else if(p[0] == nbvoxels_[0] and p[1] == 0) {
5736 return esetshift_[0] + p[0] + p[1] * eshift_[2]
5737 + (p[2] + 1) * eshift_[3] - 1;
5739 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1] - 1;
5741 }
else if(p[0] == nbvoxels_[0] and p[1] == nbvoxels_[1])
5742 return esetshift_[5] + p[0] - 1 + (p[1] - 1) * eshift_[12]
5743 + p[2] * eshift_[13];
5744 else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[1] == 0) {
5747 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1] - 1;
5749 return esetshift_[0] + p[0] + p[1] * eshift_[2]
5750 + (p[2] + 1) * eshift_[3] - 1;
5752 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13];
5754 }
else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[1] == nbvoxels_[1]) {
5757 return p[0] + (p[1] - 1) * eshift_[0] + p[2] * eshift_[1];
5759 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5760 + p[2] * eshift_[3] + 1;
5762 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
5763 + p[2] * eshift_[13] - 1;
5765 }
else if(p[0] == 0 and p[1] > 0 and p[1] < nbvoxels_[1]) {
5768 return p[0] + (p[1] - 1) * eshift_[0] + p[2] * eshift_[1];
5770 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5771 + p[2] * eshift_[3] + 1;
5773 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13];
5775 }
else if(p[0] == nbvoxels_[0] and p[1] > 0 and p[1] < nbvoxels_[1]) {
5778 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
5779 + p[2] * eshift_[13] - 1;
5781 return esetshift_[0] + p[0] + p[1] * eshift_[2]
5782 + (p[2] + 1) * eshift_[3] - 1;
5784 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1] - 1;
5789 return p[0] + (p[1] - 1) * eshift_[0] + p[2] * eshift_[1];
5791 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1] - 1;
5793 return esetshift_[5] + p[0] + p[1] * eshift_[12] + p[2] * eshift_[13];
5795 return esetshift_[5] + p[0] + (p[1] - 1) * eshift_[12]
5796 + p[2] * eshift_[13] - 1;
5798 return esetshift_[0] + p[0] + p[1] * eshift_[2]
5799 + (p[2] + 1) * eshift_[3] - 1;
5801 return esetshift_[0] + p[0] + (p[1] - 1) * eshift_[2]
5802 + p[2] * eshift_[3] + 1;
5809 ttk::ImplicitTriangulation::getEdgeLinkD1(
const SimplexId p[3],
5810 const int id)
const {
5811 if(p[2] > 0 and p[2] < nbvoxels_[2]) {
5814 return esetshift_[4] + p[0] + p[1] * eshift_[10]
5815 + (p[2] - 1) * eshift_[11];
5817 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
5818 + p[2] * eshift_[11];
5820 return esetshift_[3] + p[0] + p[1] * eshift_[8] + p[2] * eshift_[9];
5822 return esetshift_[3] + p[0] + p[1] * eshift_[8]
5823 + (p[2] - 1) * eshift_[9] + 1;
5825 }
else if(p[2] == 0) {
5828 return esetshift_[3] + p[0] + p[1] * eshift_[8] + p[2] * eshift_[9];
5830 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
5831 + p[2] * eshift_[11];
5836 return esetshift_[3] + p[0] + p[1] * eshift_[8]
5837 + (p[2] - 1) * eshift_[9] + 1;
5839 return esetshift_[4] + p[0] + p[1] * eshift_[10]
5840 + (p[2] - 1) * eshift_[11];
5847 ttk::ImplicitTriangulation::getEdgeLinkD2(
const SimplexId p[3],
5848 const int id)
const {
5849 if(p[0] > 0 and p[0] < nbvoxels_[0]) {
5852 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11];
5854 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
5855 + p[2] * eshift_[11] - 1;
5857 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7];
5859 return esetshift_[2] + p[0] + p[1] * eshift_[6]
5860 + (p[2] + 1) * eshift_[7] - 1;
5862 }
else if(p[0] == 0) {
5865 return esetshift_[2] + p[0] + p[1] * eshift_[6] + p[2] * eshift_[7];
5867 return esetshift_[4] + p[0] + p[1] * eshift_[10] + p[2] * eshift_[11];
5872 return esetshift_[2] + p[0] + p[1] * eshift_[6]
5873 + (p[2] + 1) * eshift_[7] - 1;
5875 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
5876 + p[2] * eshift_[11] - 1;
5883 ttk::ImplicitTriangulation::getEdgeLinkD3(
const SimplexId p[3],
5884 const int id)
const {
5885 if(p[1] > 0 and p[1] < nbvoxels_[1]) {
5888 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
5889 + p[2] * eshift_[7];
5891 return esetshift_[2] + p[0] + p[1] * eshift_[6]
5892 + (p[2] + 1) * eshift_[7];
5894 return esetshift_[3] + p[0] + p[1] * eshift_[8] + p[2] * eshift_[9];
5896 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
5897 + p[2] * eshift_[9] + 1;
5899 }
else if(p[1] == 0) {
5902 return esetshift_[2] + p[0] + p[1] * eshift_[6]
5903 + (p[2] + 1) * eshift_[7];
5905 return esetshift_[3] + p[0] + p[1] * eshift_[8] + p[2] * eshift_[9];
5910 return esetshift_[2] + p[0] + (p[1] - 1) * eshift_[6]
5911 + p[2] * eshift_[7];
5913 return esetshift_[3] + p[0] + (p[1] - 1) * eshift_[8]
5914 + p[2] * eshift_[9] + 1;
5921 ttk::ImplicitTriangulation::getEdgeLinkD4(
const SimplexId p[3],
5922 const int id)
const {
5925 return p[0] + (p[1] + 1) * eshift_[0] + p[2] * eshift_[1];
5927 return p[0] + p[1] * eshift_[0] + (p[2] + 1) * eshift_[1];
5929 return esetshift_[1] + p[0] + p[1] * eshift_[4] + p[2] * eshift_[5];
5931 return esetshift_[1] + p[0] + 1 + (p[1] + 1) * eshift_[4]
5932 + p[2] * eshift_[5];
5934 return esetshift_[0] + p[0] + p[1] * eshift_[2] + p[2] * eshift_[3];
5936 return esetshift_[0] + p[0] + 1 + p[1] * eshift_[2]
5937 + (p[2] + 1) * eshift_[3];
5943 ttk::ImplicitTriangulation::getEdgeStarL(
const SimplexId p[3],
5944 const int id)
const {
5945 if(p[2] == 0 and p[1] == 0) {
5950 return p[0] * 6 + 2;
5952 }
else if(p[2] == 0 and p[1] == nbvoxels_[1])
5953 return (p[1] - 1) * tetshift_[0] + p[0] * 6 + 1;
5954 else if(p[2] == nbvoxels_[2] and p[1] == 0)
5955 return (p[2] - 1) * tetshift_[1] + p[0] * 6 + 3;
5956 else if(p[2] == nbvoxels_[2] and p[1] == nbvoxels_[1]) {
5959 return (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1] + p[0] * 6
5963 return (p[1] - 1) * tetshift_[0] + (p[2] - 1) * tetshift_[1] + p[0] * 6
5967 }
else if(p[2] == 0 and p[1] > 0 and p[1] < nbvoxels_[1]) {
5970 return p[1] * tetshift_[0] + p[0] * 6;
5972 return p[1] * tetshift_[0] + p[0] * 6 + 2;
5974 return (p[1] - 1) * tetshift_[0] + p[0] * 6 + 1;
5976 }
else if(p[2] == nbvoxels_[2] and p[1] > 0 and p[1] < nbvoxels_[1]) {
5979 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
5982 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
5986 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
5990 }
else if(p[2] > 0 and p[2] < nbvoxels_[2] and p[1] == 0) {
5993 return p[2] * tetshift_[1] + p[0] * 6;
5995 return p[2] * tetshift_[1] + p[0] * 6 + 2;
5997 return (p[2] - 1) * tetshift_[1] + p[0] * 6 + 3;
5999 }
else if(p[2] > 0 and p[2] < nbvoxels_[2] and p[1] == nbvoxels_[1]) {
6002 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6005 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6009 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6016 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6;
6018 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 2;
6020 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6023 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6026 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6030 return (p[2] - 1) * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6040 ttk::ImplicitTriangulation::getEdgeStarH(
const SimplexId p[3],
6041 const int id)
const {
6042 if(p[0] == 0 and p[2] == 0)
6043 return p[1] * tetshift_[0];
6044 else if(p[0] == nbvoxels_[0] and p[2] == 0) {
6047 return p[1] * tetshift_[0] + (p[0] - 1) * 6 + 1;
6049 return p[1] * tetshift_[0] + (p[0] - 1) * 6 + 5;
6051 }
else if(p[0] == 0 and p[2] == nbvoxels_[2]) {
6054 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + 2;
6056 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + 3;
6058 }
else if(p[0] == nbvoxels_[0] and p[2] == nbvoxels_[2])
6059 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6061 else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[2] == 0) {
6064 return p[1] * tetshift_[0] + (p[0] - 1) * 6 + 1;
6066 return p[1] * tetshift_[0] + (p[0] - 1) * 6 + 5;
6068 return p[1] * tetshift_[0] + p[0] * 6;
6070 }
else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[2] == nbvoxels_[2]) {
6073 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6076 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6079 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6083 }
else if(p[0] == 0 and p[2] > 0 and p[2] < nbvoxels_[2]) {
6086 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + 2;
6088 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + 3;
6090 return p[2] * tetshift_[1] + p[1] * tetshift_[0];
6092 }
else if(p[0] == nbvoxels_[0] and p[2] > 0 and p[2] < nbvoxels_[2]) {
6095 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6098 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6101 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6108 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6;
6110 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6113 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6116 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6120 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6123 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6131 ttk::ImplicitTriangulation::getEdgeStarP(
const SimplexId p[3],
6132 const int id)
const {
6133 if(p[0] == 0 and p[1] == 0)
6134 return p[2] * tetshift_[1] + 2;
6135 else if(p[0] == 0 and p[1] == nbvoxels_[1]) {
6138 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0];
6140 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + 1;
6142 }
else if(p[0] == nbvoxels_[0] and p[1] == 0) {
6145 return p[2] * tetshift_[1] + (p[0] - 1) * 6 + 3;
6147 return p[2] * tetshift_[1] + (p[0] - 1) * 6 + 4;
6149 }
else if(p[0] == nbvoxels_[0] and p[1] == nbvoxels_[1])
6150 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + (p[0] - 1) * 6
6152 else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[1] == 0) {
6155 return p[2] * tetshift_[1] + (p[0] - 1) * 6 + 3;
6157 return p[2] * tetshift_[1] + (p[0] - 1) * 6 + 4;
6159 return p[2] * tetshift_[1] + p[0] * 6 + 2;
6161 }
else if(p[0] > 0 and p[0] < nbvoxels_[0] and p[1] == nbvoxels_[1]) {
6164 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0]
6167 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6170 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + (p[0] - 1) * 6
6174 }
else if(p[0] == 0 and p[1] > 0 and p[1] < nbvoxels_[1]) {
6177 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0];
6179 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + 1;
6181 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + 2;
6183 }
else if(p[0] == nbvoxels_[0] and p[1] > 0 and p[1] < nbvoxels_[1]) {
6186 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6189 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6192 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + (p[0] - 1) * 6
6199 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + (p[0] - 1) * 6
6203 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0]
6206 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6209 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 2;
6211 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6214 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6222 ttk::ImplicitTriangulation::getEdgeStarD1(
const SimplexId p[3],
6223 const int id)
const {
6224 if(p[2] > 0 and p[2] < nbvoxels_[2]) {
6227 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6;
6229 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 1;
6231 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6234 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6237 }
else if(p[2] == 0) {
6240 return p[1] * tetshift_[0] + p[0] * 6;
6242 return p[1] * tetshift_[0] + p[0] * 6 + 1;
6247 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6250 return (p[2] - 1) * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6
6258 ttk::ImplicitTriangulation::getEdgeStarD2(
const SimplexId p[3],
6259 const int id)
const {
6260 if(p[0] > 0 and p[0] < nbvoxels_[0]) {
6263 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6;
6265 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 2;
6267 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6270 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6273 }
else if(p[0] == 0) {
6276 return p[2] * tetshift_[1] + p[1] * tetshift_[0];
6278 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + 2;
6283 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6286 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + (p[0] - 1) * 6
6294 ttk::ImplicitTriangulation::getEdgeStarD3(
const SimplexId p[3],
6295 const int id)
const {
6296 if(p[1] > 0 and p[1] < nbvoxels_[1]) {
6299 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 2;
6301 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 3;
6303 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6306 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6309 }
else if(p[1] == 0) {
6312 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 2;
6314 return p[2] * tetshift_[1] + p[1] * tetshift_[0] + p[0] * 6 + 3;
6319 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6322 return p[2] * tetshift_[1] + (p[1] - 1) * tetshift_[0] + p[0] * 6
6330 ttk::ImplicitTriangulation::getTriangleVertexF(
const SimplexId p[3],
6331 const int id)
const {
6334 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6336 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6338 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0] + 1;
6341 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1];
6343 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6345 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6350 ttk::ImplicitTriangulation::getTriangleVertexH(
const SimplexId p[3],
6351 const int id)
const {
6354 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6356 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1] + 1;
6358 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6361 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1];
6363 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6365 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6370 ttk::ImplicitTriangulation::getTriangleVertexC(
const SimplexId p[3],
6371 const int id)
const {
6374 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1];
6376 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6378 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1]
6382 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1];
6384 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6386 return (p[0] / 2) + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1]
6392 ttk::ImplicitTriangulation::getTriangleVertexD1(
const SimplexId p[3],
6393 const int id)
const {
6396 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6398 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6400 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1]
6404 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6406 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0] + 1;
6408 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1]
6414 ttk::ImplicitTriangulation::getTriangleVertexD2(
const SimplexId p[3],
6415 const int id)
const {
6418 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6420 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6423 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6427 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1];
6429 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6431 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6437 ttk::ImplicitTriangulation::getTriangleVertexD3(
const SimplexId p[3],
6438 const int id)
const {
6441 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6443 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1] + 1;
6445 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6449 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6451 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6453 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6459 ttk::ImplicitTriangulation::getTriangleEdgeF_0(
const SimplexId p[3],
6460 const int id)
const {
6463 return p[0] / 2 + p[1] * eshift_[0] + p[2] * eshift_[1];
6465 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2] + p[2] * eshift_[3];
6467 return esetshift_[2] + p[0] / 2 + p[1] * eshift_[6] + p[2] * eshift_[7];
6473 ttk::ImplicitTriangulation::getTriangleEdgeF_1(
const SimplexId p[3],
6474 const int id)
const {
6477 return p[0] / 2 + (p[1] + 1) * eshift_[0] + p[2] * eshift_[1];
6479 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2] + p[2] * eshift_[3]
6482 return esetshift_[2] + p[0] / 2 + p[1] * eshift_[6] + p[2] * eshift_[7];
6488 ttk::ImplicitTriangulation::getTriangleEdgeH_0(
const SimplexId p[3],
6489 const int id)
const {
6492 return p[0] / 2 + p[1] * eshift_[0] + p[2] * eshift_[1];
6494 return esetshift_[1] + p[0] / 2 + p[1] * eshift_[4] + p[2] * eshift_[5];
6496 return esetshift_[4] + p[0] / 2 + p[1] * eshift_[10] + p[2] * eshift_[11];
6502 ttk::ImplicitTriangulation::getTriangleEdgeH_1(
const SimplexId p[3],
6503 const int id)
const {
6506 return p[0] / 2 + p[1] * eshift_[0] + (p[2] + 1) * eshift_[1];
6508 return esetshift_[1] + p[0] / 2 + p[1] * eshift_[4] + p[2] * eshift_[5]
6511 return esetshift_[4] + p[0] / 2 + p[1] * eshift_[10] + p[2] * eshift_[11];
6517 ttk::ImplicitTriangulation::getTriangleEdgeC_0(
const SimplexId p[3],
6518 const int id)
const {
6521 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2] + p[2] * eshift_[3];
6523 return esetshift_[1] + p[0] / 2 + (p[1] + 1) * eshift_[4]
6524 + p[2] * eshift_[5];
6526 return esetshift_[3] + p[0] / 2 + p[1] * eshift_[8] + p[2] * eshift_[9];
6532 ttk::ImplicitTriangulation::getTriangleEdgeC_1(
const SimplexId p[3],
6533 const int id)
const {
6536 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2]
6537 + (p[2] + 1) * eshift_[3];
6539 return esetshift_[1] + p[0] / 2 + p[1] * eshift_[4] + p[2] * eshift_[5];
6541 return esetshift_[3] + p[0] / 2 + p[1] * eshift_[8] + p[2] * eshift_[9];
6547 ttk::ImplicitTriangulation::getTriangleEdgeD1_0(
const SimplexId p[3],
6548 const int id)
const {
6551 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2] + p[2] * eshift_[3]
6554 return esetshift_[4] + p[0] / 2 + (p[1] + 1) * eshift_[10]
6555 + p[2] * eshift_[11];
6557 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6563 ttk::ImplicitTriangulation::getTriangleEdgeD1_1(
const SimplexId p[3],
6564 const int id)
const {
6567 return esetshift_[0] + p[0] / 2 + p[1] * eshift_[2]
6568 + (p[2] + 1) * eshift_[3];
6570 return esetshift_[4] + p[0] / 2 + p[1] * eshift_[10] + p[2] * eshift_[11];
6572 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6578 ttk::ImplicitTriangulation::getTriangleEdgeD2_0(
const SimplexId p[3],
6579 const int id)
const {
6582 return p[0] / 2 + p[1] * eshift_[0] + p[2] * eshift_[1];
6584 return esetshift_[3] + p[0] / 2 + p[1] * eshift_[8] + p[2] * eshift_[9];
6586 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6592 ttk::ImplicitTriangulation::getTriangleEdgeD2_1(
const SimplexId p[3],
6593 const int id)
const {
6596 return p[0] / 2 + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1];
6598 return esetshift_[3] + p[0] / 2 + p[1] * eshift_[8] + p[2] * eshift_[9]
6601 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6607 ttk::ImplicitTriangulation::getTriangleEdgeD3_0(
const SimplexId p[3],
6608 const int id)
const {
6611 return esetshift_[1] + p[0] / 2 + (p[1] + 1) * eshift_[4]
6612 + p[2] * eshift_[5];
6614 return esetshift_[2] + p[0] / 2 + p[1] * eshift_[6] + p[2] * eshift_[7];
6616 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6622 ttk::ImplicitTriangulation::getTriangleEdgeD3_1(
const SimplexId p[3],
6623 const int id)
const {
6626 return esetshift_[1] + p[0] / 2 + p[1] * eshift_[4] + p[2] * eshift_[5]
6629 return esetshift_[2] + p[0] / 2 + p[1] * eshift_[6]
6630 + (p[2] + 1) * eshift_[7];
6632 return esetshift_[5] + p[0] / 2 + p[1] * eshift_[12] + p[2] * eshift_[13];
6638 ttk::ImplicitTriangulation::getTriangleLinkF(
const SimplexId p[3],
6639 const int id)
const {
6640 if(p[2] > 0 and p[2] < nbvoxels_[2]) {
6643 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1];
6645 return p[0] / 2 + p[1] * vshift_[0] + (p[2] - 1) * vshift_[1] + 1;
6647 }
else if(p[2] == 0)
6648 return p[0] / 2 + (p[1] + 1) * vshift_[0] + vshift_[1];
6650 return p[0] / 2 + p[1] * vshift_[0] + (p[2] - 1) * vshift_[1] + 1;
6656 ttk::ImplicitTriangulation::getTriangleLinkH(
const SimplexId p[3],
6657 const int id)
const {
6658 if(p[1] > 0 and p[1] < nbvoxels_[1]) {
6661 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1];
6663 return p[0] / 2 + (p[1] - 1) * vshift_[0] + p[2] * vshift_[1] + 1;
6665 }
else if(p[1] == 0)
6666 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1];
6668 return p[0] / 2 + (p[1] - 1) * vshift_[0] + p[2] * vshift_[1] + 1;
6674 ttk::ImplicitTriangulation::getTriangleLinkC(
const SimplexId p[3],
6675 const int id)
const {
6676 if(p[0] > 1 and p[0] < (dimensions_[0] * 2 - 2)) {
6679 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6681 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1] - 1;
6684 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6686 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1] - 1;
6692 ttk::ImplicitTriangulation::getTriangleLinkD1(
const SimplexId p[3],
6693 const int id)
const {
6697 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1];
6699 return p[0] / 2 + p[1] * vshift_[0] + (p[2] + 1) * vshift_[1] + 1;
6704 return p[0] / 2 + (p[1] + 1) * vshift_[0] + p[2] * vshift_[1];
6706 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1] + 1;
6713 ttk::ImplicitTriangulation::getTriangleLinkD2(
const SimplexId p[3],
6714 const int id)
const {
6718 return p[0] / 2 + (p[1] + 1) * vshift_[0] + p[2] * vshift_[1] + 1;
6720 return p[0] / 2 + p[1] * vshift_[0] + (p[2] + 1) * vshift_[1] + 1;
6725 return p[0] / 2 + (p[1] + 1) * vshift_[0] + p[2] * vshift_[1];
6727 return p[0] / 2 + p[1] * vshift_[0] + (p[2] + 1) * vshift_[1];
6734 ttk::ImplicitTriangulation::getTriangleLinkD3(
const SimplexId p[3],
6735 const int id)
const {
6739 return p[0] / 2 + p[1] * vshift_[0] + (p[2] + 1) * vshift_[1];
6741 return p[0] / 2 + (p[1] + 1) * vshift_[0] + (p[2] + 1) * vshift_[1] + 1;
6746 return p[0] / 2 + p[1] * vshift_[0] + p[2] * vshift_[1];
6748 return p[0] / 2 + (p[1] + 1) * vshift_[0] + p[2] * vshift_[1] + 1;
6755 ttk::ImplicitTriangulation::getTriangleStarF(
const SimplexId p[3],
6756 const int id)
const {
6758 if(p[2] > 0 and p[2] < nbvoxels_[2]) {
6761 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6764 return (p[0] - 1) * 3 + p[1] * tetshift_[0]
6765 + (p[2] - 1) * tetshift_[1] + 4;
6767 }
else if(p[2] == 0)
6768 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6771 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
6774 if(p[2] > 0 and p[2] < nbvoxels_[2]) {
6777 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6779 return p[0] * 3 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
6782 }
else if(p[2] == 0)
6783 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6785 return p[0] * 3 + p[1] * tetshift_[0] + (p[2] - 1) * tetshift_[1]
6793 ttk::ImplicitTriangulation::getTriangleStarH(
const SimplexId p[3],
6794 const int id)
const {
6796 if(p[1] > 0 and p[1] < nbvoxels_[1]) {
6799 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6802 return (p[0] - 1) * 3 + (p[1] - 1) * tetshift_[0]
6803 + p[2] * tetshift_[1] + 5;
6805 }
else if(p[1] == 0)
6806 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6809 return (p[0] - 1) * 3 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
6812 if(p[1] > 0 and p[1] < nbvoxels_[1]) {
6815 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6818 return p[0] * 3 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
6821 }
else if(p[1] == 0)
6822 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 2;
6824 return p[0] * 3 + (p[1] - 1) * tetshift_[0] + p[2] * tetshift_[1]
6831 ttk::ImplicitTriangulation::getTriangleStarC(
const SimplexId p[3],
6832 const int id)
const {
6834 if(p[0] > 1 and p[0] < (dimensions_[0] * 2 - 2)) {
6837 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6840 return ((p[0] - 2) / 2) * 6 + p[1] * tetshift_[0]
6841 + p[2] * tetshift_[1] + 4;
6844 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6847 return ((p[0] - 2) / 2) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6850 if(p[0] > 1 and p[0] < (dimensions_[0] * 2 - 2)) {
6853 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6855 return ((p[0] - 1) / 2) * 6 + p[1] * tetshift_[0]
6856 + p[2] * tetshift_[1] + 5;
6859 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6861 return ((p[0] - 1) / 2) * 6 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6869 ttk::ImplicitTriangulation::getTriangleStarD1(
const SimplexId p[3],
6870 const int id)
const {
6874 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6877 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6883 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 1;
6885 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 5;
6892 ttk::ImplicitTriangulation::getTriangleStarD2(
const SimplexId p[3],
6893 const int id)
const {
6897 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6900 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6906 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6908 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 2;
6915 ttk::ImplicitTriangulation::getTriangleStarD3(
const SimplexId p[3],
6916 const int id)
const {
6920 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6923 return (p[0] - 1) * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1]
6929 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1];
6931 return p[0] * 3 + p[1] * tetshift_[0] + p[2] * tetshift_[1] + 1;
6938 ttk::ImplicitTriangulation::getTetrahedronVertexABCG(
const SimplexId p[3],
6939 const int id)
const {
6942 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1];
6944 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6946 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6948 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6955 ttk::ImplicitTriangulation::getTetrahedronVertexBCDG(
const SimplexId p[3],
6956 const int id)
const {
6959 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6961 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0];
6963 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0] + 1;
6965 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6972 ttk::ImplicitTriangulation::getTetrahedronVertexABEG(
const SimplexId p[3],
6973 const int id)
const {
6976 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1];
6978 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6980 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6982 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
6989 ttk::ImplicitTriangulation::getTetrahedronVertexBEFG(
const SimplexId p[3],
6990 const int id)
const {
6993 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
6995 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1];
6997 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1] + 1;
6999 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
7006 ttk::ImplicitTriangulation::getTetrahedronVertexBFGH(
const SimplexId p[3],
7007 const int id)
const {
7010 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
7012 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[1] + 1;
7014 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
7017 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
7024 ttk::ImplicitTriangulation::getTetrahedronVertexBDGH(
const SimplexId p[3],
7025 const int id)
const {
7028 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + 1;
7030 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0] + 1;
7032 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
7035 return p[0] + p[1] * vshift_[0] + p[2] * vshift_[1] + vshift_[0]
7042 ttk::ImplicitTriangulation::getTetrahedronEdgeABCG(
const SimplexId p[3],
7043 const int id)
const {
7046 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
7048 return esetshift_[0] + p[0] + p[1] * eshift_[2]
7049 + p[2] * eshift_[3];
7051 return esetshift_[1] + p[0] + (p[1] + 1) * eshift_[4]
7052 + p[2] * eshift_[5];
7054 return esetshift_[2] + p[0] + p[1] * eshift_[6]
7055 + p[2] * eshift_[7];
7057 return esetshift_[3] + p[0] + p[1] * eshift_[8]
7058 + p[2] * eshift_[9];
7060 return esetshift_[5] + p[0] + p[1] * eshift_[12]
7061 + p[2] * eshift_[13];
7067 ttk::ImplicitTriangulation::getTetrahedronEdgeBCDG(
const SimplexId p[3],
7068 const int id)
const {
7071 return p[0] + (p[1] + 1) * eshift_[0] + p[2] * eshift_[1];
7073 return esetshift_[0] + (p[0] + 1) + p[1] * eshift_[2]
7074 + p[2] * eshift_[3];
7076 return esetshift_[1] + p[0] + (p[1] + 1) * eshift_[4]
7077 + p[2] * eshift_[5];
7079 return esetshift_[2] + p[0] + p[1] * eshift_[6]
7080 + p[2] * eshift_[7];
7082 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
7083 + p[2] * eshift_[11];
7085 return esetshift_[5] + p[0] + p[1] * eshift_[12]
7086 + p[2] * eshift_[13];
7092 ttk::ImplicitTriangulation::getTetrahedronEdgeABEG(
const SimplexId p[3],
7093 const int id)
const {
7096 return p[0] + p[1] * eshift_[0] + p[2] * eshift_[1];
7098 return esetshift_[0] + p[0] + p[1] * eshift_[2]
7099 + (p[2] + 1) * eshift_[3];
7101 return esetshift_[1] + p[0] + p[1] * eshift_[4]
7102 + p[2] * eshift_[5];
7104 return esetshift_[3] + p[0] + p[1] * eshift_[8]
7105 + p[2] * eshift_[9];
7107 return esetshift_[4] + p[0] + p[1] * eshift_[10]
7108 + p[2] * eshift_[11];
7110 return esetshift_[5] + p[0] + p[1] * eshift_[12]
7111 + p[2] * eshift_[13];
7117 ttk::ImplicitTriangulation::getTetrahedronEdgeBEFG(
const SimplexId p[3],
7118 const int id)
const {
7121 return p[0] + p[1] * eshift_[0] + (p[2] + 1) * eshift_[1];
7123 return esetshift_[0] + p[0] + p[1] * eshift_[2]
7124 + (p[2] + 1) * eshift_[3];
7126 return esetshift_[1] + (p[0] + 1) + p[1] * eshift_[4]
7127 + p[2] * eshift_[5];
7129 return esetshift_[2] + p[0] + p[1] * eshift_[6]
7130 + (p[2] + 1) * eshift_[7];
7132 return esetshift_[4] + p[0] + p[1] * eshift_[10]
7133 + p[2] * eshift_[11];
7135 return esetshift_[5] + p[0] + p[1] * eshift_[12]
7136 + p[2] * eshift_[13];
7142 ttk::ImplicitTriangulation::getTetrahedronEdgeBFGH(
const SimplexId p[3],
7143 const int id)
const {
7146 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1];
7148 return esetshift_[0] + (p[0] + 1) + p[1] * eshift_[2]
7149 + (p[2] + 1) * eshift_[3];
7151 return esetshift_[1] + (p[0] + 1) + p[1] * eshift_[4]
7152 + p[2] * eshift_[5];
7154 return esetshift_[2] + p[0] + p[1] * eshift_[6]
7155 + (p[2] + 1) * eshift_[7];
7157 return esetshift_[3] + (p[0] + 1) + p[1] * eshift_[8]
7158 + p[2] * eshift_[9];
7160 return esetshift_[5] + p[0] + p[1] * eshift_[12]
7161 + p[2] * eshift_[13];
7167 ttk::ImplicitTriangulation::getTetrahedronEdgeBDGH(
const SimplexId p[3],
7168 const int id)
const {
7171 return p[0] + (p[1] + 1) * eshift_[0] + (p[2] + 1) * eshift_[1];
7173 return esetshift_[0] + (p[0] + 1) + p[1] * eshift_[2]
7174 + p[2] * eshift_[3];
7176 return esetshift_[1] + (p[0] + 1) + (p[1] + 1) * eshift_[4]
7177 + p[2] * eshift_[5];
7179 return esetshift_[3] + (p[0] + 1) + p[1] * eshift_[8]
7180 + p[2] * eshift_[9];
7182 return esetshift_[4] + p[0] + (p[1] + 1) * eshift_[10]
7183 + p[2] * eshift_[11];
7185 return esetshift_[5] + p[0] + p[1] * eshift_[12]
7186 + p[2] * eshift_[13];
7192 ttk::ImplicitTriangulation::getTetrahedronTriangleABCG(
const SimplexId p[3],
7193 const int id)
const {
7196 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1];
7198 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5];
7200 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
7202 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11];
7208 ttk::ImplicitTriangulation::getTetrahedronTriangleBCDG(
const SimplexId p[3],
7209 const int id)
const {
7212 return p[0] * 2 + p[1] * tshift_[0] + p[2] * tshift_[1] + 1;
7214 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11];
7216 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7];
7218 return tsetshift_[0] + p[0] * 2 + (p[1] + 1) * tshift_[2]
7219 + p[2] * tshift_[3];
7225 ttk::ImplicitTriangulation::getTetrahedronTriangleABEG(
const SimplexId p[3],
7226 const int id)
const {
7229 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3];
7231 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9];
7233 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
7236 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
7243 ttk::ImplicitTriangulation::getTetrahedronTriangleBEFG(
const SimplexId p[3],
7244 const int id)
const {
7247 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7]
7250 return tsetshift_[0] + p[0] * 2 + p[1] * tshift_[2] + p[2] * tshift_[3]
7253 return p[0] * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1];
7255 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11]
7262 ttk::ImplicitTriangulation::getTetrahedronTriangleBFGH(
const SimplexId p[3],
7263 const int id)
const {
7266 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9]
7269 return tsetshift_[4] + p[0] * 2 + p[1] * tshift_[10] + p[2] * tshift_[11]
7272 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
7275 return p[0] * 2 + p[1] * tshift_[0] + (p[2] + 1) * tshift_[1] + 1;
7281 ttk::ImplicitTriangulation::getTetrahedronTriangleBDGH(
const SimplexId p[3],
7282 const int id)
const {
7285 return tsetshift_[1] + p[0] * 2 + p[1] * tshift_[4] + p[2] * tshift_[5]
7288 return tsetshift_[2] + p[0] * 2 + p[1] * tshift_[6] + p[2] * tshift_[7];
7290 return tsetshift_[3] + p[0] * 2 + p[1] * tshift_[8] + p[2] * tshift_[9]
7293 return tsetshift_[0] + p[0] * 2 + (p[1] + 1) * tshift_[2]
7294 + p[2] * tshift_[3] + 1;
7299inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborABCG(
7310 return t - tetshift_[1] + 3;
7312 return t - tetshift_[1] + 3;
7317inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborBCDG(
7326 return t - tetshift_[1] + 3;
7328 return t + tetshift_[0] + 1;
7330 return t + tetshift_[0] + 1;
7335inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborABEG(
7346 return t - tetshift_[0] - 1;
7348 return t - tetshift_[0] - 1;
7353inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborBEFG(
7362 return t - tetshift_[0] + 2;
7364 return t + tetshift_[1] - 3;
7366 return t + tetshift_[1] - 3;
7371inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborBFGH(
7379 if(p[0] < nbvoxels_[0] - 1)
7382 return t + tetshift_[1] - 3;
7384 return t + tetshift_[1] - 3;
7389inline ttk::SimplexId ttk::ImplicitTriangulation::getTetrahedronNeighborBDGH(
7397 if(p[0] < nbvoxels_[0] - 1)
7400 return t + tetshift_[0] - 2;
7402 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.