From e0b0c5a67732c4056213f955a7dfbbf498d15617 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Thu, 23 Oct 2025 14:19:52 -0700 Subject: [PATCH 01/28] Starting to add polygonal clip tables. --- src/axom/bump/CMakeLists.txt | 4 + src/axom/bump/clipping/ClipCases.h | 4 + src/axom/bump/clipping/ClipCasesPoly5.cpp | 189 +++ src/axom/bump/clipping/ClipCasesPoly6.cpp | 393 +++++ src/axom/bump/clipping/ClipCasesPoly7.cpp | 850 ++++++++++ src/axom/bump/clipping/ClipCasesPoly8.cpp | 1876 +++++++++++++++++++++ 6 files changed, 3316 insertions(+) create mode 100644 src/axom/bump/clipping/ClipCasesPoly5.cpp create mode 100644 src/axom/bump/clipping/ClipCasesPoly6.cpp create mode 100644 src/axom/bump/clipping/ClipCasesPoly7.cpp create mode 100644 src/axom/bump/clipping/ClipCasesPoly8.cpp diff --git a/src/axom/bump/CMakeLists.txt b/src/axom/bump/CMakeLists.txt index 420e59e4db..920a9d4219 100644 --- a/src/axom/bump/CMakeLists.txt +++ b/src/axom/bump/CMakeLists.txt @@ -85,6 +85,10 @@ set(bump_headers set(bump_sources clipping/ClipCasesHex.cpp + clipping/ClipCasesPoly5.cpp + clipping/ClipCasesPoly6.cpp + clipping/ClipCasesPoly7.cpp + clipping/ClipCasesPoly8.cpp clipping/ClipCasesPyr.cpp clipping/ClipCasesQua.cpp clipping/ClipCasesTet.cpp diff --git a/src/axom/bump/clipping/ClipCases.h b/src/axom/bump/clipping/ClipCases.h index cdbf5c981b..13591a347b 100644 --- a/src/axom/bump/clipping/ClipCases.h +++ b/src/axom/bump/clipping/ClipCases.h @@ -168,6 +168,10 @@ constexpr unsigned char ST_MAX = (ST_PNT + 1); extern AXOM_BUMP_EXPORT const size_t clipShapesTriSize; extern AXOM_BUMP_EXPORT const size_t clipShapesQuaSize; +extern AXOM_BUMP_EXPORT const size_t clipShapesPoly5Size; +extern AXOM_BUMP_EXPORT const size_t clipShapesPoly6Size; +extern AXOM_BUMP_EXPORT const size_t clipShapesPoly7Size; +extern AXOM_BUMP_EXPORT const size_t clipShapesPoly8Size; extern AXOM_BUMP_EXPORT const size_t clipShapesTetSize; extern AXOM_BUMP_EXPORT const size_t clipShapesPyrSize; extern AXOM_BUMP_EXPORT const size_t clipShapesWdgSize; diff --git a/src/axom/bump/clipping/ClipCasesPoly5.cpp b/src/axom/bump/clipping/ClipCasesPoly5.cpp new file mode 100644 index 0000000000..c00eaad2da --- /dev/null +++ b/src/axom/bump/clipping/ClipCasesPoly5.cpp @@ -0,0 +1,189 @@ +// Copyright (c) Lawrence Livermore National Security, LLC and other VisIt +// Project developers. See the top-level LICENSE file for dates and other +// details. No copyright assignment is required to contribute to VisIt. + +#include "ClipCases.h" +//--------------------------------------------------------------------------- +// Axom modifications +// clang-format off +namespace axom { +namespace bump { +namespace clipping { +namespace tables { +//--------------------------------------------------------------------------- + +// This file is meant to be read and created by a program other than a +// compiler. If you must modify it by hand, at least be nice to the +// parser and don't add anything else to this file or rearrange it. + +int numClipCasesPoly5 = 32; + +int numClipShapesPoly5[32] = { + 2, 3, 3, 3, 3, 4, 3, 3, // cases 0 - 7 + 3, 4, 4, 5, 3, 5, 3, 3, // cases 8 - 15 + 3, 3, 4, 3, 4, 5, 5, 3, // cases 16 - 23 + 3, 3, 5, 3, 3, 3, 3, 2 // cases 24 - 31 +}; + +int startClipShapesPoly5[32] = { + 0, 11, 28, 45, 62, 79, 102, 119, // cases 0 - 7 + 136, 153, 176, 199, 226, 243, 270, 287, // cases 8 - 15 + 304, 321, 338, 361, 378, 401, 428, 455, // cases 16 - 23 + 472, 489, 506, 533, 550, 567, 584, 601 // cases 24 - 31 +}; + +unsigned char clipShapesPoly5[] = { + // Case #0: Unique case #1 + ST_QUA, COLOR0, P0, P1, P2, P3, + ST_TRI, COLOR0, P0, P3, P4, + // Case #1: Unique case #2 + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_QUA, COLOR0, EA, P3, P4, EE, + ST_TRI, COLOR1, P0, EA, EE, + // Case #2: (cloned #1) + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_QUA, COLOR0, EB, P4, P0, EA, + ST_TRI, COLOR1, P1, EB, EA, + // Case #3: Unique case #3 + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_TRI, COLOR0, EB, P4, EE, + ST_QUA, COLOR1, P0, P1, EB, EE, + // Case #4: (cloned #1) + ST_QUA, COLOR0, EC, P3, P4, P0, + ST_QUA, COLOR0, EC, P0, P1, EB, + ST_TRI, COLOR1, P2, EC, EB, + // Case #5: Unique case #4 + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, P0, EA, EB, P2, + ST_QUA, COLOR1, P0, P2, EC, EE, + // Case #6: (cloned #3) + ST_QUA, COLOR0, EC, P3, P4, P0, + ST_TRI, COLOR0, EC, P0, EA, + ST_QUA, COLOR1, P1, P2, EC, EA, + // Case #7: Unique case #5 + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, P0, P1, P2, EC, + ST_TRI, COLOR1, EC, EE, P0, + // Case #8: (cloned #1) + ST_QUA, COLOR0, ED, P4, P0, P1, + ST_QUA, COLOR0, ED, P1, P2, EC, + ST_TRI, COLOR1, P3, ED, EC, + // Case #9: (cloned #5) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P3, ED, EE, P0, + ST_QUA, COLOR1, P3, P0, EA, EC, + // Case #10: (cloned #5) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P0, EA, + ST_QUA, COLOR1, P1, EB, EC, P3, + ST_QUA, COLOR1, P1, P3, ED, EA, + // Case #11: Unique case #6 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR1, P0, P1, EB, EC, + ST_QUA, COLOR1, P0, EC, P3, ED, + ST_TRI, COLOR1, P0, ED, EE, + // Case #12: (cloned #3) + ST_QUA, COLOR0, ED, P4, P0, P1, + ST_TRI, COLOR0, ED, P1, EB, + ST_QUA, COLOR1, P2, P3, ED, EB, + // Case #13: (cloned #11) + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR1, P2, P3, ED, EE, + ST_QUA, COLOR1, P2, EE, P0, EA, + ST_TRI, COLOR1, P2, EA, EB, + // Case #14: (cloned #7) + ST_QUA, COLOR0, ED, P4, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, ED, + ST_TRI, COLOR1, ED, EA, P1, + // Case #15: Unique case #7 + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, P0, P3, ED, EE, + // Case #16: (cloned #1) + ST_QUA, COLOR0, EE, P0, P1, P2, + ST_QUA, COLOR0, EE, P2, P3, ED, + ST_TRI, COLOR1, P4, EE, ED, + // Case #17: (cloned #3) + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_TRI, COLOR0, EA, P3, ED, + ST_QUA, COLOR1, P4, P0, EA, ED, + // Case #18: (cloned #5) + ST_TRI, COLOR0, EE, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P4, EE, EA, P1, + ST_QUA, COLOR1, P4, P1, EB, ED, + // Case #19: (cloned #7) + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P4, P0, P1, EB, + ST_TRI, COLOR1, EB, ED, P4, + // Case #20: (cloned #5) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P0, P1, EB, + ST_QUA, COLOR1, P2, EC, ED, P4, + ST_QUA, COLOR1, P2, P4, EE, EB, + // Case #21: (cloned #11) + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR1, P4, P0, EA, EB, + ST_QUA, COLOR1, P4, EB, P2, EC, + ST_TRI, COLOR1, P4, EC, ED, + // Case #22: (cloned #11) + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P0, EA, + ST_QUA, COLOR1, P1, P2, EC, ED, + ST_QUA, COLOR1, P1, ED, P4, EE, + ST_TRI, COLOR1, P1, EE, EA, + // Case #23: (cloned #15) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR1, P4, P0, P1, P2, + ST_QUA, COLOR1, P4, P2, EC, ED, + // Case #24: (cloned #3) + ST_QUA, COLOR0, EE, P0, P1, P2, + ST_TRI, COLOR0, EE, P2, EC, + ST_QUA, COLOR1, P3, P4, EE, EC, + // Case #25: (cloned #7) + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, P0, EA, + ST_TRI, COLOR1, EA, EC, P3, + // Case #26: (cloned #11) + ST_TRI, COLOR0, EE, P0, EA, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR1, P3, P4, EE, EA, + ST_QUA, COLOR1, P3, EA, P1, EB, + ST_TRI, COLOR1, P3, EB, EC, + // Case #27: (cloned #15) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR1, P3, P4, P0, P1, + ST_QUA, COLOR1, P3, P1, EB, EC, + // Case #28: (cloned #7) + ST_QUA, COLOR0, EE, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, EE, + ST_TRI, COLOR1, EE, EB, P2, + // Case #29: (cloned #15) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, P0, + ST_QUA, COLOR1, P2, P0, EA, EB, + // Case #30: (cloned #15) + ST_TRI, COLOR0, EE, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, P4, + ST_QUA, COLOR1, P1, P4, EE, EA, + // Case #31: Unique case #8 + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_TRI, COLOR1, P0, P3, P4, + // Dummy + 0 +}; + +//--------------------------------------------------------------------------- +// Axom modifications +const size_t clipShapesPoly5Size = sizeof(clipShapesPoly5) / sizeof(unsigned char); +} // namespace tables +} // namespace clipping +} // namespace bump +} // namespace axom +// clang-format on +//--------------------------------------------------------------------------- diff --git a/src/axom/bump/clipping/ClipCasesPoly6.cpp b/src/axom/bump/clipping/ClipCasesPoly6.cpp new file mode 100644 index 0000000000..8bc71af491 --- /dev/null +++ b/src/axom/bump/clipping/ClipCasesPoly6.cpp @@ -0,0 +1,393 @@ +// Copyright (c) Lawrence Livermore National Security, LLC and other VisIt +// Project developers. See the top-level LICENSE file for dates and other +// details. No copyright assignment is required to contribute to VisIt. + +#include "ClipCases.h" +//--------------------------------------------------------------------------- +// Axom modifications +// clang-format off +namespace axom { +namespace bump { +namespace clipping { +namespace tables { +//--------------------------------------------------------------------------- + +// This file is meant to be read and created by a program other than a +// compiler. If you must modify it by hand, at least be nice to the +// parser and don't add anything else to this file or rearrange it. + +int numClipCasesPoly6 = 64; + +int numClipShapesPoly6[64] = { + 2, 4, 4, 3, 4, 5, 3, 4, // cases 0 - 7 + 4, 4, 5, 5, 3, 5, 4, 3, // cases 8 - 15 + 4, 5, 4, 5, 5, 7, 5, 5, // cases 16 - 23 + 3, 5, 5, 5, 4, 5, 3, 4, // cases 24 - 31 + 4, 3, 5, 4, 4, 5, 5, 3, // cases 32 - 39 + 5, 5, 7, 5, 5, 5, 5, 4, // cases 40 - 47 + 3, 4, 5, 3, 5, 5, 5, 4, // cases 48 - 55 + 4, 3, 5, 4, 3, 4, 4, 2 // cases 56 - 63 +}; + +int startClipShapesPoly6[64] = { + 0, 12, 34, 56, 74, 96, 124, 142, // cases 0 - 7 + 164, 186, 210, 238, 266, 284, 312, 334, // cases 8 - 15 + 352, 374, 402, 426, 454, 482, 520, 548, // cases 16 - 23 + 576, 594, 622, 650, 678, 700, 728, 746, // cases 24 - 31 + 768, 790, 808, 836, 858, 882, 910, 938, // cases 32 - 39 + 956, 984, 1012, 1050, 1078, 1106, 1134, 1162, // cases 40 - 47 + 1184, 1202, 1224, 1252, 1270, 1298, 1326, 1354, // cases 48 - 55 + 1376, 1398, 1416, 1444, 1466, 1484, 1506, 1528 // cases 56 - 63 +}; + +unsigned char clipShapesPoly6[] = { + // Case #0: Unique case #1 + ST_QUA, COLOR0, P0, P1, P2, P3, + ST_QUA, COLOR0, P0, P3, P4, P5, + // Case #1: Unique case #2 + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_QUA, COLOR0, EA, P3, P4, P5, + ST_TRI, COLOR0, EA, P5, EF, + ST_TRI, COLOR1, P0, EA, EF, + // Case #2: (cloned #1) + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_QUA, COLOR0, EB, P4, P5, P0, + ST_TRI, COLOR0, EB, P0, EA, + ST_TRI, COLOR1, P1, EB, EA, + // Case #3: Unique case #3 + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_QUA, COLOR0, EB, P4, P5, EF, + ST_QUA, COLOR1, P0, P1, EB, EF, + // Case #4: (cloned #1) + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_QUA, COLOR0, EC, P5, P0, P1, + ST_TRI, COLOR0, EC, P1, EB, + ST_TRI, COLOR1, P2, EC, EB, + // Case #5: Unique case #4 + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_TRI, COLOR0, EC, P5, EF, + ST_QUA, COLOR1, P0, EA, EB, P2, + ST_QUA, COLOR1, P0, P2, EC, EF, + // Case #6: (cloned #3) + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_QUA, COLOR0, EC, P5, P0, EA, + ST_QUA, COLOR1, P1, P2, EC, EA, + // Case #7: Unique case #5 + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_TRI, COLOR0, EC, P5, EF, + ST_QUA, COLOR1, P0, P1, P2, EC, + ST_TRI, COLOR1, P0, EC, EF, + // Case #8: (cloned #1) + ST_QUA, COLOR0, ED, P4, P5, P0, + ST_QUA, COLOR0, ED, P0, P1, P2, + ST_TRI, COLOR0, ED, P2, EC, + ST_TRI, COLOR1, P3, ED, EC, + // Case #9: Unique case #6 + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, P0, EA, EC, P3, + ST_QUA, COLOR1, P0, P3, ED, EF, + // Case #10: (cloned #5) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, P0, + ST_TRI, COLOR0, ED, P0, EA, + ST_QUA, COLOR1, P1, EB, EC, P3, + ST_QUA, COLOR1, P1, P3, ED, EA, + // Case #11: Unique case #7 + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, P0, P1, EB, EC, + ST_QUA, COLOR1, P0, EC, P3, ED, + ST_TRI, COLOR1, P0, ED, EF, + // Case #12: (cloned #3) + ST_QUA, COLOR0, ED, P4, P5, P0, + ST_QUA, COLOR0, ED, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, ED, EB, + // Case #13: (cloned #11) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, EA, EB, P2, P3, + ST_QUA, COLOR1, EF, P0, EA, P3, + ST_TRI, COLOR1, ED, EF, P3, + // Case #14: (cloned #7) + ST_QUA, COLOR0, ED, P4, P5, P0, + ST_TRI, COLOR0, ED, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, ED, + ST_TRI, COLOR1, P1, ED, EA, + // Case #15: Unique case #8 + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, P0, P3, ED, EF, + // Case #16: (cloned #1) + ST_QUA, COLOR0, EE, P5, P0, P1, + ST_QUA, COLOR0, EE, P1, P2, P3, + ST_TRI, COLOR0, EE, P3, ED, + ST_TRI, COLOR1, P4, EE, ED, + // Case #17: (cloned #5) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_TRI, COLOR0, EA, P3, ED, + ST_QUA, COLOR1, P4, EE, EF, P0, + ST_QUA, COLOR1, P4, P0, EA, ED, + // Case #18: (cloned #9) + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR0, EE, P5, P0, EA, + ST_QUA, COLOR1, P1, EB, ED, P4, + ST_QUA, COLOR1, P1, P4, EE, EA, + // Case #19: (cloned #11) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, EE, EF, P0, P1, + ST_QUA, COLOR1, ED, P4, EE, P1, + ST_TRI, COLOR1, EB, ED, P1, + // Case #20: (cloned #5) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P0, P1, + ST_TRI, COLOR0, EE, P1, EB, + ST_QUA, COLOR1, P2, EC, ED, P4, + ST_QUA, COLOR1, P2, P4, EE, EB, + // Case #21: Unique case #9 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR1, P0, EA, EB, P2, + ST_QUA, COLOR1, P0, P2, EC, ED, + ST_QUA, COLOR1, P0, ED, P4, EE, + ST_TRI, COLOR1, P0, EE, EF, + // Case #22: (cloned #11) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P0, EA, + ST_QUA, COLOR1, P1, P2, EC, ED, + ST_QUA, COLOR1, P1, ED, P4, EE, + ST_TRI, COLOR1, P1, EE, EA, + // Case #23: Unique case #10 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR1, P0, P1, P2, EC, + ST_QUA, COLOR1, P0, EC, ED, P4, + ST_QUA, COLOR1, P0, P4, EE, EF, + // Case #24: (cloned #3) + ST_QUA, COLOR0, EE, P5, P0, P1, + ST_QUA, COLOR0, EE, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, EE, EC, + // Case #25: (cloned #11) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, EE, EF, + ST_QUA, COLOR1, P3, EF, P0, EA, + ST_TRI, COLOR1, P3, EA, EC, + // Case #26: (cloned #11) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, EE, P5, P0, EA, + ST_QUA, COLOR1, EB, EC, P3, P4, + ST_QUA, COLOR1, EA, P1, EB, P4, + ST_TRI, COLOR1, EE, EA, P4, + // Case #27: Unique case #11 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR1, P0, P1, EB, EC, + ST_QUA, COLOR1, P0, EC, P3, P4, + ST_QUA, COLOR1, P0, P4, EE, EF, + // Case #28: (cloned #7) + ST_QUA, COLOR0, EE, P5, P0, P1, + ST_TRI, COLOR0, EE, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, EE, + ST_TRI, COLOR1, P2, EE, EB, + // Case #29: (cloned #23) + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, EE, + ST_QUA, COLOR1, P2, EE, EF, P0, + ST_QUA, COLOR1, P2, P0, EA, EB, + // Case #30: (cloned #15) + ST_QUA, COLOR0, EE, P5, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, P4, + ST_QUA, COLOR1, P1, P4, EE, EA, + // Case #31: Unique case #12 + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, P0, P3, P4, EE, + ST_TRI, COLOR1, EE, EF, P0, + // Case #32: (cloned #1) + ST_QUA, COLOR0, EF, P0, P1, P2, + ST_QUA, COLOR0, EF, P2, P3, P4, + ST_TRI, COLOR0, EF, P4, EE, + ST_TRI, COLOR1, P5, EF, EE, + // Case #33: (cloned #3) + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_QUA, COLOR0, EA, P3, P4, EE, + ST_QUA, COLOR1, P5, P0, EA, EE, + // Case #34: (cloned #5) + ST_TRI, COLOR0, EF, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_TRI, COLOR0, EB, P4, EE, + ST_QUA, COLOR1, P5, EF, EA, P1, + ST_QUA, COLOR1, P5, P1, EB, EE, + // Case #35: (cloned #7) + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_TRI, COLOR0, EB, P4, EE, + ST_QUA, COLOR1, P5, P0, P1, EB, + ST_TRI, COLOR1, P5, EB, EE, + // Case #36: (cloned #9) + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR0, EF, P0, P1, EB, + ST_QUA, COLOR1, P2, EC, EE, P5, + ST_QUA, COLOR1, P2, P5, EF, EB, + // Case #37: (cloned #11) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, P5, P0, EA, EB, + ST_QUA, COLOR1, P5, EB, P2, EC, + ST_TRI, COLOR1, P5, EC, EE, + // Case #38: (cloned #11) + ST_TRI, COLOR0, EF, P0, EA, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, EF, EA, P1, P2, + ST_QUA, COLOR1, EE, P5, EF, P2, + ST_TRI, COLOR1, EC, EE, P2, + // Case #39: (cloned #15) + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, P5, P0, P1, P2, + ST_QUA, COLOR1, P5, P2, EC, EE, + // Case #40: (cloned #5) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P0, P1, P2, + ST_TRI, COLOR0, EF, P2, EC, + ST_QUA, COLOR1, P3, ED, EE, P5, + ST_QUA, COLOR1, P3, P5, EF, EC, + // Case #41: (cloned #11) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, ED, EE, P5, P0, + ST_QUA, COLOR1, EC, P3, ED, P0, + ST_TRI, COLOR1, EA, EC, P0, + // Case #42: (cloned #21) + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P0, EA, + ST_QUA, COLOR1, P1, EB, EC, P3, + ST_QUA, COLOR1, P1, P3, ED, EE, + ST_QUA, COLOR1, P1, EE, P5, EF, + ST_TRI, COLOR1, P1, EF, EA, + // Case #43: (cloned #23) + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR1, P5, P0, P1, EB, + ST_QUA, COLOR1, P5, EB, EC, P3, + ST_QUA, COLOR1, P5, P3, ED, EE, + // Case #44: (cloned #11) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, ED, EE, + ST_QUA, COLOR1, P2, EE, P5, EF, + ST_TRI, COLOR1, P2, EF, EB, + // Case #45: (cloned #27) + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR1, P2, P3, ED, EE, + ST_QUA, COLOR1, P2, EE, P5, P0, + ST_QUA, COLOR1, P2, P0, EA, EB, + // Case #46: (cloned #23) + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, ED, + ST_QUA, COLOR1, P1, ED, EE, P5, + ST_QUA, COLOR1, P1, P5, EF, EA, + // Case #47: (cloned #31) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR1, P5, P0, P1, P2, + ST_QUA, COLOR1, P5, P2, P3, ED, + ST_TRI, COLOR1, ED, EE, P5, + // Case #48: (cloned #3) + ST_QUA, COLOR0, EF, P0, P1, P2, + ST_QUA, COLOR0, EF, P2, P3, ED, + ST_QUA, COLOR1, P4, P5, EF, ED, + // Case #49: (cloned #7) + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_TRI, COLOR0, EA, P3, ED, + ST_QUA, COLOR1, P4, P5, P0, EA, + ST_TRI, COLOR1, P4, EA, ED, + // Case #50: (cloned #11) + ST_TRI, COLOR0, EF, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P4, P5, EF, EA, + ST_QUA, COLOR1, P4, EA, P1, EB, + ST_TRI, COLOR1, P4, EB, ED, + // Case #51: (cloned #15) + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P4, P5, P0, P1, + ST_QUA, COLOR1, P4, P1, EB, ED, + // Case #52: (cloned #11) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EF, P0, P1, EB, + ST_QUA, COLOR1, EC, ED, P4, P5, + ST_QUA, COLOR1, EB, P2, EC, P5, + ST_TRI, COLOR1, EF, EB, P5, + // Case #53: (cloned #23) + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR1, P4, P5, P0, EA, + ST_QUA, COLOR1, P4, EA, EB, P2, + ST_QUA, COLOR1, P4, P2, EC, ED, + // Case #54: (cloned #27) + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EF, P0, EA, + ST_QUA, COLOR1, P1, P2, EC, ED, + ST_QUA, COLOR1, P1, ED, P4, P5, + ST_QUA, COLOR1, P1, P5, EF, EA, + // Case #55: (cloned #31) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR1, P4, P5, P0, P1, + ST_QUA, COLOR1, P4, P1, P2, EC, + ST_TRI, COLOR1, EC, ED, P4, + // Case #56: (cloned #7) + ST_QUA, COLOR0, EF, P0, P1, P2, + ST_TRI, COLOR0, EF, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, EF, + ST_TRI, COLOR1, P3, EF, EC, + // Case #57: (cloned #15) + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, P0, + ST_QUA, COLOR1, P3, P0, EA, EC, + // Case #58: (cloned #23) + ST_TRI, COLOR0, EF, P0, EA, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, EF, + ST_QUA, COLOR1, P3, EF, EA, P1, + ST_QUA, COLOR1, P3, P1, EB, EC, + // Case #59: (cloned #31) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, P0, + ST_QUA, COLOR1, P3, P0, P1, EB, + ST_TRI, COLOR1, EB, EC, P3, + // Case #60: (cloned #15) + ST_QUA, COLOR0, EF, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, P5, + ST_QUA, COLOR1, P2, P5, EF, EB, + // Case #61: (cloned #31) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, P5, + ST_QUA, COLOR1, P2, P5, P0, EA, + ST_TRI, COLOR1, EA, EB, P2, + // Case #62: (cloned #31) + ST_TRI, COLOR0, EF, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, P4, + ST_QUA, COLOR1, P1, P4, P5, EF, + ST_TRI, COLOR1, EF, EA, P1, + // Case #63: Unique case #13 + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, P0, P3, P4, P5, + // Dummy + 0 +}; + +//--------------------------------------------------------------------------- +// Axom modifications +const size_t clipShapesPoly6Size = sizeof(clipShapesPoly6) / sizeof(unsigned char); +} // namespace tables +} // namespace clipping +} // namespace bump +} // namespace axom +// clang-format on +//--------------------------------------------------------------------------- diff --git a/src/axom/bump/clipping/ClipCasesPoly7.cpp b/src/axom/bump/clipping/ClipCasesPoly7.cpp new file mode 100644 index 0000000000..ee93d0e06d --- /dev/null +++ b/src/axom/bump/clipping/ClipCasesPoly7.cpp @@ -0,0 +1,850 @@ +// Copyright (c) Lawrence Livermore National Security, LLC and other VisIt +// Project developers. See the top-level LICENSE file for dates and other +// details. No copyright assignment is required to contribute to VisIt. + +#include "ClipCases.h" +//--------------------------------------------------------------------------- +// Axom modifications +// clang-format off +namespace axom { +namespace bump { +namespace clipping { +namespace tables { +//--------------------------------------------------------------------------- + +// This file is meant to be read and created by a program other than a +// compiler. If you must modify it by hand, at least be nice to the +// parser and don't add anything else to this file or rearrange it. + +int numClipCasesPoly7 = 128; + +int numClipShapesPoly7[128] = { + 3, 4, 4, 4, 4, 5, 4, 4, // cases 0 - 7 + 4, 5, 5, 6, 4, 6, 4, 4, // cases 8 - 15 + 4, 5, 5, 5, 5, 7, 6, 5, // cases 16 - 23 + 4, 5, 6, 5, 4, 5, 4, 4, // cases 24 - 31 + 4, 5, 5, 6, 5, 7, 5, 5, // cases 32 - 39 + 5, 7, 7, 7, 6, 7, 5, 6, // cases 40 - 47 + 4, 6, 5, 5, 6, 7, 5, 6, // cases 48 - 55 + 4, 5, 5, 6, 4, 6, 4, 4, // cases 56 - 63 + 4, 4, 5, 4, 5, 6, 6, 4, // cases 64 - 71 + 5, 5, 7, 5, 5, 5, 5, 4, // cases 72 - 79 + 5, 6, 7, 5, 7, 7, 7, 6, // cases 80 - 87 + 6, 5, 7, 6, 5, 6, 6, 4, // cases 88 - 95 + 4, 4, 6, 4, 5, 5, 5, 4, // cases 96 - 103 + 6, 5, 7, 6, 5, 6, 6, 4, // cases 104 - 111 + 4, 4, 5, 4, 5, 6, 6, 4, // cases 112 - 119 + 4, 4, 6, 4, 4, 4, 4, 3 // cases 120 - 127 +}; + +int startClipShapesPoly7[128] = { + 0, 17, 40, 63, 86, 109, 138, 161, // cases 0 - 7 + 184, 207, 236, 265, 298, 321, 354, 377, // cases 8 - 15 + 400, 423, 452, 481, 510, 539, 578, 611, // cases 16 - 23 + 640, 663, 692, 725, 754, 777, 806, 829, // cases 24 - 31 + 852, 875, 904, 933, 966, 995, 1034, 1063, // cases 32 - 39 + 1092, 1121, 1160, 1199, 1238, 1271, 1310, 1339, // cases 40 - 47 + 1372, 1395, 1428, 1457, 1486, 1519, 1558, 1587, // cases 48 - 55 + 1620, 1643, 1672, 1701, 1734, 1757, 1790, 1813, // cases 56 - 63 + 1836, 1859, 1882, 1911, 1934, 1963, 1996, 2029, // cases 64 - 71 + 2052, 2081, 2110, 2149, 2178, 2207, 2236, 2265, // cases 72 - 79 + 2288, 2317, 2350, 2389, 2418, 2457, 2496, 2535, // cases 80 - 87 + 2568, 2601, 2630, 2669, 2702, 2731, 2764, 2797, // cases 88 - 95 + 2820, 2843, 2866, 2899, 2922, 2951, 2980, 3009, // cases 96 - 103 + 3032, 3065, 3094, 3133, 3166, 3195, 3228, 3261, // cases 104 - 111 + 3284, 3307, 3330, 3359, 3382, 3411, 3444, 3477, // cases 112 - 119 + 3500, 3523, 3546, 3579, 3602, 3625, 3648, 3671 // cases 120 - 127 +}; + +unsigned char clipShapesPoly7[] = { + // Case #0: Unique case #1 + ST_QUA, COLOR0, P0, P1, P2, P3, + ST_QUA, COLOR0, P0, P3, P4, P5, + ST_TRI, COLOR0, P0, P5, P6, + // Case #1: Unique case #2 + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_QUA, COLOR0, EA, P3, P4, P5, + ST_QUA, COLOR0, EA, P5, P6, EG, + ST_TRI, COLOR1, P0, EA, EG, + // Case #2: (cloned #1) + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_QUA, COLOR0, EB, P4, P5, P6, + ST_QUA, COLOR0, EB, P6, P0, EA, + ST_TRI, COLOR1, P1, EB, EA, + // Case #3: Unique case #3 + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_QUA, COLOR0, EB, P4, P5, P6, + ST_TRI, COLOR0, EB, P6, EG, + ST_QUA, COLOR1, P0, P1, EB, EG, + // Case #4: (cloned #1) + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_QUA, COLOR0, EC, P5, P6, P0, + ST_QUA, COLOR0, EC, P0, P1, EB, + ST_TRI, COLOR1, P2, EC, EB, + // Case #5: Unique case #4 + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_QUA, COLOR0, EC, P5, P6, EG, + ST_QUA, COLOR1, P0, EA, EB, P2, + ST_QUA, COLOR1, P0, P2, EC, EG, + // Case #6: (cloned #3) + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_QUA, COLOR0, EC, P5, P6, P0, + ST_TRI, COLOR0, EC, P0, EA, + ST_QUA, COLOR1, P1, P2, EC, EA, + // Case #7: Unique case #5 + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_QUA, COLOR0, EC, P5, P6, EG, + ST_QUA, COLOR1, P0, P1, P2, EC, + ST_TRI, COLOR1, P0, EC, EG, + // Case #8: (cloned #1) + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_QUA, COLOR0, ED, P6, P0, P1, + ST_QUA, COLOR0, ED, P1, P2, EC, + ST_TRI, COLOR1, P3, ED, EC, + // Case #9: Unique case #6 + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_TRI, COLOR0, ED, P6, EG, + ST_QUA, COLOR1, P0, EA, EC, P3, + ST_QUA, COLOR1, P0, P3, ED, EG, + // Case #10: (cloned #5) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_QUA, COLOR0, ED, P6, P0, EA, + ST_QUA, COLOR1, P1, EB, EC, P3, + ST_QUA, COLOR1, P1, P3, ED, EA, + // Case #11: Unique case #7 + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_TRI, COLOR0, ED, P6, EG, + ST_QUA, COLOR1, P0, P1, EB, EC, + ST_QUA, COLOR1, P0, EC, P3, ED, + ST_TRI, COLOR1, P0, ED, EG, + // Case #12: (cloned #3) + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_QUA, COLOR0, ED, P6, P0, P1, + ST_TRI, COLOR0, ED, P1, EB, + ST_QUA, COLOR1, P2, P3, ED, EB, + // Case #13: (cloned #11) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, P4, P5, P6, EG, + ST_TRI, COLOR0, ED, P4, EG, + ST_QUA, COLOR1, EA, EB, P2, P3, + ST_QUA, COLOR1, EG, P0, EA, P3, + ST_TRI, COLOR1, ED, EG, P3, + // Case #14: (cloned #7) + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_QUA, COLOR0, ED, P6, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, ED, + ST_TRI, COLOR1, P1, ED, EA, + // Case #15: Unique case #8 + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_TRI, COLOR0, ED, P6, EG, + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, P0, P3, ED, EG, + // Case #16: (cloned #1) + ST_QUA, COLOR0, EE, P5, P6, P0, + ST_QUA, COLOR0, EE, P0, P1, P2, + ST_QUA, COLOR0, EE, P2, P3, ED, + ST_TRI, COLOR1, P4, EE, ED, + // Case #17: (cloned #9) + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_TRI, COLOR0, EA, P3, ED, + ST_QUA, COLOR1, P4, EE, EG, P0, + ST_QUA, COLOR1, P4, P0, EA, ED, + // Case #18: (cloned #9) + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, P0, + ST_TRI, COLOR0, EE, P0, EA, + ST_QUA, COLOR1, P1, EB, ED, P4, + ST_QUA, COLOR1, P1, P4, EE, EA, + // Case #19: Unique case #9 + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR1, P0, P1, EB, ED, + ST_QUA, COLOR1, P0, ED, P4, EE, + ST_TRI, COLOR1, P0, EE, EG, + // Case #20: (cloned #5) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, P0, + ST_QUA, COLOR0, EE, P0, P1, EB, + ST_QUA, COLOR1, P2, EC, ED, P4, + ST_QUA, COLOR1, P2, P4, EE, EB, + // Case #21: Unique case #10 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR1, P0, EA, EB, P2, + ST_QUA, COLOR1, P0, P2, EC, ED, + ST_QUA, COLOR1, P0, ED, P4, EE, + ST_TRI, COLOR1, P0, EE, EG, + // Case #22: (cloned #11) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, P0, + ST_TRI, COLOR0, EE, P0, EA, + ST_QUA, COLOR1, P1, P2, EC, ED, + ST_QUA, COLOR1, P1, ED, P4, EE, + ST_TRI, COLOR1, P1, EE, EA, + // Case #23: Unique case #11 + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR1, P0, P1, P2, EC, + ST_QUA, COLOR1, P0, EC, ED, P4, + ST_QUA, COLOR1, P0, P4, EE, EG, + // Case #24: (cloned #3) + ST_QUA, COLOR0, EE, P5, P6, P0, + ST_QUA, COLOR0, EE, P0, P1, P2, + ST_TRI, COLOR0, EE, P2, EC, + ST_QUA, COLOR1, P3, P4, EE, EC, + // Case #25: (cloned #19) + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, EE, EG, + ST_QUA, COLOR1, P3, EG, P0, EA, + ST_TRI, COLOR1, P3, EA, EC, + // Case #26: (cloned #11) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, P5, P6, P0, EA, + ST_TRI, COLOR0, EE, P5, EA, + ST_QUA, COLOR1, EB, EC, P3, P4, + ST_QUA, COLOR1, EA, P1, EB, P4, + ST_TRI, COLOR1, EE, EA, P4, + // Case #27: Unique case #12 + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR1, P0, P1, EB, EC, + ST_QUA, COLOR1, P0, EC, P3, P4, + ST_QUA, COLOR1, P0, P4, EE, EG, + // Case #28: (cloned #7) + ST_QUA, COLOR0, EE, P5, P6, P0, + ST_QUA, COLOR0, EE, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, EE, + ST_TRI, COLOR1, P2, EE, EB, + // Case #29: (cloned #23) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR1, EB, P2, P3, P4, + ST_QUA, COLOR1, P0, EA, EB, P4, + ST_QUA, COLOR1, EE, EG, P0, P4, + // Case #30: (cloned #15) + ST_QUA, COLOR0, EE, P5, P6, P0, + ST_TRI, COLOR0, EE, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, P4, + ST_QUA, COLOR1, P1, P4, EE, EA, + // Case #31: Unique case #13 + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, P0, P3, P4, EE, + ST_TRI, COLOR1, P0, EE, EG, + // Case #32: (cloned #1) + ST_QUA, COLOR0, EF, P6, P0, P1, + ST_QUA, COLOR0, EF, P1, P2, P3, + ST_QUA, COLOR0, EF, P3, P4, EE, + ST_TRI, COLOR1, P5, EF, EE, + // Case #33: (cloned #5) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_QUA, COLOR0, EA, P3, P4, EE, + ST_QUA, COLOR1, P5, EF, EG, P0, + ST_QUA, COLOR1, P5, P0, EA, EE, + // Case #34: (cloned #9) + ST_QUA, COLOR0, EF, P6, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_TRI, COLOR0, EB, P4, EE, + ST_QUA, COLOR1, P5, EF, EA, P1, + ST_QUA, COLOR1, P5, P1, EB, EE, + // Case #35: (cloned #11) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, P2, P3, P4, EE, + ST_TRI, COLOR0, EB, P2, EE, + ST_QUA, COLOR1, EF, EG, P0, P1, + ST_QUA, COLOR1, EE, P5, EF, P1, + ST_TRI, COLOR1, EB, EE, P1, + // Case #36: (cloned #9) + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR0, EF, P6, P0, P1, + ST_TRI, COLOR0, EF, P1, EB, + ST_QUA, COLOR1, P2, EC, EE, P5, + ST_QUA, COLOR1, P2, P5, EF, EB, + // Case #37: (cloned #21) + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, P5, EF, EG, P0, + ST_QUA, COLOR1, P5, P0, EA, EB, + ST_QUA, COLOR1, P5, EB, P2, EC, + ST_TRI, COLOR1, P5, EC, EE, + // Case #38: (cloned #19) + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR0, EF, P6, P0, EA, + ST_QUA, COLOR1, P1, P2, EC, EE, + ST_QUA, COLOR1, P1, EE, P5, EF, + ST_TRI, COLOR1, P1, EF, EA, + // Case #39: (cloned #23) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, EG, P0, P1, P2, + ST_QUA, COLOR1, P5, EF, EG, P2, + ST_QUA, COLOR1, EC, EE, P5, P2, + // Case #40: (cloned #5) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P6, P0, P1, + ST_QUA, COLOR0, EF, P1, P2, EC, + ST_QUA, COLOR1, P3, ED, EE, P5, + ST_QUA, COLOR1, P3, P5, EF, EC, + // Case #41: (cloned #21) + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P3, ED, EE, P5, + ST_QUA, COLOR1, P3, P5, EF, EG, + ST_QUA, COLOR1, P3, EG, P0, EA, + ST_TRI, COLOR1, P3, EA, EC, + // Case #42: (cloned #21) + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P6, P0, EA, + ST_QUA, COLOR1, P1, EB, EC, P3, + ST_QUA, COLOR1, P1, P3, ED, EE, + ST_QUA, COLOR1, P1, EE, P5, EF, + ST_TRI, COLOR1, P1, EF, EA, + // Case #43: Unique case #14 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR1, P0, P1, EB, EC, + ST_QUA, COLOR1, P0, EC, P3, ED, + ST_QUA, COLOR1, P0, ED, EE, P5, + ST_QUA, COLOR1, P0, P5, EF, EG, + // Case #44: (cloned #11) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P6, P0, P1, + ST_TRI, COLOR0, EF, P1, EB, + ST_QUA, COLOR1, P2, P3, ED, EE, + ST_QUA, COLOR1, P2, EE, P5, EF, + ST_TRI, COLOR1, P2, EF, EB, + // Case #45: (cloned #43) + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR1, P2, P3, ED, EE, + ST_QUA, COLOR1, P2, EE, P5, EF, + ST_QUA, COLOR1, P2, EF, EG, P0, + ST_QUA, COLOR1, P2, P0, EA, EB, + // Case #46: (cloned #23) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P6, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, ED, + ST_QUA, COLOR1, P1, ED, EE, P5, + ST_QUA, COLOR1, P1, P5, EF, EA, + // Case #47: Unique case #15 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, P0, P3, ED, EE, + ST_QUA, COLOR1, P0, EE, P5, EF, + ST_TRI, COLOR1, P0, EF, EG, + // Case #48: (cloned #3) + ST_QUA, COLOR0, EF, P6, P0, P1, + ST_QUA, COLOR0, EF, P1, P2, P3, + ST_TRI, COLOR0, EF, P3, ED, + ST_QUA, COLOR1, P4, P5, EF, ED, + // Case #49: (cloned #11) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_TRI, COLOR0, EA, P3, ED, + ST_QUA, COLOR1, P4, P5, EF, EG, + ST_QUA, COLOR1, P4, EG, P0, EA, + ST_TRI, COLOR1, P4, EA, ED, + // Case #50: (cloned #19) + ST_QUA, COLOR0, EF, P6, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P4, P5, EF, EA, + ST_QUA, COLOR1, P4, EA, P1, EB, + ST_TRI, COLOR1, P4, EB, ED, + // Case #51: (cloned #27) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P4, P5, EF, EG, + ST_QUA, COLOR1, P4, EG, P0, P1, + ST_QUA, COLOR1, P4, P1, EB, ED, + // Case #52: (cloned #11) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, P6, P0, P1, EB, + ST_TRI, COLOR0, EF, P6, EB, + ST_QUA, COLOR1, EC, ED, P4, P5, + ST_QUA, COLOR1, EB, P2, EC, P5, + ST_TRI, COLOR1, EF, EB, P5, + // Case #53: (cloned #43) + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR1, P4, P5, EF, EG, + ST_QUA, COLOR1, P4, EG, P0, EA, + ST_QUA, COLOR1, P4, EA, EB, P2, + ST_QUA, COLOR1, P4, P2, EC, ED, + // Case #54: (cloned #27) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EF, P6, P0, EA, + ST_QUA, COLOR1, P1, P2, EC, ED, + ST_QUA, COLOR1, P1, ED, P4, P5, + ST_QUA, COLOR1, P1, P5, EF, EA, + // Case #55: Unique case #16 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR1, P0, P1, P2, EC, + ST_QUA, COLOR1, P0, EC, ED, P4, + ST_QUA, COLOR1, P0, P4, P5, EF, + ST_TRI, COLOR1, P0, EF, EG, + // Case #56: (cloned #7) + ST_QUA, COLOR0, EF, P6, P0, P1, + ST_QUA, COLOR0, EF, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, EF, + ST_TRI, COLOR1, P3, EF, EC, + // Case #57: (cloned #23) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, EF, + ST_QUA, COLOR1, P3, EF, EG, P0, + ST_QUA, COLOR1, P3, P0, EA, EC, + // Case #58: (cloned #23) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, EF, P6, P0, EA, + ST_QUA, COLOR1, EC, P3, P4, P5, + ST_QUA, COLOR1, P1, EB, EC, P5, + ST_QUA, COLOR1, EF, EA, P1, P5, + // Case #59: (cloned #55) + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, EF, + ST_QUA, COLOR1, P3, EF, EG, P0, + ST_QUA, COLOR1, P3, P0, P1, EB, + ST_TRI, COLOR1, P3, EB, EC, + // Case #60: (cloned #15) + ST_QUA, COLOR0, EF, P6, P0, P1, + ST_TRI, COLOR0, EF, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, P5, + ST_QUA, COLOR1, P2, P5, EF, EB, + // Case #61: (cloned #47) + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, P5, + ST_QUA, COLOR1, P2, P5, EF, EG, + ST_QUA, COLOR1, P2, EG, P0, EA, + ST_TRI, COLOR1, P2, EA, EB, + // Case #62: (cloned #31) + ST_QUA, COLOR0, EF, P6, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, P4, + ST_QUA, COLOR1, P1, P4, P5, EF, + ST_TRI, COLOR1, P1, EF, EA, + // Case #63: Unique case #17 + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, P0, P3, P4, P5, + ST_QUA, COLOR1, P0, P5, EF, EG, + // Case #64: (cloned #1) + ST_QUA, COLOR0, EG, P0, P1, P2, + ST_QUA, COLOR0, EG, P2, P3, P4, + ST_QUA, COLOR0, EG, P4, P5, EF, + ST_TRI, COLOR1, P6, EG, EF, + // Case #65: (cloned #3) + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_QUA, COLOR0, EA, P3, P4, P5, + ST_TRI, COLOR0, EA, P5, EF, + ST_QUA, COLOR1, P6, P0, EA, EF, + // Case #66: (cloned #5) + ST_TRI, COLOR0, EG, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_QUA, COLOR0, EB, P4, P5, EF, + ST_QUA, COLOR1, P6, EG, EA, P1, + ST_QUA, COLOR1, P6, P1, EB, EF, + // Case #67: (cloned #7) + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_QUA, COLOR0, EB, P4, P5, EF, + ST_QUA, COLOR1, P6, P0, P1, EB, + ST_TRI, COLOR1, P6, EB, EF, + // Case #68: (cloned #9) + ST_QUA, COLOR0, EG, P0, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_TRI, COLOR0, EC, P5, EF, + ST_QUA, COLOR1, P6, EG, EB, P2, + ST_QUA, COLOR1, P6, P2, EC, EF, + // Case #69: (cloned #11) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_TRI, COLOR0, EC, P5, EF, + ST_QUA, COLOR1, P6, P0, EA, EB, + ST_QUA, COLOR1, P6, EB, P2, EC, + ST_TRI, COLOR1, P6, EC, EF, + // Case #70: (cloned #11) + ST_TRI, COLOR0, EG, P0, EA, + ST_QUA, COLOR0, P3, P4, P5, EF, + ST_TRI, COLOR0, EC, P3, EF, + ST_QUA, COLOR1, EG, EA, P1, P2, + ST_QUA, COLOR1, EF, P6, EG, P2, + ST_TRI, COLOR1, EC, EF, P2, + // Case #71: (cloned #15) + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_TRI, COLOR0, EC, P5, EF, + ST_QUA, COLOR1, P6, P0, P1, P2, + ST_QUA, COLOR1, P6, P2, EC, EF, + // Case #72: (cloned #9) + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR0, EG, P0, P1, P2, + ST_TRI, COLOR0, EG, P2, EC, + ST_QUA, COLOR1, P3, ED, EF, P6, + ST_QUA, COLOR1, P3, P6, EG, EC, + // Case #73: (cloned #19) + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, P6, P0, EA, EC, + ST_QUA, COLOR1, P6, EC, P3, ED, + ST_TRI, COLOR1, P6, ED, EF, + // Case #74: (cloned #21) + ST_TRI, COLOR0, EG, P0, EA, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, P6, EG, EA, P1, + ST_QUA, COLOR1, P6, P1, EB, EC, + ST_QUA, COLOR1, P6, EC, P3, ED, + ST_TRI, COLOR1, P6, ED, EF, + // Case #75: (cloned #23) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, P6, P0, P1, EB, + ST_QUA, COLOR1, P6, EB, EC, P3, + ST_QUA, COLOR1, P6, P3, ED, EF, + // Case #76: (cloned #19) + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR0, EG, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, ED, EF, + ST_QUA, COLOR1, P2, EF, P6, EG, + ST_TRI, COLOR1, P2, EG, EB, + // Case #77: (cloned #27) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, P6, P0, EA, EB, + ST_QUA, COLOR1, P6, EB, P2, P3, + ST_QUA, COLOR1, P6, P3, ED, EF, + // Case #78: (cloned #23) + ST_TRI, COLOR0, EG, P0, EA, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, EA, P1, P2, P3, + ST_QUA, COLOR1, P6, EG, EA, P3, + ST_QUA, COLOR1, ED, EF, P6, P3, + // Case #79: (cloned #31) + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, P6, P0, P1, P2, + ST_QUA, COLOR1, P6, P2, P3, ED, + ST_TRI, COLOR1, P6, ED, EF, + // Case #80: (cloned #5) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EG, P0, P1, P2, + ST_QUA, COLOR0, EG, P2, P3, ED, + ST_QUA, COLOR1, P4, EE, EF, P6, + ST_QUA, COLOR1, P4, P6, EG, ED, + // Case #81: (cloned #11) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, P1, P2, P3, ED, + ST_TRI, COLOR0, EA, P1, ED, + ST_QUA, COLOR1, EE, EF, P6, P0, + ST_QUA, COLOR1, ED, P4, EE, P0, + ST_TRI, COLOR1, EA, ED, P0, + // Case #82: (cloned #21) + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P4, EE, EF, P6, + ST_QUA, COLOR1, P4, P6, EG, EA, + ST_QUA, COLOR1, P4, EA, P1, EB, + ST_TRI, COLOR1, P4, EB, ED, + // Case #83: (cloned #23) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, EF, P6, P0, P1, + ST_QUA, COLOR1, P4, EE, EF, P1, + ST_QUA, COLOR1, EB, ED, P4, P1, + // Case #84: (cloned #21) + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EG, P0, P1, EB, + ST_QUA, COLOR1, P2, EC, ED, P4, + ST_QUA, COLOR1, P2, P4, EE, EF, + ST_QUA, COLOR1, P2, EF, P6, EG, + ST_TRI, COLOR1, P2, EG, EB, + // Case #85: (cloned #43) + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR1, P6, P0, EA, EB, + ST_QUA, COLOR1, P6, EB, P2, EC, + ST_QUA, COLOR1, P6, EC, ED, P4, + ST_QUA, COLOR1, P6, P4, EE, EF, + // Case #86: (cloned #43) + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P0, EA, + ST_QUA, COLOR1, P1, P2, EC, ED, + ST_QUA, COLOR1, P1, ED, P4, EE, + ST_QUA, COLOR1, P1, EE, EF, P6, + ST_QUA, COLOR1, P1, P6, EG, EA, + // Case #87: (cloned #47) + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR1, P6, P0, P1, P2, + ST_QUA, COLOR1, P6, P2, EC, ED, + ST_QUA, COLOR1, P6, ED, P4, EE, + ST_TRI, COLOR1, P6, EE, EF, + // Case #88: (cloned #11) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EG, P0, P1, P2, + ST_TRI, COLOR0, EG, P2, EC, + ST_QUA, COLOR1, P3, P4, EE, EF, + ST_QUA, COLOR1, P3, EF, P6, EG, + ST_TRI, COLOR1, P3, EG, EC, + // Case #89: (cloned #27) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, EE, EF, + ST_QUA, COLOR1, P3, EF, P6, P0, + ST_QUA, COLOR1, P3, P0, EA, EC, + // Case #90: (cloned #43) + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P0, EA, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR1, P3, P4, EE, EF, + ST_QUA, COLOR1, P3, EF, P6, EG, + ST_QUA, COLOR1, P3, EG, EA, P1, + ST_QUA, COLOR1, P3, P1, EB, EC, + // Case #91: (cloned #55) + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR1, P6, P0, P1, EB, + ST_QUA, COLOR1, P6, EB, EC, P3, + ST_QUA, COLOR1, P6, P3, P4, EE, + ST_TRI, COLOR1, P6, EE, EF, + // Case #92: (cloned #23) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EG, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, EE, + ST_QUA, COLOR1, P2, EE, EF, P6, + ST_QUA, COLOR1, P2, P6, EG, EB, + // Case #93: (cloned #55) + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, EE, + ST_QUA, COLOR1, P2, EE, EF, P6, + ST_QUA, COLOR1, P2, P6, P0, EA, + ST_TRI, COLOR1, P2, EA, EB, + // Case #94: (cloned #47) + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, P4, + ST_QUA, COLOR1, P1, P4, EE, EF, + ST_QUA, COLOR1, P1, EF, P6, EG, + ST_TRI, COLOR1, P1, EG, EA, + // Case #95: (cloned #63) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR1, P6, P0, P1, P2, + ST_QUA, COLOR1, P6, P2, P3, P4, + ST_QUA, COLOR1, P6, P4, EE, EF, + // Case #96: (cloned #3) + ST_QUA, COLOR0, EG, P0, P1, P2, + ST_QUA, COLOR0, EG, P2, P3, P4, + ST_TRI, COLOR0, EG, P4, EE, + ST_QUA, COLOR1, P5, P6, EG, EE, + // Case #97: (cloned #7) + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_QUA, COLOR0, EA, P3, P4, EE, + ST_QUA, COLOR1, P5, P6, P0, EA, + ST_TRI, COLOR1, P5, EA, EE, + // Case #98: (cloned #11) + ST_TRI, COLOR0, EG, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_TRI, COLOR0, EB, P4, EE, + ST_QUA, COLOR1, P5, P6, EG, EA, + ST_QUA, COLOR1, P5, EA, P1, EB, + ST_TRI, COLOR1, P5, EB, EE, + // Case #99: (cloned #15) + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_TRI, COLOR0, EB, P4, EE, + ST_QUA, COLOR1, P5, P6, P0, P1, + ST_QUA, COLOR1, P5, P1, EB, EE, + // Case #100: (cloned #19) + ST_QUA, COLOR0, EG, P0, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, P5, P6, EG, EB, + ST_QUA, COLOR1, P5, EB, P2, EC, + ST_TRI, COLOR1, P5, EC, EE, + // Case #101: (cloned #23) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, P5, P6, P0, EA, + ST_QUA, COLOR1, P5, EA, EB, P2, + ST_QUA, COLOR1, P5, P2, EC, EE, + // Case #102: (cloned #27) + ST_TRI, COLOR0, EG, P0, EA, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, P5, P6, EG, EA, + ST_QUA, COLOR1, P5, EA, P1, P2, + ST_QUA, COLOR1, P5, P2, EC, EE, + // Case #103: (cloned #31) + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, P5, P6, P0, P1, + ST_QUA, COLOR1, P5, P1, P2, EC, + ST_TRI, COLOR1, P5, EC, EE, + // Case #104: (cloned #11) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, P0, P1, P2, EC, + ST_TRI, COLOR0, EG, P0, EC, + ST_QUA, COLOR1, ED, EE, P5, P6, + ST_QUA, COLOR1, EC, P3, ED, P6, + ST_TRI, COLOR1, EG, EC, P6, + // Case #105: (cloned #23) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, EE, P5, P6, P0, + ST_QUA, COLOR1, P3, ED, EE, P0, + ST_QUA, COLOR1, EA, EC, P3, P0, + // Case #106: (cloned #43) + ST_TRI, COLOR0, EG, P0, EA, + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR1, P5, P6, EG, EA, + ST_QUA, COLOR1, P5, EA, P1, EB, + ST_QUA, COLOR1, P5, EB, EC, P3, + ST_QUA, COLOR1, P5, P3, ED, EE, + // Case #107: (cloned #47) + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR1, P5, P6, P0, P1, + ST_QUA, COLOR1, P5, P1, EB, EC, + ST_QUA, COLOR1, P5, EC, P3, ED, + ST_TRI, COLOR1, P5, ED, EE, + // Case #108: (cloned #27) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EG, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, ED, EE, + ST_QUA, COLOR1, P2, EE, P5, P6, + ST_QUA, COLOR1, P2, P6, EG, EB, + // Case #109: (cloned #55) + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR1, P5, P6, P0, EA, + ST_QUA, COLOR1, P5, EA, EB, P2, + ST_QUA, COLOR1, P5, P2, P3, ED, + ST_TRI, COLOR1, P5, ED, EE, + // Case #110: (cloned #55) + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EG, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, ED, + ST_QUA, COLOR1, P1, ED, EE, P5, + ST_QUA, COLOR1, P1, P5, P6, EG, + ST_TRI, COLOR1, P1, EG, EA, + // Case #111: (cloned #63) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR1, P5, P6, P0, P1, + ST_QUA, COLOR1, P5, P1, P2, P3, + ST_QUA, COLOR1, P5, P3, ED, EE, + // Case #112: (cloned #7) + ST_QUA, COLOR0, EG, P0, P1, P2, + ST_QUA, COLOR0, EG, P2, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, EG, + ST_TRI, COLOR1, P4, EG, ED, + // Case #113: (cloned #15) + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_TRI, COLOR0, EA, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, P0, + ST_QUA, COLOR1, P4, P0, EA, ED, + // Case #114: (cloned #23) + ST_TRI, COLOR0, EG, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, EG, + ST_QUA, COLOR1, P4, EG, EA, P1, + ST_QUA, COLOR1, P4, P1, EB, ED, + // Case #115: (cloned #31) + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, P0, + ST_QUA, COLOR1, P4, P0, P1, EB, + ST_TRI, COLOR1, P4, EB, ED, + // Case #116: (cloned #23) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EG, P0, P1, EB, + ST_QUA, COLOR1, ED, P4, P5, P6, + ST_QUA, COLOR1, P2, EC, ED, P6, + ST_QUA, COLOR1, EG, EB, P2, P6, + // Case #117: (cloned #47) + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, P0, + ST_QUA, COLOR1, P4, P0, EA, EB, + ST_QUA, COLOR1, P4, EB, P2, EC, + ST_TRI, COLOR1, P4, EC, ED, + // Case #118: (cloned #55) + ST_TRI, COLOR0, EG, P0, EA, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, EG, + ST_QUA, COLOR1, P4, EG, EA, P1, + ST_QUA, COLOR1, P4, P1, P2, EC, + ST_TRI, COLOR1, P4, EC, ED, + // Case #119: (cloned #63) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, P0, + ST_QUA, COLOR1, P4, P0, P1, P2, + ST_QUA, COLOR1, P4, P2, EC, ED, + // Case #120: (cloned #15) + ST_QUA, COLOR0, EG, P0, P1, P2, + ST_TRI, COLOR0, EG, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, P6, + ST_QUA, COLOR1, P3, P6, EG, EC, + // Case #121: (cloned #31) + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, P6, + ST_QUA, COLOR1, P3, P6, P0, EA, + ST_TRI, COLOR1, P3, EA, EC, + // Case #122: (cloned #47) + ST_TRI, COLOR0, EG, P0, EA, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, P6, + ST_QUA, COLOR1, P3, P6, EG, EA, + ST_QUA, COLOR1, P3, EA, P1, EB, + ST_TRI, COLOR1, P3, EB, EC, + // Case #123: (cloned #63) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, P6, + ST_QUA, COLOR1, P3, P6, P0, P1, + ST_QUA, COLOR1, P3, P1, EB, EC, + // Case #124: (cloned #31) + ST_QUA, COLOR0, EG, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, P5, + ST_QUA, COLOR1, P2, P5, P6, EG, + ST_TRI, COLOR1, P2, EG, EB, + // Case #125: (cloned #63) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, P5, + ST_QUA, COLOR1, P2, P5, P6, P0, + ST_QUA, COLOR1, P2, P0, EA, EB, + // Case #126: (cloned #63) + ST_TRI, COLOR0, EG, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, P4, + ST_QUA, COLOR1, P1, P4, P5, P6, + ST_QUA, COLOR1, P1, P6, EG, EA, + // Case #127: Unique case #18 + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, P0, P3, P4, P5, + ST_TRI, COLOR1, P0, P5, P6, + // Dummy + 0 +}; + +//--------------------------------------------------------------------------- +// Axom modifications +const size_t clipShapesPoly7Size = sizeof(clipShapesPoly7) / sizeof(unsigned char); +} // namespace tables +} // namespace clipping +} // namespace bump +} // namespace axom +// clang-format on +//--------------------------------------------------------------------------- diff --git a/src/axom/bump/clipping/ClipCasesPoly8.cpp b/src/axom/bump/clipping/ClipCasesPoly8.cpp new file mode 100644 index 0000000000..1c9d96d226 --- /dev/null +++ b/src/axom/bump/clipping/ClipCasesPoly8.cpp @@ -0,0 +1,1876 @@ +// Copyright (c) Lawrence Livermore National Security, LLC and other VisIt +// Project developers. See the top-level LICENSE file for dates and other +// details. No copyright assignment is required to contribute to VisIt. + +#include "ClipCases.h" +//--------------------------------------------------------------------------- +// Axom modifications +// clang-format off +namespace axom { +namespace bump { +namespace clipping { +namespace tables { +//--------------------------------------------------------------------------- + +// This file is meant to be read and created by a program other than a +// compiler. If you must modify it by hand, at least be nice to the +// parser and don't add anything else to this file or rearrange it. + +int numClipCasesPoly8 = 256; + +int numClipShapesPoly8[256] = { + 3, 5, 5, 4, 5, 6, 4, 5, // cases 0 - 7 + 5, 5, 6, 6, 4, 6, 5, 4, // cases 8 - 15 + 5, 6, 5, 6, 6, 8, 6, 6, // cases 16 - 23 + 4, 6, 6, 6, 5, 6, 4, 5, // cases 24 - 31 + 5, 5, 6, 6, 5, 7, 6, 5, // cases 32 - 39 + 6, 7, 8, 7, 6, 7, 6, 6, // cases 40 - 47 + 4, 6, 6, 5, 6, 7, 6, 6, // cases 48 - 55 + 5, 5, 6, 6, 4, 6, 5, 4, // cases 56 - 63 + 5, 6, 5, 6, 6, 8, 6, 6, // cases 64 - 71 + 5, 7, 7, 7, 6, 7, 5, 6, // cases 72 - 79 + 6, 8, 7, 7, 8, 9, 7, 8, // cases 80 - 87 + 6, 7, 7, 8, 6, 8, 6, 6, // cases 88 - 95 + 4, 6, 6, 6, 6, 7, 5, 6, // cases 96 - 103 + 6, 7, 7, 8, 6, 8, 6, 6, // cases 104 - 111 + 5, 6, 5, 6, 6, 8, 6, 6, // cases 112 - 119 + 4, 6, 6, 6, 5, 6, 4, 5, // cases 120 - 127 + 5, 4, 6, 5, 5, 6, 6, 4, // cases 128 - 135 + 6, 6, 8, 6, 6, 6, 6, 5, // cases 136 - 143 + 5, 6, 7, 5, 7, 7, 7, 6, // cases 144 - 151 + 6, 5, 7, 6, 5, 6, 6, 4, // cases 152 - 159 + 6, 6, 8, 6, 7, 7, 7, 6, // cases 160 - 167 + 8, 7, 9, 8, 7, 8, 8, 6, // cases 168 - 175 + 6, 6, 7, 6, 7, 8, 8, 6, // cases 176 - 183 + 6, 6, 8, 6, 6, 6, 6, 5, // cases 184 - 191 + 4, 5, 6, 4, 6, 6, 6, 5, // cases 192 - 199 + 6, 5, 7, 6, 5, 6, 6, 4, // cases 200 - 207 + 6, 6, 7, 6, 7, 8, 8, 6, // cases 208 - 215 + 6, 6, 8, 6, 6, 6, 6, 5, // cases 216 - 223 + 5, 4, 6, 5, 5, 6, 6, 4, // cases 224 - 231 + 6, 6, 8, 6, 6, 6, 6, 5, // cases 232 - 239 + 4, 5, 6, 4, 6, 6, 6, 5, // cases 240 - 247 + 5, 4, 6, 5, 4, 5, 5, 3 // cases 248 - 255 +}; + +int startClipShapesPoly8[256] = { + 0, 18, 46, 74, 98, 126, 160, 184, // cases 0 - 7 + 212, 240, 270, 304, 338, 362, 396, 424, // cases 8 - 15 + 448, 476, 510, 540, 574, 608, 652, 686, // cases 16 - 23 + 720, 744, 778, 812, 846, 874, 908, 932, // cases 24 - 31 + 960, 988, 1018, 1052, 1086, 1116, 1156, 1190, // cases 32 - 39 + 1220, 1254, 1294, 1338, 1378, 1412, 1452, 1486, // cases 40 - 47 + 1520, 1544, 1578, 1612, 1642, 1676, 1716, 1750, // cases 48 - 55 + 1784, 1812, 1842, 1876, 1910, 1934, 1968, 1996, // cases 56 - 63 + 2020, 2048, 2082, 2112, 2146, 2180, 2224, 2258, // cases 64 - 71 + 2292, 2322, 2362, 2402, 2442, 2476, 2516, 2546, // cases 72 - 79 + 2580, 2614, 2658, 2698, 2738, 2782, 2832, 2872, // cases 80 - 87 + 2916, 2950, 2990, 3030, 3074, 3108, 3152, 3186, // cases 88 - 95 + 3220, 3244, 3278, 3312, 3346, 3380, 3420, 3450, // cases 96 - 103 + 3484, 3518, 3558, 3598, 3642, 3676, 3720, 3754, // cases 104 - 111 + 3788, 3816, 3850, 3880, 3914, 3948, 3992, 4026, // cases 112 - 119 + 4060, 4084, 4118, 4152, 4186, 4214, 4248, 4272, // cases 120 - 127 + 4300, 4328, 4352, 4386, 4414, 4444, 4478, 4512, // cases 128 - 135 + 4536, 4570, 4604, 4648, 4682, 4716, 4750, 4784, // cases 136 - 143 + 4812, 4842, 4876, 4916, 4946, 4986, 5026, 5066, // cases 144 - 151 + 5100, 5134, 5164, 5204, 5238, 5268, 5302, 5336, // cases 152 - 159 + 5360, 5394, 5428, 5472, 5506, 5546, 5586, 5626, // cases 160 - 167 + 5660, 5704, 5744, 5794, 5838, 5878, 5922, 5966, // cases 168 - 175 + 6000, 6034, 6068, 6108, 6142, 6182, 6226, 6270, // cases 176 - 183 + 6304, 6338, 6372, 6416, 6450, 6484, 6518, 6552, // cases 184 - 191 + 6580, 6604, 6632, 6666, 6690, 6724, 6758, 6792, // cases 192 - 199 + 6820, 6854, 6884, 6924, 6958, 6988, 7022, 7056, // cases 200 - 207 + 7080, 7114, 7148, 7188, 7222, 7262, 7306, 7350, // cases 208 - 215 + 7384, 7418, 7452, 7496, 7530, 7564, 7598, 7632, // cases 216 - 223 + 7660, 7688, 7712, 7746, 7774, 7804, 7838, 7872, // cases 224 - 231 + 7896, 7930, 7964, 8008, 8042, 8076, 8110, 8144, // cases 232 - 239 + 8172, 8196, 8224, 8258, 8282, 8316, 8350, 8384, // cases 240 - 247 + 8412, 8440, 8464, 8498, 8526, 8550, 8578, 8606 // cases 248 - 255 +}; + +unsigned char clipShapesPoly8[] = { + // Case #0: Unique case #1 + ST_QUA, COLOR0, P0, P1, P2, P3, + ST_QUA, COLOR0, P0, P3, P4, P5, + ST_QUA, COLOR0, P0, P5, P6, P7, + // Case #1: Unique case #2 + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_QUA, COLOR0, EA, P3, P4, P5, + ST_QUA, COLOR0, EA, P5, P6, P7, + ST_TRI, COLOR0, EA, P7, EH, + ST_TRI, COLOR1, P0, EA, EH, + // Case #2: (cloned #1) + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_QUA, COLOR0, EB, P4, P5, P6, + ST_QUA, COLOR0, EB, P6, P7, P0, + ST_TRI, COLOR0, EB, P0, EA, + ST_TRI, COLOR1, P1, EB, EA, + // Case #3: Unique case #3 + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_QUA, COLOR0, EB, P4, P5, P6, + ST_QUA, COLOR0, EB, P6, P7, EH, + ST_QUA, COLOR1, P0, P1, EB, EH, + // Case #4: (cloned #1) + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_QUA, COLOR0, EC, P5, P6, P7, + ST_QUA, COLOR0, EC, P7, P0, P1, + ST_TRI, COLOR0, EC, P1, EB, + ST_TRI, COLOR1, P2, EC, EB, + // Case #5: Unique case #4 + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_QUA, COLOR0, EC, P5, P6, P7, + ST_TRI, COLOR0, EC, P7, EH, + ST_QUA, COLOR1, P0, EA, EB, P2, + ST_QUA, COLOR1, P0, P2, EC, EH, + // Case #6: (cloned #3) + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_QUA, COLOR0, EC, P5, P6, P7, + ST_QUA, COLOR0, EC, P7, P0, EA, + ST_QUA, COLOR1, P1, P2, EC, EA, + // Case #7: Unique case #5 + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_QUA, COLOR0, EC, P5, P6, P7, + ST_TRI, COLOR0, EC, P7, EH, + ST_QUA, COLOR1, P0, P1, P2, EC, + ST_TRI, COLOR1, P0, EC, EH, + // Case #8: (cloned #1) + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_QUA, COLOR0, ED, P6, P7, P0, + ST_QUA, COLOR0, ED, P0, P1, P2, + ST_TRI, COLOR0, ED, P2, EC, + ST_TRI, COLOR1, P3, ED, EC, + // Case #9: Unique case #6 + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_QUA, COLOR0, ED, P6, P7, EH, + ST_QUA, COLOR1, P0, EA, EC, P3, + ST_QUA, COLOR1, P0, P3, ED, EH, + // Case #10: (cloned #5) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_QUA, COLOR0, ED, P6, P7, P0, + ST_TRI, COLOR0, ED, P0, EA, + ST_QUA, COLOR1, P1, EB, EC, P3, + ST_QUA, COLOR1, P1, P3, ED, EA, + // Case #11: Unique case #7 + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_QUA, COLOR0, ED, P6, P7, EH, + ST_QUA, COLOR1, P0, P1, EB, EC, + ST_QUA, COLOR1, P0, EC, P3, ED, + ST_TRI, COLOR1, P0, ED, EH, + // Case #12: (cloned #3) + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_QUA, COLOR0, ED, P6, P7, P0, + ST_QUA, COLOR0, ED, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, ED, EB, + // Case #13: (cloned #11) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, P5, P6, P7, EH, + ST_QUA, COLOR0, ED, P4, P5, EH, + ST_QUA, COLOR1, EA, EB, P2, P3, + ST_QUA, COLOR1, EH, P0, EA, P3, + ST_TRI, COLOR1, ED, EH, P3, + // Case #14: (cloned #7) + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_QUA, COLOR0, ED, P6, P7, P0, + ST_TRI, COLOR0, ED, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, ED, + ST_TRI, COLOR1, P1, ED, EA, + // Case #15: Unique case #8 + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_QUA, COLOR0, ED, P6, P7, EH, + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, P0, P3, ED, EH, + // Case #16: (cloned #1) + ST_QUA, COLOR0, EE, P5, P6, P7, + ST_QUA, COLOR0, EE, P7, P0, P1, + ST_QUA, COLOR0, EE, P1, P2, P3, + ST_TRI, COLOR0, EE, P3, ED, + ST_TRI, COLOR1, P4, EE, ED, + // Case #17: Unique case #9 + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_TRI, COLOR0, EA, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, P7, + ST_TRI, COLOR0, EE, P7, EH, + ST_QUA, COLOR1, P0, EA, ED, P4, + ST_QUA, COLOR1, P0, P4, EE, EH, + // Case #18: (cloned #9) + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, P7, + ST_QUA, COLOR0, EE, P7, P0, EA, + ST_QUA, COLOR1, P1, EB, ED, P4, + ST_QUA, COLOR1, P1, P4, EE, EA, + // Case #19: Unique case #10 + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, P7, + ST_TRI, COLOR0, EE, P7, EH, + ST_QUA, COLOR1, P0, P1, EB, ED, + ST_QUA, COLOR1, P0, ED, P4, EE, + ST_TRI, COLOR1, P0, EE, EH, + // Case #20: (cloned #5) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, P7, + ST_QUA, COLOR0, EE, P7, P0, P1, + ST_TRI, COLOR0, EE, P1, EB, + ST_QUA, COLOR1, P2, EC, ED, P4, + ST_QUA, COLOR1, P2, P4, EE, EB, + // Case #21: Unique case #11 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, P7, + ST_TRI, COLOR0, EE, P7, EH, + ST_QUA, COLOR1, P0, EA, EB, P2, + ST_QUA, COLOR1, P0, P2, EC, ED, + ST_QUA, COLOR1, P0, ED, P4, EE, + ST_TRI, COLOR1, P0, EE, EH, + // Case #22: (cloned #11) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, P7, + ST_QUA, COLOR0, EE, P7, P0, EA, + ST_QUA, COLOR1, P1, P2, EC, ED, + ST_QUA, COLOR1, P1, ED, P4, EE, + ST_TRI, COLOR1, P1, EE, EA, + // Case #23: Unique case #12 + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, P7, + ST_TRI, COLOR0, EE, P7, EH, + ST_QUA, COLOR1, P0, P1, P2, EC, + ST_QUA, COLOR1, P0, EC, ED, P4, + ST_QUA, COLOR1, P0, P4, EE, EH, + // Case #24: (cloned #3) + ST_QUA, COLOR0, EE, P5, P6, P7, + ST_QUA, COLOR0, EE, P7, P0, P1, + ST_QUA, COLOR0, EE, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, EE, EC, + // Case #25: (cloned #19) + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR0, P5, P6, P7, EH, + ST_TRI, COLOR0, EE, P5, EH, + ST_QUA, COLOR1, EA, EC, P3, P4, + ST_QUA, COLOR1, EH, P0, EA, P4, + ST_TRI, COLOR1, EE, EH, P4, + // Case #26: (cloned #11) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, P6, P7, P0, EA, + ST_QUA, COLOR0, EE, P5, P6, EA, + ST_QUA, COLOR1, EB, EC, P3, P4, + ST_QUA, COLOR1, EA, P1, EB, P4, + ST_TRI, COLOR1, EE, EA, P4, + // Case #27: Unique case #13 + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, EE, P5, P6, P7, + ST_TRI, COLOR0, EE, P7, EH, + ST_QUA, COLOR1, P0, P1, EB, EC, + ST_QUA, COLOR1, P0, EC, P3, P4, + ST_QUA, COLOR1, P0, P4, EE, EH, + // Case #28: (cloned #7) + ST_QUA, COLOR0, EE, P5, P6, P7, + ST_QUA, COLOR0, EE, P7, P0, P1, + ST_TRI, COLOR0, EE, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, EE, + ST_TRI, COLOR1, P2, EE, EB, + // Case #29: (cloned #23) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, P5, P6, P7, EH, + ST_TRI, COLOR0, EE, P5, EH, + ST_QUA, COLOR1, EB, P2, P3, P4, + ST_QUA, COLOR1, P0, EA, EB, P4, + ST_QUA, COLOR1, EE, EH, P0, P4, + // Case #30: (cloned #15) + ST_QUA, COLOR0, EE, P5, P6, P7, + ST_QUA, COLOR0, EE, P7, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, P4, + ST_QUA, COLOR1, P1, P4, EE, EA, + // Case #31: Unique case #14 + ST_QUA, COLOR0, EE, P5, P6, P7, + ST_TRI, COLOR0, EE, P7, EH, + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, P0, P3, P4, EE, + ST_TRI, COLOR1, P0, EE, EH, + // Case #32: (cloned #1) + ST_QUA, COLOR0, EF, P6, P7, P0, + ST_QUA, COLOR0, EF, P0, P1, P2, + ST_QUA, COLOR0, EF, P2, P3, P4, + ST_TRI, COLOR0, EF, P4, EE, + ST_TRI, COLOR1, P5, EF, EE, + // Case #33: (cloned #9) + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_QUA, COLOR0, EA, P3, P4, EE, + ST_QUA, COLOR1, P5, EF, EH, P0, + ST_QUA, COLOR1, P5, P0, EA, EE, + // Case #34: (cloned #17) + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_TRI, COLOR0, EB, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, P0, + ST_TRI, COLOR0, EF, P0, EA, + ST_QUA, COLOR1, P1, EB, EE, P5, + ST_QUA, COLOR1, P1, P5, EF, EA, + // Case #35: (cloned #19) + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR0, P2, P3, P4, EE, + ST_TRI, COLOR0, EB, P2, EE, + ST_QUA, COLOR1, EF, EH, P0, P1, + ST_QUA, COLOR1, EE, P5, EF, P1, + ST_TRI, COLOR1, EB, EE, P1, + // Case #36: (cloned #9) + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, P0, + ST_QUA, COLOR0, EF, P0, P1, EB, + ST_QUA, COLOR1, P2, EC, EE, P5, + ST_QUA, COLOR1, P2, P5, EF, EB, + // Case #37: Unique case #15 + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR1, P0, EA, EB, P2, + ST_QUA, COLOR1, P0, P2, EC, EE, + ST_QUA, COLOR1, P0, EE, P5, EF, + ST_TRI, COLOR1, P0, EF, EH, + // Case #38: (cloned #19) + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, P0, + ST_TRI, COLOR0, EF, P0, EA, + ST_QUA, COLOR1, P1, P2, EC, EE, + ST_QUA, COLOR1, P1, EE, P5, EF, + ST_TRI, COLOR1, P1, EF, EA, + // Case #39: Unique case #16 + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR1, P0, P1, P2, EC, + ST_QUA, COLOR1, P0, EC, EE, P5, + ST_QUA, COLOR1, P0, P5, EF, EH, + // Case #40: (cloned #5) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, P0, + ST_QUA, COLOR0, EF, P0, P1, P2, + ST_TRI, COLOR0, EF, P2, EC, + ST_QUA, COLOR1, P3, ED, EE, P5, + ST_QUA, COLOR1, P3, P5, EF, EC, + // Case #41: (cloned #37) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P3, ED, EE, P5, + ST_QUA, COLOR1, P3, P5, EF, EH, + ST_QUA, COLOR1, P3, EH, P0, EA, + ST_TRI, COLOR1, P3, EA, EC, + // Case #42: (cloned #21) + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, P0, + ST_TRI, COLOR0, EF, P0, EA, + ST_QUA, COLOR1, P1, EB, EC, P3, + ST_QUA, COLOR1, P1, P3, ED, EE, + ST_QUA, COLOR1, P1, EE, P5, EF, + ST_TRI, COLOR1, P1, EF, EA, + // Case #43: Unique case #17 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR1, P0, P1, EB, EC, + ST_QUA, COLOR1, P0, EC, P3, ED, + ST_QUA, COLOR1, P0, ED, EE, P5, + ST_QUA, COLOR1, P0, P5, EF, EH, + // Case #44: (cloned #11) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, P0, + ST_QUA, COLOR0, EF, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, ED, EE, + ST_QUA, COLOR1, P2, EE, P5, EF, + ST_TRI, COLOR1, P2, EF, EB, + // Case #45: Unique case #18 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR1, P0, EA, EB, P2, + ST_QUA, COLOR1, P0, P2, P3, ED, + ST_QUA, COLOR1, P0, ED, EE, P5, + ST_QUA, COLOR1, P0, P5, EF, EH, + // Case #46: (cloned #23) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, P0, + ST_TRI, COLOR0, EF, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, ED, + ST_QUA, COLOR1, P1, ED, EE, P5, + ST_QUA, COLOR1, P1, P5, EF, EA, + // Case #47: Unique case #19 + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, P0, P3, ED, EE, + ST_QUA, COLOR1, P0, EE, P5, EF, + ST_TRI, COLOR1, P0, EF, EH, + // Case #48: (cloned #3) + ST_QUA, COLOR0, EF, P6, P7, P0, + ST_QUA, COLOR0, EF, P0, P1, P2, + ST_QUA, COLOR0, EF, P2, P3, ED, + ST_QUA, COLOR1, P4, P5, EF, ED, + // Case #49: (cloned #19) + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_TRI, COLOR0, EA, P3, ED, + ST_QUA, COLOR1, P4, P5, EF, EH, + ST_QUA, COLOR1, P4, EH, P0, EA, + ST_TRI, COLOR1, P4, EA, ED, + // Case #50: (cloned #19) + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR0, P6, P7, P0, EA, + ST_TRI, COLOR0, EF, P6, EA, + ST_QUA, COLOR1, EB, ED, P4, P5, + ST_QUA, COLOR1, EA, P1, EB, P5, + ST_TRI, COLOR1, EF, EA, P5, + // Case #51: Unique case #20 + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR1, P0, P1, EB, ED, + ST_QUA, COLOR1, P0, ED, P4, P5, + ST_QUA, COLOR1, P0, P5, EF, EH, + // Case #52: (cloned #11) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, P7, P0, P1, EB, + ST_QUA, COLOR0, EF, P6, P7, EB, + ST_QUA, COLOR1, EC, ED, P4, P5, + ST_QUA, COLOR1, EB, P2, EC, P5, + ST_TRI, COLOR1, EF, EB, P5, + // Case #53: (cloned #43) + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR1, EC, ED, P4, P5, + ST_QUA, COLOR1, EB, P2, EC, P5, + ST_QUA, COLOR1, P0, EA, EB, P5, + ST_QUA, COLOR1, EF, EH, P0, P5, + // Case #54: (cloned #27) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EF, P6, P7, P0, + ST_TRI, COLOR0, EF, P0, EA, + ST_QUA, COLOR1, P1, P2, EC, ED, + ST_QUA, COLOR1, P1, ED, P4, P5, + ST_QUA, COLOR1, P1, P5, EF, EA, + // Case #55: Unique case #21 + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR1, P0, P1, P2, EC, + ST_QUA, COLOR1, P0, EC, ED, P4, + ST_QUA, COLOR1, P0, P4, P5, EF, + ST_TRI, COLOR1, P0, EF, EH, + // Case #56: (cloned #7) + ST_QUA, COLOR0, EF, P6, P7, P0, + ST_QUA, COLOR0, EF, P0, P1, P2, + ST_TRI, COLOR0, EF, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, EF, + ST_TRI, COLOR1, P3, EF, EC, + // Case #57: (cloned #39) + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, EF, + ST_QUA, COLOR1, P3, EF, EH, P0, + ST_QUA, COLOR1, P3, P0, EA, EC, + // Case #58: (cloned #23) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, P6, P7, P0, EA, + ST_TRI, COLOR0, EF, P6, EA, + ST_QUA, COLOR1, EC, P3, P4, P5, + ST_QUA, COLOR1, P1, EB, EC, P5, + ST_QUA, COLOR1, EF, EA, P1, P5, + // Case #59: (cloned #55) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR1, EC, P3, P4, P5, + ST_QUA, COLOR1, P1, EB, EC, P5, + ST_QUA, COLOR1, EH, P0, P1, P5, + ST_TRI, COLOR1, EF, EH, P5, + // Case #60: (cloned #15) + ST_QUA, COLOR0, EF, P6, P7, P0, + ST_QUA, COLOR0, EF, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, P5, + ST_QUA, COLOR1, P2, P5, EF, EB, + // Case #61: (cloned #47) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR1, P2, P3, P4, P5, + ST_QUA, COLOR1, EA, EB, P2, P5, + ST_QUA, COLOR1, EH, P0, EA, P5, + ST_TRI, COLOR1, EF, EH, P5, + // Case #62: (cloned #31) + ST_QUA, COLOR0, EF, P6, P7, P0, + ST_TRI, COLOR0, EF, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, P4, + ST_QUA, COLOR1, P1, P4, P5, EF, + ST_TRI, COLOR1, P1, EF, EA, + // Case #63: Unique case #22 + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, P0, P3, P4, P5, + ST_QUA, COLOR1, P0, P5, EF, EH, + // Case #64: (cloned #1) + ST_QUA, COLOR0, EG, P7, P0, P1, + ST_QUA, COLOR0, EG, P1, P2, P3, + ST_QUA, COLOR0, EG, P3, P4, P5, + ST_TRI, COLOR0, EG, P5, EF, + ST_TRI, COLOR1, P6, EG, EF, + // Case #65: (cloned #5) + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_QUA, COLOR0, EA, P3, P4, P5, + ST_TRI, COLOR0, EA, P5, EF, + ST_QUA, COLOR1, P6, EG, EH, P0, + ST_QUA, COLOR1, P6, P0, EA, EF, + // Case #66: (cloned #9) + ST_QUA, COLOR0, EG, P7, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_QUA, COLOR0, EB, P4, P5, EF, + ST_QUA, COLOR1, P6, EG, EA, P1, + ST_QUA, COLOR1, P6, P1, EB, EF, + // Case #67: (cloned #11) + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, P3, P4, P5, EF, + ST_QUA, COLOR0, EB, P2, P3, EF, + ST_QUA, COLOR1, EG, EH, P0, P1, + ST_QUA, COLOR1, EF, P6, EG, P1, + ST_TRI, COLOR1, EB, EF, P1, + // Case #68: (cloned #17) + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_TRI, COLOR0, EC, P5, EF, + ST_QUA, COLOR0, EG, P7, P0, P1, + ST_TRI, COLOR0, EG, P1, EB, + ST_QUA, COLOR1, P2, EC, EF, P6, + ST_QUA, COLOR1, P2, P6, EG, EB, + // Case #69: (cloned #21) + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_TRI, COLOR0, EC, P5, EF, + ST_QUA, COLOR1, P6, EG, EH, P0, + ST_QUA, COLOR1, P6, P0, EA, EB, + ST_QUA, COLOR1, P6, EB, P2, EC, + ST_TRI, COLOR1, P6, EC, EF, + // Case #70: (cloned #19) + ST_QUA, COLOR0, EG, P7, P0, EA, + ST_QUA, COLOR0, P3, P4, P5, EF, + ST_TRI, COLOR0, EC, P3, EF, + ST_QUA, COLOR1, EG, EA, P1, P2, + ST_QUA, COLOR1, EF, P6, EG, P2, + ST_TRI, COLOR1, EC, EF, P2, + // Case #71: (cloned #23) + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, P3, P4, P5, EF, + ST_TRI, COLOR0, EC, P3, EF, + ST_QUA, COLOR1, EH, P0, P1, P2, + ST_QUA, COLOR1, P6, EG, EH, P2, + ST_QUA, COLOR1, EC, EF, P6, P2, + // Case #72: (cloned #9) + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR0, EG, P7, P0, P1, + ST_QUA, COLOR0, EG, P1, P2, EC, + ST_QUA, COLOR1, P3, ED, EF, P6, + ST_QUA, COLOR1, P3, P6, EG, EC, + // Case #73: (cloned #37) + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, P6, EG, EH, P0, + ST_QUA, COLOR1, P6, P0, EA, EC, + ST_QUA, COLOR1, P6, EC, P3, ED, + ST_TRI, COLOR1, P6, ED, EF, + // Case #74: (cloned #37) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR0, EG, P7, P0, EA, + ST_QUA, COLOR1, P1, EB, EC, P3, + ST_QUA, COLOR1, P1, P3, ED, EF, + ST_QUA, COLOR1, P1, EF, P6, EG, + ST_TRI, COLOR1, P1, EG, EA, + // Case #75: (cloned #45) + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, P6, EG, EH, P0, + ST_QUA, COLOR1, P6, P0, P1, EB, + ST_QUA, COLOR1, P6, EB, EC, P3, + ST_QUA, COLOR1, P6, P3, ED, EF, + // Case #76: (cloned #19) + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR0, EG, P7, P0, P1, + ST_TRI, COLOR0, EG, P1, EB, + ST_QUA, COLOR1, P2, P3, ED, EF, + ST_QUA, COLOR1, P2, EF, P6, EG, + ST_TRI, COLOR1, P2, EG, EB, + // Case #77: (cloned #43) + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, EA, EB, P2, P3, + ST_QUA, COLOR1, EH, P0, EA, P3, + ST_QUA, COLOR1, P6, EG, EH, P3, + ST_QUA, COLOR1, ED, EF, P6, P3, + // Case #78: (cloned #39) + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR0, EG, P7, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, ED, + ST_QUA, COLOR1, P1, ED, EF, P6, + ST_QUA, COLOR1, P1, P6, EG, EA, + // Case #79: (cloned #47) + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, EG, EH, P0, P3, + ST_QUA, COLOR1, EF, P6, EG, P3, + ST_TRI, COLOR1, ED, EF, P3, + // Case #80: (cloned #5) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EG, P7, P0, P1, + ST_QUA, COLOR0, EG, P1, P2, P3, + ST_TRI, COLOR0, EG, P3, ED, + ST_QUA, COLOR1, P4, EE, EF, P6, + ST_QUA, COLOR1, P4, P6, EG, ED, + // Case #81: (cloned #21) + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_TRI, COLOR0, EA, P3, ED, + ST_QUA, COLOR1, P4, EE, EF, P6, + ST_QUA, COLOR1, P4, P6, EG, EH, + ST_QUA, COLOR1, P4, EH, P0, EA, + ST_TRI, COLOR1, P4, EA, ED, + // Case #82: (cloned #37) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EG, P7, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P4, EE, EF, P6, + ST_QUA, COLOR1, P4, P6, EG, EA, + ST_QUA, COLOR1, P4, EA, P1, EB, + ST_TRI, COLOR1, P4, EB, ED, + // Case #83: (cloned #43) + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, EG, EH, P0, P1, + ST_QUA, COLOR1, EF, P6, EG, P1, + ST_QUA, COLOR1, P4, EE, EF, P1, + ST_QUA, COLOR1, EB, ED, P4, P1, + // Case #84: (cloned #21) + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EG, P7, P0, P1, + ST_TRI, COLOR0, EG, P1, EB, + ST_QUA, COLOR1, P2, EC, ED, P4, + ST_QUA, COLOR1, P2, P4, EE, EF, + ST_QUA, COLOR1, P2, EF, P6, EG, + ST_TRI, COLOR1, P2, EG, EB, + // Case #85: Unique case #23 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR1, P0, EA, EB, P2, + ST_QUA, COLOR1, P0, P2, EC, ED, + ST_QUA, COLOR1, P0, ED, P4, EE, + ST_QUA, COLOR1, P0, EE, EF, P6, + ST_QUA, COLOR1, P0, P6, EG, EH, + // Case #86: (cloned #43) + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EG, P7, P0, EA, + ST_QUA, COLOR1, P1, P2, EC, ED, + ST_QUA, COLOR1, P1, ED, P4, EE, + ST_QUA, COLOR1, P1, EE, EF, P6, + ST_QUA, COLOR1, P1, P6, EG, EA, + // Case #87: Unique case #24 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR1, P0, P1, P2, EC, + ST_QUA, COLOR1, P0, EC, ED, P4, + ST_QUA, COLOR1, P0, P4, EE, EF, + ST_QUA, COLOR1, P0, EF, P6, EG, + ST_TRI, COLOR1, P0, EG, EH, + // Case #88: (cloned #11) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EG, P7, P0, P1, + ST_QUA, COLOR0, EG, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, EE, EF, + ST_QUA, COLOR1, P3, EF, P6, EG, + ST_TRI, COLOR1, P3, EG, EC, + // Case #89: (cloned #43) + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, EE, EF, + ST_QUA, COLOR1, P3, EF, P6, EG, + ST_QUA, COLOR1, P3, EG, EH, P0, + ST_QUA, COLOR1, P3, P0, EA, EC, + // Case #90: (cloned #45) + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EG, P7, P0, EA, + ST_QUA, COLOR1, P1, EB, EC, P3, + ST_QUA, COLOR1, P1, P3, P4, EE, + ST_QUA, COLOR1, P1, EE, EF, P6, + ST_QUA, COLOR1, P1, P6, EG, EA, + // Case #91: Unique case #25 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR1, P0, P1, EB, EC, + ST_QUA, COLOR1, P0, EC, P3, P4, + ST_QUA, COLOR1, P0, P4, EE, EF, + ST_QUA, COLOR1, P0, EF, P6, EG, + ST_TRI, COLOR1, P0, EG, EH, + // Case #92: (cloned #23) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EG, P7, P0, P1, + ST_TRI, COLOR0, EG, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, EE, + ST_QUA, COLOR1, P2, EE, EF, P6, + ST_QUA, COLOR1, P2, P6, EG, EB, + // Case #93: (cloned #87) + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, EE, + ST_QUA, COLOR1, P2, EE, EF, P6, + ST_QUA, COLOR1, P2, P6, EG, EH, + ST_QUA, COLOR1, P2, EH, P0, EA, + ST_TRI, COLOR1, P2, EA, EB, + // Case #94: (cloned #47) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EG, P7, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, P4, + ST_QUA, COLOR1, P1, P4, EE, EF, + ST_QUA, COLOR1, P1, EF, P6, EG, + ST_TRI, COLOR1, P1, EG, EA, + // Case #95: Unique case #26 + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, P0, P3, P4, EE, + ST_QUA, COLOR1, P0, EE, EF, P6, + ST_QUA, COLOR1, P0, P6, EG, EH, + // Case #96: (cloned #3) + ST_QUA, COLOR0, EG, P7, P0, P1, + ST_QUA, COLOR0, EG, P1, P2, P3, + ST_QUA, COLOR0, EG, P3, P4, EE, + ST_QUA, COLOR1, P5, P6, EG, EE, + // Case #97: (cloned #11) + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_QUA, COLOR0, EA, P3, P4, EE, + ST_QUA, COLOR1, P5, P6, EG, EH, + ST_QUA, COLOR1, P5, EH, P0, EA, + ST_TRI, COLOR1, P5, EA, EE, + // Case #98: (cloned #19) + ST_QUA, COLOR0, EG, P7, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_TRI, COLOR0, EB, P4, EE, + ST_QUA, COLOR1, P5, P6, EG, EA, + ST_QUA, COLOR1, P5, EA, P1, EB, + ST_TRI, COLOR1, P5, EB, EE, + // Case #99: (cloned #27) + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_TRI, COLOR0, EB, P4, EE, + ST_QUA, COLOR1, P5, P6, EG, EH, + ST_QUA, COLOR1, P5, EH, P0, P1, + ST_QUA, COLOR1, P5, P1, EB, EE, + // Case #100: (cloned #19) + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR0, P7, P0, P1, EB, + ST_TRI, COLOR0, EG, P7, EB, + ST_QUA, COLOR1, EC, EE, P5, P6, + ST_QUA, COLOR1, EB, P2, EC, P6, + ST_TRI, COLOR1, EG, EB, P6, + // Case #101: (cloned #43) + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, P5, P6, EG, EH, + ST_QUA, COLOR1, P5, EH, P0, EA, + ST_QUA, COLOR1, P5, EA, EB, P2, + ST_QUA, COLOR1, P5, P2, EC, EE, + // Case #102: (cloned #51) + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR0, EG, P7, P0, EA, + ST_QUA, COLOR1, P1, P2, EC, EE, + ST_QUA, COLOR1, P1, EE, P5, P6, + ST_QUA, COLOR1, P1, P6, EG, EA, + // Case #103: (cloned #55) + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, EH, P0, P1, P2, + ST_QUA, COLOR1, P6, EG, EH, P2, + ST_QUA, COLOR1, EE, P5, P6, P2, + ST_TRI, COLOR1, EC, EE, P2, + // Case #104: (cloned #11) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, P0, P1, P2, EC, + ST_QUA, COLOR0, EG, P7, P0, EC, + ST_QUA, COLOR1, ED, EE, P5, P6, + ST_QUA, COLOR1, EC, P3, ED, P6, + ST_TRI, COLOR1, EG, EC, P6, + // Case #105: (cloned #45) + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P3, ED, EE, P5, + ST_QUA, COLOR1, P3, P5, P6, EG, + ST_QUA, COLOR1, P3, EG, EH, P0, + ST_QUA, COLOR1, P3, P0, EA, EC, + // Case #106: (cloned #43) + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, EG, P7, P0, EA, + ST_QUA, COLOR1, ED, EE, P5, P6, + ST_QUA, COLOR1, EC, P3, ED, P6, + ST_QUA, COLOR1, P1, EB, EC, P6, + ST_QUA, COLOR1, EG, EA, P1, P6, + // Case #107: (cloned #91) + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR1, P5, P6, EG, EH, + ST_QUA, COLOR1, P5, EH, P0, P1, + ST_QUA, COLOR1, P5, P1, EB, EC, + ST_QUA, COLOR1, P5, EC, P3, ED, + ST_TRI, COLOR1, P5, ED, EE, + // Case #108: (cloned #27) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EG, P7, P0, P1, + ST_TRI, COLOR0, EG, P1, EB, + ST_QUA, COLOR1, P2, P3, ED, EE, + ST_QUA, COLOR1, P2, EE, P5, P6, + ST_QUA, COLOR1, P2, P6, EG, EB, + // Case #109: (cloned #91) + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR1, P2, P3, ED, EE, + ST_QUA, COLOR1, P2, EE, P5, P6, + ST_QUA, COLOR1, P2, P6, EG, EH, + ST_QUA, COLOR1, P2, EH, P0, EA, + ST_TRI, COLOR1, P2, EA, EB, + // Case #110: (cloned #55) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EG, P7, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, ED, + ST_QUA, COLOR1, P1, ED, EE, P5, + ST_QUA, COLOR1, P1, P5, P6, EG, + ST_TRI, COLOR1, P1, EG, EA, + // Case #111: Unique case #27 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, P0, P3, ED, EE, + ST_QUA, COLOR1, P0, EE, P5, P6, + ST_QUA, COLOR1, P0, P6, EG, EH, + // Case #112: (cloned #7) + ST_QUA, COLOR0, EG, P7, P0, P1, + ST_QUA, COLOR0, EG, P1, P2, P3, + ST_TRI, COLOR0, EG, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, EG, + ST_TRI, COLOR1, P4, EG, ED, + // Case #113: (cloned #23) + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_TRI, COLOR0, EA, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, EG, + ST_QUA, COLOR1, P4, EG, EH, P0, + ST_QUA, COLOR1, P4, P0, EA, ED, + // Case #114: (cloned #39) + ST_QUA, COLOR0, EG, P7, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, EG, + ST_QUA, COLOR1, P4, EG, EA, P1, + ST_QUA, COLOR1, P4, P1, EB, ED, + // Case #115: (cloned #55) + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, EG, + ST_QUA, COLOR1, P4, EG, EH, P0, + ST_QUA, COLOR1, P4, P0, P1, EB, + ST_TRI, COLOR1, P4, EB, ED, + // Case #116: (cloned #23) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, P7, P0, P1, EB, + ST_TRI, COLOR0, EG, P7, EB, + ST_QUA, COLOR1, ED, P4, P5, P6, + ST_QUA, COLOR1, P2, EC, ED, P6, + ST_QUA, COLOR1, EG, EB, P2, P6, + // Case #117: (cloned #87) + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, EG, + ST_QUA, COLOR1, P4, EG, EH, P0, + ST_QUA, COLOR1, P4, P0, EA, EB, + ST_QUA, COLOR1, P4, EB, P2, EC, + ST_TRI, COLOR1, P4, EC, ED, + // Case #118: (cloned #55) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EG, P7, P0, EA, + ST_QUA, COLOR1, ED, P4, P5, P6, + ST_QUA, COLOR1, P2, EC, ED, P6, + ST_QUA, COLOR1, EA, P1, P2, P6, + ST_TRI, COLOR1, EG, EA, P6, + // Case #119: Unique case #28 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR1, P0, P1, P2, EC, + ST_QUA, COLOR1, P0, EC, ED, P4, + ST_QUA, COLOR1, P0, P4, P5, P6, + ST_QUA, COLOR1, P0, P6, EG, EH, + // Case #120: (cloned #15) + ST_QUA, COLOR0, EG, P7, P0, P1, + ST_QUA, COLOR0, EG, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, P6, + ST_QUA, COLOR1, P3, P6, EG, EC, + // Case #121: (cloned #47) + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, P6, + ST_QUA, COLOR1, P3, P6, EG, EH, + ST_QUA, COLOR1, P3, EH, P0, EA, + ST_TRI, COLOR1, P3, EA, EC, + // Case #122: (cloned #47) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, EG, P7, P0, EA, + ST_QUA, COLOR1, P3, P4, P5, P6, + ST_QUA, COLOR1, EB, EC, P3, P6, + ST_QUA, COLOR1, EA, P1, EB, P6, + ST_TRI, COLOR1, EG, EA, P6, + // Case #123: (cloned #111) + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, P6, + ST_QUA, COLOR1, P3, P6, EG, EH, + ST_QUA, COLOR1, P3, EH, P0, P1, + ST_QUA, COLOR1, P3, P1, EB, EC, + // Case #124: (cloned #31) + ST_QUA, COLOR0, EG, P7, P0, P1, + ST_TRI, COLOR0, EG, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, P5, + ST_QUA, COLOR1, P2, P5, P6, EG, + ST_TRI, COLOR1, P2, EG, EB, + // Case #125: (cloned #95) + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, P5, + ST_QUA, COLOR1, P2, P5, P6, EG, + ST_QUA, COLOR1, P2, EG, EH, P0, + ST_QUA, COLOR1, P2, P0, EA, EB, + // Case #126: (cloned #63) + ST_QUA, COLOR0, EG, P7, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, P4, + ST_QUA, COLOR1, P1, P4, P5, P6, + ST_QUA, COLOR1, P1, P6, EG, EA, + // Case #127: Unique case #29 + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, P0, P3, P4, P5, + ST_QUA, COLOR1, P0, P5, P6, EG, + ST_TRI, COLOR1, P0, EG, EH, + // Case #128: (cloned #1) + ST_QUA, COLOR0, EH, P0, P1, P2, + ST_QUA, COLOR0, EH, P2, P3, P4, + ST_QUA, COLOR0, EH, P4, P5, P6, + ST_TRI, COLOR0, EH, P6, EG, + ST_TRI, COLOR1, P7, EH, EG, + // Case #129: (cloned #3) + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_QUA, COLOR0, EA, P3, P4, P5, + ST_QUA, COLOR0, EA, P5, P6, EG, + ST_QUA, COLOR1, P7, P0, EA, EG, + // Case #130: (cloned #5) + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_QUA, COLOR0, EB, P4, P5, P6, + ST_TRI, COLOR0, EB, P6, EG, + ST_QUA, COLOR1, P7, EH, EA, P1, + ST_QUA, COLOR1, P7, P1, EB, EG, + // Case #131: (cloned #7) + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_QUA, COLOR0, EB, P4, P5, P6, + ST_TRI, COLOR0, EB, P6, EG, + ST_QUA, COLOR1, P7, P0, P1, EB, + ST_TRI, COLOR1, P7, EB, EG, + // Case #132: (cloned #9) + ST_QUA, COLOR0, EH, P0, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_QUA, COLOR0, EC, P5, P6, EG, + ST_QUA, COLOR1, P7, EH, EB, P2, + ST_QUA, COLOR1, P7, P2, EC, EG, + // Case #133: (cloned #11) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_QUA, COLOR0, EC, P5, P6, EG, + ST_QUA, COLOR1, P7, P0, EA, EB, + ST_QUA, COLOR1, P7, EB, P2, EC, + ST_TRI, COLOR1, P7, EC, EG, + // Case #134: (cloned #11) + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR0, P4, P5, P6, EG, + ST_QUA, COLOR0, EC, P3, P4, EG, + ST_QUA, COLOR1, EH, EA, P1, P2, + ST_QUA, COLOR1, EG, P7, EH, P2, + ST_TRI, COLOR1, EC, EG, P2, + // Case #135: (cloned #15) + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_QUA, COLOR0, EC, P5, P6, EG, + ST_QUA, COLOR1, P7, P0, P1, P2, + ST_QUA, COLOR1, P7, P2, EC, EG, + // Case #136: (cloned #17) + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_TRI, COLOR0, ED, P6, EG, + ST_QUA, COLOR0, EH, P0, P1, P2, + ST_TRI, COLOR0, EH, P2, EC, + ST_QUA, COLOR1, P3, ED, EG, P7, + ST_QUA, COLOR1, P3, P7, EH, EC, + // Case #137: (cloned #19) + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_TRI, COLOR0, ED, P6, EG, + ST_QUA, COLOR1, P7, P0, EA, EC, + ST_QUA, COLOR1, P7, EC, P3, ED, + ST_TRI, COLOR1, P7, ED, EG, + // Case #138: (cloned #21) + ST_TRI, COLOR0, EH, P0, EA, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_TRI, COLOR0, ED, P6, EG, + ST_QUA, COLOR1, P7, EH, EA, P1, + ST_QUA, COLOR1, P7, P1, EB, EC, + ST_QUA, COLOR1, P7, EC, P3, ED, + ST_TRI, COLOR1, P7, ED, EG, + // Case #139: (cloned #23) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_TRI, COLOR0, ED, P6, EG, + ST_QUA, COLOR1, P7, P0, P1, EB, + ST_QUA, COLOR1, P7, EB, EC, P3, + ST_QUA, COLOR1, P7, P3, ED, EG, + // Case #140: (cloned #19) + ST_QUA, COLOR0, EH, P0, P1, EB, + ST_QUA, COLOR0, P4, P5, P6, EG, + ST_TRI, COLOR0, ED, P4, EG, + ST_QUA, COLOR1, EH, EB, P2, P3, + ST_QUA, COLOR1, EG, P7, EH, P3, + ST_TRI, COLOR1, ED, EG, P3, + // Case #141: (cloned #27) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_TRI, COLOR0, ED, P6, EG, + ST_QUA, COLOR1, P7, P0, EA, EB, + ST_QUA, COLOR1, P7, EB, P2, P3, + ST_QUA, COLOR1, P7, P3, ED, EG, + // Case #142: (cloned #23) + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR0, P4, P5, P6, EG, + ST_TRI, COLOR0, ED, P4, EG, + ST_QUA, COLOR1, EA, P1, P2, P3, + ST_QUA, COLOR1, P7, EH, EA, P3, + ST_QUA, COLOR1, ED, EG, P7, P3, + // Case #143: (cloned #31) + ST_QUA, COLOR0, ED, P4, P5, P6, + ST_TRI, COLOR0, ED, P6, EG, + ST_QUA, COLOR1, P7, P0, P1, P2, + ST_QUA, COLOR1, P7, P2, P3, ED, + ST_TRI, COLOR1, P7, ED, EG, + // Case #144: (cloned #9) + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR0, EH, P0, P1, P2, + ST_QUA, COLOR0, EH, P2, P3, ED, + ST_QUA, COLOR1, P4, EE, EG, P7, + ST_QUA, COLOR1, P4, P7, EH, ED, + // Case #145: (cloned #19) + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR0, P1, P2, P3, ED, + ST_TRI, COLOR0, EA, P1, ED, + ST_QUA, COLOR1, EE, EG, P7, P0, + ST_QUA, COLOR1, ED, P4, EE, P0, + ST_TRI, COLOR1, EA, ED, P0, + // Case #146: (cloned #37) + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR1, P7, EH, EA, P1, + ST_QUA, COLOR1, P7, P1, EB, ED, + ST_QUA, COLOR1, P7, ED, P4, EE, + ST_TRI, COLOR1, P7, EE, EG, + // Case #147: (cloned #39) + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR1, P7, P0, P1, EB, + ST_QUA, COLOR1, P7, EB, ED, P4, + ST_QUA, COLOR1, P7, P4, EE, EG, + // Case #148: (cloned #37) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR0, EH, P0, P1, EB, + ST_QUA, COLOR1, P2, EC, ED, P4, + ST_QUA, COLOR1, P2, P4, EE, EG, + ST_QUA, COLOR1, P2, EG, P7, EH, + ST_TRI, COLOR1, P2, EH, EB, + // Case #149: (cloned #43) + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR1, P7, P0, EA, EB, + ST_QUA, COLOR1, P7, EB, P2, EC, + ST_QUA, COLOR1, P7, EC, ED, P4, + ST_QUA, COLOR1, P7, P4, EE, EG, + // Case #150: (cloned #45) + ST_TRI, COLOR0, EH, P0, EA, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR1, P7, EH, EA, P1, + ST_QUA, COLOR1, P7, P1, P2, EC, + ST_QUA, COLOR1, P7, EC, ED, P4, + ST_QUA, COLOR1, P7, P4, EE, EG, + // Case #151: (cloned #47) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR1, P7, P0, P1, P2, + ST_QUA, COLOR1, P7, P2, EC, ED, + ST_QUA, COLOR1, P7, ED, P4, EE, + ST_TRI, COLOR1, P7, EE, EG, + // Case #152: (cloned #19) + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR0, EH, P0, P1, P2, + ST_TRI, COLOR0, EH, P2, EC, + ST_QUA, COLOR1, P3, P4, EE, EG, + ST_QUA, COLOR1, P3, EG, P7, EH, + ST_TRI, COLOR1, P3, EH, EC, + // Case #153: (cloned #51) + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, EE, EG, + ST_QUA, COLOR1, P3, EG, P7, P0, + ST_QUA, COLOR1, P3, P0, EA, EC, + // Case #154: (cloned #43) + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR1, EB, EC, P3, P4, + ST_QUA, COLOR1, EA, P1, EB, P4, + ST_QUA, COLOR1, P7, EH, EA, P4, + ST_QUA, COLOR1, EE, EG, P7, P4, + // Case #155: (cloned #55) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR1, P7, P0, P1, EB, + ST_QUA, COLOR1, P7, EB, EC, P3, + ST_QUA, COLOR1, P7, P3, P4, EE, + ST_TRI, COLOR1, P7, EE, EG, + // Case #156: (cloned #39) + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR0, EH, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, EE, + ST_QUA, COLOR1, P2, EE, EG, P7, + ST_QUA, COLOR1, P2, P7, EH, EB, + // Case #157: (cloned #55) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR1, EB, P2, P3, P4, + ST_QUA, COLOR1, P0, EA, EB, P4, + ST_QUA, COLOR1, EG, P7, P0, P4, + ST_TRI, COLOR1, EE, EG, P4, + // Case #158: (cloned #47) + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR1, P1, P2, P3, P4, + ST_QUA, COLOR1, EH, EA, P1, P4, + ST_QUA, COLOR1, EG, P7, EH, P4, + ST_TRI, COLOR1, EE, EG, P4, + // Case #159: (cloned #63) + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR1, P7, P0, P1, P2, + ST_QUA, COLOR1, P7, P2, P3, P4, + ST_QUA, COLOR1, P7, P4, EE, EG, + // Case #160: (cloned #5) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EH, P0, P1, P2, + ST_QUA, COLOR0, EH, P2, P3, P4, + ST_TRI, COLOR0, EH, P4, EE, + ST_QUA, COLOR1, P5, EF, EG, P7, + ST_QUA, COLOR1, P5, P7, EH, EE, + // Case #161: (cloned #11) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, P2, P3, P4, EE, + ST_QUA, COLOR0, EA, P1, P2, EE, + ST_QUA, COLOR1, EF, EG, P7, P0, + ST_QUA, COLOR1, EE, P5, EF, P0, + ST_TRI, COLOR1, EA, EE, P0, + // Case #162: (cloned #21) + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_TRI, COLOR0, EB, P4, EE, + ST_QUA, COLOR1, P5, EF, EG, P7, + ST_QUA, COLOR1, P5, P7, EH, EA, + ST_QUA, COLOR1, P5, EA, P1, EB, + ST_TRI, COLOR1, P5, EB, EE, + // Case #163: (cloned #23) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, P2, P3, P4, EE, + ST_TRI, COLOR0, EB, P2, EE, + ST_QUA, COLOR1, EG, P7, P0, P1, + ST_QUA, COLOR1, P5, EF, EG, P1, + ST_QUA, COLOR1, EB, EE, P5, P1, + // Case #164: (cloned #37) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EH, P0, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, P5, EF, EG, P7, + ST_QUA, COLOR1, P5, P7, EH, EB, + ST_QUA, COLOR1, P5, EB, P2, EC, + ST_TRI, COLOR1, P5, EC, EE, + // Case #165: (cloned #45) + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, P5, EF, EG, P7, + ST_QUA, COLOR1, P5, P7, P0, EA, + ST_QUA, COLOR1, P5, EA, EB, P2, + ST_QUA, COLOR1, P5, P2, EC, EE, + // Case #166: (cloned #43) + ST_TRI, COLOR0, EH, P0, EA, + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, EH, EA, P1, P2, + ST_QUA, COLOR1, EG, P7, EH, P2, + ST_QUA, COLOR1, P5, EF, EG, P2, + ST_QUA, COLOR1, EC, EE, P5, P2, + // Case #167: (cloned #47) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, P7, P0, P1, P2, + ST_QUA, COLOR1, EF, EG, P7, P2, + ST_QUA, COLOR1, EE, P5, EF, P2, + ST_TRI, COLOR1, EC, EE, P2, + // Case #168: (cloned #21) + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EH, P0, P1, P2, + ST_TRI, COLOR0, EH, P2, EC, + ST_QUA, COLOR1, P3, ED, EE, P5, + ST_QUA, COLOR1, P3, P5, EF, EG, + ST_QUA, COLOR1, P3, EG, P7, EH, + ST_TRI, COLOR1, P3, EH, EC, + // Case #169: (cloned #43) + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, EF, EG, P7, P0, + ST_QUA, COLOR1, EE, P5, EF, P0, + ST_QUA, COLOR1, P3, ED, EE, P0, + ST_QUA, COLOR1, EA, EC, P3, P0, + // Case #170: (cloned #85) + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR1, P1, EB, EC, P3, + ST_QUA, COLOR1, P1, P3, ED, EE, + ST_QUA, COLOR1, P1, EE, P5, EF, + ST_QUA, COLOR1, P1, EF, EG, P7, + ST_QUA, COLOR1, P1, P7, EH, EA, + // Case #171: (cloned #87) + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR1, P7, P0, P1, EB, + ST_QUA, COLOR1, P7, EB, EC, P3, + ST_QUA, COLOR1, P7, P3, ED, EE, + ST_QUA, COLOR1, P7, EE, P5, EF, + ST_TRI, COLOR1, P7, EF, EG, + // Case #172: (cloned #43) + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EH, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, ED, EE, + ST_QUA, COLOR1, P2, EE, P5, EF, + ST_QUA, COLOR1, P2, EF, EG, P7, + ST_QUA, COLOR1, P2, P7, EH, EB, + // Case #173: (cloned #91) + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR1, P7, P0, EA, EB, + ST_QUA, COLOR1, P7, EB, P2, P3, + ST_QUA, COLOR1, P7, P3, ED, EE, + ST_QUA, COLOR1, P7, EE, P5, EF, + ST_TRI, COLOR1, P7, EF, EG, + // Case #174: (cloned #87) + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, ED, + ST_QUA, COLOR1, P1, ED, EE, P5, + ST_QUA, COLOR1, P1, P5, EF, EG, + ST_QUA, COLOR1, P1, EG, P7, EH, + ST_TRI, COLOR1, P1, EH, EA, + // Case #175: (cloned #95) + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR1, P7, P0, P1, P2, + ST_QUA, COLOR1, P7, P2, P3, ED, + ST_QUA, COLOR1, P7, ED, EE, P5, + ST_QUA, COLOR1, P7, P5, EF, EG, + // Case #176: (cloned #11) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EH, P0, P1, P2, + ST_QUA, COLOR0, EH, P2, P3, ED, + ST_QUA, COLOR1, P4, P5, EF, EG, + ST_QUA, COLOR1, P4, EG, P7, EH, + ST_TRI, COLOR1, P4, EH, ED, + // Case #177: (cloned #27) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_TRI, COLOR0, EA, P3, ED, + ST_QUA, COLOR1, P4, P5, EF, EG, + ST_QUA, COLOR1, P4, EG, P7, P0, + ST_QUA, COLOR1, P4, P0, EA, ED, + // Case #178: (cloned #43) + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P4, P5, EF, EG, + ST_QUA, COLOR1, P4, EG, P7, EH, + ST_QUA, COLOR1, P4, EH, EA, P1, + ST_QUA, COLOR1, P4, P1, EB, ED, + // Case #179: (cloned #55) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, EG, P7, P0, P1, + ST_QUA, COLOR1, P5, EF, EG, P1, + ST_QUA, COLOR1, ED, P4, P5, P1, + ST_TRI, COLOR1, EB, ED, P1, + // Case #180: (cloned #45) + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EH, P0, P1, EB, + ST_QUA, COLOR1, P2, EC, ED, P4, + ST_QUA, COLOR1, P2, P4, P5, EF, + ST_QUA, COLOR1, P2, EF, EG, P7, + ST_QUA, COLOR1, P2, P7, EH, EB, + // Case #181: (cloned #91) + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR1, P4, P5, EF, EG, + ST_QUA, COLOR1, P4, EG, P7, P0, + ST_QUA, COLOR1, P4, P0, EA, EB, + ST_QUA, COLOR1, P4, EB, P2, EC, + ST_TRI, COLOR1, P4, EC, ED, + // Case #182: (cloned #91) + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR1, P1, P2, EC, ED, + ST_QUA, COLOR1, P1, ED, P4, P5, + ST_QUA, COLOR1, P1, P5, EF, EG, + ST_QUA, COLOR1, P1, EG, P7, EH, + ST_TRI, COLOR1, P1, EH, EA, + // Case #183: (cloned #111) + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR1, P7, P0, P1, P2, + ST_QUA, COLOR1, P7, P2, EC, ED, + ST_QUA, COLOR1, P7, ED, P4, P5, + ST_QUA, COLOR1, P7, P5, EF, EG, + // Case #184: (cloned #23) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EH, P0, P1, P2, + ST_TRI, COLOR0, EH, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, EF, + ST_QUA, COLOR1, P3, EF, EG, P7, + ST_QUA, COLOR1, P3, P7, EH, EC, + // Case #185: (cloned #55) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, EF, + ST_QUA, COLOR1, P3, EF, EG, P7, + ST_QUA, COLOR1, P3, P7, P0, EA, + ST_TRI, COLOR1, P3, EA, EC, + // Case #186: (cloned #87) + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EH, P0, EA, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, EF, + ST_QUA, COLOR1, P3, EF, EG, P7, + ST_QUA, COLOR1, P3, P7, EH, EA, + ST_QUA, COLOR1, P3, EA, P1, EB, + ST_TRI, COLOR1, P3, EB, EC, + // Case #187: (cloned #119) + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, EF, + ST_QUA, COLOR1, P3, EF, EG, P7, + ST_QUA, COLOR1, P3, P7, P0, P1, + ST_QUA, COLOR1, P3, P1, EB, EC, + // Case #188: (cloned #47) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EH, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, P5, + ST_QUA, COLOR1, P2, P5, EF, EG, + ST_QUA, COLOR1, P2, EG, P7, EH, + ST_TRI, COLOR1, P2, EH, EB, + // Case #189: (cloned #111) + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, P5, + ST_QUA, COLOR1, P2, P5, EF, EG, + ST_QUA, COLOR1, P2, EG, P7, P0, + ST_QUA, COLOR1, P2, P0, EA, EB, + // Case #190: (cloned #95) + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, P4, + ST_QUA, COLOR1, P1, P4, P5, EF, + ST_QUA, COLOR1, P1, EF, EG, P7, + ST_QUA, COLOR1, P1, P7, EH, EA, + // Case #191: (cloned #127) + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR1, P7, P0, P1, P2, + ST_QUA, COLOR1, P7, P2, P3, P4, + ST_QUA, COLOR1, P7, P4, P5, EF, + ST_TRI, COLOR1, P7, EF, EG, + // Case #192: (cloned #3) + ST_QUA, COLOR0, EH, P0, P1, P2, + ST_QUA, COLOR0, EH, P2, P3, P4, + ST_QUA, COLOR0, EH, P4, P5, EF, + ST_QUA, COLOR1, P6, P7, EH, EF, + // Case #193: (cloned #7) + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_QUA, COLOR0, EA, P3, P4, P5, + ST_TRI, COLOR0, EA, P5, EF, + ST_QUA, COLOR1, P6, P7, P0, EA, + ST_TRI, COLOR1, P6, EA, EF, + // Case #194: (cloned #11) + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_QUA, COLOR0, EB, P4, P5, EF, + ST_QUA, COLOR1, P6, P7, EH, EA, + ST_QUA, COLOR1, P6, EA, P1, EB, + ST_TRI, COLOR1, P6, EB, EF, + // Case #195: (cloned #15) + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_QUA, COLOR0, EB, P4, P5, EF, + ST_QUA, COLOR1, P6, P7, P0, P1, + ST_QUA, COLOR1, P6, P1, EB, EF, + // Case #196: (cloned #19) + ST_QUA, COLOR0, EH, P0, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_TRI, COLOR0, EC, P5, EF, + ST_QUA, COLOR1, P6, P7, EH, EB, + ST_QUA, COLOR1, P6, EB, P2, EC, + ST_TRI, COLOR1, P6, EC, EF, + // Case #197: (cloned #23) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_TRI, COLOR0, EC, P5, EF, + ST_QUA, COLOR1, P6, P7, P0, EA, + ST_QUA, COLOR1, P6, EA, EB, P2, + ST_QUA, COLOR1, P6, P2, EC, EF, + // Case #198: (cloned #27) + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_TRI, COLOR0, EC, P5, EF, + ST_QUA, COLOR1, P6, P7, EH, EA, + ST_QUA, COLOR1, P6, EA, P1, P2, + ST_QUA, COLOR1, P6, P2, EC, EF, + // Case #199: (cloned #31) + ST_QUA, COLOR0, EC, P3, P4, P5, + ST_TRI, COLOR0, EC, P5, EF, + ST_QUA, COLOR1, P6, P7, P0, P1, + ST_QUA, COLOR1, P6, P1, P2, EC, + ST_TRI, COLOR1, P6, EC, EF, + // Case #200: (cloned #19) + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR0, P0, P1, P2, EC, + ST_TRI, COLOR0, EH, P0, EC, + ST_QUA, COLOR1, ED, EF, P6, P7, + ST_QUA, COLOR1, EC, P3, ED, P7, + ST_TRI, COLOR1, EH, EC, P7, + // Case #201: (cloned #39) + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, P6, P7, P0, EA, + ST_QUA, COLOR1, P6, EA, EC, P3, + ST_QUA, COLOR1, P6, P3, ED, EF, + // Case #202: (cloned #43) + ST_TRI, COLOR0, EH, P0, EA, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, P6, P7, EH, EA, + ST_QUA, COLOR1, P6, EA, P1, EB, + ST_QUA, COLOR1, P6, EB, EC, P3, + ST_QUA, COLOR1, P6, P3, ED, EF, + // Case #203: (cloned #47) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, P6, P7, P0, P1, + ST_QUA, COLOR1, P6, P1, EB, EC, + ST_QUA, COLOR1, P6, EC, P3, ED, + ST_TRI, COLOR1, P6, ED, EF, + // Case #204: (cloned #51) + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR0, EH, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, ED, EF, + ST_QUA, COLOR1, P2, EF, P6, P7, + ST_QUA, COLOR1, P2, P7, EH, EB, + // Case #205: (cloned #55) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, P6, P7, P0, EA, + ST_QUA, COLOR1, P6, EA, EB, P2, + ST_QUA, COLOR1, P6, P2, P3, ED, + ST_TRI, COLOR1, P6, ED, EF, + // Case #206: (cloned #55) + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, EA, P1, P2, P3, + ST_QUA, COLOR1, P7, EH, EA, P3, + ST_QUA, COLOR1, EF, P6, P7, P3, + ST_TRI, COLOR1, ED, EF, P3, + // Case #207: (cloned #63) + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR1, P6, P7, P0, P1, + ST_QUA, COLOR1, P6, P1, P2, P3, + ST_QUA, COLOR1, P6, P3, ED, EF, + // Case #208: (cloned #11) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, P1, P2, P3, ED, + ST_QUA, COLOR0, EH, P0, P1, ED, + ST_QUA, COLOR1, EE, EF, P6, P7, + ST_QUA, COLOR1, ED, P4, EE, P7, + ST_TRI, COLOR1, EH, ED, P7, + // Case #209: (cloned #23) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, P1, P2, P3, ED, + ST_TRI, COLOR0, EA, P1, ED, + ST_QUA, COLOR1, EF, P6, P7, P0, + ST_QUA, COLOR1, P4, EE, EF, P0, + ST_QUA, COLOR1, EA, ED, P4, P0, + // Case #210: (cloned #45) + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P4, EE, EF, P6, + ST_QUA, COLOR1, P4, P6, P7, EH, + ST_QUA, COLOR1, P4, EH, EA, P1, + ST_QUA, COLOR1, P4, P1, EB, ED, + // Case #211: (cloned #47) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P6, P7, P0, P1, + ST_QUA, COLOR1, EE, EF, P6, P1, + ST_QUA, COLOR1, ED, P4, EE, P1, + ST_TRI, COLOR1, EB, ED, P1, + // Case #212: (cloned #43) + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EH, P0, P1, EB, + ST_QUA, COLOR1, EE, EF, P6, P7, + ST_QUA, COLOR1, ED, P4, EE, P7, + ST_QUA, COLOR1, P2, EC, ED, P7, + ST_QUA, COLOR1, EH, EB, P2, P7, + // Case #213: (cloned #87) + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR1, P6, P7, P0, EA, + ST_QUA, COLOR1, P6, EA, EB, P2, + ST_QUA, COLOR1, P6, P2, EC, ED, + ST_QUA, COLOR1, P6, ED, P4, EE, + ST_TRI, COLOR1, P6, EE, EF, + // Case #214: (cloned #91) + ST_TRI, COLOR0, EH, P0, EA, + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR1, P6, P7, EH, EA, + ST_QUA, COLOR1, P6, EA, P1, P2, + ST_QUA, COLOR1, P6, P2, EC, ED, + ST_QUA, COLOR1, P6, ED, P4, EE, + ST_TRI, COLOR1, P6, EE, EF, + // Case #215: (cloned #95) + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR1, P6, P7, P0, P1, + ST_QUA, COLOR1, P6, P1, P2, EC, + ST_QUA, COLOR1, P6, EC, ED, P4, + ST_QUA, COLOR1, P6, P4, EE, EF, + // Case #216: (cloned #27) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EH, P0, P1, P2, + ST_TRI, COLOR0, EH, P2, EC, + ST_QUA, COLOR1, P3, P4, EE, EF, + ST_QUA, COLOR1, P3, EF, P6, P7, + ST_QUA, COLOR1, P3, P7, EH, EC, + // Case #217: (cloned #55) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, EF, P6, P7, P0, + ST_QUA, COLOR1, P4, EE, EF, P0, + ST_QUA, COLOR1, EC, P3, P4, P0, + ST_TRI, COLOR1, EA, EC, P0, + // Case #218: (cloned #91) + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EH, P0, EA, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR1, P3, P4, EE, EF, + ST_QUA, COLOR1, P3, EF, P6, P7, + ST_QUA, COLOR1, P3, P7, EH, EA, + ST_QUA, COLOR1, P3, EA, P1, EB, + ST_TRI, COLOR1, P3, EB, EC, + // Case #219: (cloned #111) + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR1, P6, P7, P0, P1, + ST_QUA, COLOR1, P6, P1, EB, EC, + ST_QUA, COLOR1, P6, EC, P3, P4, + ST_QUA, COLOR1, P6, P4, EE, EF, + // Case #220: (cloned #55) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EH, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, EE, + ST_QUA, COLOR1, P2, EE, EF, P6, + ST_QUA, COLOR1, P2, P6, P7, EH, + ST_TRI, COLOR1, P2, EH, EB, + // Case #221: (cloned #119) + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, EE, + ST_QUA, COLOR1, P2, EE, EF, P6, + ST_QUA, COLOR1, P2, P6, P7, P0, + ST_QUA, COLOR1, P2, P0, EA, EB, + // Case #222: (cloned #111) + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, P4, + ST_QUA, COLOR1, P1, P4, EE, EF, + ST_QUA, COLOR1, P1, EF, P6, P7, + ST_QUA, COLOR1, P1, P7, EH, EA, + // Case #223: (cloned #127) + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR1, P6, P7, P0, P1, + ST_QUA, COLOR1, P6, P1, P2, P3, + ST_QUA, COLOR1, P6, P3, P4, EE, + ST_TRI, COLOR1, P6, EE, EF, + // Case #224: (cloned #7) + ST_QUA, COLOR0, EH, P0, P1, P2, + ST_QUA, COLOR0, EH, P2, P3, P4, + ST_TRI, COLOR0, EH, P4, EE, + ST_QUA, COLOR1, P5, P6, P7, EH, + ST_TRI, COLOR1, P5, EH, EE, + // Case #225: (cloned #15) + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_QUA, COLOR0, EA, P3, P4, EE, + ST_QUA, COLOR1, P5, P6, P7, P0, + ST_QUA, COLOR1, P5, P0, EA, EE, + // Case #226: (cloned #23) + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_TRI, COLOR0, EB, P4, EE, + ST_QUA, COLOR1, P5, P6, P7, EH, + ST_QUA, COLOR1, P5, EH, EA, P1, + ST_QUA, COLOR1, P5, P1, EB, EE, + // Case #227: (cloned #31) + ST_QUA, COLOR0, EB, P2, P3, P4, + ST_TRI, COLOR0, EB, P4, EE, + ST_QUA, COLOR1, P5, P6, P7, P0, + ST_QUA, COLOR1, P5, P0, P1, EB, + ST_TRI, COLOR1, P5, EB, EE, + // Case #228: (cloned #39) + ST_QUA, COLOR0, EH, P0, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, P5, P6, P7, EH, + ST_QUA, COLOR1, P5, EH, EB, P2, + ST_QUA, COLOR1, P5, P2, EC, EE, + // Case #229: (cloned #47) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, P5, P6, P7, P0, + ST_QUA, COLOR1, P5, P0, EA, EB, + ST_QUA, COLOR1, P5, EB, P2, EC, + ST_TRI, COLOR1, P5, EC, EE, + // Case #230: (cloned #55) + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, P5, P6, P7, EH, + ST_QUA, COLOR1, P5, EH, EA, P1, + ST_QUA, COLOR1, P5, P1, P2, EC, + ST_TRI, COLOR1, P5, EC, EE, + // Case #231: (cloned #63) + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR1, P5, P6, P7, P0, + ST_QUA, COLOR1, P5, P0, P1, P2, + ST_QUA, COLOR1, P5, P2, EC, EE, + // Case #232: (cloned #23) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, P0, P1, P2, EC, + ST_TRI, COLOR0, EH, P0, EC, + ST_QUA, COLOR1, EE, P5, P6, P7, + ST_QUA, COLOR1, P3, ED, EE, P7, + ST_QUA, COLOR1, EH, EC, P3, P7, + // Case #233: (cloned #47) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P5, P6, P7, P0, + ST_QUA, COLOR1, ED, EE, P5, P0, + ST_QUA, COLOR1, EC, P3, ED, P0, + ST_TRI, COLOR1, EA, EC, P0, + // Case #234: (cloned #87) + ST_TRI, COLOR0, EH, P0, EA, + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR1, P5, P6, P7, EH, + ST_QUA, COLOR1, P5, EH, EA, P1, + ST_QUA, COLOR1, P5, P1, EB, EC, + ST_QUA, COLOR1, P5, EC, P3, ED, + ST_TRI, COLOR1, P5, ED, EE, + // Case #235: (cloned #95) + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR1, P5, P6, P7, P0, + ST_QUA, COLOR1, P5, P0, P1, EB, + ST_QUA, COLOR1, P5, EB, EC, P3, + ST_QUA, COLOR1, P5, P3, ED, EE, + // Case #236: (cloned #55) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EH, P0, P1, EB, + ST_QUA, COLOR1, EE, P5, P6, P7, + ST_QUA, COLOR1, P3, ED, EE, P7, + ST_QUA, COLOR1, EB, P2, P3, P7, + ST_TRI, COLOR1, EH, EB, P7, + // Case #237: (cloned #111) + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR1, P5, P6, P7, P0, + ST_QUA, COLOR1, P5, P0, EA, EB, + ST_QUA, COLOR1, P5, EB, P2, P3, + ST_QUA, COLOR1, P5, P3, ED, EE, + // Case #238: (cloned #119) + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, ED, + ST_QUA, COLOR1, P1, ED, EE, P5, + ST_QUA, COLOR1, P1, P5, P6, P7, + ST_QUA, COLOR1, P1, P7, EH, EA, + // Case #239: (cloned #127) + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR1, P5, P6, P7, P0, + ST_QUA, COLOR1, P5, P0, P1, P2, + ST_QUA, COLOR1, P5, P2, P3, ED, + ST_TRI, COLOR1, P5, ED, EE, + // Case #240: (cloned #15) + ST_QUA, COLOR0, EH, P0, P1, P2, + ST_QUA, COLOR0, EH, P2, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, P7, + ST_QUA, COLOR1, P4, P7, EH, ED, + // Case #241: (cloned #31) + ST_QUA, COLOR0, EA, P1, P2, P3, + ST_TRI, COLOR0, EA, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, P7, + ST_QUA, COLOR1, P4, P7, P0, EA, + ST_TRI, COLOR1, P4, EA, ED, + // Case #242: (cloned #47) + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, P7, + ST_QUA, COLOR1, P4, P7, EH, EA, + ST_QUA, COLOR1, P4, EA, P1, EB, + ST_TRI, COLOR1, P4, EB, ED, + // Case #243: (cloned #63) + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, P7, + ST_QUA, COLOR1, P4, P7, P0, P1, + ST_QUA, COLOR1, P4, P1, EB, ED, + // Case #244: (cloned #47) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EH, P0, P1, EB, + ST_QUA, COLOR1, P4, P5, P6, P7, + ST_QUA, COLOR1, EC, ED, P4, P7, + ST_QUA, COLOR1, EB, P2, EC, P7, + ST_TRI, COLOR1, EH, EB, P7, + // Case #245: (cloned #95) + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, P7, + ST_QUA, COLOR1, P4, P7, P0, EA, + ST_QUA, COLOR1, P4, EA, EB, P2, + ST_QUA, COLOR1, P4, P2, EC, ED, + // Case #246: (cloned #111) + ST_TRI, COLOR0, EH, P0, EA, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, P7, + ST_QUA, COLOR1, P4, P7, EH, EA, + ST_QUA, COLOR1, P4, EA, P1, P2, + ST_QUA, COLOR1, P4, P2, EC, ED, + // Case #247: (cloned #127) + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR1, P4, P5, P6, P7, + ST_QUA, COLOR1, P4, P7, P0, P1, + ST_QUA, COLOR1, P4, P1, P2, EC, + ST_TRI, COLOR1, P4, EC, ED, + // Case #248: (cloned #31) + ST_QUA, COLOR0, EH, P0, P1, P2, + ST_TRI, COLOR0, EH, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, P6, + ST_QUA, COLOR1, P3, P6, P7, EH, + ST_TRI, COLOR1, P3, EH, EC, + // Case #249: (cloned #63) + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, P6, + ST_QUA, COLOR1, P3, P6, P7, P0, + ST_QUA, COLOR1, P3, P0, EA, EC, + // Case #250: (cloned #95) + ST_TRI, COLOR0, EH, P0, EA, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, P6, + ST_QUA, COLOR1, P3, P6, P7, EH, + ST_QUA, COLOR1, P3, EH, EA, P1, + ST_QUA, COLOR1, P3, P1, EB, EC, + // Case #251: (cloned #127) + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR1, P3, P4, P5, P6, + ST_QUA, COLOR1, P3, P6, P7, P0, + ST_QUA, COLOR1, P3, P0, P1, EB, + ST_TRI, COLOR1, P3, EB, EC, + // Case #252: (cloned #63) + ST_QUA, COLOR0, EH, P0, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, P5, + ST_QUA, COLOR1, P2, P5, P6, P7, + ST_QUA, COLOR1, P2, P7, EH, EB, + // Case #253: (cloned #127) + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR1, P2, P3, P4, P5, + ST_QUA, COLOR1, P2, P5, P6, P7, + ST_QUA, COLOR1, P2, P7, P0, EA, + ST_TRI, COLOR1, P2, EA, EB, + // Case #254: (cloned #127) + ST_TRI, COLOR0, EH, P0, EA, + ST_QUA, COLOR1, P1, P2, P3, P4, + ST_QUA, COLOR1, P1, P4, P5, P6, + ST_QUA, COLOR1, P1, P6, P7, EH, + ST_TRI, COLOR1, P1, EH, EA, + // Case #255: Unique case #30 + ST_QUA, COLOR1, P0, P1, P2, P3, + ST_QUA, COLOR1, P0, P3, P4, P5, + ST_QUA, COLOR1, P0, P5, P6, P7, + // Dummy + 0 +}; + +//--------------------------------------------------------------------------- +// Axom modifications +const size_t clipShapesPoly8Size = sizeof(clipShapesPoly8) / sizeof(unsigned char); +} // namespace tables +} // namespace clipping +} // namespace bump +} // namespace axom +// clang-format on +//--------------------------------------------------------------------------- From 1807f600253277bdd6a6001cfb0bb47822f124c6 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Thu, 23 Oct 2025 14:20:05 -0700 Subject: [PATCH 02/28] Add some casts. --- src/axom/mir/detail/equiz_detail.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/axom/mir/detail/equiz_detail.hpp b/src/axom/mir/detail/equiz_detail.hpp index 7d3d139771..d5140e3881 100644 --- a/src/axom/mir/detail/equiz_detail.hpp +++ b/src/axom/mir/detail/equiz_detail.hpp @@ -77,7 +77,7 @@ class MaterialIntersector { const auto nid = nodeIdsView[i]; SLIC_ASSERT_MSG( - nid >= 0 && nid < m_matvfViews[0].size(), + nid >= 0 && nid < static_cast(m_matvfViews[0].size()), axom::fmt::format("Node id {} is not in range [0, {}).", nid, m_matvfViews[0].size())); // clang-format off @@ -105,10 +105,10 @@ class MaterialIntersector if(zoneMatID != NULL_MATERIAL) backgroundIndex = matNumberToIndex(zoneMatID); // Determine the matvf view index for the current material. SLIC_ASSERT_MSG( - id0 >= 0 && id0 < m_matvfViews[0].size(), + id0 >= 0 && id0 < static_cast(m_matvfViews[0].size()), axom::fmt::format("Node id {} is not in range [0, {}).", id0, m_matvfViews[0].size())); SLIC_ASSERT_MSG( - id1 >= 0 && id1 < m_matvfViews[0].size(), + id1 >= 0 && id1 < static_cast(m_matvfViews[0].size()), axom::fmt::format("Node id {} is not in range [0, {}).", id1, m_matvfViews[0].size())); // Get the volume fractions for mat1, mat2 at the edge endpoints id0, id1. From d1610fe9458ba6bb7ccaac74457d313d0d9bddb3 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Thu, 23 Oct 2025 14:20:21 -0700 Subject: [PATCH 03/28] Start of a MIR polygonal test. --- src/axom/mir/tests/mir_equiz2d.cpp | 211 +++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) diff --git a/src/axom/mir/tests/mir_equiz2d.cpp b/src/axom/mir/tests/mir_equiz2d.cpp index ce4e8f237c..66518b4f3c 100644 --- a/src/axom/mir/tests/mir_equiz2d.cpp +++ b/src/axom/mir/tests/mir_equiz2d.cpp @@ -14,6 +14,7 @@ namespace utils = axom::bump::utilities; namespace views = axom::bump::views; +namespace bump = axom::bump; std::string baselineDirectory() { return pjoin(dataDirectory(), "mir", "regression", "mir_equiz"); } @@ -115,7 +116,210 @@ void braid2d_mat_test(const std::string &type, EXPECT_TRUE(TestApp.test(name, hostMIRDomain, tolerance)); } } +//------------------------------------------------------------------------------ +/*! + * \brief Tests the TopologyMapper on polygonal geometry. + */ +template +class test_Polygonal_MIR +{ +public: + static void test() + { + // Make the 2D input mesh. + conduit::Node n_mesh; + initialize(n_mesh); + + // host->device + conduit::Node n_dev; + utils::copy(n_dev, n_mesh); + + mapping_target2(n_dev); + mir_target2(n_dev); + + // device->host + conduit::Node hostResult; + utils::copy(hostResult, n_dev); + + EXPECT_EQ(countBadMaterialZones(hostResult["matsets/target2_matset"]), 0); + + TestApp.saveVisualization("test_poly_mir", hostResult); + + // Handle baseline comparison. + EXPECT_TRUE(TestApp.test("test_poly_mir", hostResult)); + } + + static void initialize(conduit::Node &n_mesh) + { + // Make polygonal geometry + const conduit::index_t nlevels = 4; + const conduit::index_t nz = 1; + conduit::blueprint::mesh::examples::polytess(nlevels, nz, n_mesh); + + // Make a matset from the level field. + conduit::Node &n_matset = n_mesh["matsets/mat"]; + n_matset["topology"] = "topo"; + for(int mat = 1; mat <= nlevels; mat++) + { + n_matset[axom::fmt::format("material_map/mat{}", mat)] = mat; + } + const auto values = n_mesh["fields/level/values"].as_int_accessor(); + const int nzones = values.number_of_elements(); + n_matset["material_ids"].set(conduit::DataType::int32(nzones)); + n_matset["indices"].set(conduit::DataType::int32(nzones)); + n_matset["sizes"].set(conduit::DataType::int32(nzones)); + n_matset["offsets"].set(conduit::DataType::int32(nzones)); + n_matset["volume_fractions"].set(conduit::DataType::float32(nzones)); + + auto material_ids = n_matset["material_ids"].as_int32_ptr(); + auto indices = n_matset["indices"].as_int32_ptr(); + auto sizes = n_matset["sizes"].as_int32_ptr(); + auto offsets = n_matset["offsets"].as_int32_ptr(); + auto volume_fractions = n_matset["volume_fractions"].as_float32_ptr(); + for(int i = 0; i < nzones; i++) + { + material_ids[i] = values[i]; + indices[i] = i; + sizes[i] = 1; + offsets[i] = i; + volume_fractions[i] = 1.f; + } + + make_target2(n_mesh); + } + + static void make_target2(conduit::Node &n_mesh) + { + const auto x = n_mesh["coordsets/coords/values/x"].as_float64_accessor(); + const auto y = n_mesh["coordsets/coords/values/y"].as_float64_accessor(); + + // Make a rotated copy of the input topo mesh. + conduit::Node &target2_coords = n_mesh["coordsets/target2_coords"]; + target2_coords["type"] = "explicit"; + target2_coords["values/x"].set(conduit::DataType::float64(x.number_of_elements())); + target2_coords["values/y"].set(conduit::DataType::float64(y.number_of_elements())); + auto xp = target2_coords["values/x"].as_float64_ptr(); + auto yp = target2_coords["values/y"].as_float64_ptr(); + + const double A = M_PI / 16.; + const double sinA = sin(A); + const double cosA = cos(A); + const double M[2][2] = {{cosA, -sinA}, {sinA, cosA}}; + for(conduit::index_t i = 0; i < x.number_of_elements(); i++) + { + xp[i] = M[0][0] * x[i] + M[0][1] * y[i]; + yp[i] = M[1][0] * x[i] + M[1][1] * y[i]; + } + + n_mesh["topologies/target2"].set(n_mesh["topologies/topo"]); + n_mesh["topologies/target2/coordset"] = "target2_coords"; + } + + static void mapping_target2(conduit::Node &n_dev) + { + // Wrap polygonal mesh in views. + auto srcCoordset = views::make_explicit_coordset::view(n_dev["coordsets/coords"]); + using SrcCoordsetView = decltype(srcCoordset); + + const conduit::Node &n_srcTopo = n_dev["topologies/topo"]; + auto srcTopo = + views::make_unstructured_single_shape_topology>::view( + n_srcTopo); + using SrcTopologyView = decltype(srcTopo); + + const conduit::Node &n_srcMatset = n_dev["matsets/mat"]; + auto srcMatset = views::make_unibuffer_matset::view(n_srcMatset); + using SrcMatsetView = decltype(srcMatset); + + // Wrap target2 mesh in views. + auto targetCoordset = + views::make_explicit_coordset::view(n_dev["coordsets/target2_coords"]); + using TargetCoordsetView = decltype(targetCoordset); + + const conduit::Node &n_targetTopo = n_dev["topologies/target2"]; + auto targetTopo = + views::make_unstructured_single_shape_topology>::view( + n_targetTopo); + using TargetTopologyView = decltype(targetTopo); + + // Make new VFs via mapper. + constexpr int MAX_VERTS = 16; // Use a larger MAX_VERTS to handle oct-oct clipping. + using Mapper = bump::TopologyMapper; + Mapper mapper(srcTopo, srcCoordset, srcMatset, targetTopo, targetCoordset); + conduit::Node n_opts; + n_opts["source/matsetName"] = "mat"; + n_opts["target/topologyName"] = "target2"; + n_opts["target/matsetName"] = "target2_matset"; + mapper.execute(n_dev, n_opts, n_dev); + } + + static void mir_target2(conduit::Node &n_dev) + { + // Wrap target2 mesh in views. + auto coordsetView = + views::make_explicit_coordset::view(n_dev["coordsets/target2_coords"]); + using CoordsetView = decltype(coordsetView); + + const conduit::Node &n_targetTopo = n_dev["topologies/target2"]; + auto topologyView = + views::make_unstructured_single_shape_topology>::view( + n_targetTopo); + using TopologyView = decltype(topologyView); + + const conduit::Node &n_targetMatset = n_dev["matsets/target2_matset"]; + auto matsetView = views::make_unibuffer_matset::view(n_targetMatset); + using MatsetView = decltype(matsetView); + // Do MIR + using MIR = axom::mir::EquiZAlgorithm; + MIR m(topologyView, coordsetView, matsetView); + conduit::Node options; + options["matset"] = "target2_matset"; + options["matsetName"] = "mir_matset"; + options["coordsetName"] = "mir_coords"; + options["topologyName"] = "mir"; + m.execute(n_dev, options, n_dev); + } + + static int countBadMaterialZones(const conduit::Node &matset, double eps = 1.e-4) + { + const auto volume_fractions = utils::make_array_view(matset["volume_fractions"]); + //const auto material_ids = utils::make_array_view(matset["material_ids"]); + const auto indices = utils::make_array_view(matset["indices"]); + const auto sizes = utils::make_array_view(matset["sizes"]); + const auto offsets = utils::make_array_view(matset["offsets"]); + + const int nzones = sizes.size(); + int badZones = 0; + for(int zi = 0; zi < nzones; zi++) + { + int matsThisZone = sizes[zi]; + int offset = offsets[zi]; + + // What is the total VF for the zone? + double vfSum = 0.; + for(int m = 0; m < matsThisZone; m++) + { + const int index = indices[offset + m]; + vfSum += volume_fractions[index]; + } + + if(fabs(1. - vfSum) > eps) + { + badZones++; + } + } + return badZones; + } +}; + +#if 0 //------------------------------------------------------------------------------ TEST(mir_equiz, equiz_uniform_unibuffer_seq) { @@ -150,6 +354,13 @@ TEST(mir_equiz, equiz_uniform_unibuffer_hip) braid2d_mat_test("uniform", "unibuffer", "equiz_uniform_unibuffer", 2); } #endif +#endif +//------------------------------------------------------------------------------ +TEST(mir_equiz, equiz_polygonal_unibuffer_seq) +{ + AXOM_ANNOTATE_SCOPE("equiz_polygonal_unibuffer_seq"); + test_Polygonal_MIR::test(); +} //------------------------------------------------------------------------------ int main(int argc, char *argv[]) From 8a2c767cc1bc984f2c57837fbf223b34721c17fa Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Thu, 23 Oct 2025 14:36:38 -0700 Subject: [PATCH 04/28] Added slots for polygon clip cases in ClipTableManager. --- src/axom/bump/clipping/ClipCases.h | 11 ++-- src/axom/bump/clipping/ClipTableManager.hpp | 58 ++++++++++++++++++++- 2 files changed, 65 insertions(+), 4 deletions(-) diff --git a/src/axom/bump/clipping/ClipCases.h b/src/axom/bump/clipping/ClipCases.h index 13591a347b..6cf31860b8 100644 --- a/src/axom/bump/clipping/ClipCases.h +++ b/src/axom/bump/clipping/ClipCases.h @@ -9,6 +9,7 @@ // NOTE: The values for EA-EL and N0-N3 were reduced. // NOTE: We're using AXOM_BUMP_EXPORT instead of VISIT_VTK_LIGHT_API throughout. // NOTE: All #define were changed to constexpr variables to avoid symbol collisions. +// NOTE: We added ST_POLY5 through ST_POLY8. // clang-format off #include "axom/export/bump.h" @@ -81,9 +82,13 @@ constexpr unsigned char ST_WDG = 102; constexpr unsigned char ST_HEX = 103; constexpr unsigned char ST_TRI = 104; constexpr unsigned char ST_QUA = 105; -constexpr unsigned char ST_VTX = 106; -constexpr unsigned char ST_LIN = 107; -constexpr unsigned char ST_PNT = 108; +constexpr unsigned char ST_POLY5 = 106; +constexpr unsigned char ST_POLY6 = 107; +constexpr unsigned char ST_POLY7 = 108; +constexpr unsigned char ST_POLY8 = 109; +constexpr unsigned char ST_VTX = 110; +constexpr unsigned char ST_LIN = 111; +constexpr unsigned char ST_PNT = 112; // Colors constexpr unsigned char COLOR0 = 120; diff --git a/src/axom/bump/clipping/ClipTableManager.hpp b/src/axom/bump/clipping/ClipTableManager.hpp index 94097f7583..bb81f109a9 100644 --- a/src/axom/bump/clipping/ClipTableManager.hpp +++ b/src/axom/bump/clipping/ClipTableManager.hpp @@ -130,6 +130,18 @@ class TableView case ST_QUA: os << "ST_QUA"; break; + case ST_POLY5: + os << "ST_POLY5"; + break; + case ST_POLY6: + os << "ST_POLY6"; + break; + case ST_POLY7: + os << "ST_POLY7"; + break; + case ST_POLY8: + os << "ST_POLY8"; + break; case ST_TET: os << "ST_TET"; break; @@ -237,6 +249,18 @@ class TableView case ST_QUA: retval = 2 + 4; break; + case ST_POLY5: + retval = 2 + 5; + break; + case ST_POLY6: + retval = 2 + 6; + break; + case ST_POLY7: + retval = 2 + 7; + break; + case ST_POLY8: + retval = 2 + 8; + break; case ST_TET: retval = 2 + 4; break; @@ -437,7 +461,7 @@ class ClipTableManager std::vector s; if(dim == -1 || dim == 2) { - for(const auto value : std::vector {ST_TRI, ST_QUA}) + for(const auto value : std::vector {ST_TRI, ST_QUA, ST_POLY5, ST_POLY6, ST_POLY7, ST_POLY8}) { s.push_back(value); } @@ -492,6 +516,38 @@ class ClipTableManager clipShapesQua, clipShapesQuaSize); } + else if(shape == ST_POLY5) + { + m_tables[index].load(numClipCasesPoly5, + numClipShapesPoly5, + startClipShapesPoly5, + clipShapesPoly5, + clipShapesPoly5Size); + } + else if(shape == ST_POLY6) + { + m_tables[index].load(numClipCasesPoly6, + numClipShapesPoly6, + startClipShapesPoly6, + clipShapesPoly6, + clipShapesPoly6Size); + } + else if(shape == ST_POLY7) + { + m_tables[index].load(numClipCasesPoly7, + numClipShapesPoly7, + startClipShapesPoly7, + clipShapesPoly7, + clipShapesPoly7Size); + } + else if(shape == ST_POLY8) + { + m_tables[index].load(numClipCasesPoly8, + numClipShapesPoly8, + startClipShapesPoly8, + clipShapesPoly8, + clipShapesPoly8Size); + } else if(shape == ST_TET) { m_tables[index].load(numClipCasesTet, From 8b627c5fa5315dde002996f91e7553a01501c56a Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Tue, 2 Dec 2025 18:25:13 -0800 Subject: [PATCH 05/28] Initial cut cases. --- src/axom/bump/clipping/CutCasesHex.cpp | 642 ++++++++++++++++++++ src/axom/bump/clipping/CutCasesPyramid.cpp | 92 +++ src/axom/bump/clipping/CutCasesTet.cpp | 58 ++ src/axom/bump/clipping/CutCasesTri.cpp | 42 ++ src/axom/bump/clipping/CutCasesWedge.cpp | 166 +++++ src/axom/bump/clipping/convert_triangles.py | 174 ++++++ 6 files changed, 1174 insertions(+) create mode 100644 src/axom/bump/clipping/CutCasesHex.cpp create mode 100644 src/axom/bump/clipping/CutCasesPyramid.cpp create mode 100644 src/axom/bump/clipping/CutCasesTet.cpp create mode 100644 src/axom/bump/clipping/CutCasesTri.cpp create mode 100644 src/axom/bump/clipping/CutCasesWedge.cpp create mode 100644 src/axom/bump/clipping/convert_triangles.py diff --git a/src/axom/bump/clipping/CutCasesHex.cpp b/src/axom/bump/clipping/CutCasesHex.cpp new file mode 100644 index 0000000000..a4e528f17f --- /dev/null +++ b/src/axom/bump/clipping/CutCasesHex.cpp @@ -0,0 +1,642 @@ +#include "CutCases.h" + +namespace axom { +namespace bump { +namespace cutting { +namespace tables { + +int numCutCasesHex = 256; + +// clang-format off +unsigned char cutShapesHex[] = { + // Case 0 + // Case 1 + ST_TRI, COLOR0, EA, ED, EI, + // Case 2 + ST_TRI, COLOR0, EA, EJ, EB, + // Case 3 + ST_QUAD, COLOR0, EB, ED, EI, EJ, + // Case 4 + ST_TRI, COLOR0, EB, EL, EC, + // Case 5 + ST_TRI, COLOR0, EA, ED, EI, + ST_TRI, COLOR0, EB, EL, EC, + // Case 6 + ST_QUAD, COLOR0, EJ, EL, EC, EA, + // Case 7 + ST_POLY5, COLOR0, EI, EJ, EL, EC, ED, + // Case 8 + ST_TRI, COLOR0, ED, EC, EK, + // Case 9 + ST_QUAD, COLOR0, EA, EC, EK, EI, + // Case 10 + ST_TRI, COLOR0, EB, EA, EJ, + ST_TRI, COLOR0, EC, EK, ED, + // Case 11 + ST_POLY5, COLOR0, EK, EI, EJ, EB, EC, + // Case 12 + ST_QUAD, COLOR0, ED, EB, EL, EK, + // Case 13 + ST_POLY5, COLOR0, EL, EK, EI, EA, EB, + // Case 14 + ST_POLY5, COLOR0, EJ, EL, EK, ED, EA, + // Case 15 + ST_QUAD, COLOR0, EI, EJ, EL, EK, + // Case 16 + ST_TRI, COLOR0, EE, EI, EH, + // Case 17 + ST_QUAD, COLOR0, EE, EA, ED, EH, + // Case 18 + ST_TRI, COLOR0, EA, EJ, EB, + ST_TRI, COLOR0, EI, EH, EE, + // Case 19 + ST_POLY5, COLOR0, EB, ED, EH, EE, EJ, + // Case 20 + ST_TRI, COLOR0, EB, EL, EC, + ST_TRI, COLOR0, EI, EH, EE, + // Case 21 + ST_TRI, COLOR0, EB, EL, EC, + ST_QUAD, COLOR0, ED, EH, EE, EA, + // Case 22 + ST_TRI, COLOR0, EI, EH, EE, + ST_QUAD, COLOR0, EJ, EL, EC, EA, + // Case 23 + ST_POLY6, COLOR0, EH, EE, EJ, EL, EC, ED, + // Case 24 + ST_TRI, COLOR0, EI, EH, EE, + ST_TRI, COLOR0, ED, EC, EK, + // Case 25 + ST_POLY5, COLOR0, EE, EA, EC, EK, EH, + // Case 26 + ST_TRI, COLOR0, EJ, EB, EA, + ST_TRI, COLOR0, EI, EH, EE, + ST_TRI, COLOR0, EC, EK, ED, + // Case 27 + ST_POLY6, COLOR0, EK, EH, EE, EJ, EB, EC, + // Case 28 + ST_TRI, COLOR0, EH, EE, EI, + ST_QUAD, COLOR0, ED, EB, EL, EK, + // Case 29 + ST_POLY6, COLOR0, EK, EH, EE, EA, EB, EL, + // Case 30 + ST_TRI, COLOR0, EE, EI, EH, + ST_POLY5, COLOR0, EK, ED, EA, EJ, EL, + // Case 31 + ST_POLY5, COLOR0, EJ, EL, EK, EH, EE, + // Case 32 + ST_TRI, COLOR0, EJ, EE, EF, + // Case 33 + ST_TRI, COLOR0, EJ, EE, EF, + ST_TRI, COLOR0, EA, ED, EI, + // Case 34 + ST_QUAD, COLOR0, EA, EE, EF, EB, + // Case 35 + ST_POLY5, COLOR0, EF, EB, ED, EI, EE, + // Case 36 + ST_TRI, COLOR0, EB, EL, EC, + ST_TRI, COLOR0, EJ, EE, EF, + // Case 37 + ST_TRI, COLOR0, ED, EI, EA, + ST_TRI, COLOR0, EB, EL, EC, + ST_TRI, COLOR0, EE, EF, EJ, + // Case 38 + ST_POLY5, COLOR0, EC, EA, EE, EF, EL, + // Case 39 + ST_POLY6, COLOR0, EF, EL, EC, ED, EI, EE, + // Case 40 + ST_TRI, COLOR0, EJ, EE, EF, + ST_TRI, COLOR0, EC, EK, ED, + // Case 41 + ST_TRI, COLOR0, EE, EF, EJ, + ST_QUAD, COLOR0, EA, EC, EK, EI, + // Case 42 + ST_TRI, COLOR0, EC, EK, ED, + ST_QUAD, COLOR0, EA, EE, EF, EB, + // Case 43 + ST_POLY6, COLOR0, EI, EE, EF, EB, EC, EK, + // Case 44 + ST_TRI, COLOR0, EJ, EE, EF, + ST_QUAD, COLOR0, EL, EK, ED, EB, + // Case 45 + ST_TRI, COLOR0, EE, EF, EJ, + ST_POLY5, COLOR0, EL, EK, EI, EA, EB, + // Case 46 + ST_POLY6, COLOR0, EK, ED, EA, EE, EF, EL, + // Case 47 + ST_POLY5, COLOR0, EL, EK, EI, EE, EF, + // Case 48 + ST_QUAD, COLOR0, EJ, EI, EH, EF, + // Case 49 + ST_POLY5, COLOR0, ED, EH, EF, EJ, EA, + // Case 50 + ST_POLY5, COLOR0, EH, EF, EB, EA, EI, + // Case 51 + ST_QUAD, COLOR0, EF, EB, ED, EH, + // Case 52 + ST_TRI, COLOR0, EL, EC, EB, + ST_QUAD, COLOR0, EJ, EI, EH, EF, + // Case 53 + ST_TRI, COLOR0, EL, EC, EB, + ST_POLY5, COLOR0, ED, EH, EF, EJ, EA, + // Case 54 + ST_POLY6, COLOR0, EF, EL, EC, EA, EI, EH, + // Case 55 + ST_POLY5, COLOR0, ED, EH, EF, EL, EC, + // Case 56 + ST_TRI, COLOR0, ED, EC, EK, + ST_QUAD, COLOR0, EH, EF, EJ, EI, + // Case 57 + ST_POLY6, COLOR0, EC, EK, EH, EF, EJ, EA, + // Case 58 + ST_TRI, COLOR0, EC, EK, ED, + ST_POLY5, COLOR0, EH, EF, EB, EA, EI, + // Case 59 + ST_POLY5, COLOR0, EH, EF, EB, EC, EK, + // Case 60 + ST_QUAD, COLOR0, EF, EJ, EI, EH, + ST_QUAD, COLOR0, ED, EB, EL, EK, + // Case 61 + ST_POLY7, COLOR0, EH, EF, EJ, EA, EB, EL, EK, + // Case 62 + ST_POLY7, COLOR0, EL, EK, ED, EA, EI, EH, EF, + // Case 63 + ST_QUAD, COLOR0, EF, EL, EK, EH, + // Case 64 + ST_TRI, COLOR0, EL, EF, EG, + // Case 65 + ST_TRI, COLOR0, EA, ED, EI, + ST_TRI, COLOR0, EF, EG, EL, + // Case 66 + ST_TRI, COLOR0, EJ, EB, EA, + ST_TRI, COLOR0, EF, EG, EL, + // Case 67 + ST_TRI, COLOR0, EF, EG, EL, + ST_QUAD, COLOR0, EB, ED, EI, EJ, + // Case 68 + ST_QUAD, COLOR0, EB, EF, EG, EC, + // Case 69 + ST_TRI, COLOR0, ED, EI, EA, + ST_QUAD, COLOR0, EB, EF, EG, EC, + // Case 70 + ST_POLY5, COLOR0, EG, EC, EA, EJ, EF, + // Case 71 + ST_POLY6, COLOR0, EC, ED, EI, EJ, EF, EG, + // Case 72 + ST_TRI, COLOR0, EC, EK, ED, + ST_TRI, COLOR0, EL, EF, EG, + // Case 73 + ST_TRI, COLOR0, EL, EF, EG, + ST_QUAD, COLOR0, EK, EI, EA, EC, + // Case 74 + ST_TRI, COLOR0, EA, EJ, EB, + ST_TRI, COLOR0, EC, EK, ED, + ST_TRI, COLOR0, EF, EG, EL, + // Case 75 + ST_TRI, COLOR0, EF, EG, EL, + ST_POLY5, COLOR0, EK, EI, EJ, EB, EC, + // Case 76 + ST_POLY5, COLOR0, ED, EB, EF, EG, EK, + // Case 77 + ST_POLY6, COLOR0, EF, EG, EK, EI, EA, EB, + // Case 78 + ST_POLY6, COLOR0, EG, EK, ED, EA, EJ, EF, + // Case 79 + ST_POLY5, COLOR0, EK, EI, EJ, EF, EG, + // Case 80 + ST_TRI, COLOR0, EF, EG, EL, + ST_TRI, COLOR0, EE, EI, EH, + // Case 81 + ST_TRI, COLOR0, EG, EL, EF, + ST_QUAD, COLOR0, EE, EA, ED, EH, + // Case 82 + ST_TRI, COLOR0, EB, EA, EJ, + ST_TRI, COLOR0, EF, EG, EL, + ST_TRI, COLOR0, EI, EH, EE, + // Case 83 + ST_TRI, COLOR0, EL, EF, EG, + ST_POLY5, COLOR0, EH, EE, EJ, EB, ED, + // Case 84 + ST_TRI, COLOR0, EE, EI, EH, + ST_QUAD, COLOR0, EG, EC, EB, EF, + // Case 85 + ST_QUAD, COLOR0, EC, EB, EF, EG, + ST_QUAD, COLOR0, EE, EA, ED, EH, + // Case 86 + ST_TRI, COLOR0, EI, EH, EE, + ST_POLY5, COLOR0, EG, EC, EA, EJ, EF, + // Case 87 + ST_POLY7, COLOR0, ED, EH, EE, EJ, EF, EG, EC, + // Case 88 + ST_TRI, COLOR0, ED, EC, EK, + ST_TRI, COLOR0, EH, EE, EI, + ST_TRI, COLOR0, EL, EF, EG, + // Case 89 + ST_TRI, COLOR0, EF, EG, EL, + ST_POLY5, COLOR0, EC, EK, EH, EE, EA, + // Case 90 + ST_TRI, COLOR0, EA, EJ, EB, + ST_TRI, COLOR0, EE, EI, EH, + ST_TRI, COLOR0, EC, EK, ED, + ST_TRI, COLOR0, EF, EG, EL, + // Case 91 + ST_TRI, COLOR0, EF, EG, EL, + ST_POLY6, COLOR0, EJ, EB, EC, EK, EH, EE, + // Case 92 + ST_TRI, COLOR0, EI, EH, EE, + ST_POLY5, COLOR0, EF, EG, EK, ED, EB, + // Case 93 + ST_POLY7, COLOR0, EB, EF, EG, EK, EH, EE, EA, + // Case 94 + ST_TRI, COLOR0, EI, EH, EE, + ST_POLY6, COLOR0, EA, EJ, EF, EG, EK, ED, + // Case 95 + ST_POLY6, COLOR0, EJ, EF, EG, EK, EH, EE, + // Case 96 + ST_QUAD, COLOR0, EL, EJ, EE, EG, + // Case 97 + ST_TRI, COLOR0, EA, ED, EI, + ST_QUAD, COLOR0, EE, EG, EL, EJ, + // Case 98 + ST_POLY5, COLOR0, EA, EE, EG, EL, EB, + // Case 99 + ST_POLY6, COLOR0, EG, EL, EB, ED, EI, EE, + // Case 100 + ST_POLY5, COLOR0, EE, EG, EC, EB, EJ, + // Case 101 + ST_TRI, COLOR0, ED, EI, EA, + ST_POLY5, COLOR0, EE, EG, EC, EB, EJ, + // Case 102 + ST_QUAD, COLOR0, EC, EA, EE, EG, + // Case 103 + ST_POLY5, COLOR0, EE, EG, EC, ED, EI, + // Case 104 + ST_TRI, COLOR0, EK, ED, EC, + ST_QUAD, COLOR0, EL, EJ, EE, EG, + // Case 105 + ST_QUAD, COLOR0, EI, EA, EC, EK, + ST_QUAD, COLOR0, EL, EJ, EE, EG, + // Case 106 + ST_TRI, COLOR0, ED, EC, EK, + ST_POLY5, COLOR0, EG, EL, EB, EA, EE, + // Case 107 + ST_POLY7, COLOR0, EE, EG, EL, EB, EC, EK, EI, + // Case 108 + ST_POLY6, COLOR0, EG, EK, ED, EB, EJ, EE, + // Case 109 + ST_POLY7, COLOR0, EK, EI, EA, EB, EJ, EE, EG, + // Case 110 + ST_POLY5, COLOR0, EA, EE, EG, EK, ED, + // Case 111 + ST_QUAD, COLOR0, EI, EE, EG, EK, + // Case 112 + ST_POLY5, COLOR0, EL, EJ, EI, EH, EG, + // Case 113 + ST_POLY6, COLOR0, EH, EG, EL, EJ, EA, ED, + // Case 114 + ST_POLY6, COLOR0, EH, EG, EL, EB, EA, EI, + // Case 115 + ST_POLY5, COLOR0, EB, ED, EH, EG, EL, + // Case 116 + ST_POLY6, COLOR0, EI, EH, EG, EC, EB, EJ, + // Case 117 + ST_POLY7, COLOR0, EG, EC, EB, EJ, EA, ED, EH, + // Case 118 + ST_POLY5, COLOR0, EG, EC, EA, EI, EH, + // Case 119 + ST_QUAD, COLOR0, EC, ED, EH, EG, + // Case 120 + ST_TRI, COLOR0, EC, EK, ED, + ST_POLY5, COLOR0, EI, EH, EG, EL, EJ, + // Case 121 + ST_POLY7, COLOR0, EA, EC, EK, EH, EG, EL, EJ, + // Case 122 + ST_TRI, COLOR0, EC, EK, ED, + ST_POLY6, COLOR0, EB, EA, EI, EH, EG, EL, + // Case 123 + ST_POLY6, COLOR0, EB, EC, EK, EH, EG, EL, + // Case 124 + ST_POLY7, COLOR0, EJ, EI, EH, EG, EK, ED, EB, + // Case 125 + ST_TRI, COLOR0, EA, EB, EJ, + ST_TRI, COLOR0, EK, EH, EG, + // Case 126 + ST_POLY6, COLOR0, EA, EI, EH, EG, EK, ED, + // Case 127 + ST_TRI, COLOR0, EH, EG, EK, + // Case 128 + ST_TRI, COLOR0, EH, EK, EG, + // Case 129 + ST_TRI, COLOR0, ED, EI, EA, + ST_TRI, COLOR0, EK, EG, EH, + // Case 130 + ST_TRI, COLOR0, EA, EJ, EB, + ST_TRI, COLOR0, EK, EG, EH, + // Case 131 + ST_TRI, COLOR0, EK, EG, EH, + ST_QUAD, COLOR0, EI, EJ, EB, ED, + // Case 132 + ST_TRI, COLOR0, EL, EC, EB, + ST_TRI, COLOR0, EG, EH, EK, + // Case 133 + ST_TRI, COLOR0, EB, EL, EC, + ST_TRI, COLOR0, ED, EI, EA, + ST_TRI, COLOR0, EG, EH, EK, + // Case 134 + ST_TRI, COLOR0, EG, EH, EK, + ST_QUAD, COLOR0, EC, EA, EJ, EL, + // Case 135 + ST_TRI, COLOR0, EG, EH, EK, + ST_POLY5, COLOR0, EI, EJ, EL, EC, ED, + // Case 136 + ST_QUAD, COLOR0, EH, ED, EC, EG, + // Case 137 + ST_POLY5, COLOR0, EA, EC, EG, EH, EI, + // Case 138 + ST_TRI, COLOR0, EA, EJ, EB, + ST_QUAD, COLOR0, EC, EG, EH, ED, + // Case 139 + ST_POLY6, COLOR0, EG, EH, EI, EJ, EB, EC, + // Case 140 + ST_POLY5, COLOR0, EH, ED, EB, EL, EG, + // Case 141 + ST_POLY6, COLOR0, EB, EL, EG, EH, EI, EA, + // Case 142 + ST_POLY6, COLOR0, EL, EG, EH, ED, EA, EJ, + // Case 143 + ST_POLY5, COLOR0, EI, EJ, EL, EG, EH, + // Case 144 + ST_QUAD, COLOR0, EG, EE, EI, EK, + // Case 145 + ST_POLY5, COLOR0, EG, EE, EA, ED, EK, + // Case 146 + ST_TRI, COLOR0, EJ, EB, EA, + ST_QUAD, COLOR0, EI, EK, EG, EE, + // Case 147 + ST_POLY6, COLOR0, ED, EK, EG, EE, EJ, EB, + // Case 148 + ST_TRI, COLOR0, EC, EB, EL, + ST_QUAD, COLOR0, EG, EE, EI, EK, + // Case 149 + ST_TRI, COLOR0, EB, EL, EC, + ST_POLY5, COLOR0, EG, EE, EA, ED, EK, + // Case 150 + ST_QUAD, COLOR0, EE, EI, EK, EG, + ST_QUAD, COLOR0, EC, EA, EJ, EL, + // Case 151 + ST_POLY7, COLOR0, EJ, EL, EC, ED, EK, EG, EE, + // Case 152 + ST_POLY5, COLOR0, EC, EG, EE, EI, ED, + // Case 153 + ST_QUAD, COLOR0, EE, EA, EC, EG, + // Case 154 + ST_TRI, COLOR0, EB, EA, EJ, + ST_POLY5, COLOR0, EE, EI, ED, EC, EG, + // Case 155 + ST_POLY5, COLOR0, EC, EG, EE, EJ, EB, + // Case 156 + ST_POLY6, COLOR0, EB, EL, EG, EE, EI, ED, + // Case 157 + ST_POLY5, COLOR0, EG, EE, EA, EB, EL, + // Case 158 + ST_POLY7, COLOR0, EG, EE, EI, ED, EA, EJ, EL, + // Case 159 + ST_QUAD, COLOR0, EE, EJ, EL, EG, + // Case 160 + ST_TRI, COLOR0, EE, EF, EJ, + ST_TRI, COLOR0, EH, EK, EG, + // Case 161 + ST_TRI, COLOR0, EA, ED, EI, + ST_TRI, COLOR0, EE, EF, EJ, + ST_TRI, COLOR0, EK, EG, EH, + // Case 162 + ST_TRI, COLOR0, EH, EK, EG, + ST_QUAD, COLOR0, EF, EB, EA, EE, + // Case 163 + ST_TRI, COLOR0, EK, EG, EH, + ST_POLY5, COLOR0, EF, EB, ED, EI, EE, + // Case 164 + ST_TRI, COLOR0, EJ, EE, EF, + ST_TRI, COLOR0, EL, EC, EB, + ST_TRI, COLOR0, EH, EK, EG, + // Case 165 + ST_TRI, COLOR0, EG, EH, EK, + ST_TRI, COLOR0, EB, EL, EC, + ST_TRI, COLOR0, EA, ED, EI, + ST_TRI, COLOR0, EE, EF, EJ, + // Case 166 + ST_TRI, COLOR0, EH, EK, EG, + ST_POLY5, COLOR0, EC, EA, EE, EF, EL, + // Case 167 + ST_TRI, COLOR0, EK, EG, EH, + ST_POLY6, COLOR0, ED, EI, EE, EF, EL, EC, + // Case 168 + ST_TRI, COLOR0, EF, EJ, EE, + ST_QUAD, COLOR0, EH, ED, EC, EG, + // Case 169 + ST_TRI, COLOR0, EJ, EE, EF, + ST_POLY5, COLOR0, EG, EH, EI, EA, EC, + // Case 170 + ST_QUAD, COLOR0, ED, EC, EG, EH, + ST_QUAD, COLOR0, EF, EB, EA, EE, + // Case 171 + ST_POLY7, COLOR0, EC, EG, EH, EI, EE, EF, EB, + // Case 172 + ST_TRI, COLOR0, EJ, EE, EF, + ST_POLY5, COLOR0, EH, ED, EB, EL, EG, + // Case 173 + ST_TRI, COLOR0, EJ, EE, EF, + ST_POLY6, COLOR0, EB, EL, EG, EH, EI, EA, + // Case 174 + ST_POLY7, COLOR0, EA, EE, EF, EL, EG, EH, ED, + // Case 175 + ST_POLY6, COLOR0, EL, EG, EH, EI, EE, EF, + // Case 176 + ST_POLY5, COLOR0, EJ, EI, EK, EG, EF, + // Case 177 + ST_POLY6, COLOR0, EA, ED, EK, EG, EF, EJ, + // Case 178 + ST_POLY6, COLOR0, EK, EG, EF, EB, EA, EI, + // Case 179 + ST_POLY5, COLOR0, EF, EB, ED, EK, EG, + // Case 180 + ST_TRI, COLOR0, EB, EL, EC, + ST_POLY5, COLOR0, EK, EG, EF, EJ, EI, + // Case 181 + ST_TRI, COLOR0, EB, EL, EC, + ST_POLY6, COLOR0, EA, ED, EK, EG, EF, EJ, + // Case 182 + ST_POLY7, COLOR0, EI, EK, EG, EF, EL, EC, EA, + // Case 183 + ST_POLY6, COLOR0, ED, EK, EG, EF, EL, EC, + // Case 184 + ST_POLY6, COLOR0, EI, ED, EC, EG, EF, EJ, + // Case 185 + ST_POLY5, COLOR0, EA, EC, EG, EF, EJ, + // Case 186 + ST_POLY7, COLOR0, EF, EB, EA, EI, ED, EC, EG, + // Case 187 + ST_QUAD, COLOR0, EG, EF, EB, EC, + // Case 188 + ST_POLY7, COLOR0, ED, EB, EL, EG, EF, EJ, EI, + // Case 189 + ST_POLY6, COLOR0, EA, EB, EL, EG, EF, EJ, + // Case 190 + ST_TRI, COLOR0, EA, EI, ED, + ST_TRI, COLOR0, EF, EL, EG, + // Case 191 + ST_TRI, COLOR0, EL, EG, EF, + // Case 192 + ST_QUAD, COLOR0, EK, EL, EF, EH, + // Case 193 + ST_TRI, COLOR0, EI, EA, ED, + ST_QUAD, COLOR0, EK, EL, EF, EH, + // Case 194 + ST_TRI, COLOR0, EB, EA, EJ, + ST_QUAD, COLOR0, EF, EH, EK, EL, + // Case 195 + ST_QUAD, COLOR0, EL, EF, EH, EK, + ST_QUAD, COLOR0, EI, EJ, EB, ED, + // Case 196 + ST_POLY5, COLOR0, EB, EF, EH, EK, EC, + // Case 197 + ST_TRI, COLOR0, EA, ED, EI, + ST_POLY5, COLOR0, EH, EK, EC, EB, EF, + // Case 198 + ST_POLY6, COLOR0, EH, EK, EC, EA, EJ, EF, + // Case 199 + ST_POLY7, COLOR0, EF, EH, EK, EC, ED, EI, EJ, + // Case 200 + ST_POLY5, COLOR0, EF, EH, ED, EC, EL, + // Case 201 + ST_POLY6, COLOR0, EC, EL, EF, EH, EI, EA, + // Case 202 + ST_TRI, COLOR0, EJ, EB, EA, + ST_POLY5, COLOR0, ED, EC, EL, EF, EH, + // Case 203 + ST_POLY7, COLOR0, EI, EJ, EB, EC, EL, EF, EH, + // Case 204 + ST_QUAD, COLOR0, ED, EB, EF, EH, + // Case 205 + ST_POLY5, COLOR0, EB, EF, EH, EI, EA, + // Case 206 + ST_POLY5, COLOR0, EF, EH, ED, EA, EJ, + // Case 207 + ST_QUAD, COLOR0, EH, EI, EJ, EF, + // Case 208 + ST_POLY5, COLOR0, EI, EK, EL, EF, EE, + // Case 209 + ST_POLY6, COLOR0, EA, ED, EK, EL, EF, EE, + // Case 210 + ST_TRI, COLOR0, EA, EJ, EB, + ST_POLY5, COLOR0, EL, EF, EE, EI, EK, + // Case 211 + ST_POLY7, COLOR0, EK, EL, EF, EE, EJ, EB, ED, + // Case 212 + ST_POLY6, COLOR0, EF, EE, EI, EK, EC, EB, + // Case 213 + ST_POLY7, COLOR0, EE, EA, ED, EK, EC, EB, EF, + // Case 214 + ST_POLY7, COLOR0, EC, EA, EJ, EF, EE, EI, EK, + // Case 215 + ST_TRI, COLOR0, EJ, EF, EE, + ST_TRI, COLOR0, EC, ED, EK, + // Case 216 + ST_POLY6, COLOR0, ED, EC, EL, EF, EE, EI, + // Case 217 + ST_POLY5, COLOR0, EE, EA, EC, EL, EF, + // Case 218 + ST_TRI, COLOR0, EA, EJ, EB, + ST_POLY6, COLOR0, ED, EC, EL, EF, EE, EI, + // Case 219 + ST_POLY6, COLOR0, EC, EL, EF, EE, EJ, EB, + // Case 220 + ST_POLY5, COLOR0, ED, EB, EF, EE, EI, + // Case 221 + ST_QUAD, COLOR0, EF, EE, EA, EB, + // Case 222 + ST_POLY6, COLOR0, EF, EE, EI, ED, EA, EJ, + // Case 223 + ST_TRI, COLOR0, EJ, EF, EE, + // Case 224 + ST_POLY5, COLOR0, EK, EL, EJ, EE, EH, + // Case 225 + ST_TRI, COLOR0, EA, ED, EI, + ST_POLY5, COLOR0, EK, EL, EJ, EE, EH, + // Case 226 + ST_POLY6, COLOR0, EE, EH, EK, EL, EB, EA, + // Case 227 + ST_POLY7, COLOR0, EB, ED, EI, EE, EH, EK, EL, + // Case 228 + ST_POLY6, COLOR0, EJ, EE, EH, EK, EC, EB, + // Case 229 + ST_TRI, COLOR0, EA, ED, EI, + ST_POLY6, COLOR0, EJ, EE, EH, EK, EC, EB, + // Case 230 + ST_POLY5, COLOR0, EC, EA, EE, EH, EK, + // Case 231 + ST_POLY6, COLOR0, EE, EH, EK, EC, ED, EI, + // Case 232 + ST_POLY6, COLOR0, EJ, EE, EH, ED, EC, EL, + // Case 233 + ST_POLY7, COLOR0, EL, EJ, EE, EH, EI, EA, EC, + // Case 234 + ST_POLY7, COLOR0, EH, ED, EC, EL, EB, EA, EE, + // Case 235 + ST_TRI, COLOR0, EB, EC, EL, + ST_TRI, COLOR0, EI, EE, EH, + // Case 236 + ST_POLY5, COLOR0, EH, ED, EB, EJ, EE, + // Case 237 + ST_POLY6, COLOR0, EB, EJ, EE, EH, EI, EA, + // Case 238 + ST_QUAD, COLOR0, ED, EA, EE, EH, + // Case 239 + ST_TRI, COLOR0, EE, EH, EI, + // Case 240 + ST_QUAD, COLOR0, EL, EJ, EI, EK, + // Case 241 + ST_POLY5, COLOR0, EK, EL, EJ, EA, ED, + // Case 242 + ST_POLY5, COLOR0, EI, EK, EL, EB, EA, + // Case 243 + ST_QUAD, COLOR0, EL, EB, ED, EK, + // Case 244 + ST_POLY5, COLOR0, EJ, EI, EK, EC, EB, + // Case 245 + ST_POLY6, COLOR0, EJ, EA, ED, EK, EC, EB, + // Case 246 + ST_QUAD, COLOR0, EK, EC, EA, EI, + // Case 247 + ST_TRI, COLOR0, ED, EK, EC, + // Case 248 + ST_POLY5, COLOR0, EL, EJ, EI, ED, EC, + // Case 249 + ST_QUAD, COLOR0, EC, EL, EJ, EA, + // Case 250 + ST_POLY6, COLOR0, EI, ED, EC, EL, EB, EA, + // Case 251 + ST_TRI, COLOR0, EB, EC, EL, + // Case 252 + ST_QUAD, COLOR0, EI, ED, EB, EJ, + // Case 253 + ST_TRI, COLOR0, EA, EB, EJ, + // Case 254 + ST_TRI, COLOR0, EA, EI, ED, + // Case 255 +}; +// clang-format on + +unsigned char numCutShapesHex[] = { +0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 3, 1, 1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2, 1, 1, 1, 1, 2, 2, 2, 1, 2, 1, 1, 2, 2, 3, 2, 1, 1, 1, 1, 2, 2, 3, 2, 2, 2, 2, 1, 3, 2, 4, 2, 2, 1, 2, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 1, 2, 2, 2, 2, 3, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 3, 2, 2, 3, 4, 2, 2, 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 +}; + +unsigned char startCutShapesHex[] = { +0, 0, 5, 10, 16, 21, 31, 37, 44, 49, 55, 65, 72, 78, 85, 92, 98, 103, 109, 119, 126, 136, 147, 158, 166, 176, 183, 198, 206, 217, 225, 237, 244, 249, 259, 265, 272, 282, 297, 304, 312, 322, 333, 344, 352, 363, 375, 383, 390, 396, 403, 410, 416, 427, 439, 447, 454, 465, 473, 485, 492, 504, 513, 522, 528, 533, 543, 553, 564, 570, 581, 588, 596, 606, 617, 632, 644, 651, 659, 667, 674, 684, 695, 710, 722, 733, 745, 757, 766, 781, 793, 813, 826, 838, 847, 860, 868, 874, 885, 892, 900, 907, 919, 925, 932, 943, 955, 967, 976, 984, 993, 1000, 1006, 1013, 1021, 1029, 1036, 1044, 1053, 1060, 1066, 1078, 1087, 1100, 1108, 1117, 1127, 1135, 1140, 1145, 1155, 1165, 1176, 1186, 1201, 1212, 1224, 1230, 1237, 1248, 1256, 1263, 1271, 1279, 1286, 1292, 1299, 1310, 1318, 1329, 1341, 1353, 1362, 1369, 1375, 1387, 1394, 1402, 1409, 1418, 1424, 1434, 1449, 1460, 1472, 1487, 1507, 1519, 1532, 1543, 1555, 1567, 1576, 1588, 1601, 1610, 1618, 1625, 1633, 1641, 1648, 1660, 1673, 1682, 1690, 1698, 1705, 1714, 1720, 1729, 1737, 1747, 1752, 1758, 1769, 1780, 1792, 1799, 1811, 1819, 1828, 1835, 1843, 1855, 1864, 1870, 1877, 1884, 1890, 1897, 1905, 1917, 1926, 1934, 1943, 1952, 1962, 1970, 1977, 1990, 1998, 2005, 2011, 2019, 2024, 2031, 2043, 2051, 2060, 2068, 2081, 2088, 2096, 2104, 2113, 2122, 2132, 2139, 2147, 2153, 2158, 2164, 2171, 2178, 2184, 2191, 2199, 2205, 2210, 2217, 2223, 2231, 2236, 2242, 2247, 2252 +}; + +const size_t cutShapesHexSize = sizeof(cutShapesHex) / sizeof(unsigned char); + +} // namespace tables +} // namespace cutting +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/CutCasesPyramid.cpp b/src/axom/bump/clipping/CutCasesPyramid.cpp new file mode 100644 index 0000000000..5fb44efcd6 --- /dev/null +++ b/src/axom/bump/clipping/CutCasesPyramid.cpp @@ -0,0 +1,92 @@ +#include "CutCases.h" + +namespace axom { +namespace bump { +namespace cutting { +namespace tables { + +int numCutCasesPyramid = 32; + +// clang-format off +unsigned char cutShapesPyramid[] = { + // Case 0 + // Case 1 + ST_TRI, COLOR0, EA, EE, ED, + // Case 2 + ST_TRI, COLOR0, EA, EB, EF, + // Case 3 + ST_QUAD, COLOR0, EB, EF, EE, ED, + // Case 4 + ST_TRI, COLOR0, EB, EC, EG, + // Case 5 + ST_TRI, COLOR0, EA, EE, ED, + ST_TRI, COLOR0, EB, EC, EG, + // Case 6 + ST_QUAD, COLOR0, EF, EA, EC, EG, + // Case 7 + ST_POLY5, COLOR0, EC, EG, EF, EE, ED, + // Case 8 + ST_TRI, COLOR0, ED, EH, EC, + // Case 9 + ST_QUAD, COLOR0, EE, EH, EC, EA, + // Case 10 + ST_TRI, COLOR0, EA, EB, EF, + ST_TRI, COLOR0, ED, EH, EC, + // Case 11 + ST_POLY5, COLOR0, EE, EH, EC, EB, EF, + // Case 12 + ST_QUAD, COLOR0, EG, EB, ED, EH, + // Case 13 + ST_POLY5, COLOR0, EB, EA, EE, EH, EG, + // Case 14 + ST_POLY5, COLOR0, ED, EH, EG, EF, EA, + // Case 15 + ST_QUAD, COLOR0, EF, EE, EH, EG, + // Case 16 + ST_QUAD, COLOR0, EH, EE, EF, EG, + // Case 17 + ST_POLY5, COLOR0, EG, EH, ED, EA, EF, + // Case 18 + ST_POLY5, COLOR0, EB, EG, EH, EE, EA, + // Case 19 + ST_QUAD, COLOR0, ED, EB, EG, EH, + // Case 20 + ST_POLY5, COLOR0, EC, EH, EE, EF, EB, + // Case 21 + ST_POLY6, COLOR0, EH, ED, EA, EF, EB, EC, + // Case 22 + ST_QUAD, COLOR0, EE, EA, EC, EH, + // Case 23 + ST_TRI, COLOR0, ED, EC, EH, + // Case 24 + ST_POLY5, COLOR0, EF, EG, EC, ED, EE, + // Case 25 + ST_QUAD, COLOR0, EC, EA, EF, EG, + // Case 26 + ST_POLY6, COLOR0, EE, EA, EB, EG, EC, ED, + // Case 27 + ST_TRI, COLOR0, EB, EG, EC, + // Case 28 + ST_QUAD, COLOR0, EB, ED, EE, EF, + // Case 29 + ST_TRI, COLOR0, EA, EF, EB, + // Case 30 + ST_TRI, COLOR0, EA, ED, EE, + // Case 31 +}; +// clang-format on + +unsigned char numCutShapesPyramid[] = { +0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 +}; + +unsigned char startCutShapesPyramid[] = { +0, 0, 5, 10, 16, 21, 31, 37, 44, 49, 55, 65, 72, 78, 85, 92, 98, 104, 111, 118, 124, 131, 139, 145, 150, 157, 163, 171, 176, 182, 187, 192 +}; + +const size_t cutShapesPyramidSize = sizeof(cutShapesPyramid) / sizeof(unsigned char); + +} // namespace tables +} // namespace cutting +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/CutCasesTet.cpp b/src/axom/bump/clipping/CutCasesTet.cpp new file mode 100644 index 0000000000..361fac2edc --- /dev/null +++ b/src/axom/bump/clipping/CutCasesTet.cpp @@ -0,0 +1,58 @@ +#include "CutCases.h" + +namespace axom { +namespace bump { +namespace cutting { +namespace tables { + +int numCutCasesTet = 16; + +// clang-format off +unsigned char cutShapesTet[] = { + // Case 0 + // Case 1 + ST_TRI, COLOR0, EA, ED, EC, + // Case 2 + ST_TRI, COLOR0, EA, EB, EE, + // Case 3 + ST_QUAD, COLOR0, EE, ED, EC, EB, + // Case 4 + ST_TRI, COLOR0, EB, EC, EF, + // Case 5 + ST_QUAD, COLOR0, ED, EF, EB, EA, + // Case 6 + ST_QUAD, COLOR0, EA, EC, EF, EE, + // Case 7 + ST_TRI, COLOR0, ED, EF, EE, + // Case 8 + ST_TRI, COLOR0, ED, EE, EF, + // Case 9 + ST_QUAD, COLOR0, EA, EE, EF, EC, + // Case 10 + ST_QUAD, COLOR0, EF, ED, EA, EB, + // Case 11 + ST_TRI, COLOR0, EF, EC, EB, + // Case 12 + ST_QUAD, COLOR0, ED, EE, EB, EC, + // Case 13 + ST_TRI, COLOR0, EA, EE, EB, + // Case 14 + ST_TRI, COLOR0, EA, EC, ED, + // Case 15 +}; +// clang-format on + +unsigned char numCutShapesTet[] = { +0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 +}; + +unsigned char startCutShapesTet[] = { +0, 0, 5, 10, 16, 21, 27, 33, 38, 43, 49, 55, 60, 66, 71, 76 +}; + +const size_t cutShapesTetSize = sizeof(cutShapesTet) / sizeof(unsigned char); + +} // namespace tables +} // namespace cutting +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/CutCasesTri.cpp b/src/axom/bump/clipping/CutCasesTri.cpp new file mode 100644 index 0000000000..afa0480d9c --- /dev/null +++ b/src/axom/bump/clipping/CutCasesTri.cpp @@ -0,0 +1,42 @@ +#include "CutCases.h" + +namespace axom { +namespace bump { +namespace cutting { +namespace tables { + +int numCutCasesTri = 8; + +// clang-format off +unsigned char cutShapesTri[] = { + // Case 0 + // Case 1 + ST_LIN, COLOR0, EA, EC, + // Case 2 + ST_LIN, COLOR0, EA, EB, + // Case 3 + ST_LIN, COLOR0, EC, EB, + // Case 4 + ST_LIN, COLOR0, EC, EB, + // Case 5 + ST_LIN, COLOR0, EA, EB, + // Case 6 + ST_LIN, COLOR0, EA, EC + // Case 7 +}; +// clang-format on + +unsigned char numCutShapesTri[] = { +0, 1, 1, 1, 1, 1, 1, 0 +}; + +unsigned char startCutShapesTri[] = { +0, 0, 4, 8, 12, 16, 20, 24 +}; + +const size_t cutShapesTriSize = sizeof(cutShapesTri) / sizeof(unsigned char); + +} // namespace tables +} // namespace cutting +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/CutCasesWedge.cpp b/src/axom/bump/clipping/CutCasesWedge.cpp new file mode 100644 index 0000000000..fd9e98f733 --- /dev/null +++ b/src/axom/bump/clipping/CutCasesWedge.cpp @@ -0,0 +1,166 @@ +#include "CutCases.h" + +namespace axom { +namespace bump { +namespace cutting { +namespace tables { + +int numCutCasesWedge = 64; + +// clang-format off +unsigned char cutShapesWedge[] = { + // Case 0 + // Case 1 + ST_TRI, COLOR0, EA, EG, EC, + // Case 2 + ST_TRI, COLOR0, EA, EB, EH, + // Case 3 + ST_QUAD, COLOR0, EB, EH, EG, EC, + // Case 4 + ST_TRI, COLOR0, EB, EC, EI, + // Case 5 + ST_QUAD, COLOR0, EB, EA, EG, EI, + // Case 6 + ST_QUAD, COLOR0, EA, EC, EI, EH, + // Case 7 + ST_TRI, COLOR0, EH, EG, EI, + // Case 8 + ST_TRI, COLOR0, ED, EF, EG, + // Case 9 + ST_QUAD, COLOR0, EA, ED, EF, EC, + // Case 10 + ST_TRI, COLOR0, EA, EB, EH, + ST_TRI, COLOR0, EG, ED, EF, + // Case 11 + ST_POLY5, COLOR0, EF, EC, EB, EH, ED, + // Case 12 + ST_TRI, COLOR0, EC, EI, EB, + ST_TRI, COLOR0, EG, ED, EF, + // Case 13 + ST_POLY5, COLOR0, EF, EI, EB, EA, ED, + // Case 14 + ST_TRI, COLOR0, EG, ED, EF, + ST_QUAD, COLOR0, EI, EH, EA, EC, + // Case 15 + ST_QUAD, COLOR0, EH, ED, EF, EI, + // Case 16 + ST_TRI, COLOR0, EH, EE, ED, + // Case 17 + ST_TRI, COLOR0, EH, EE, ED, + ST_TRI, COLOR0, EA, EG, EC, + // Case 18 + ST_QUAD, COLOR0, ED, EA, EB, EE, + // Case 19 + ST_POLY5, COLOR0, EG, EC, EB, EE, ED, + // Case 20 + ST_TRI, COLOR0, EH, EE, ED, + ST_TRI, COLOR0, EC, EI, EB, + // Case 21 + ST_TRI, COLOR0, EH, EE, ED, + ST_QUAD, COLOR0, EB, EA, EG, EI, + // Case 22 + ST_POLY5, COLOR0, EA, EC, EI, EE, ED, + // Case 23 + ST_QUAD, COLOR0, ED, EG, EI, EE, + // Case 24 + ST_QUAD, COLOR0, EG, EH, EE, EF, + // Case 25 + ST_POLY5, COLOR0, EF, EC, EA, EH, EE, + // Case 26 + ST_POLY5, COLOR0, EB, EE, EF, EG, EA, + // Case 27 + ST_QUAD, COLOR0, EF, EC, EB, EE, + // Case 28 + ST_TRI, COLOR0, EC, EI, EB, + ST_QUAD, COLOR0, EF, EG, EH, EE, + // Case 29 + ST_POLY6, COLOR0, EA, EH, EE, EF, EI, EB, + // Case 30 + ST_POLY6, COLOR0, EA, EC, EI, EE, EF, EG, + // Case 31 + ST_TRI, COLOR0, EI, EE, EF, + // Case 32 + ST_TRI, COLOR0, EE, EI, EF, + // Case 33 + ST_TRI, COLOR0, EE, EI, EF, + ST_TRI, COLOR0, EA, EG, EC, + // Case 34 + ST_TRI, COLOR0, EE, EI, EF, + ST_TRI, COLOR0, EA, EB, EH, + // Case 35 + ST_TRI, COLOR0, EE, EI, EF, + ST_QUAD, COLOR0, EB, EH, EG, EC, + // Case 36 + ST_QUAD, COLOR0, EF, EE, EB, EC, + // Case 37 + ST_POLY5, COLOR0, EB, EA, EG, EF, EE, + // Case 38 + ST_POLY5, COLOR0, EA, EC, EF, EE, EH, + // Case 39 + ST_QUAD, COLOR0, EE, EH, EG, EF, + // Case 40 + ST_QUAD, COLOR0, EI, EG, ED, EE, + // Case 41 + ST_POLY5, COLOR0, EI, EC, EA, ED, EE, + // Case 42 + ST_TRI, COLOR0, EH, EA, EB, + ST_QUAD, COLOR0, EG, ED, EE, EI, + // Case 43 + ST_POLY6, COLOR0, EC, EB, EH, ED, EE, EI, + // Case 44 + ST_POLY5, COLOR0, ED, EE, EB, EC, EG, + // Case 45 + ST_QUAD, COLOR0, EB, EA, ED, EE, + // Case 46 + ST_POLY6, COLOR0, EE, EH, EA, EC, EG, ED, + // Case 47 + ST_TRI, COLOR0, EH, ED, EE, + // Case 48 + ST_QUAD, COLOR0, EH, EI, EF, ED, + // Case 49 + ST_TRI, COLOR0, EA, EG, EC, + ST_QUAD, COLOR0, EH, EI, EF, ED, + // Case 50 + ST_POLY5, COLOR0, EB, EI, EF, ED, EA, + // Case 51 + ST_POLY6, COLOR0, ED, EG, EC, EB, EI, EF, + // Case 52 + ST_POLY5, COLOR0, EB, EC, EF, ED, EH, + // Case 53 + ST_POLY6, COLOR0, EB, EA, EG, EF, ED, EH, + // Case 54 + ST_QUAD, COLOR0, EA, EC, EF, ED, + // Case 55 + ST_TRI, COLOR0, ED, EG, EF, + // Case 56 + ST_TRI, COLOR0, EH, EI, EG, + // Case 57 + ST_QUAD, COLOR0, EA, EH, EI, EC, + // Case 58 + ST_QUAD, COLOR0, EG, EA, EB, EI, + // Case 59 + ST_TRI, COLOR0, EC, EB, EI, + // Case 60 + ST_QUAD, COLOR0, EG, EH, EB, EC, + // Case 61 + ST_TRI, COLOR0, EA, EH, EB, + // Case 62 + ST_TRI, COLOR0, EA, EC, EG, + // Case 63 +}; +// clang-format on + +unsigned char numCutShapesWedge[] = { +0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 +}; + +unsigned char startCutShapesWedge[] = { +0, 0, 5, 10, 16, 21, 27, 33, 38, 43, 49, 59, 66, 76, 83, 94, 100, 105, 115, 121, 128, 138, 149, 156, 162, 168, 175, 182, 188, 199, 207, 215, 220, 225, 235, 245, 256, 262, 269, 276, 282, 288, 295, 306, 314, 321, 327, 335, 340, 346, 357, 364, 372, 379, 387, 393, 398, 403, 409, 415, 420, 426, 431, 436 +}; + +const size_t cutShapesWedgeSize = sizeof(cutShapesWedge) / sizeof(unsigned char); + +} // namespace tables +} // namespace cutting +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/convert_triangles.py b/src/axom/bump/clipping/convert_triangles.py new file mode 100644 index 0000000000..d1ce7a6374 --- /dev/null +++ b/src/axom/bump/clipping/convert_triangles.py @@ -0,0 +1,174 @@ +from collections import defaultdict + +def extract_triangles(arr): + """Extract valid triangles from the input array.""" + triangles = [] + for i in range(0, len(arr), 3): + tri = arr[i:i+3] + if -1 not in tri and len(tri) == 3: + triangles.append(tuple(tri)) + return triangles + +#def edges(triangle): +# """Return the set of edges (as sorted tuples) from a triangle.""" +# a, b, c = triangle +# return {(min(a, b), max(a, b)), (min(b, c), max(b, c)), (min(c, a), max(c, a))} +def edges(polygon): + return sorted(polygon) + + +def merge_polygons(poly1, poly2): + """Merge two polygons that share an edge into a larger polygon.""" + n1, n2 = len(poly1), len(poly2) + # Find the shared edge + for i in range(n1): + a1, a2 = poly1[i], poly1[(i+1)%n1] + for j in range(n2): + b1, b2 = poly2[j], poly2[(j+1)%n2] + if {a1, a2} == {b1, b2}: + # Merge poly2 into poly1 at the shared edge + # Remove the shared edge from both + # poly1: ... a1 a2 ... + # poly2: ... b1 b2 ... + # We want: ... a2 ... a1 ... (excluding the shared edge) + # Find the order to append poly2 + # poly1: a1 a2 ... (rest) + # poly2: b2 ... (rest) b1 + # Remove the shared edge from both + idx1 = i + idx2 = j + # Build new polygon + new_poly = [] + # Add poly1 from a2 (next after shared edge) to a1 (before shared edge) + k = (idx1 + 1) % n1 + while k != idx1: + new_poly.append(poly1[k]) + k = (k + 1) % n1 + # Add poly2 from b2 (next after shared edge) to b1 (before shared edge), in reverse + k = (idx2 + 1) % n2 + temp = [] + while k != idx2: + temp.append(poly2[k]) + k = (k + 1) % n2 + new_poly += temp + return tuple(new_poly) + return None + +def combine_triangles(arr): + triangles = extract_triangles(arr) + polygons = [tri for tri in triangles] + merged = True + while merged: + merged = False + n = len(polygons) + for i in range(n): + for j in range(i+1, n): + poly1, poly2 = polygons[i], polygons[j] + # If they share an edge + if set(edges(poly1)) & set(edges(poly2)): + new_poly = merge_polygons(poly1, poly2) + if new_poly: + # Replace poly1 and poly2 with new_poly + polygons = [p for k, p in enumerate(polygons) if k not in (i, j)] + [new_poly] + merged = True + break + if merged: + break + return tuple(polygons) + +def read_array(filename, name): + lines = open(filename, "rt").readlines() + reading = False + polys = [] + for line in lines: + if not reading: + if line.find(name) != -1: + reading = True + else: + if line.find(";") != -1: + reading = False + break + else: + s = line.find("{") + 1 + e = line.find("}") + numbers = eval("[" + line[s:e] + "]") + polys.append(numbers) + return polys + +def write_new_table(filename, name, polys): + edgeNames = ("EA", "EB", "EC", "ED", + "EE", "EF", "EG", "EH", + "EI", "EJ", "EK", "EL") + polyNames = ("", "", "", + "ST_TRI, ", + "ST_QUAD, ", + "ST_POLY5,", + "ST_POLY6,", + "ST_POLY7,", + "ST_POLY8,") + + f = open(filename, "wt") + f.write("#include \"CutCases.h\"\n\n") + + f.write("namespace axom {\n") + f.write("namespace bump {\n") + f.write("namespace cutting {\n") + f.write("namespace tables {\n\n") + f.write(f"int numCutCases{name} = {len(polys)};\n\n") + f.write("// clang-format off\n") + f.write(f"unsigned char cutShapes{name}[] = ") + f.write("{\n") + offset = 0 + offsets = [] + sizes = [] + i = 0 + for p in polys: + result = combine_triangles(p) + f.write(f" // Case {i}\n") + offsets.append(offset) + sizes.append(len(result)) + for shape in result: + shapeName = polyNames[len(shape)] + offset = offset + 2 + len(shape) + edges = [edgeNames[x] for x in shape] + shape_str = str(edges)[1:-1] + shape_str = shape_str.replace("'", "") + s = f" {shapeName} COLOR0, {shape_str},\n" + f.write(s) + i = i + 1 + f.write("};\n") + f.write("// clang-format on\n\n") + + f.write(f"unsigned char numCutShapes{name}[] = ") + f.write("{\n") + f.write(str(sizes)[1:-1]) + f.write("\n};\n\n") + + f.write(f"unsigned char startCutShapes{name}[] = ") + f.write("{\n") + f.write(str(offsets)[1:-1]) + f.write("\n};\n\n") + + f.write(f"const size_t cutShapes{name}Size = sizeof(cutShapes{name}) / sizeof(unsigned char);\n\n") + f.write("} // namespace tables\n") + f.write("} // namespace cutting\n") + f.write("} // namespace bump\n") + f.write("} // namespace axom\n") + f.close() + +# Example usage: +arr = [1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] +result = combine_triangles(arr) +print(result) + +polys = read_array("vtkTriangulationTable.C", "tetTriangulationTable") +write_new_table("CutCasesTet.cpp", "Tet", polys) + +polys = read_array("vtkTriangulationTable.C", "pyramidTriangulationTable") +write_new_table("CutCasesPyramid.cpp", "Pyramid", polys) + +polys = read_array("vtkTriangulationTable.C", "wedgeTriangulationTable") +write_new_table("CutCasesWedge.cpp", "Wedge", polys) + +polys = read_array("vtkTriangulationTable.C", "hexTriangulationTable") +write_new_table("CutCasesHex.cpp", "Hex", polys) From e1332d64280d6c5c747eaf88745672c3036c65c6 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Wed, 3 Dec 2025 18:42:26 -0800 Subject: [PATCH 06/28] Add polygonal support in ClipField. --- src/axom/bump/clipping/ClipField.hpp | 105 +++++++++++++++++++-------- 1 file changed, 75 insertions(+), 30 deletions(-) diff --git a/src/axom/bump/clipping/ClipField.hpp b/src/axom/bump/clipping/ClipField.hpp index 27929ca041..446895f0c4 100644 --- a/src/axom/bump/clipping/ClipField.hpp +++ b/src/axom/bump/clipping/ClipField.hpp @@ -56,7 +56,7 @@ namespace detail * \return The ShapeID value that matches the st_index, or 0 if there is no match. */ template -inline AXOM_HOST_DEVICE IntegerType ST_Index_to_ShapeID(IntegerType st_index) +AXOM_HOST_DEVICE inline constexpr IntegerType ST_Index_to_ShapeID(IntegerType st_index) { using namespace axom::bump::clipping::tables; IntegerType shapeID = 0; @@ -71,6 +71,12 @@ inline AXOM_HOST_DEVICE IntegerType ST_Index_to_ShapeID(IntegerType st_index) case ST_QUA: shapeID = views::Quad_ShapeID; break; + case ST_POLY5: + case ST_POLY6: + case ST_POLY7: + case ST_POLY8: + shapeID = views::Polygon_ShapeID; + break; case ST_TET: shapeID = views::Tet_ShapeID; break; @@ -90,10 +96,11 @@ inline AXOM_HOST_DEVICE IntegerType ST_Index_to_ShapeID(IntegerType st_index) /*! * \brief Returns a clip table index for the input shapeId. * \param shapeId A shapeID (e.g. Tet_ShapeID) + * \param numNodes The number of nodes in the shape. * \return The clip table index for the shape. */ AXOM_HOST_DEVICE -inline int getClipTableIndex(int shapeId) +inline constexpr int getClipTableIndex(int shapeId, axom::IndexType numNodes) { int index = 0; switch(shapeId) @@ -104,17 +111,28 @@ inline int getClipTableIndex(int shapeId) case views::Quad_ShapeID: index = 1; break; + case views::Polygon_ShapeID: + switch(numNodes) + { + case 3: index = 0; break; // triangle + case 4: index = 1; break; // quad + case 5: index = 2; break; // pentagon + case 6: index = 3; break; // hexagon + case 7: index = 4; break; // septagon + case 8: index = 5; break; // octagon + } + break; case views::Tet_ShapeID: - index = 2; + index = 6; break; case views::Pyramid_ShapeID: - index = 3; + index = 7; break; case views::Wedge_ShapeID: - index = 4; + index = 8; break; case views::Hex_ShapeID: - index = 5; + index = 9; break; } return index; @@ -142,19 +160,41 @@ inline bool shapeIsSelected(unsigned char color, int selection) } AXOM_HOST_DEVICE -constexpr IndexType maxPointForDimension(int dim) +constexpr IndexType maxPointForDimension(int dim, IndexType numPoints) { - return (dim == 3) - ? axom::bump::clipping::tables::P7 - : ((dim == 2) ? axom::bump::clipping::tables::P3 : axom::bump::clipping::tables::P1); + // 3D default + IndexType maxPoint = static_cast(axom::bump::clipping::tables::P7); + switch(dim) + { + case 2: + // We take the max since we might have a polygon. + maxPoint = axom::utilities::max(static_cast(axom::bump::clipping::tables::P0) + numPoints - 1, + static_cast(axom::bump::clipping::tables::P3)); + break; + case 1: + maxPoint = static_cast(axom::bump::clipping::tables::P1); + break; + } + return maxPoint; } AXOM_HOST_DEVICE -constexpr IndexType maxEdgeForDimension(int dim) +constexpr IndexType maxEdgeForDimension(int dim, IndexType numPoints) { - return (dim == 3) - ? axom::bump::clipping::tables::EL - : ((dim == 2) ? axom::bump::clipping::tables::ED : axom::bump::clipping::tables::EB); + // 3D default + IndexType maxEdge = static_cast(axom::bump::clipping::tables::EL); + switch(dim) + { + case 2: + // We take the max since we might have a polygon. + maxEdge = axom::utilities::max(static_cast(axom::bump::clipping::tables::EA) + numPoints - 1, + static_cast(axom::bump::clipping::tables::ED)); + break; + case 1: + maxEdge = static_cast(axom::bump::clipping::tables::EA); + break; + } + return maxEdge; } template @@ -824,7 +864,8 @@ class ClipField public: using BlendData = axom::bump::BlendData; using SliceData = axom::bump::SliceData; - using ClipTableViews = axom::StackArray; + static constexpr int TOTAL_ST_SHAPES = 10; + using ClipTableViews = axom::StackArray; using Intersector = IntersectPolicy; using BitSet = detail::BitSet; @@ -1193,15 +1234,19 @@ class ClipField AXOM_ANNOTATE_SCOPE("createClipTableViews"); if(dimension == -1 || dimension == 2) { - views[detail::getClipTableIndex(views::Tri_ShapeID)] = m_clipTables[ST_TRI].view(); - views[detail::getClipTableIndex(views::Quad_ShapeID)] = m_clipTables[ST_QUA].view(); + views[detail::getClipTableIndex(views::Tri_ShapeID, 3)] = m_clipTables[ST_TRI].view(); + views[detail::getClipTableIndex(views::Quad_ShapeID, 4)] = m_clipTables[ST_QUA].view(); + views[detail::getClipTableIndex(views::Polygon_ShapeID, 5)] = m_clipTables[ST_POLY5].view(); + views[detail::getClipTableIndex(views::Polygon_ShapeID, 6)] = m_clipTables[ST_POLY6].view(); + views[detail::getClipTableIndex(views::Polygon_ShapeID, 7)] = m_clipTables[ST_POLY7].view(); + views[detail::getClipTableIndex(views::Polygon_ShapeID, 8)] = m_clipTables[ST_POLY8].view(); } if(dimension == -1 || dimension == 3) { - views[detail::getClipTableIndex(views::Tet_ShapeID)] = m_clipTables[ST_TET].view(); - views[detail::getClipTableIndex(views::Pyramid_ShapeID)] = m_clipTables[ST_PYR].view(); - views[detail::getClipTableIndex(views::Wedge_ShapeID)] = m_clipTables[ST_WDG].view(); - views[detail::getClipTableIndex(views::Hex_ShapeID)] = m_clipTables[ST_HEX].view(); + views[detail::getClipTableIndex(views::Tet_ShapeID, 4)] = m_clipTables[ST_TET].view(); + views[detail::getClipTableIndex(views::Pyramid_ShapeID, 5)] = m_clipTables[ST_PYR].view(); + views[detail::getClipTableIndex(views::Wedge_ShapeID, 6)] = m_clipTables[ST_WDG].view(); + views[detail::getClipTableIndex(views::Hex_ShapeID, 8)] = m_clipTables[ST_HEX].view(); } } @@ -1253,7 +1298,7 @@ class ClipField zoneData.m_clipCasesView[szIndex] = clipcase; // Iterate over the shapes in this clip case to determine the number of blend groups. - const auto clipTableIndex = detail::getClipTableIndex(zone.id()); + const auto clipTableIndex = detail::getClipTableIndex(zone.id(), zone.numberOfNodes()); const auto &ctView = clipTableViews[clipTableIndex]; int thisBlendGroups = 0; // The number of blend groups produced in this case. @@ -1319,8 +1364,8 @@ class ClipField // Save the flags for the points that were used in this zone zoneData.m_pointsUsedView[szIndex] = ptused; - const auto PMAX = detail::maxPointForDimension(zone.dimension()); - const auto EMAX = detail::maxEdgeForDimension(zone.dimension()); + const auto PMAX = detail::maxPointForDimension(zone.dimension(), zone.numberOfNodes()); + const auto EMAX = detail::maxEdgeForDimension(zone.dimension(), zone.numberOfNodes()); #if defined(AXOM_REDUCE_BLEND_GROUPS) // NOTE: We are not going to emit blend groups for P0..P7 points. @@ -1524,7 +1569,7 @@ class ClipField const auto clipcase = zoneData.m_clipCasesView[szIndex]; // Iterate over the shapes in this clip case to determine the number of blend groups. - const auto clipTableIndex = detail::getClipTableIndex(zone.id()); + const auto clipTableIndex = detail::getClipTableIndex(zone.id(), zone.numberOfNodes()); const auto &ctView = clipTableViews[clipTableIndex]; // These are the points used in this zone's fragments. @@ -1581,7 +1626,7 @@ class ClipField #if !defined(AXOM_REDUCE_BLEND_GROUPS) // Add blend group for each original point that was used. // NOTE - this can add a lot of blend groups with 1 node. - const auto PMAX = detail::maxPointForDimension(zone.dimension()); + const auto PMAX = detail::maxPointForDimension(zone.dimension(), zone.numberOfNodes()); for(IndexType pid = P0; pid <= PMAX; pid++) { if(axom::utilities::bitIsSet(ptused, pid)) @@ -1593,7 +1638,7 @@ class ClipField } #endif // Add blend group for each edge point that was used. - const auto EMAX = detail::maxEdgeForDimension(zone.dimension()); + const auto EMAX = detail::maxEdgeForDimension(zone.dimension(), zone.numberOfNodes()); for(IndexType pid = EA; pid <= EMAX; pid++) { if(axom::utilities::bitIsSet(ptused, pid)) @@ -1770,8 +1815,8 @@ class ClipField } } - const BitSet PMAX = detail::maxPointForDimension(zone.dimension()); - const BitSet EMAX = detail::maxEdgeForDimension(zone.dimension()); + const BitSet PMAX = detail::maxPointForDimension(zone.dimension(), zone.numberOfNodes()); + const BitSet EMAX = detail::maxEdgeForDimension(zone.dimension(), zone.numberOfNodes()); #if defined(AXOM_REDUCE_BLEND_GROUPS) // For single nodes, we did not make a blend group. We look up the new // node id from nodeData.m_oldNodeToNewNodeView. @@ -1825,7 +1870,7 @@ class ClipField #endif // Iterate over the selected fragments and emit connectivity for them. const auto clipcase = zoneData.m_clipCasesView[szIndex]; - const auto clipTableIndex = detail::getClipTableIndex(zone.id()); + const auto clipTableIndex = detail::getClipTableIndex(zone.id(), zone.numberOfNodes()); const auto ctView = clipTableViews[clipTableIndex]; auto it = ctView.begin(clipcase); const auto end = ctView.end(clipcase); From e523e40d6cb1e760dd77ce7cd457272d91411770 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Wed, 3 Dec 2025 18:42:59 -0800 Subject: [PATCH 07/28] printing improvement in ClipTableManager. --- src/axom/bump/clipping/ClipTableManager.hpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/axom/bump/clipping/ClipTableManager.hpp b/src/axom/bump/clipping/ClipTableManager.hpp index bb81f109a9..70a17c7896 100644 --- a/src/axom/bump/clipping/ClipTableManager.hpp +++ b/src/axom/bump/clipping/ClipTableManager.hpp @@ -124,6 +124,9 @@ class TableView case ST_PNT: os << "ST_PNT"; break; + case ST_LIN: + os << "ST_LIN"; + break; case ST_TRI: os << "ST_TRI"; break; @@ -243,6 +246,9 @@ class TableView case ST_PNT: retval = 4 + caseData[3]; break; + case ST_LIN: + retval = 2 + 2; + break; case ST_TRI: retval = 2 + 3; break; From 5d2c397d5e809174488a1749a046eec1bb94708b Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Wed, 3 Dec 2025 18:43:53 -0800 Subject: [PATCH 08/28] Added specialization for polygonal unstructured. --- .../views/dispatch_unstructured_topology.hpp | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/axom/bump/views/dispatch_unstructured_topology.hpp b/src/axom/bump/views/dispatch_unstructured_topology.hpp index 5e343426a9..fb68baf71a 100644 --- a/src/axom/bump/views/dispatch_unstructured_topology.hpp +++ b/src/axom/bump/views/dispatch_unstructured_topology.hpp @@ -340,6 +340,25 @@ struct dispatch_shape, FuncType> } }; +template +struct dispatch_shape, FuncType> +{ + static void execute(bool &eligible, + const std::string &shape, + const axom::ArrayView &connView, + const axom::ArrayView &sizesView, + const axom::ArrayView &offsetsView, + FuncType &&func) + { + if(eligible && shape == "polygonal") + { + UnstructuredTopologySingleShapeView> ugView(connView, sizesView, offsetsView); + func(shape, ugView); + eligible = false; + } + } +}; + template struct dispatch_shape, FuncType> { @@ -521,6 +540,15 @@ void typed_dispatch_unstructured_topology(const conduit::Node &topo, FuncType && sizesView, offsetsView, std::forward(func)); + internal::dispatch_shape, + FuncType>::execute(eligible, + shape, + connView, + sizesView, + offsetsView, + std::forward(func)); internal::dispatch_shape, From f7ad914dd96a556f467d54d4d0fd1a833a2faad3 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Wed, 3 Dec 2025 18:44:31 -0800 Subject: [PATCH 09/28] Added polygonal equiZ test. --- src/axom/mir/tests/mir_equiz2d.cpp | 68 +++++++++++++++++++++++------- 1 file changed, 53 insertions(+), 15 deletions(-) diff --git a/src/axom/mir/tests/mir_equiz2d.cpp b/src/axom/mir/tests/mir_equiz2d.cpp index 66518b4f3c..8cebda7fb3 100644 --- a/src/axom/mir/tests/mir_equiz2d.cpp +++ b/src/axom/mir/tests/mir_equiz2d.cpp @@ -118,13 +118,21 @@ void braid2d_mat_test(const std::string &type, } //------------------------------------------------------------------------------ /*! - * \brief Tests the TopologyMapper on polygonal geometry. + * \brief Tests the MIR+TopologyMapper on polygonal geometry. + * + * 1. Make polygonal mesh 1 with clean matset + * 2. Make mesh 2, a rotated version of polygonal mesh 1 + * 3. Map material from mesh 1 onto mesh 2 + * 4. Run MIR on mesh 2 */ template class test_Polygonal_MIR { public: - static void test() + static constexpr conduit::index_t NLEVELS = 4; + static constexpr int MAX_MATERIALS = NLEVELS + 1; + + static void test(const std::string &name) { // Make the 2D input mesh. conduit::Node n_mesh; @@ -146,20 +154,19 @@ class test_Polygonal_MIR TestApp.saveVisualization("test_poly_mir", hostResult); // Handle baseline comparison. - EXPECT_TRUE(TestApp.test("test_poly_mir", hostResult)); + EXPECT_TRUE(TestApp.test(name, hostResult)); } static void initialize(conduit::Node &n_mesh) { // Make polygonal geometry - const conduit::index_t nlevels = 4; const conduit::index_t nz = 1; - conduit::blueprint::mesh::examples::polytess(nlevels, nz, n_mesh); + conduit::blueprint::mesh::examples::polytess(NLEVELS, nz, n_mesh); // Make a matset from the level field. conduit::Node &n_matset = n_mesh["matsets/mat"]; n_matset["topology"] = "topo"; - for(int mat = 1; mat <= nlevels; mat++) + for(int mat = 1; mat <= NLEVELS; mat++) { n_matset[axom::fmt::format("material_map/mat{}", mat)] = mat; } @@ -228,7 +235,7 @@ class test_Polygonal_MIR using SrcTopologyView = decltype(srcTopo); const conduit::Node &n_srcMatset = n_dev["matsets/mat"]; - auto srcMatset = views::make_unibuffer_matset::view(n_srcMatset); + auto srcMatset = views::make_unibuffer_matset::view(n_srcMatset); using SrcMatsetView = decltype(srcMatset); // Wrap target2 mesh in views. @@ -273,18 +280,26 @@ class test_Polygonal_MIR using TopologyView = decltype(topologyView); const conduit::Node &n_targetMatset = n_dev["matsets/target2_matset"]; - auto matsetView = views::make_unibuffer_matset::view(n_targetMatset); + auto matsetView = views::make_unibuffer_matset::view(n_targetMatset); using MatsetView = decltype(matsetView); - // Do MIR + // Do MIR (into new node) + conduit::Node n_mir; using MIR = axom::mir::EquiZAlgorithm; MIR m(topologyView, coordsetView, matsetView); conduit::Node options; options["matset"] = "target2_matset"; options["matsetName"] = "mir_matset"; - options["coordsetName"] = "mir_coords"; - options["topologyName"] = "mir"; - m.execute(n_dev, options, n_dev); + m.execute(n_dev, options, n_mir); + + // Move the MIR output to the n_dev node. + n_dev["coordsets/mir_coords"].move(n_mir["coordsets/target2_coords"]); + n_dev["topologies/mir"].move(n_mir["topologies/target2"]); + n_dev["topologies/mir/coordset"] = "mir_coords"; + n_dev["matsets/mir_matset"].move(n_mir["matsets/mir_matset"]); + n_dev["matsets/mir_matset/topology"] = "mir"; + n_dev["fields/originalElements"].move(n_mir["fields/originalElements"]); + n_dev["fields/originalElements/topology"] = "mir"; } static int countBadMaterialZones(const conduit::Node &matset, double eps = 1.e-4) @@ -319,7 +334,6 @@ class test_Polygonal_MIR } }; -#if 0 //------------------------------------------------------------------------------ TEST(mir_equiz, equiz_uniform_unibuffer_seq) { @@ -354,13 +368,37 @@ TEST(mir_equiz, equiz_uniform_unibuffer_hip) braid2d_mat_test("uniform", "unibuffer", "equiz_uniform_unibuffer", 2); } #endif -#endif + //------------------------------------------------------------------------------ TEST(mir_equiz, equiz_polygonal_unibuffer_seq) { AXOM_ANNOTATE_SCOPE("equiz_polygonal_unibuffer_seq"); - test_Polygonal_MIR::test(); + test_Polygonal_MIR::test("equiz_polygonal_unibuffer"); +} + +#if defined(AXOM_USE_OPENMP) +TEST(mir_equiz, equiz_polygonal_unibuffer_omp) +{ + AXOM_ANNOTATE_SCOPE("equiz_polygonal_unibuffer_omp"); + test_Polygonal_MIR::test("equiz_polygonal_unibuffer"); +} +#endif + +#if defined(AXOM_USE_CUDA) +TEST(mir_equiz, equiz_polygonal_unibuffer_cuda) +{ + AXOM_ANNOTATE_SCOPE("equiz_polygonal_unibuffer_cuda"); + test_Polygonal_MIR::test("equiz_polygonal_unibuffer"); } +#endif + +#if defined(AXOM_USE_HIP) +TEST(mir_equiz, equiz_polygonal_unibuffer_hip) +{ + AXOM_ANNOTATE_SCOPE("equiz_polygonal_unibuffer_hip"); + test_Polygonal_MIR::test("equiz_polygonal_unibuffer"); +} +#endif //------------------------------------------------------------------------------ int main(int argc, char *argv[]) From 9e80096d536b9b5e254d1eb7dfb6bc49c56bb784 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Thu, 4 Dec 2025 11:30:38 -0800 Subject: [PATCH 10/28] Updated RELEASE-NOTES.md --- RELEASE-NOTES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 12f51b0862..c41e85e891 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -48,6 +48,7 @@ The Axom project release numbers follow [Semantic Versioning](http://semver.org/ - Sina fortran `sina_write_document` now accepts a third argument that preserves records in memory so they can be written to another file (otherwise they're released from memory as soon as they're written) - Primal: In Bezier and NURBS classes, accessors for arrays of control points, weights and knots are now returned by (const) reference instead of returning a copy by value. +- The `axom::bump::clipping::ClipField` class was enhanced so it can clip up to 8-sided polygons. ### Fixed - Sina's Fortran tests are now running (instead of silently failing) From 74984e6ffe876a0340f50be2c4f3dfb064257b47 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Thu, 4 Dec 2025 16:50:56 -0800 Subject: [PATCH 11/28] Improved type traits and polygonal support. --- src/axom/bump/views/Shapes.hpp | 102 ++++++++++++------ .../UnstructuredTopologyPolyhedralView.hpp | 7 +- src/axom/bump/views/view_traits.hpp | 7 ++ 3 files changed, 79 insertions(+), 37 deletions(-) diff --git a/src/axom/bump/views/Shapes.hpp b/src/axom/bump/views/Shapes.hpp index fc4c6010e5..f447b0ed96 100644 --- a/src/axom/bump/views/Shapes.hpp +++ b/src/axom/bump/views/Shapes.hpp @@ -40,6 +40,9 @@ enum Invalid_ShapeID = 20 }; +/// prototype +AXOM_HOST_DEVICE constexpr IndexType shapeDimension(int shapeId); + /*! \brief Point type traits. @@ -520,6 +523,21 @@ struct PolygonTraits AXOM_HOST_DEVICE constexpr static const char *name() { return "polygonal"; } }; +/*! + * \brief Polyhedron shape traits. + * + * \note This struct contains a subset of the interface used in some other shape + * traits. + */ +struct PolyhedronTraits +{ + AXOM_HOST_DEVICE constexpr static int id() { return Polyhedron_ShapeID; } + AXOM_HOST_DEVICE constexpr static bool is_polyhedral() { return true; } + AXOM_HOST_DEVICE constexpr static bool is_variable_size() { return true; } + AXOM_HOST_DEVICE constexpr static IndexType dimension() { return 3; } + AXOM_HOST_DEVICE constexpr static const char *name() { return "polyhedral"; } +}; + /*! * \brief This struct represents a polygon zone. */ @@ -826,38 +844,7 @@ struct VariableShape AXOM_HOST_DEVICE IndexType dimension() const { - IndexType dim = 2; - switch(m_shapeId) - { - case Point_ShapeID: - dim = PointTraits::dimension(); - break; - case Line_ShapeID: - dim = LineTraits::dimension(); - break; - case Tri_ShapeID: - dim = TriTraits::dimension(); - break; - case Quad_ShapeID: - dim = QuadTraits::dimension(); - break; - case Polygon_ShapeID: - dim = PolygonTraits::dimension(); - break; - case Tet_ShapeID: - dim = TetTraits::dimension(); - break; - case Pyramid_ShapeID: - dim = PyramidTraits::dimension(); - break; - case Wedge_ShapeID: - dim = WedgeTraits::dimension(); - break; - case Hex_ShapeID: - dim = HexTraits::dimension(); - break; - } - return dim; + return shapeDimension(m_shapeId); } AXOM_HOST_DEVICE IndexType numberOfNodes() const { return m_ids.size(); } @@ -1146,6 +1133,57 @@ inline int shapeNameToID(const std::string &name) return id; } +/*! + * \brief Return the dimension for the specified shape id. + * + * \param shapeId The shape id. + * + * \return The dimension for the shape id. + * + * \note We can't tell the dimension for mixed shapes from the id alone. Return -1. + */ +AXOM_HOST_DEVICE constexpr IndexType shapeDimension(int shapeId) +{ + IndexType dim = 2; + switch(shapeId) + { + case Point_ShapeID: + dim = PointTraits::dimension(); + break; + case Line_ShapeID: + dim = LineTraits::dimension(); + break; + case Tri_ShapeID: + dim = TriTraits::dimension(); + break; + case Quad_ShapeID: + dim = QuadTraits::dimension(); + break; + case Polygon_ShapeID: + dim = PolygonTraits::dimension(); + break; + case Tet_ShapeID: + dim = TetTraits::dimension(); + break; + case Pyramid_ShapeID: + dim = PyramidTraits::dimension(); + break; + case Wedge_ShapeID: + dim = WedgeTraits::dimension(); + break; + case Hex_ShapeID: + dim = HexTraits::dimension(); + break; + case Polyhedron_ShapeID: + dim = 3; + break; + case Mixed_ShapeID: + dim = -1; + break; + } + return dim; +} + } // end namespace views } // end namespace bump } // end namespace axom diff --git a/src/axom/bump/views/UnstructuredTopologyPolyhedralView.hpp b/src/axom/bump/views/UnstructuredTopologyPolyhedralView.hpp index 5aa6b72640..38ce85281e 100644 --- a/src/axom/bump/views/UnstructuredTopologyPolyhedralView.hpp +++ b/src/axom/bump/views/UnstructuredTopologyPolyhedralView.hpp @@ -17,6 +17,7 @@ namespace bump { namespace views { + /*! * \brief This class implements a view for Blueprint polyhedral topologies. */ @@ -85,14 +86,10 @@ class UnstructuredTopologyPolyhedralView /*! * \brief This struct provides data about Zone i's shape. */ - struct PolyhedronShape + struct PolyhedronShape : public PolyhedronTraits { constexpr static IndexType MaximumNumberOfIds = 20 * 3; - AXOM_HOST_DEVICE constexpr static bool is_polyhedral() { return true; } - AXOM_HOST_DEVICE constexpr static int id() { return Polyhedron_ShapeID; } - AXOM_HOST_DEVICE constexpr static const char *name() { return "polyhedral"; } - /// Constructor. AXOM_HOST_DEVICE PolyhedronShape(const PolyhedronData &obj, axom::IndexType zi) : m_data(obj) diff --git a/src/axom/bump/views/view_traits.hpp b/src/axom/bump/views/view_traits.hpp index 61f0937372..db51567d47 100644 --- a/src/axom/bump/views/view_traits.hpp +++ b/src/axom/bump/views/view_traits.hpp @@ -24,9 +24,16 @@ static constexpr int shapes_for_dimension(int dimension) int shapes = 0; switch(dimension) { + case 0: + axom::utilities::setBitOn(shapes, Point_ShapeID); + break; + case 1: + axom::utilities::setBitOn(shapes, Line_ShapeID); + break; case 2: axom::utilities::setBitOn(shapes, Tri_ShapeID); axom::utilities::setBitOn(shapes, Quad_ShapeID); + axom::utilities::setBitOn(shapes, Polygon_ShapeID); axom::utilities::setBitOn(shapes, Mixed_ShapeID); break; case 3: From b46f6daf77d0fa7aaa9e85998a82401dfb8f4981 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Thu, 4 Dec 2025 16:51:28 -0800 Subject: [PATCH 12/28] Change ClipField to prefer polygonal over mixed for 2D shapes. --- src/axom/bump/clipping/ClipField.hpp | 41 ++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/src/axom/bump/clipping/ClipField.hpp b/src/axom/bump/clipping/ClipField.hpp index 446895f0c4..f771c4a96c 100644 --- a/src/axom/bump/clipping/ClipField.hpp +++ b/src/axom/bump/clipping/ClipField.hpp @@ -1992,11 +1992,28 @@ class ClipField SLIC_ASSERT_MSG(shapeMap.empty() == false, "The shape map is empty!"); if(axom::utilities::popcount(static_cast(shapesUsed)) > 1) { - n_newTopo["elements/shape"] = "mixed"; - conduit::Node &n_shape_map = n_newTopo["elements/shape_map"]; + // Determine the dimensions for the shapes that were used. + std::set usedDimensions; for(auto it = shapeMap.cbegin(); it != shapeMap.cend(); it++) { - n_shape_map[it->first] = it->second; + usedDimensions.insert(views::shapeDimension(it->second)); + } + SLIC_ASSERT(usedDimensions.size() > 0); + const auto it = usedDimensions.begin(); + if(usedDimensions.size() == 1 && *it == 2) + { + // All were 2D. Promote to polygonal. + n_newTopo["elements/shape"] = views::PolygonTraits::name(); + n_newTopo["elements"].remove("shapes"); + } + else + { + n_newTopo["elements/shape"] = "mixed"; + conduit::Node &n_shape_map = n_newTopo["elements/shape_map"]; + for(auto it = shapeMap.cbegin(); it != shapeMap.cend(); it++) + { + n_shape_map[it->first] = it->second; + } } } else @@ -2225,26 +2242,26 @@ class ClipField { std::map sm; - if(axom::utilities::bitIsSet(shapes, views::Line_ShapeID)) sm["line"] = views::Line_ShapeID; + if(axom::utilities::bitIsSet(shapes, views::Line_ShapeID)) sm[views::LineTraits::name()] = views::Line_ShapeID; - if(axom::utilities::bitIsSet(shapes, views::Tri_ShapeID)) sm["tri"] = views::Tri_ShapeID; + if(axom::utilities::bitIsSet(shapes, views::Tri_ShapeID)) sm[views::TriTraits::name()] = views::Tri_ShapeID; - if(axom::utilities::bitIsSet(shapes, views::Quad_ShapeID)) sm["quad"] = views::Quad_ShapeID; + if(axom::utilities::bitIsSet(shapes, views::Quad_ShapeID)) sm[views::QuadTraits::name()] = views::Quad_ShapeID; if(axom::utilities::bitIsSet(shapes, views::Polygon_ShapeID)) - sm["polygon"] = views::Polygon_ShapeID; + sm[views::PolygonTraits::name()] = views::Polygon_ShapeID; - if(axom::utilities::bitIsSet(shapes, views::Tet_ShapeID)) sm["tet"] = views::Tet_ShapeID; + if(axom::utilities::bitIsSet(shapes, views::Tet_ShapeID)) sm[views::TetTraits::name()] = views::Tet_ShapeID; if(axom::utilities::bitIsSet(shapes, views::Pyramid_ShapeID)) - sm["pyramid"] = views::Pyramid_ShapeID; + sm[views::PyramidTraits::name()] = views::Pyramid_ShapeID; - if(axom::utilities::bitIsSet(shapes, views::Wedge_ShapeID)) sm["wedge"] = views::Wedge_ShapeID; + if(axom::utilities::bitIsSet(shapes, views::Wedge_ShapeID)) sm[views::WedgeTraits::name()] = views::Wedge_ShapeID; - if(axom::utilities::bitIsSet(shapes, views::Hex_ShapeID)) sm["hex"] = views::Hex_ShapeID; + if(axom::utilities::bitIsSet(shapes, views::Hex_ShapeID)) sm[views::HexTraits::name()] = views::Hex_ShapeID; if(axom::utilities::bitIsSet(shapes, views::Polyhedron_ShapeID)) - sm["polyhedron"] = views::Polyhedron_ShapeID; + sm[views::PolyhedronTraits::name()] = views::Polyhedron_ShapeID; return sm; } From 55d7e7bea269b8d522cce03f18012875b7084776 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Thu, 4 Dec 2025 16:53:02 -0800 Subject: [PATCH 13/28] Initial draft of polygonal clip cases. --- src/axom/bump/CMakeLists.txt | 10 +- src/axom/bump/clipping/convert_clip_cases.py | 281 ++++ .../bump/clipping/polygonalClipCasesPoly5.cpp | 141 ++ .../bump/clipping/polygonalClipCasesPoly6.cpp | 291 ++++ .../bump/clipping/polygonalClipCasesPoly7.cpp | 612 ++++++++ .../bump/clipping/polygonalClipCasesPoly8.cpp | 1310 +++++++++++++++++ .../bump/clipping/polygonalClipCasesQua.cpp | 80 + 7 files changed, 2720 insertions(+), 5 deletions(-) create mode 100644 src/axom/bump/clipping/convert_clip_cases.py create mode 100644 src/axom/bump/clipping/polygonalClipCasesPoly5.cpp create mode 100644 src/axom/bump/clipping/polygonalClipCasesPoly6.cpp create mode 100644 src/axom/bump/clipping/polygonalClipCasesPoly7.cpp create mode 100644 src/axom/bump/clipping/polygonalClipCasesPoly8.cpp create mode 100644 src/axom/bump/clipping/polygonalClipCasesQua.cpp diff --git a/src/axom/bump/CMakeLists.txt b/src/axom/bump/CMakeLists.txt index 920a9d4219..0b595884a7 100644 --- a/src/axom/bump/CMakeLists.txt +++ b/src/axom/bump/CMakeLists.txt @@ -85,12 +85,12 @@ set(bump_headers set(bump_sources clipping/ClipCasesHex.cpp - clipping/ClipCasesPoly5.cpp - clipping/ClipCasesPoly6.cpp - clipping/ClipCasesPoly7.cpp - clipping/ClipCasesPoly8.cpp + clipping/polygonalClipCasesPoly5.cpp + clipping/polygonalClipCasesPoly6.cpp + clipping/polygonalClipCasesPoly7.cpp + clipping/polygonalClipCasesPoly8.cpp clipping/ClipCasesPyr.cpp - clipping/ClipCasesQua.cpp + clipping/polygonalClipCasesQua.cpp clipping/ClipCasesTet.cpp clipping/ClipCasesTri.cpp clipping/ClipCasesWdg.cpp diff --git a/src/axom/bump/clipping/convert_clip_cases.py b/src/axom/bump/clipping/convert_clip_cases.py new file mode 100644 index 0000000000..8c0edf0893 --- /dev/null +++ b/src/axom/bump/clipping/convert_clip_cases.py @@ -0,0 +1,281 @@ +from collections import defaultdict + +def read_array_cc(filename, name, convert): + lines = open(filename, "rt").readlines() + reading = False + arr = [] + for line in lines: + if not reading: + if line.find(name) != -1: + reading = True + else: + if line.find(";") != -1: + reading = False + break + elif line.find("//") == 1: + # Skip the line. + continue + else: + s = 0 + e = line.find("//") + if e == -1: + e = len(line) - 1 + if convert: + numbers = eval("[" + line[s:e] + "]") + arr = arr + list(numbers) + else: + tokens1 = [x.replace(' ', '') for x in line[s:e].split(",")] + tokens = [x for x in tokens1 if x != ''] + arr = arr + list(tokens) + return arr + +def find_shared_edge(poly1, poly2): + edges1 = set((poly1[i], poly1[(i+1)%len(poly1)]) for i in range(len(poly1))) + edges2 = set((poly2[i], poly2[(i+1)%len(poly2)]) for i in range(len(poly2))) + for e1 in edges1: + if e1 in edges2 or (e1[1], e1[0]) in edges2: + return e1 + return None + +def merge_polygons(poly1, poly2, shared_edge): + # Find indexes of shared edge in both polygons + i1 = poly1.index(shared_edge[0]) + j1 = (i1 + 1) % len(poly1) + i2 = poly2.index(shared_edge[0]) + j2 = (i2 + 1) % len(poly2) + # Check direction + if poly1[j1] == shared_edge[1]: + poly1_order = poly1 + else: + poly1_order = poly1[::-1] + if poly2[j2] == shared_edge[1]: + poly2_order = poly2 + else: + poly2_order = poly2[::-1] + # Remove shared edge from poly2 + idx = poly2_order.index(shared_edge[0]) + merged = poly1_order + poly2_order[idx+2:] + poly2_order[:idx] + # Remove duplicate vertices at the join + result = [] + for v in merged: + if not result or v != result[-1]: + result.append(v) + return tuple(result) + +def combine_polygons(polygons, max_edges=8): + polygons = [tuple(p) for p in polygons] + changed = True + while changed: + changed = False + new_polygons = [] + skip = set() + for i in range(len(polygons)): + if i in skip: + continue + merged = False + for j in range(len(polygons)): + if i == j or j in skip: + continue + shared_edge = find_shared_edge(polygons[i], polygons[j]) + if shared_edge: + new_poly = merge_polygons(polygons[i], polygons[j], shared_edge) + if len(new_poly) <= max_edges: + new_polygons.append(new_poly) + skip.update([i, j]) + merged = True + changed = True + break + if not merged: + new_polygons.append(polygons[i]) + polygons = new_polygons + return polygons + +def example(): + # Example usage: + polygons = [ + ('A', 'B', 'C', 'D'), + ('C', 'D', 'E', 'F'), + ('E', 'F', 'G', 'H'), + ('X', 'Y', 'Z') + ] + + result = combine_polygons(polygons, max_edges=8) + print(result) + +def sorted_point_order(numPoints): + order = {} + for i in range(numPoints): + p = f"P{i}" + e = f"E{chr(ord('A')+i)}" + order[p] = 2*i + order[e] = 2*i + 1 + return order + +def sort_points(pts, maxPoints): + order = sorted_point_order(maxPoints) + sp = {} + for p in pts: + sp[order[p]] = p + sk = sorted(sp.keys()) + out = [] + for k in sk: + out.append(sp[k]) + return out + +def shapeSize(name): + advance = {"ST_TRI": 2 + 3, + "ST_QUA": 2 + 4, + "ST_POLY5": 2 + 5, + "ST_POLY6": 2 + 6, + "ST_POLY7": 2 + 7, + "ST_POLY8": 2 + 8} + return advance[name] + +def convert_clip_cases(filename, name, npts): + advance = {"ST_TRI": 2 + 3, + "ST_QUA": 2 + 4, + "ST_POLY5": 2 + 5, + "ST_POLY6": 2 + 6, + "ST_POLY7": 2 + 7, + "ST_POLY8": 2 + 8} + nptsToShapeName = {} + for k in advance: + nptsToShapeName[advance[k] - 2] = k + + sizes = read_array_cc(filename, f"numClipShapes{name}", True) + print(sizes) + + offsets = read_array_cc(filename, f"startClipShapes{name}", True) + print(offsets) + + shapes = read_array_cc(filename, f"clipShapes{name}", False) + print(shapes) + + numCases = len(sizes) + + outSizes = [0]*numCases + outOffsets = [0]*numCases + outShapes = [] + outOffset = 0 + + for ci in range(numCases): + offset = offsets[ci] + #print(f"// Case {ci}") + color0 = [] + color1 = [] + for si in range(sizes[ci]): + shapeTag = shapes[offset] + colorTag = shapes[offset + 1] + + shapeSize = advance[shapeTag] + shapeTokens = shapes[offset:offset+shapeSize] + if colorTag == "COLOR0": + color0.append(shapeTokens[2:]) + else: + color1.append(shapeTokens[2:]) + print(" ", shapeTokens) + offset = offset + shapeSize + + outOffsets[ci] = outOffset + if len(color0) > 0: + c0 = combine_polygons(color0, max_edges=8) + #print("COLOR0", c0) + for c in c0: + sc = sort_points(c, npts) + outShapes.append(nptsToShapeName[len(sc)]) + outShapes.append("COLOR0") + for p in sc: + outShapes.append(p) + outOffset = outOffset + 2 + len(sc) + outSizes[ci] = outSizes[ci] + len(c0) + + if len(color1) > 0: + c1 = combine_polygons(color1, max_edges=8) + #print("COLOR1", c1) + for c in c1: + sc = sort_points(c, npts) + outShapes.append(nptsToShapeName[len(sc)]) + outShapes.append("COLOR1") + for p in sc: + outShapes.append(p) + outOffset = outOffset + 2 + len(sc) + outSizes[ci] = outSizes[ci] + len(c1) + + return (outSizes, outOffsets, outShapes) + +def write_new_tables(filename, name, sizes, offsets, shapes): + + f = open(filename, "wt") + f.write("// Copyright (c) 2017-2025, Lawrence Livermore National Security, LLC and\n") + f.write("// other Axom Project Developers. See the top-level LICENSE file for details.\n") + f.write("//\n") + f.write("// SPDX-License-Identifier: (BSD-3-Clause)\n") + + f.write("#include \"ClipCases.h\"\n\n") + + f.write("namespace axom {\n") + f.write("namespace bump {\n") + f.write("namespace clipping {\n") + f.write("namespace tables {\n\n") + f.write(f"int numClipCases{name} = {len(sizes)};\n\n") + + f.write(f"int numClipShapes{name}[] = ") + f.write("{\n") + f.write(" " + str(sizes)[1:-1]) + f.write("\n};\n\n") + + f.write(f"int startClipShapes{name}[] = ") + f.write("{\n") + f.write(" " + str(offsets)[1:-1]) + f.write("\n};\n\n") + + f.write("// clang-format off\n") + f.write(f"unsigned char clipShapes{name}[] = ") + f.write("{\n") + + numCases = len(sizes) + for ci in range(numCases): + offset = offsets[ci] + f.write(f" // Case #{ci}\n") + for si in range(sizes[ci]): + shapeTag = shapes[offset] + ss = shapeSize(shapeTag) + toks = shapes[offset:offset+ss] + #print(toks) + toks_str = str(toks)[1:-1].replace("'", "") + if ci < numCases - 1: + toks_str = toks_str + "," + else: + if si < sizes[ci] - 1: + toks_str = toks_str + "," + f.write(" " + toks_str + "\n") + offset = offset + ss + f.write("};\n") + f.write("// clang-format on\n\n") + + f.write(f"const size_t clipShapes{name}Size = sizeof(clipShapes{name}) / sizeof(unsigned char);\n\n") + f.write("} // namespace tables\n") + f.write("} // namespace clipping\n") + f.write("} // namespace bump\n") + f.write("} // namespace axom\n") + f.close() + +def main(): + #example() + outSizes, outOffsets, outShapes = convert_clip_cases("ClipCasesQua.cpp", "Qua", 4) + write_new_tables("polygonalClipCasesQua.cpp", "Qua", outSizes, outOffsets, outShapes) + + outSizes, outOffsets, outShapes = convert_clip_cases("ClipCasesPoly5.cpp", "Poly5", 5) + write_new_tables("polygonalClipCasesPoly5.cpp", "Poly5", outSizes, outOffsets, outShapes) + + outSizes, outOffsets, outShapes = convert_clip_cases("ClipCasesPoly6.cpp", "Poly6", 6) + write_new_tables("polygonalClipCasesPoly6.cpp", "Poly6", outSizes, outOffsets, outShapes) + + outSizes, outOffsets, outShapes = convert_clip_cases("ClipCasesPoly7.cpp", "Poly7", 7) + write_new_tables("polygonalClipCasesPoly7.cpp", "Poly7", outSizes, outOffsets, outShapes) + + outSizes, outOffsets, outShapes = convert_clip_cases("ClipCasesPoly8.cpp", "Poly8", 8) + write_new_tables("polygonalClipCasesPoly8.cpp", "Poly8", outSizes, outOffsets, outShapes) + +main() + diff --git a/src/axom/bump/clipping/polygonalClipCasesPoly5.cpp b/src/axom/bump/clipping/polygonalClipCasesPoly5.cpp new file mode 100644 index 0000000000..c9b98854ff --- /dev/null +++ b/src/axom/bump/clipping/polygonalClipCasesPoly5.cpp @@ -0,0 +1,141 @@ +// Copyright (c) 2017-2025, Lawrence Livermore National Security, LLC and +// other Axom Project Developers. See the top-level LICENSE file for details. +// +// SPDX-License-Identifier: (BSD-3-Clause) +#include "ClipCases.h" + +namespace axom { +namespace bump { +namespace clipping { +namespace tables { + +int numClipCasesPoly5 = 32; + +int numClipShapesPoly5[] = { + 1, 2, 2, 2, 2, 3, 2, 2, 2, 3, 3, 4, 2, 4, 2, 2, 2, 2, 3, 2, 3, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 1 +}; + +int startClipShapesPoly5[] = { + 0, 7, 20, 33, 46, 59, 78, 91, 104, 117, 136, 155, 178, 191, 214, 227, 240, 253, 266, 285, 298, 317, 340, 363, 376, 389, 402, 425, 438, 451, 464, 477 +}; + +// clang-format off +unsigned char clipShapesPoly5[] = { + // Case #0 + ST_POLY5, COLOR0, P0, P1, P2, P3, P4, + // Case #1 + ST_POLY6, COLOR0, EA, P1, P2, P3, P4, EE, + ST_TRI, COLOR1, P0, EA, EE, + // Case #2 + ST_POLY6, COLOR0, P0, EA, EB, P2, P3, P4, + ST_TRI, COLOR1, EA, P1, EB, + // Case #3 + ST_POLY5, COLOR0, EB, P2, P3, P4, EE, + ST_QUA, COLOR1, P0, P1, EB, EE, + // Case #4 + ST_POLY6, COLOR0, P0, P1, EB, EC, P3, P4, + ST_TRI, COLOR1, EB, P2, EC, + // Case #5 + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, EE, + // Case #6 + ST_POLY5, COLOR0, P0, EA, EC, P3, P4, + ST_QUA, COLOR1, EA, P1, P2, EC, + // Case #7 + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY5, COLOR1, P0, P1, P2, EC, EE, + // Case #8 + ST_POLY6, COLOR0, P0, P1, P2, EC, ED, P4, + ST_TRI, COLOR1, EC, P3, ED, + // Case #9 + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P0, EA, EC, P3, ED, EE, + // Case #10 + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, P0, EA, ED, P4, + ST_POLY6, COLOR1, EA, P1, EB, EC, P3, ED, + // Case #11 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, ED, + ST_TRI, COLOR1, P0, ED, EE, + // Case #12 + ST_POLY5, COLOR0, P0, P1, EB, ED, P4, + ST_QUA, COLOR1, EB, P2, P3, ED, + // Case #13 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR1, P0, EA, P2, P3, ED, EE, + ST_TRI, COLOR1, EA, EB, P2, + // Case #14 + ST_QUA, COLOR0, P0, EA, ED, P4, + ST_POLY5, COLOR1, EA, P1, P2, P3, ED, + // Case #15 + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY6, COLOR1, P0, P1, P2, P3, ED, EE, + // Case #16 + ST_POLY6, COLOR0, P0, P1, P2, P3, ED, EE, + ST_TRI, COLOR1, ED, P4, EE, + // Case #17 + ST_POLY5, COLOR0, EA, P1, P2, P3, ED, + ST_QUA, COLOR1, P0, EA, ED, P4, + // Case #18 + ST_TRI, COLOR0, P0, EA, EE, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, EA, P1, EB, ED, P4, EE, + // Case #19 + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY5, COLOR1, P0, P1, EB, ED, P4, + // Case #20 + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, P0, P1, EB, EE, + ST_POLY6, COLOR1, EB, P2, EC, ED, P4, EE, + // Case #21 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, P4, + ST_TRI, COLOR1, EC, ED, P4, + // Case #22 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, P0, EA, EE, + ST_POLY6, COLOR1, P1, P2, EC, ED, P4, EE, + ST_TRI, COLOR1, EA, P1, EE, + // Case #23 + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY6, COLOR1, P0, P1, P2, EC, ED, P4, + // Case #24 + ST_POLY5, COLOR0, P0, P1, P2, EC, EE, + ST_QUA, COLOR1, EC, P3, P4, EE, + // Case #25 + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY5, COLOR1, P0, EA, EC, P3, P4, + // Case #26 + ST_TRI, COLOR0, P0, EA, EE, + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR1, EA, P1, EB, P3, P4, EE, + ST_TRI, COLOR1, EB, EC, P3, + // Case #27 + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P4, + // Case #28 + ST_QUA, COLOR0, P0, P1, EB, EE, + ST_POLY5, COLOR1, EB, P2, P3, P4, EE, + // Case #29 + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR1, P0, EA, EB, P2, P3, P4, + // Case #30 + ST_TRI, COLOR0, P0, EA, EE, + ST_POLY6, COLOR1, EA, P1, P2, P3, P4, EE, + // Case #31 + ST_POLY5, COLOR1, P0, P1, P2, P3, P4 +}; +// clang-format on + +const size_t clipShapesPoly5Size = sizeof(clipShapesPoly5) / sizeof(unsigned char); + +} // namespace tables +} // namespace clipping +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/polygonalClipCasesPoly6.cpp b/src/axom/bump/clipping/polygonalClipCasesPoly6.cpp new file mode 100644 index 0000000000..9254a91a63 --- /dev/null +++ b/src/axom/bump/clipping/polygonalClipCasesPoly6.cpp @@ -0,0 +1,291 @@ +// Copyright (c) 2017-2025, Lawrence Livermore National Security, LLC and +// other Axom Project Developers. See the top-level LICENSE file for details. +// +// SPDX-License-Identifier: (BSD-3-Clause) +#include "ClipCases.h" + +namespace axom { +namespace bump { +namespace clipping { +namespace tables { + +int numClipCasesPoly6 = 64; + +int numClipShapesPoly6[] = { + 1, 3, 3, 2, 3, 3, 2, 2, 3, 3, 3, 4, 2, 4, 2, 2, 3, 3, 3, 4, 3, 5, 4, 4, 2, 4, 4, 4, 2, 4, 2, 3, 3, 2, 3, 2, 3, 4, 4, 2, 3, 4, 5, 4, 4, 4, 4, 3, 2, 2, 4, 2, 4, 4, 4, 3, 2, 2, 4, 3, 2, 3, 3, 1 +}; + +int startClipShapesPoly6[] = { + 0, 8, 26, 44, 58, 76, 96, 110, 124, 142, 162, 182, 206, 220, 244, 258, 272, 290, 310, 330, 354, 374, 404, 428, 452, 466, 490, 514, 538, 552, 576, 590, 608, 626, 640, 660, 674, 694, 718, 742, 756, 776, 800, 830, 854, 878, 902, 926, 944, 958, 972, 996, 1010, 1034, 1058, 1082, 1100, 1114, 1128, 1152, 1170, 1184, 1202, 1220 +}; + +// clang-format off +unsigned char clipShapesPoly6[] = { + // Case #0 + ST_POLY6, COLOR0, P0, P1, P2, P3, P4, P5, + // Case #1 + ST_POLY6, COLOR0, EA, P1, P2, P3, P4, P5, + ST_TRI, COLOR0, EA, P5, EF, + ST_TRI, COLOR1, P0, EA, EF, + // Case #2 + ST_POLY6, COLOR0, P0, EB, P2, P3, P4, P5, + ST_TRI, COLOR0, P0, EA, EB, + ST_TRI, COLOR1, EA, P1, EB, + // Case #3 + ST_POLY6, COLOR0, EB, P2, P3, P4, P5, EF, + ST_QUA, COLOR1, P0, P1, EB, EF, + // Case #4 + ST_POLY6, COLOR0, P0, P1, EC, P3, P4, P5, + ST_TRI, COLOR0, P1, EB, EC, + ST_TRI, COLOR1, EB, P2, EC, + // Case #5 + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY5, COLOR0, EC, P3, P4, P5, EF, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, EF, + // Case #6 + ST_POLY6, COLOR0, P0, EA, EC, P3, P4, P5, + ST_QUA, COLOR1, EA, P1, P2, EC, + // Case #7 + ST_POLY5, COLOR0, EC, P3, P4, P5, EF, + ST_POLY5, COLOR1, P0, P1, P2, EC, EF, + // Case #8 + ST_POLY6, COLOR0, P0, P1, P2, ED, P4, P5, + ST_TRI, COLOR0, P2, EC, ED, + ST_TRI, COLOR1, EC, P3, ED, + // Case #9 + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, P0, EA, EC, P3, ED, EF, + // Case #10 + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY5, COLOR0, P0, EA, ED, P4, P5, + ST_POLY6, COLOR1, EA, P1, EB, EC, P3, ED, + // Case #11 + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, ED, + ST_TRI, COLOR1, P0, ED, EF, + // Case #12 + ST_POLY6, COLOR0, P0, P1, EB, ED, P4, P5, + ST_QUA, COLOR1, EB, P2, P3, ED, + // Case #13 + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, P0, EA, EB, P2, P3, EF, + ST_TRI, COLOR1, P3, ED, EF, + // Case #14 + ST_POLY5, COLOR0, P0, EA, ED, P4, P5, + ST_POLY5, COLOR1, EA, P1, P2, P3, ED, + // Case #15 + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, P0, P1, P2, P3, ED, EF, + // Case #16 + ST_POLY6, COLOR0, P0, P1, P2, P3, EE, P5, + ST_TRI, COLOR0, P3, ED, EE, + ST_TRI, COLOR1, ED, P4, EE, + // Case #17 + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY5, COLOR0, EA, P1, P2, P3, ED, + ST_POLY6, COLOR1, P0, EA, ED, P4, EE, EF, + // Case #18 + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR0, P0, EA, EE, P5, + ST_POLY6, COLOR1, EA, P1, EB, ED, P4, EE, + // Case #19 + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, P0, P1, ED, P4, EE, EF, + ST_TRI, COLOR1, P1, EB, ED, + // Case #20 + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY5, COLOR0, P0, P1, EB, EE, P5, + ST_POLY6, COLOR1, EB, P2, EC, ED, P4, EE, + // Case #21 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, ED, + ST_POLY5, COLOR1, P0, ED, P4, EE, EF, + // Case #22 + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, P0, EA, EE, P5, + ST_POLY6, COLOR1, P1, P2, EC, ED, P4, EE, + ST_TRI, COLOR1, EA, P1, EE, + // Case #23 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY6, COLOR1, P0, P1, P2, EC, ED, P4, + ST_QUA, COLOR1, P0, P4, EE, EF, + // Case #24 + ST_POLY6, COLOR0, P0, P1, P2, EC, EE, P5, + ST_QUA, COLOR1, EC, P3, P4, EE, + // Case #25 + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P0, EA, P3, P4, EE, EF, + ST_TRI, COLOR1, EA, EC, P3, + // Case #26 + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, P0, EA, EE, P5, + ST_POLY6, COLOR1, EA, P1, EB, EC, P3, P4, + ST_TRI, COLOR1, EA, P4, EE, + // Case #27 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P4, + ST_QUA, COLOR1, P0, P4, EE, EF, + // Case #28 + ST_POLY5, COLOR0, P0, P1, EB, EE, P5, + ST_POLY5, COLOR1, EB, P2, P3, P4, EE, + // Case #29 + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR1, P0, P2, P3, P4, EE, EF, + ST_QUA, COLOR1, P0, EA, EB, P2, + // Case #30 + ST_QUA, COLOR0, P0, EA, EE, P5, + ST_POLY6, COLOR1, EA, P1, P2, P3, P4, EE, + // Case #31 + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY6, COLOR1, P0, P1, P2, P3, P4, EE, + ST_TRI, COLOR1, P0, EE, EF, + // Case #32 + ST_POLY6, COLOR0, P0, P1, P2, P3, P4, EF, + ST_TRI, COLOR0, P4, EE, EF, + ST_TRI, COLOR1, EE, P5, EF, + // Case #33 + ST_POLY6, COLOR0, EA, P1, P2, P3, P4, EE, + ST_QUA, COLOR1, P0, EA, EE, P5, + // Case #34 + ST_TRI, COLOR0, P0, EA, EF, + ST_POLY5, COLOR0, EB, P2, P3, P4, EE, + ST_POLY6, COLOR1, EA, P1, EB, EE, P5, EF, + // Case #35 + ST_POLY5, COLOR0, EB, P2, P3, P4, EE, + ST_POLY5, COLOR1, P0, P1, EB, EE, P5, + // Case #36 + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR0, P0, P1, EB, EF, + ST_POLY6, COLOR1, EB, P2, EC, EE, P5, EF, + // Case #37 + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, P5, + ST_TRI, COLOR1, EC, EE, P5, + // Case #38 + ST_TRI, COLOR0, P0, EA, EF, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, EA, P1, P2, EE, P5, EF, + ST_TRI, COLOR1, P2, EC, EE, + // Case #39 + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, P0, P1, P2, EC, EE, P5, + // Case #40 + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY5, COLOR0, P0, P1, P2, EC, EF, + ST_POLY6, COLOR1, EC, P3, ED, EE, P5, EF, + // Case #41 + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P0, EC, P3, ED, EE, P5, + ST_TRI, COLOR1, P0, EA, EC, + // Case #42 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, P0, EA, EF, + ST_POLY6, COLOR1, P1, EB, EC, P3, ED, EE, + ST_POLY5, COLOR1, EA, P1, EE, P5, EF, + // Case #43 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P5, + ST_QUA, COLOR1, P3, ED, EE, P5, + // Case #44 + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, P0, P1, EB, EF, + ST_POLY6, COLOR1, P2, P3, ED, EE, P5, EF, + ST_TRI, COLOR1, EB, P2, EF, + // Case #45 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR1, P0, P2, P3, ED, EE, P5, + ST_QUA, COLOR1, P0, EA, EB, P2, + // Case #46 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, P0, EA, EF, + ST_POLY6, COLOR1, P1, P2, P3, ED, EE, P5, + ST_QUA, COLOR1, EA, P1, P5, EF, + // Case #47 + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY6, COLOR1, P0, P1, P2, P3, ED, P5, + ST_TRI, COLOR1, ED, EE, P5, + // Case #48 + ST_POLY6, COLOR0, P0, P1, P2, P3, ED, EF, + ST_QUA, COLOR1, ED, P4, P5, EF, + // Case #49 + ST_POLY5, COLOR0, EA, P1, P2, P3, ED, + ST_POLY5, COLOR1, P0, EA, ED, P4, P5, + // Case #50 + ST_TRI, COLOR0, P0, EA, EF, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, EA, P1, EB, P4, P5, EF, + ST_TRI, COLOR1, EB, ED, P4, + // Case #51 + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, P0, P1, EB, ED, P4, P5, + // Case #52 + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, P0, P1, EB, EF, + ST_POLY6, COLOR1, EB, P2, EC, ED, P4, P5, + ST_TRI, COLOR1, EB, P5, EF, + // Case #53 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY6, COLOR1, P0, EA, EB, P2, P4, P5, + ST_QUA, COLOR1, P2, EC, ED, P4, + // Case #54 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, P0, EA, EF, + ST_POLY6, COLOR1, P1, P2, EC, ED, P4, P5, + ST_QUA, COLOR1, EA, P1, P5, EF, + // Case #55 + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY6, COLOR1, P0, P1, P2, EC, P4, P5, + ST_TRI, COLOR1, EC, ED, P4, + // Case #56 + ST_POLY5, COLOR0, P0, P1, P2, EC, EF, + ST_POLY5, COLOR1, EC, P3, P4, P5, EF, + // Case #57 + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P0, EA, EC, P3, P4, P5, + // Case #58 + ST_TRI, COLOR0, P0, EA, EF, + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR1, EA, P1, P3, P4, P5, EF, + ST_QUA, COLOR1, P1, EB, EC, P3, + // Case #59 + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR1, P0, P1, EB, P3, P4, P5, + ST_TRI, COLOR1, EB, EC, P3, + // Case #60 + ST_QUA, COLOR0, P0, P1, EB, EF, + ST_POLY6, COLOR1, EB, P2, P3, P4, P5, EF, + // Case #61 + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR1, P0, EA, P2, P3, P4, P5, + ST_TRI, COLOR1, EA, EB, P2, + // Case #62 + ST_TRI, COLOR0, P0, EA, EF, + ST_POLY6, COLOR1, P1, P2, P3, P4, P5, EF, + ST_TRI, COLOR1, EA, P1, EF, + // Case #63 + ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P5 +}; +// clang-format on + +const size_t clipShapesPoly6Size = sizeof(clipShapesPoly6) / sizeof(unsigned char); + +} // namespace tables +} // namespace clipping +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/polygonalClipCasesPoly7.cpp b/src/axom/bump/clipping/polygonalClipCasesPoly7.cpp new file mode 100644 index 0000000000..d05754493b --- /dev/null +++ b/src/axom/bump/clipping/polygonalClipCasesPoly7.cpp @@ -0,0 +1,612 @@ +// Copyright (c) 2017-2025, Lawrence Livermore National Security, LLC and +// other Axom Project Developers. See the top-level LICENSE file for details. +// +// SPDX-License-Identifier: (BSD-3-Clause) +#include "ClipCases.h" + +namespace axom { +namespace bump { +namespace clipping { +namespace tables { + +int numClipCasesPoly7 = 128; + +int numClipShapesPoly7[] = { + 2, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 4, 3, 4, 2, 2, 3, 3, 3, 4, 3, 5, 4, 4, 3, 4, 4, 4, 2, 4, 2, 3, 3, 3, 3, 4, 3, 5, 4, 4, 3, 5, 5, 5, 4, 5, 4, 4, 3, 4, 4, 4, 4, 5, 4, 4, 2, 4, 4, 4, 2, 4, 3, 3, 3, 3, 3, 2, 3, 4, 4, 2, 3, 4, 5, 4, 4, 4, 4, 3, 3, 4, 5, 4, 5, 5, 5, 4, 4, 4, 5, 4, 4, 4, 4, 3, 3, 2, 4, 2, 4, 4, 4, 3, 4, 4, 5, 4, 4, 4, 4, 3, 2, 2, 4, 3, 4, 4, 4, 3, 2, 3, 4, 3, 3, 3, 3, 2 +}; + +int startClipShapesPoly7[] = { + 0, 13, 32, 51, 70, 89, 110, 129, 144, 163, 184, 205, 230, 249, 274, 289, 304, 323, 344, 365, 390, 411, 442, 467, 492, 511, 536, 561, 586, 601, 626, 641, 660, 679, 700, 721, 746, 767, 798, 823, 848, 869, 900, 931, 962, 987, 1018, 1043, 1068, 1087, 1112, 1137, 1162, 1187, 1218, 1243, 1268, 1283, 1308, 1333, 1358, 1373, 1398, 1417, 1436, 1455, 1474, 1495, 1510, 1531, 1556, 1581, 1596, 1617, 1642, 1673, 1698, 1723, 1748, 1773, 1792, 1813, 1838, 1869, 1894, 1925, 1956, 1987, 2012, 2037, 2062, 2093, 2118, 2143, 2168, 2193, 2212, 2231, 2246, 2271, 2286, 2311, 2336, 2361, 2380, 2405, 2430, 2461, 2486, 2511, 2536, 2561, 2580, 2595, 2610, 2635, 2654, 2679, 2704, 2729, 2748, 2763, 2782, 2807, 2826, 2845, 2864, 2883 +}; + +// clang-format off +unsigned char clipShapesPoly7[] = { + // Case #0 + ST_POLY6, COLOR0, P0, P1, P2, P3, P4, P5, + ST_TRI, COLOR0, P0, P5, P6, + // Case #1 + ST_POLY6, COLOR0, EA, P1, P2, P3, P4, P5, + ST_QUA, COLOR0, EA, P5, P6, EG, + ST_TRI, COLOR1, P0, EA, EG, + // Case #2 + ST_POLY6, COLOR0, EB, P2, P3, P4, P5, P6, + ST_QUA, COLOR0, P0, EA, EB, P6, + ST_TRI, COLOR1, EA, P1, EB, + // Case #3 + ST_POLY6, COLOR0, EB, P2, P3, P4, P5, P6, + ST_TRI, COLOR0, EB, P6, EG, + ST_QUA, COLOR1, P0, P1, EB, EG, + // Case #4 + ST_POLY6, COLOR0, P0, EC, P3, P4, P5, P6, + ST_QUA, COLOR0, P0, P1, EB, EC, + ST_TRI, COLOR1, EB, P2, EC, + // Case #5 + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR0, EC, P3, P4, P5, P6, EG, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, EG, + // Case #6 + ST_POLY6, COLOR0, P0, EC, P3, P4, P5, P6, + ST_TRI, COLOR0, P0, EA, EC, + ST_QUA, COLOR1, EA, P1, P2, EC, + // Case #7 + ST_POLY6, COLOR0, EC, P3, P4, P5, P6, EG, + ST_POLY5, COLOR1, P0, P1, P2, EC, EG, + // Case #8 + ST_POLY6, COLOR0, P0, P1, ED, P4, P5, P6, + ST_QUA, COLOR0, P1, P2, EC, ED, + ST_TRI, COLOR1, EC, P3, ED, + // Case #9 + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY5, COLOR0, ED, P4, P5, P6, EG, + ST_POLY6, COLOR1, P0, EA, EC, P3, ED, EG, + // Case #10 + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR0, P0, EA, ED, P4, P5, P6, + ST_POLY6, COLOR1, EA, P1, EB, EC, P3, ED, + // Case #11 + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY5, COLOR0, ED, P4, P5, P6, EG, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, ED, + ST_TRI, COLOR1, P0, ED, EG, + // Case #12 + ST_POLY6, COLOR0, P0, P1, ED, P4, P5, P6, + ST_TRI, COLOR0, P1, EB, ED, + ST_QUA, COLOR1, EB, P2, P3, ED, + // Case #13 + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY5, COLOR0, ED, P4, P5, P6, EG, + ST_POLY6, COLOR1, P0, EA, EB, P2, P3, EG, + ST_TRI, COLOR1, P3, ED, EG, + // Case #14 + ST_POLY6, COLOR0, P0, EA, ED, P4, P5, P6, + ST_POLY5, COLOR1, EA, P1, P2, P3, ED, + // Case #15 + ST_POLY5, COLOR0, ED, P4, P5, P6, EG, + ST_POLY6, COLOR1, P0, P1, P2, P3, ED, EG, + // Case #16 + ST_POLY6, COLOR0, P0, P1, P2, EE, P5, P6, + ST_QUA, COLOR0, P2, P3, ED, EE, + ST_TRI, COLOR1, ED, P4, EE, + // Case #17 + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY5, COLOR0, EA, P1, P2, P3, ED, + ST_POLY6, COLOR1, P0, EA, ED, P4, EE, EG, + // Case #18 + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY5, COLOR0, P0, EA, EE, P5, P6, + ST_POLY6, COLOR1, EA, P1, EB, ED, P4, EE, + // Case #19 + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY6, COLOR1, P0, P1, EB, ED, P4, EE, + ST_TRI, COLOR1, P0, EE, EG, + // Case #20 + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY6, COLOR0, P0, P1, EB, EE, P5, P6, + ST_POLY6, COLOR1, EB, P2, EC, ED, P4, EE, + // Case #21 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, ED, + ST_POLY5, COLOR1, P0, ED, P4, EE, EG, + // Case #22 + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY5, COLOR0, P0, EA, EE, P5, P6, + ST_POLY6, COLOR1, P1, P2, EC, ED, P4, EE, + ST_TRI, COLOR1, EA, P1, EE, + // Case #23 + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY6, COLOR1, P0, P1, P2, EC, ED, P4, + ST_QUA, COLOR1, P0, P4, EE, EG, + // Case #24 + ST_POLY6, COLOR0, P0, P1, P2, EE, P5, P6, + ST_TRI, COLOR0, P2, EC, EE, + ST_QUA, COLOR1, EC, P3, P4, EE, + // Case #25 + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P0, EA, P3, P4, EE, EG, + ST_TRI, COLOR1, EA, EC, P3, + // Case #26 + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY5, COLOR0, P0, EA, EE, P5, P6, + ST_POLY6, COLOR1, EA, P1, EB, EC, P3, P4, + ST_TRI, COLOR1, EA, P4, EE, + // Case #27 + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P4, + ST_QUA, COLOR1, P0, P4, EE, EG, + // Case #28 + ST_POLY6, COLOR0, P0, P1, EB, EE, P5, P6, + ST_POLY5, COLOR1, EB, P2, P3, P4, EE, + // Case #29 + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY6, COLOR1, P0, EA, EB, P2, P3, P4, + ST_QUA, COLOR1, P0, P4, EE, EG, + // Case #30 + ST_POLY5, COLOR0, P0, EA, EE, P5, P6, + ST_POLY6, COLOR1, EA, P1, P2, P3, P4, EE, + // Case #31 + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY6, COLOR1, P0, P1, P2, P3, P4, EE, + ST_TRI, COLOR1, P0, EE, EG, + // Case #32 + ST_POLY6, COLOR0, P0, P1, P2, P3, EF, P6, + ST_QUA, COLOR0, P3, P4, EE, EF, + ST_TRI, COLOR1, EE, P5, EF, + // Case #33 + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY6, COLOR0, EA, P1, P2, P3, P4, EE, + ST_POLY6, COLOR1, P0, EA, EE, P5, EF, EG, + // Case #34 + ST_QUA, COLOR0, P0, EA, EF, P6, + ST_POLY5, COLOR0, EB, P2, P3, P4, EE, + ST_POLY6, COLOR1, EA, P1, EB, EE, P5, EF, + // Case #35 + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY5, COLOR0, EB, P2, P3, P4, EE, + ST_POLY6, COLOR1, P0, P1, EE, P5, EF, EG, + ST_TRI, COLOR1, P1, EB, EE, + // Case #36 + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY5, COLOR0, P0, P1, EB, EF, P6, + ST_POLY6, COLOR1, EB, P2, EC, EE, P5, EF, + // Case #37 + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, P0, EA, EB, P5, EF, EG, + ST_POLY5, COLOR1, EB, P2, EC, EE, P5, + // Case #38 + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR0, P0, EA, EF, P6, + ST_POLY6, COLOR1, P1, P2, EC, EE, P5, EF, + ST_TRI, COLOR1, EA, P1, EF, + // Case #39 + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, P0, P1, P2, P5, EF, EG, + ST_QUA, COLOR1, P2, EC, EE, P5, + // Case #40 + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY6, COLOR0, P0, P1, P2, EC, EF, P6, + ST_POLY6, COLOR1, EC, P3, ED, EE, P5, EF, + // Case #41 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P3, ED, EE, P5, EF, EG, + ST_POLY5, COLOR1, P0, EA, EC, P3, EG, + // Case #42 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, P0, EA, EF, P6, + ST_POLY6, COLOR1, P1, EB, EC, P3, ED, EE, + ST_POLY5, COLOR1, EA, P1, EE, P5, EF, + // Case #43 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, ED, + ST_POLY6, COLOR1, P0, ED, EE, P5, EF, EG, + // Case #44 + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY5, COLOR0, P0, P1, EB, EF, P6, + ST_POLY6, COLOR1, P2, P3, ED, EE, P5, EF, + ST_TRI, COLOR1, EB, P2, EF, + // Case #45 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR1, P2, P3, ED, EE, P5, EF, + ST_POLY6, COLOR1, P0, EA, EB, P2, EF, EG, + // Case #46 + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, P0, EA, EF, P6, + ST_POLY6, COLOR1, P1, P2, P3, ED, EE, P5, + ST_QUA, COLOR1, EA, P1, P5, EF, + // Case #47 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY6, COLOR1, P0, P1, P2, P3, ED, EE, + ST_POLY5, COLOR1, P0, EE, P5, EF, EG, + // Case #48 + ST_POLY6, COLOR0, P0, P1, P2, P3, EF, P6, + ST_TRI, COLOR0, P3, ED, EF, + ST_QUA, COLOR1, ED, P4, P5, EF, + // Case #49 + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY5, COLOR0, EA, P1, P2, P3, ED, + ST_POLY6, COLOR1, P0, EA, P4, P5, EF, EG, + ST_TRI, COLOR1, EA, ED, P4, + // Case #50 + ST_QUA, COLOR0, P0, EA, EF, P6, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, EA, P1, EB, P4, P5, EF, + ST_TRI, COLOR1, EB, ED, P4, + // Case #51 + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, P0, P1, P4, P5, EF, EG, + ST_QUA, COLOR1, P1, EB, ED, P4, + // Case #52 + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY5, COLOR0, P0, P1, EB, EF, P6, + ST_POLY6, COLOR1, EB, P2, EC, ED, P4, P5, + ST_TRI, COLOR1, EB, P5, EF, + // Case #53 + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY6, COLOR1, P0, EA, P4, P5, EF, EG, + ST_POLY6, COLOR1, EA, EB, P2, EC, ED, P4, + // Case #54 + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, P0, EA, EF, P6, + ST_POLY6, COLOR1, P1, P2, EC, ED, P4, P5, + ST_QUA, COLOR1, EA, P1, P5, EF, + // Case #55 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY6, COLOR1, P0, P1, P2, EC, ED, P4, + ST_POLY5, COLOR1, P0, P4, P5, EF, EG, + // Case #56 + ST_POLY6, COLOR0, P0, P1, P2, EC, EF, P6, + ST_POLY5, COLOR1, EC, P3, P4, P5, EF, + // Case #57 + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P0, P3, P4, P5, EF, EG, + ST_QUA, COLOR1, P0, EA, EC, P3, + // Case #58 + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, P0, EA, EF, P6, + ST_POLY6, COLOR1, P1, EB, EC, P3, P4, P5, + ST_QUA, COLOR1, EA, P1, P5, EF, + // Case #59 + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR1, P0, P3, P4, P5, EF, EG, + ST_POLY5, COLOR1, P0, P1, EB, EC, P3, + // Case #60 + ST_POLY5, COLOR0, P0, P1, EB, EF, P6, + ST_POLY6, COLOR1, EB, P2, P3, P4, P5, EF, + // Case #61 + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR1, P2, P3, P4, P5, EF, EG, + ST_POLY5, COLOR1, P0, EA, EB, P2, EG, + // Case #62 + ST_QUA, COLOR0, P0, EA, EF, P6, + ST_POLY6, COLOR1, P1, P2, P3, P4, P5, EF, + ST_TRI, COLOR1, EA, P1, EF, + // Case #63 + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P5, + ST_QUA, COLOR1, P0, P5, EF, EG, + // Case #64 + ST_POLY6, COLOR0, P0, P1, P2, P3, P4, EG, + ST_QUA, COLOR0, P4, P5, EF, EG, + ST_TRI, COLOR1, EF, P6, EG, + // Case #65 + ST_POLY6, COLOR0, EA, P1, P2, P3, P4, P5, + ST_TRI, COLOR0, EA, P5, EF, + ST_QUA, COLOR1, P0, EA, EF, P6, + // Case #66 + ST_TRI, COLOR0, P0, EA, EG, + ST_POLY6, COLOR0, EB, P2, P3, P4, P5, EF, + ST_POLY6, COLOR1, EA, P1, EB, EF, P6, EG, + // Case #67 + ST_POLY6, COLOR0, EB, P2, P3, P4, P5, EF, + ST_POLY5, COLOR1, P0, P1, EB, EF, P6, + // Case #68 + ST_QUA, COLOR0, P0, P1, EB, EG, + ST_POLY5, COLOR0, EC, P3, P4, P5, EF, + ST_POLY6, COLOR1, EB, P2, EC, EF, P6, EG, + // Case #69 + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY5, COLOR0, EC, P3, P4, P5, EF, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, P6, + ST_TRI, COLOR1, EC, EF, P6, + // Case #70 + ST_TRI, COLOR0, P0, EA, EG, + ST_POLY5, COLOR0, EC, P3, P4, P5, EF, + ST_POLY6, COLOR1, EA, P1, P2, EF, P6, EG, + ST_TRI, COLOR1, P2, EC, EF, + // Case #71 + ST_POLY5, COLOR0, EC, P3, P4, P5, EF, + ST_POLY6, COLOR1, P0, P1, P2, EC, EF, P6, + // Case #72 + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY5, COLOR0, P0, P1, P2, EC, EG, + ST_POLY6, COLOR1, EC, P3, ED, EF, P6, EG, + // Case #73 + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, P0, EA, EC, P3, ED, P6, + ST_TRI, COLOR1, ED, EF, P6, + // Case #74 + ST_TRI, COLOR0, P0, EA, EG, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, EA, P1, EB, EC, P6, EG, + ST_POLY5, COLOR1, EC, P3, ED, EF, P6, + // Case #75 + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P6, + ST_QUA, COLOR1, P3, ED, EF, P6, + // Case #76 + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR0, P0, P1, EB, EG, + ST_POLY6, COLOR1, P2, P3, ED, EF, P6, EG, + ST_TRI, COLOR1, EB, P2, EG, + // Case #77 + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, P0, EA, EB, P2, P3, P6, + ST_QUA, COLOR1, P3, ED, EF, P6, + // Case #78 + ST_TRI, COLOR0, P0, EA, EG, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, EA, P1, P2, P3, P6, EG, + ST_QUA, COLOR1, P3, ED, EF, P6, + // Case #79 + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, P0, P1, P2, P3, ED, P6, + ST_TRI, COLOR1, ED, EF, P6, + // Case #80 + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY6, COLOR0, P0, P1, P2, P3, ED, EG, + ST_POLY6, COLOR1, ED, P4, EE, EF, P6, EG, + // Case #81 + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY5, COLOR0, EA, P1, P2, P3, ED, + ST_POLY6, COLOR1, P0, ED, P4, EE, EF, P6, + ST_TRI, COLOR1, P0, EA, ED, + // Case #82 + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, P0, EA, EG, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, EA, P4, EE, EF, P6, EG, + ST_POLY5, COLOR1, EA, P1, EB, ED, P4, + // Case #83 + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, P0, P1, P4, EE, EF, P6, + ST_QUA, COLOR1, P1, EB, ED, P4, + // Case #84 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, P0, P1, EB, EG, + ST_POLY6, COLOR1, P2, EC, ED, P4, EE, EF, + ST_POLY5, COLOR1, EB, P2, EF, P6, EG, + // Case #85 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, P6, + ST_POLY6, COLOR1, EC, ED, P4, EE, EF, P6, + // Case #86 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, P0, EA, EG, + ST_POLY6, COLOR1, P1, P2, EC, ED, P4, EE, + ST_POLY6, COLOR1, EA, P1, EE, EF, P6, EG, + // Case #87 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY6, COLOR1, P0, P1, P2, EC, ED, P6, + ST_POLY5, COLOR1, ED, P4, EE, EF, P6, + // Case #88 + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY5, COLOR0, P0, P1, P2, EC, EG, + ST_POLY6, COLOR1, P3, P4, EE, EF, P6, EG, + ST_TRI, COLOR1, EC, P3, EG, + // Case #89 + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P0, P3, P4, EE, EF, P6, + ST_QUA, COLOR1, P0, EA, EC, P3, + // Case #90 + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, P0, EA, EG, + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR1, P3, P4, EE, EF, P6, EG, + ST_POLY6, COLOR1, EA, P1, EB, EC, P3, EG, + // Case #91 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P6, + ST_POLY5, COLOR1, P3, P4, EE, EF, P6, + // Case #92 + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, P0, P1, EB, EG, + ST_POLY6, COLOR1, P2, P3, P4, EE, EF, P6, + ST_QUA, COLOR1, EB, P2, P6, EG, + // Case #93 + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR1, P2, P3, P4, EE, EF, P6, + ST_POLY5, COLOR1, P0, EA, EB, P2, P6, + // Case #94 + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, P0, EA, EG, + ST_POLY6, COLOR1, P1, P2, P3, P4, EE, EF, + ST_POLY5, COLOR1, EA, P1, EF, P6, EG, + // Case #95 + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P6, + ST_QUA, COLOR1, P4, EE, EF, P6, + // Case #96 + ST_POLY6, COLOR0, P0, P1, P2, P3, P4, EG, + ST_TRI, COLOR0, P4, EE, EG, + ST_QUA, COLOR1, EE, P5, P6, EG, + // Case #97 + ST_POLY6, COLOR0, EA, P1, P2, P3, P4, EE, + ST_POLY5, COLOR1, P0, EA, EE, P5, P6, + // Case #98 + ST_TRI, COLOR0, P0, EA, EG, + ST_POLY5, COLOR0, EB, P2, P3, P4, EE, + ST_POLY6, COLOR1, EA, P1, EB, P5, P6, EG, + ST_TRI, COLOR1, EB, EE, P5, + // Case #99 + ST_POLY5, COLOR0, EB, P2, P3, P4, EE, + ST_POLY6, COLOR1, P0, P1, EB, EE, P5, P6, + // Case #100 + ST_QUA, COLOR0, P0, P1, EB, EG, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, EB, P2, EC, P5, P6, EG, + ST_TRI, COLOR1, EC, EE, P5, + // Case #101 + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, P0, EA, EB, P2, P5, P6, + ST_QUA, COLOR1, P2, EC, EE, P5, + // Case #102 + ST_TRI, COLOR0, P0, EA, EG, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, EA, P1, P2, P5, P6, EG, + ST_QUA, COLOR1, P2, EC, EE, P5, + // Case #103 + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, P0, P1, P2, EC, P5, P6, + ST_TRI, COLOR1, EC, EE, P5, + // Case #104 + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY5, COLOR0, P0, P1, P2, EC, EG, + ST_POLY6, COLOR1, EC, P3, ED, EE, P5, P6, + ST_TRI, COLOR1, EC, P6, EG, + // Case #105 + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P0, P3, ED, EE, P5, P6, + ST_QUA, COLOR1, P0, EA, EC, P3, + // Case #106 + ST_TRI, COLOR0, P0, EA, EG, + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY6, COLOR1, EA, P1, EB, P5, P6, EG, + ST_POLY6, COLOR1, EB, EC, P3, ED, EE, P5, + // Case #107 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY6, COLOR1, P0, P1, EB, EC, P5, P6, + ST_POLY5, COLOR1, EC, P3, ED, EE, P5, + // Case #108 + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, P0, P1, EB, EG, + ST_POLY6, COLOR1, P2, P3, ED, EE, P5, P6, + ST_QUA, COLOR1, EB, P2, P6, EG, + // Case #109 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY6, COLOR1, P0, EA, EB, P2, P5, P6, + ST_POLY5, COLOR1, P2, P3, ED, EE, P5, + // Case #110 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, P0, EA, EG, + ST_POLY6, COLOR1, P1, P2, P3, ED, EE, P5, + ST_POLY5, COLOR1, EA, P1, P5, P6, EG, + // Case #111 + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY6, COLOR1, P0, P1, P2, P3, P5, P6, + ST_QUA, COLOR1, P3, ED, EE, P5, + // Case #112 + ST_POLY6, COLOR0, P0, P1, P2, P3, ED, EG, + ST_POLY5, COLOR1, ED, P4, P5, P6, EG, + // Case #113 + ST_POLY5, COLOR0, EA, P1, P2, P3, ED, + ST_POLY6, COLOR1, P0, EA, ED, P4, P5, P6, + // Case #114 + ST_TRI, COLOR0, P0, EA, EG, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, EA, P1, P4, P5, P6, EG, + ST_QUA, COLOR1, P1, EB, ED, P4, + // Case #115 + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, P0, P1, EB, P4, P5, P6, + ST_TRI, COLOR1, EB, ED, P4, + // Case #116 + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, P0, P1, EB, EG, + ST_POLY6, COLOR1, P2, EC, ED, P4, P5, P6, + ST_QUA, COLOR1, EB, P2, P6, EG, + // Case #117 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY6, COLOR1, P0, EA, EB, P4, P5, P6, + ST_POLY5, COLOR1, EB, P2, EC, ED, P4, + // Case #118 + ST_TRI, COLOR0, P0, EA, EG, + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY6, COLOR1, EA, P1, P4, P5, P6, EG, + ST_POLY5, COLOR1, P1, P2, EC, ED, P4, + // Case #119 + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY6, COLOR1, P0, P1, P2, P4, P5, P6, + ST_QUA, COLOR1, P2, EC, ED, P4, + // Case #120 + ST_POLY5, COLOR0, P0, P1, P2, EC, EG, + ST_POLY6, COLOR1, EC, P3, P4, P5, P6, EG, + // Case #121 + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P0, EA, P3, P4, P5, P6, + ST_TRI, COLOR1, EA, EC, P3, + // Case #122 + ST_TRI, COLOR0, P0, EA, EG, + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR1, EA, P3, P4, P5, P6, EG, + ST_POLY5, COLOR1, EA, P1, EB, EC, P3, + // Case #123 + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR1, P0, P1, P3, P4, P5, P6, + ST_QUA, COLOR1, P1, EB, EC, P3, + // Case #124 + ST_QUA, COLOR0, P0, P1, EB, EG, + ST_POLY6, COLOR1, P2, P3, P4, P5, P6, EG, + ST_TRI, COLOR1, EB, P2, EG, + // Case #125 + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR1, P0, P2, P3, P4, P5, P6, + ST_QUA, COLOR1, P0, EA, EB, P2, + // Case #126 + ST_TRI, COLOR0, P0, EA, EG, + ST_POLY6, COLOR1, P1, P2, P3, P4, P5, P6, + ST_QUA, COLOR1, EA, P1, P6, EG, + // Case #127 + ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P5, + ST_TRI, COLOR1, P0, P5, P6 +}; +// clang-format on + +const size_t clipShapesPoly7Size = sizeof(clipShapesPoly7) / sizeof(unsigned char); + +} // namespace tables +} // namespace clipping +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/polygonalClipCasesPoly8.cpp b/src/axom/bump/clipping/polygonalClipCasesPoly8.cpp new file mode 100644 index 0000000000..4aabe7503f --- /dev/null +++ b/src/axom/bump/clipping/polygonalClipCasesPoly8.cpp @@ -0,0 +1,1310 @@ +// Copyright (c) 2017-2025, Lawrence Livermore National Security, LLC and +// other Axom Project Developers. See the top-level LICENSE file for details. +// +// SPDX-License-Identifier: (BSD-3-Clause) +#include "ClipCases.h" + +namespace axom { +namespace bump { +namespace clipping { +namespace tables { + +int numClipCasesPoly8 = 256; + +int numClipShapesPoly8[] = { + 2, 3, 3, 3, 3, 4, 3, 3, 3, 3, 4, 4, 3, 4, 3, 2, 3, 3, 3, 4, 4, 5, 4, 4, 3, 4, 4, 4, 3, 4, 2, 3, 3, 3, 3, 4, 3, 5, 4, 4, 4, 5, 5, 5, 4, 5, 4, 4, 3, 4, 4, 4, 4, 5, 4, 4, 3, 4, 4, 4, 2, 4, 3, 3, 3, 4, 3, 4, 3, 5, 4, 4, 3, 5, 5, 5, 4, 5, 4, 4, 4, 5, 5, 5, 5, 7, 5, 6, 4, 5, 5, 6, 4, 6, 4, 4, 3, 4, 4, 4, 4, 5, 4, 4, 4, 5, 5, 6, 4, 6, 4, 4, 3, 4, 4, 4, 4, 6, 4, 4, 2, 4, 4, 4, 3, 4, 3, 3, 3, 3, 4, 3, 3, 4, 4, 2, 3, 4, 5, 4, 4, 4, 4, 3, 3, 4, 5, 4, 5, 5, 5, 4, 4, 4, 5, 4, 4, 4, 4, 3, 4, 4, 5, 4, 5, 5, 5, 4, 5, 5, 7, 6, 5, 6, 6, 4, 4, 4, 5, 4, 5, 6, 6, 4, 4, 4, 6, 4, 4, 4, 4, 3, 3, 3, 4, 2, 4, 4, 4, 3, 4, 4, 5, 4, 4, 4, 4, 3, 4, 4, 5, 4, 5, 6, 6, 4, 4, 4, 6, 4, 4, 4, 4, 3, 3, 2, 4, 3, 4, 4, 4, 3, 4, 4, 6, 4, 4, 4, 4, 3, 2, 3, 4, 3, 4, 4, 4, 3, 3, 3, 4, 3, 3, 3, 3, 2 +}; + +int startClipShapesPoly8[] = { + 0, 14, 34, 54, 74, 94, 120, 140, 160, 180, 202, 228, 254, 274, 300, 320, 336, 356, 378, 400, 426, 452, 484, 510, 536, 556, 582, 608, 634, 654, 680, 696, 716, 736, 758, 780, 806, 828, 860, 886, 912, 938, 970, 1002, 1034, 1060, 1092, 1118, 1144, 1164, 1190, 1216, 1242, 1268, 1300, 1326, 1352, 1372, 1398, 1424, 1450, 1466, 1492, 1512, 1532, 1552, 1578, 1600, 1626, 1648, 1680, 1706, 1732, 1754, 1786, 1818, 1850, 1876, 1908, 1934, 1960, 1986, 2018, 2050, 2082, 2114, 2156, 2188, 2224, 2250, 2282, 2314, 2350, 2376, 2412, 2438, 2464, 2484, 2510, 2536, 2562, 2588, 2620, 2646, 2672, 2698, 2730, 2762, 2798, 2824, 2860, 2886, 2912, 2932, 2958, 2984, 3010, 3036, 3072, 3098, 3124, 3140, 3166, 3192, 3218, 3238, 3264, 3284, 3304, 3324, 3344, 3370, 3390, 3412, 3438, 3464, 3480, 3502, 3528, 3560, 3586, 3612, 3638, 3664, 3684, 3706, 3732, 3764, 3790, 3822, 3854, 3886, 3912, 3938, 3964, 3996, 4022, 4048, 4074, 4100, 4120, 4146, 4172, 4204, 4230, 4262, 4294, 4326, 4352, 4384, 4416, 4458, 4494, 4526, 4562, 4598, 4624, 4650, 4676, 4708, 4734, 4766, 4802, 4838, 4864, 4890, 4916, 4952, 4978, 5004, 5030, 5056, 5076, 5096, 5116, 5142, 5158, 5184, 5210, 5236, 5256, 5282, 5308, 5340, 5366, 5392, 5418, 5444, 5464, 5490, 5516, 5548, 5574, 5606, 5642, 5678, 5704, 5730, 5756, 5792, 5818, 5844, 5870, 5896, 5916, 5936, 5952, 5978, 5998, 6024, 6050, 6076, 6096, 6122, 6148, 6184, 6210, 6236, 6262, 6288, 6308, 6324, 6344, 6370, 6390, 6416, 6442, 6468, 6488, 6508, 6528, 6554, 6574, 6594, 6614, 6634 +}; + +// clang-format off +unsigned char clipShapesPoly8[] = { + // Case #0 + ST_POLY6, COLOR0, P0, P1, P2, P3, P4, P5, + ST_QUA, COLOR0, P0, P5, P6, P7, + // Case #1 + ST_POLY6, COLOR0, EA, P1, P2, P3, P4, P5, + ST_POLY5, COLOR0, EA, P5, P6, P7, EH, + ST_TRI, COLOR1, P0, EA, EH, + // Case #2 + ST_POLY6, COLOR0, EB, P2, P3, P4, P5, P6, + ST_POLY5, COLOR0, P0, EA, EB, P6, P7, + ST_TRI, COLOR1, EA, P1, EB, + // Case #3 + ST_POLY6, COLOR0, EB, P2, P3, P4, P5, P6, + ST_QUA, COLOR0, EB, P6, P7, EH, + ST_QUA, COLOR1, P0, P1, EB, EH, + // Case #4 + ST_POLY6, COLOR0, EC, P3, P4, P5, P6, P7, + ST_POLY5, COLOR0, P0, P1, EB, EC, P7, + ST_TRI, COLOR1, EB, P2, EC, + // Case #5 + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR0, EC, P3, P4, P5, P6, P7, + ST_TRI, COLOR0, EC, P7, EH, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, EH, + // Case #6 + ST_POLY6, COLOR0, EC, P3, P4, P5, P6, P7, + ST_QUA, COLOR0, P0, EA, EC, P7, + ST_QUA, COLOR1, EA, P1, P2, EC, + // Case #7 + ST_POLY6, COLOR0, EC, P3, P4, P5, P6, P7, + ST_TRI, COLOR0, EC, P7, EH, + ST_POLY5, COLOR1, P0, P1, P2, EC, EH, + // Case #8 + ST_POLY6, COLOR0, P0, ED, P4, P5, P6, P7, + ST_POLY5, COLOR0, P0, P1, P2, EC, ED, + ST_TRI, COLOR1, EC, P3, ED, + // Case #9 + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR0, ED, P4, P5, P6, P7, EH, + ST_POLY6, COLOR1, P0, EA, EC, P3, ED, EH, + // Case #10 + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR0, P0, ED, P4, P5, P6, P7, + ST_TRI, COLOR0, P0, EA, ED, + ST_POLY6, COLOR1, EA, P1, EB, EC, P3, ED, + // Case #11 + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR0, ED, P4, P5, P6, P7, EH, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, ED, + ST_TRI, COLOR1, P0, ED, EH, + // Case #12 + ST_POLY6, COLOR0, P0, ED, P4, P5, P6, P7, + ST_QUA, COLOR0, P0, P1, EB, ED, + ST_QUA, COLOR1, EB, P2, P3, ED, + // Case #13 + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR0, ED, P4, P5, P6, P7, EH, + ST_POLY6, COLOR1, P0, EA, EB, P2, P3, EH, + ST_TRI, COLOR1, P3, ED, EH, + // Case #14 + ST_POLY6, COLOR0, P0, ED, P4, P5, P6, P7, + ST_TRI, COLOR0, P0, EA, ED, + ST_POLY5, COLOR1, EA, P1, P2, P3, ED, + // Case #15 + ST_POLY6, COLOR0, ED, P4, P5, P6, P7, EH, + ST_POLY6, COLOR1, P0, P1, P2, P3, ED, EH, + // Case #16 + ST_POLY6, COLOR0, P0, P1, EE, P5, P6, P7, + ST_POLY5, COLOR0, P1, P2, P3, ED, EE, + ST_TRI, COLOR1, ED, P4, EE, + // Case #17 + ST_POLY5, COLOR0, EA, P1, P2, P3, ED, + ST_POLY5, COLOR0, EE, P5, P6, P7, EH, + ST_POLY6, COLOR1, P0, EA, ED, P4, EE, EH, + // Case #18 + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR0, P0, EA, EE, P5, P6, P7, + ST_POLY6, COLOR1, EA, P1, EB, ED, P4, EE, + // Case #19 + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY5, COLOR0, EE, P5, P6, P7, EH, + ST_POLY6, COLOR1, P0, P1, EB, ED, P4, EE, + ST_TRI, COLOR1, P0, EE, EH, + // Case #20 + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY6, COLOR0, P0, P1, EE, P5, P6, P7, + ST_TRI, COLOR0, P1, EB, EE, + ST_POLY6, COLOR1, EB, P2, EC, ED, P4, EE, + // Case #21 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY5, COLOR0, EE, P5, P6, P7, EH, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, ED, + ST_POLY5, COLOR1, P0, ED, P4, EE, EH, + // Case #22 + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY6, COLOR0, P0, EA, EE, P5, P6, P7, + ST_POLY6, COLOR1, P1, P2, EC, ED, P4, EE, + ST_TRI, COLOR1, EA, P1, EE, + // Case #23 + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY5, COLOR0, EE, P5, P6, P7, EH, + ST_POLY6, COLOR1, P0, P1, P2, EC, ED, P4, + ST_QUA, COLOR1, P0, P4, EE, EH, + // Case #24 + ST_POLY6, COLOR0, P0, P1, EE, P5, P6, P7, + ST_QUA, COLOR0, P1, P2, EC, EE, + ST_QUA, COLOR1, EC, P3, P4, EE, + // Case #25 + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY5, COLOR0, EE, P5, P6, P7, EH, + ST_POLY6, COLOR1, P0, EA, EC, P3, P4, EH, + ST_TRI, COLOR1, P4, EE, EH, + // Case #26 + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR0, P0, EA, EE, P5, P6, P7, + ST_POLY6, COLOR1, EA, P1, EB, EC, P3, P4, + ST_TRI, COLOR1, EA, P4, EE, + // Case #27 + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY5, COLOR0, EE, P5, P6, P7, EH, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P4, + ST_QUA, COLOR1, P0, P4, EE, EH, + // Case #28 + ST_POLY6, COLOR0, P0, P1, EE, P5, P6, P7, + ST_TRI, COLOR0, P1, EB, EE, + ST_POLY5, COLOR1, EB, P2, P3, P4, EE, + // Case #29 + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY5, COLOR0, EE, P5, P6, P7, EH, + ST_POLY6, COLOR1, P0, EA, EB, P2, P3, P4, + ST_QUA, COLOR1, P0, P4, EE, EH, + // Case #30 + ST_POLY6, COLOR0, P0, EA, EE, P5, P6, P7, + ST_POLY6, COLOR1, EA, P1, P2, P3, P4, EE, + // Case #31 + ST_POLY5, COLOR0, EE, P5, P6, P7, EH, + ST_POLY6, COLOR1, P0, P1, P2, P3, P4, EE, + ST_TRI, COLOR1, P0, EE, EH, + // Case #32 + ST_POLY6, COLOR0, P0, P1, P2, EF, P6, P7, + ST_POLY5, COLOR0, P2, P3, P4, EE, EF, + ST_TRI, COLOR1, EE, P5, EF, + // Case #33 + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_POLY6, COLOR0, EA, P1, P2, P3, P4, EE, + ST_POLY6, COLOR1, P0, EA, EE, P5, EF, EH, + // Case #34 + ST_POLY5, COLOR0, EB, P2, P3, P4, EE, + ST_POLY5, COLOR0, P0, EA, EF, P6, P7, + ST_POLY6, COLOR1, EA, P1, EB, EE, P5, EF, + // Case #35 + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_POLY5, COLOR0, EB, P2, P3, P4, EE, + ST_POLY6, COLOR1, P0, P1, EE, P5, EF, EH, + ST_TRI, COLOR1, P1, EB, EE, + // Case #36 + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR0, P0, P1, EB, EF, P6, P7, + ST_POLY6, COLOR1, EB, P2, EC, EE, P5, EF, + // Case #37 + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, EE, + ST_POLY5, COLOR1, P0, EE, P5, EF, EH, + // Case #38 + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY5, COLOR0, P0, EA, EF, P6, P7, + ST_POLY6, COLOR1, P1, P2, EC, EE, P5, EF, + ST_TRI, COLOR1, EA, P1, EF, + // Case #39 + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_POLY6, COLOR1, P0, P1, P2, EC, EE, P5, + ST_QUA, COLOR1, P0, P5, EF, EH, + // Case #40 + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY6, COLOR0, P0, P1, P2, EF, P6, P7, + ST_TRI, COLOR0, P2, EC, EF, + ST_POLY6, COLOR1, EC, P3, ED, EE, P5, EF, + // Case #41 + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P3, ED, EE, P5, EF, EH, + ST_POLY5, COLOR1, P0, EA, EC, P3, EH, + // Case #42 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY5, COLOR0, P0, EA, EF, P6, P7, + ST_POLY6, COLOR1, P1, EB, EC, P3, ED, EE, + ST_POLY5, COLOR1, EA, P1, EE, P5, EF, + // Case #43 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, ED, + ST_POLY6, COLOR1, P0, ED, EE, P5, EF, EH, + // Case #44 + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY6, COLOR0, P0, P1, EB, EF, P6, P7, + ST_POLY6, COLOR1, P2, P3, ED, EE, P5, EF, + ST_TRI, COLOR1, EB, P2, EF, + // Case #45 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_POLY6, COLOR1, P0, EA, EB, P2, P3, ED, + ST_POLY6, COLOR1, P0, ED, EE, P5, EF, EH, + // Case #46 + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY5, COLOR0, P0, EA, EF, P6, P7, + ST_POLY6, COLOR1, P1, P2, P3, ED, EE, P5, + ST_QUA, COLOR1, EA, P1, P5, EF, + // Case #47 + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_POLY6, COLOR1, P0, P1, P2, P3, ED, EE, + ST_POLY5, COLOR1, P0, EE, P5, EF, EH, + // Case #48 + ST_POLY6, COLOR0, P0, P1, P2, EF, P6, P7, + ST_QUA, COLOR0, P2, P3, ED, EF, + ST_QUA, COLOR1, ED, P4, P5, EF, + // Case #49 + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_POLY5, COLOR0, EA, P1, P2, P3, ED, + ST_POLY6, COLOR1, P0, EA, P4, P5, EF, EH, + ST_TRI, COLOR1, EA, ED, P4, + // Case #50 + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY5, COLOR0, P0, EA, EF, P6, P7, + ST_POLY6, COLOR1, EA, P1, EB, ED, P4, P5, + ST_TRI, COLOR1, EA, P5, EF, + // Case #51 + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_POLY6, COLOR1, P0, P1, EB, ED, P4, P5, + ST_QUA, COLOR1, P0, P5, EF, EH, + // Case #52 + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY6, COLOR0, P0, P1, EB, EF, P6, P7, + ST_POLY6, COLOR1, EB, P2, EC, ED, P4, P5, + ST_TRI, COLOR1, EB, P5, EF, + // Case #53 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_POLY6, COLOR1, EB, P2, EC, ED, P4, P5, + ST_POLY6, COLOR1, P0, EA, EB, P5, EF, EH, + // Case #54 + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY5, COLOR0, P0, EA, EF, P6, P7, + ST_POLY6, COLOR1, P1, P2, EC, ED, P4, P5, + ST_QUA, COLOR1, EA, P1, P5, EF, + // Case #55 + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_POLY6, COLOR1, P0, P1, P2, EC, ED, P4, + ST_POLY5, COLOR1, P0, P4, P5, EF, EH, + // Case #56 + ST_POLY6, COLOR0, P0, P1, P2, EF, P6, P7, + ST_TRI, COLOR0, P2, EC, EF, + ST_POLY5, COLOR1, EC, P3, P4, P5, EF, + // Case #57 + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P0, P3, P4, P5, EF, EH, + ST_QUA, COLOR1, P0, EA, EC, P3, + // Case #58 + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY5, COLOR0, P0, EA, EF, P6, P7, + ST_POLY6, COLOR1, P1, EB, EC, P3, P4, P5, + ST_QUA, COLOR1, EA, P1, P5, EF, + // Case #59 + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_POLY6, COLOR1, P1, EB, EC, P3, P4, P5, + ST_POLY5, COLOR1, P0, P1, P5, EF, EH, + // Case #60 + ST_POLY6, COLOR0, P0, P1, EB, EF, P6, P7, + ST_POLY6, COLOR1, EB, P2, P3, P4, P5, EF, + // Case #61 + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_POLY6, COLOR1, EA, EB, P2, P3, P4, P5, + ST_POLY5, COLOR1, P0, EA, P5, EF, EH, + // Case #62 + ST_POLY5, COLOR0, P0, EA, EF, P6, P7, + ST_POLY6, COLOR1, P1, P2, P3, P4, P5, EF, + ST_TRI, COLOR1, EA, P1, EF, + // Case #63 + ST_QUA, COLOR0, EF, P6, P7, EH, + ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P5, + ST_QUA, COLOR1, P0, P5, EF, EH, + // Case #64 + ST_POLY6, COLOR0, P0, P1, P2, P3, EG, P7, + ST_POLY5, COLOR0, P3, P4, P5, EF, EG, + ST_TRI, COLOR1, EF, P6, EG, + // Case #65 + ST_TRI, COLOR0, EG, P7, EH, + ST_POLY6, COLOR0, EA, P1, P2, P3, P4, P5, + ST_TRI, COLOR0, EA, P5, EF, + ST_POLY6, COLOR1, P0, EA, EF, P6, EG, EH, + // Case #66 + ST_QUA, COLOR0, P0, EA, EG, P7, + ST_POLY6, COLOR0, EB, P2, P3, P4, P5, EF, + ST_POLY6, COLOR1, EA, P1, EB, EF, P6, EG, + // Case #67 + ST_TRI, COLOR0, EG, P7, EH, + ST_POLY6, COLOR0, EB, P2, P3, P4, P5, EF, + ST_POLY6, COLOR1, P0, P1, EF, P6, EG, EH, + ST_TRI, COLOR1, P1, EB, EF, + // Case #68 + ST_POLY5, COLOR0, EC, P3, P4, P5, EF, + ST_POLY5, COLOR0, P0, P1, EB, EG, P7, + ST_POLY6, COLOR1, EB, P2, EC, EF, P6, EG, + // Case #69 + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY5, COLOR0, EC, P3, P4, P5, EF, + ST_POLY6, COLOR1, P0, EA, EB, P6, EG, EH, + ST_POLY5, COLOR1, EB, P2, EC, EF, P6, + // Case #70 + ST_QUA, COLOR0, P0, EA, EG, P7, + ST_POLY5, COLOR0, EC, P3, P4, P5, EF, + ST_POLY6, COLOR1, EA, P1, P2, EF, P6, EG, + ST_TRI, COLOR1, P2, EC, EF, + // Case #71 + ST_TRI, COLOR0, EG, P7, EH, + ST_POLY5, COLOR0, EC, P3, P4, P5, EF, + ST_POLY6, COLOR1, P0, P1, P2, P6, EG, EH, + ST_QUA, COLOR1, P2, EC, EF, P6, + // Case #72 + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR0, P0, P1, P2, EC, EG, P7, + ST_POLY6, COLOR1, EC, P3, ED, EF, P6, EG, + // Case #73 + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, P0, EA, EC, P6, EG, EH, + ST_POLY5, COLOR1, EC, P3, ED, EF, P6, + // Case #74 + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR0, P0, EA, EG, P7, + ST_POLY6, COLOR1, P1, EB, EC, P3, ED, EF, + ST_POLY5, COLOR1, EA, P1, EF, P6, EG, + // Case #75 + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, P0, P1, EB, P6, EG, EH, + ST_POLY6, COLOR1, EB, EC, P3, ED, EF, P6, + // Case #76 + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY5, COLOR0, P0, P1, EB, EG, P7, + ST_POLY6, COLOR1, P2, P3, ED, EF, P6, EG, + ST_TRI, COLOR1, EB, P2, EG, + // Case #77 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, P0, EA, EB, P2, P3, EH, + ST_POLY6, COLOR1, P3, ED, EF, P6, EG, EH, + // Case #78 + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR0, P0, EA, EG, P7, + ST_POLY6, COLOR1, P1, P2, P3, ED, EF, P6, + ST_QUA, COLOR1, EA, P1, P6, EG, + // Case #79 + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, P0, P1, P2, P3, EG, EH, + ST_POLY5, COLOR1, P3, ED, EF, P6, EG, + // Case #80 + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY6, COLOR0, P0, P1, P2, P3, EG, P7, + ST_TRI, COLOR0, P3, ED, EG, + ST_POLY6, COLOR1, ED, P4, EE, EF, P6, EG, + // Case #81 + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P7, EH, + ST_POLY5, COLOR0, EA, P1, P2, P3, ED, + ST_POLY6, COLOR1, P4, EE, EF, P6, EG, EH, + ST_POLY5, COLOR1, P0, EA, ED, P4, EH, + // Case #82 + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, P0, EA, EG, P7, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, EA, P4, EE, EF, P6, EG, + ST_POLY5, COLOR1, EA, P1, EB, ED, P4, + // Case #83 + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, P0, P1, EF, P6, EG, EH, + ST_POLY6, COLOR1, P1, EB, ED, P4, EE, EF, + // Case #84 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY5, COLOR0, P0, P1, EB, EG, P7, + ST_POLY6, COLOR1, P2, EC, ED, P4, EE, EF, + ST_POLY5, COLOR1, EB, P2, EF, P6, EG, + // Case #85 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P7, EH, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, ED, + ST_POLY6, COLOR1, P0, ED, P4, EE, EF, P6, + ST_QUA, COLOR1, P0, P6, EG, EH, + // Case #86 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, P0, EA, EG, P7, + ST_POLY6, COLOR1, P1, P2, EC, ED, P4, EE, + ST_POLY6, COLOR1, EA, P1, EE, EF, P6, EG, + // Case #87 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P7, EH, + ST_POLY6, COLOR1, P0, P1, P2, EC, ED, P4, + ST_POLY6, COLOR1, P0, P4, EE, EF, P6, EG, + ST_TRI, COLOR1, P0, EG, EH, + // Case #88 + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY6, COLOR0, P0, P1, P2, EC, EG, P7, + ST_POLY6, COLOR1, P3, P4, EE, EF, P6, EG, + ST_TRI, COLOR1, EC, P3, EG, + // Case #89 + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P3, P4, EE, EF, P6, EG, + ST_POLY6, COLOR1, P0, EA, EC, P3, EG, EH, + // Case #90 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, P0, EA, EG, P7, + ST_POLY6, COLOR1, P1, EB, EC, P3, P4, EE, + ST_POLY6, COLOR1, EA, P1, EE, EF, P6, EG, + // Case #91 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P7, EH, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P4, + ST_POLY6, COLOR1, P0, P4, EE, EF, P6, EG, + ST_TRI, COLOR1, P0, EG, EH, + // Case #92 + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY5, COLOR0, P0, P1, EB, EG, P7, + ST_POLY6, COLOR1, P2, P3, P4, EE, EF, P6, + ST_QUA, COLOR1, EB, P2, P6, EG, + // Case #93 + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR1, P2, P3, P4, EE, EF, P6, + ST_POLY6, COLOR1, P0, EA, P2, P6, EG, EH, + ST_TRI, COLOR1, EA, EB, P2, + // Case #94 + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, P0, EA, EG, P7, + ST_POLY6, COLOR1, P1, P2, P3, P4, EE, EF, + ST_POLY5, COLOR1, EA, P1, EF, P6, EG, + // Case #95 + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EG, P7, EH, + ST_POLY6, COLOR1, P0, P1, P2, P3, P4, EE, + ST_POLY6, COLOR1, P0, EE, EF, P6, EG, EH, + // Case #96 + ST_POLY6, COLOR0, P0, P1, P2, P3, EG, P7, + ST_QUA, COLOR0, P3, P4, EE, EG, + ST_QUA, COLOR1, EE, P5, P6, EG, + // Case #97 + ST_TRI, COLOR0, EG, P7, EH, + ST_POLY6, COLOR0, EA, P1, P2, P3, P4, EE, + ST_POLY6, COLOR1, P0, EA, P5, P6, EG, EH, + ST_TRI, COLOR1, EA, EE, P5, + // Case #98 + ST_QUA, COLOR0, P0, EA, EG, P7, + ST_POLY5, COLOR0, EB, P2, P3, P4, EE, + ST_POLY6, COLOR1, EA, P1, EB, P5, P6, EG, + ST_TRI, COLOR1, EB, EE, P5, + // Case #99 + ST_TRI, COLOR0, EG, P7, EH, + ST_POLY5, COLOR0, EB, P2, P3, P4, EE, + ST_POLY6, COLOR1, P0, P1, P5, P6, EG, EH, + ST_QUA, COLOR1, P1, EB, EE, P5, + // Case #100 + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY5, COLOR0, P0, P1, EB, EG, P7, + ST_POLY6, COLOR1, EB, P2, EC, EE, P5, P6, + ST_TRI, COLOR1, EB, P6, EG, + // Case #101 + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, P0, EA, P5, P6, EG, EH, + ST_POLY6, COLOR1, EA, EB, P2, EC, EE, P5, + // Case #102 + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_QUA, COLOR0, P0, EA, EG, P7, + ST_POLY6, COLOR1, P1, P2, EC, EE, P5, P6, + ST_QUA, COLOR1, EA, P1, P6, EG, + // Case #103 + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, P0, P1, P2, P6, EG, EH, + ST_POLY5, COLOR1, P2, EC, EE, P5, P6, + // Case #104 + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY6, COLOR0, P0, P1, P2, EC, EG, P7, + ST_POLY6, COLOR1, EC, P3, ED, EE, P5, P6, + ST_TRI, COLOR1, EC, P6, EG, + // Case #105 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P3, ED, EE, P5, P6, EG, + ST_POLY6, COLOR1, P0, EA, EC, P3, EG, EH, + // Case #106 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, P0, EA, EG, P7, + ST_POLY6, COLOR1, EC, P3, ED, EE, P5, P6, + ST_POLY6, COLOR1, EA, P1, EB, EC, P6, EG, + // Case #107 + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY6, COLOR1, P0, P1, P5, P6, EG, EH, + ST_POLY6, COLOR1, P1, EB, EC, P3, ED, P5, + ST_TRI, COLOR1, ED, EE, P5, + // Case #108 + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY5, COLOR0, P0, P1, EB, EG, P7, + ST_POLY6, COLOR1, P2, P3, ED, EE, P5, P6, + ST_QUA, COLOR1, EB, P2, P6, EG, + // Case #109 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR1, P2, P3, ED, EE, P5, P6, + ST_POLY6, COLOR1, P0, EA, P2, P6, EG, EH, + ST_TRI, COLOR1, EA, EB, P2, + // Case #110 + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, P0, EA, EG, P7, + ST_POLY6, COLOR1, P1, P2, P3, ED, EE, P5, + ST_POLY5, COLOR1, EA, P1, P5, P6, EG, + // Case #111 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EG, P7, EH, + ST_POLY6, COLOR1, P0, P1, P2, P3, ED, EE, + ST_POLY6, COLOR1, P0, EE, P5, P6, EG, EH, + // Case #112 + ST_POLY6, COLOR0, P0, P1, P2, P3, EG, P7, + ST_TRI, COLOR0, P3, ED, EG, + ST_POLY5, COLOR1, ED, P4, P5, P6, EG, + // Case #113 + ST_TRI, COLOR0, EG, P7, EH, + ST_POLY5, COLOR0, EA, P1, P2, P3, ED, + ST_POLY6, COLOR1, P0, P4, P5, P6, EG, EH, + ST_QUA, COLOR1, P0, EA, ED, P4, + // Case #114 + ST_QUA, COLOR0, P0, EA, EG, P7, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, EA, P1, P4, P5, P6, EG, + ST_QUA, COLOR1, P1, EB, ED, P4, + // Case #115 + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, P0, P4, P5, P6, EG, EH, + ST_POLY5, COLOR1, P0, P1, EB, ED, P4, + // Case #116 + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY5, COLOR0, P0, P1, EB, EG, P7, + ST_POLY6, COLOR1, P2, EC, ED, P4, P5, P6, + ST_QUA, COLOR1, EB, P2, P6, EG, + // Case #117 + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY6, COLOR1, P0, P4, P5, P6, EG, EH, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, P4, + ST_TRI, COLOR1, EC, ED, P4, + // Case #118 + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, P0, EA, EG, P7, + ST_POLY6, COLOR1, P2, EC, ED, P4, P5, P6, + ST_POLY5, COLOR1, EA, P1, P2, P6, EG, + // Case #119 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EG, P7, EH, + ST_POLY6, COLOR1, P0, P1, P2, EC, ED, P4, + ST_POLY6, COLOR1, P0, P4, P5, P6, EG, EH, + // Case #120 + ST_POLY6, COLOR0, P0, P1, P2, EC, EG, P7, + ST_POLY6, COLOR1, EC, P3, P4, P5, P6, EG, + // Case #121 + ST_TRI, COLOR0, EG, P7, EH, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P3, P4, P5, P6, EG, EH, + ST_POLY5, COLOR1, P0, EA, EC, P3, EH, + // Case #122 + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, P0, EA, EG, P7, + ST_POLY6, COLOR1, EB, EC, P3, P4, P5, P6, + ST_POLY5, COLOR1, EA, P1, EB, P6, EG, + // Case #123 + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR1, P3, P4, P5, P6, EG, EH, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, EH, + // Case #124 + ST_POLY5, COLOR0, P0, P1, EB, EG, P7, + ST_POLY6, COLOR1, P2, P3, P4, P5, P6, EG, + ST_TRI, COLOR1, EB, P2, EG, + // Case #125 + ST_TRI, COLOR0, EG, P7, EH, + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR1, P2, P3, P4, P5, P6, EG, + ST_POLY6, COLOR1, P0, EA, EB, P2, EG, EH, + // Case #126 + ST_QUA, COLOR0, P0, EA, EG, P7, + ST_POLY6, COLOR1, P1, P2, P3, P4, P5, P6, + ST_QUA, COLOR1, EA, P1, P6, EG, + // Case #127 + ST_TRI, COLOR0, EG, P7, EH, + ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P5, + ST_POLY5, COLOR1, P0, P5, P6, EG, EH, + // Case #128 + ST_POLY6, COLOR0, P0, P1, P2, P3, P4, EH, + ST_POLY5, COLOR0, P4, P5, P6, EG, EH, + ST_TRI, COLOR1, EG, P7, EH, + // Case #129 + ST_POLY6, COLOR0, EA, P1, P2, P3, P4, P5, + ST_QUA, COLOR0, EA, P5, P6, EG, + ST_QUA, COLOR1, P0, EA, EG, P7, + // Case #130 + ST_TRI, COLOR0, P0, EA, EH, + ST_POLY6, COLOR0, EB, P2, P3, P4, P5, P6, + ST_TRI, COLOR0, EB, P6, EG, + ST_POLY6, COLOR1, EA, P1, EB, EG, P7, EH, + // Case #131 + ST_POLY6, COLOR0, EB, P2, P3, P4, P5, P6, + ST_TRI, COLOR0, EB, P6, EG, + ST_POLY5, COLOR1, P0, P1, EB, EG, P7, + // Case #132 + ST_QUA, COLOR0, P0, P1, EB, EH, + ST_POLY6, COLOR0, EC, P3, P4, P5, P6, EG, + ST_POLY6, COLOR1, EB, P2, EC, EG, P7, EH, + // Case #133 + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR0, EC, P3, P4, P5, P6, EG, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, P7, + ST_TRI, COLOR1, EC, EG, P7, + // Case #134 + ST_TRI, COLOR0, P0, EA, EH, + ST_POLY6, COLOR0, EC, P3, P4, P5, P6, EG, + ST_POLY6, COLOR1, EA, P1, P2, EG, P7, EH, + ST_TRI, COLOR1, P2, EC, EG, + // Case #135 + ST_POLY6, COLOR0, EC, P3, P4, P5, P6, EG, + ST_POLY6, COLOR1, P0, P1, P2, EC, EG, P7, + // Case #136 + ST_POLY5, COLOR0, ED, P4, P5, P6, EG, + ST_POLY5, COLOR0, P0, P1, P2, EC, EH, + ST_POLY6, COLOR1, EC, P3, ED, EG, P7, EH, + // Case #137 + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY5, COLOR0, ED, P4, P5, P6, EG, + ST_POLY6, COLOR1, P0, EA, EC, P3, ED, P7, + ST_TRI, COLOR1, ED, EG, P7, + // Case #138 + ST_TRI, COLOR0, P0, EA, EH, + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY5, COLOR0, ED, P4, P5, P6, EG, + ST_POLY6, COLOR1, EA, P1, EB, EC, P7, EH, + ST_POLY5, COLOR1, EC, P3, ED, EG, P7, + // Case #139 + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY5, COLOR0, ED, P4, P5, P6, EG, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P7, + ST_QUA, COLOR1, P3, ED, EG, P7, + // Case #140 + ST_QUA, COLOR0, P0, P1, EB, EH, + ST_POLY5, COLOR0, ED, P4, P5, P6, EG, + ST_POLY6, COLOR1, EB, P2, P3, EG, P7, EH, + ST_TRI, COLOR1, P3, ED, EG, + // Case #141 + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY5, COLOR0, ED, P4, P5, P6, EG, + ST_POLY6, COLOR1, P0, EA, EB, P2, P3, P7, + ST_QUA, COLOR1, P3, ED, EG, P7, + // Case #142 + ST_TRI, COLOR0, P0, EA, EH, + ST_POLY5, COLOR0, ED, P4, P5, P6, EG, + ST_POLY6, COLOR1, EA, P1, P2, P3, P7, EH, + ST_QUA, COLOR1, P3, ED, EG, P7, + // Case #143 + ST_POLY5, COLOR0, ED, P4, P5, P6, EG, + ST_POLY6, COLOR1, P0, P1, P2, P3, ED, P7, + ST_TRI, COLOR1, ED, EG, P7, + // Case #144 + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY6, COLOR0, P0, P1, P2, P3, ED, EH, + ST_POLY6, COLOR1, ED, P4, EE, EG, P7, EH, + // Case #145 + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY5, COLOR0, EA, P1, P2, P3, ED, + ST_POLY6, COLOR1, P0, ED, P4, EE, EG, P7, + ST_TRI, COLOR1, P0, EA, ED, + // Case #146 + ST_TRI, COLOR0, P0, EA, EH, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY6, COLOR1, EA, P1, EB, ED, P7, EH, + ST_POLY5, COLOR1, ED, P4, EE, EG, P7, + // Case #147 + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY6, COLOR1, P0, P1, EB, ED, P4, P7, + ST_QUA, COLOR1, P4, EE, EG, P7, + // Case #148 + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR0, P0, P1, EB, EH, + ST_POLY6, COLOR1, P2, EC, ED, P4, EE, EG, + ST_POLY5, COLOR1, EB, P2, EG, P7, EH, + // Case #149 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, P7, + ST_POLY6, COLOR1, EC, ED, P4, EE, EG, P7, + // Case #150 + ST_TRI, COLOR0, P0, EA, EH, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY6, COLOR1, EA, P1, P2, EC, P7, EH, + ST_POLY6, COLOR1, EC, ED, P4, EE, EG, P7, + // Case #151 + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY6, COLOR1, P0, P1, P2, EC, ED, P7, + ST_POLY5, COLOR1, ED, P4, EE, EG, P7, + // Case #152 + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY5, COLOR0, P0, P1, P2, EC, EH, + ST_POLY6, COLOR1, P3, P4, EE, EG, P7, EH, + ST_TRI, COLOR1, EC, P3, EH, + // Case #153 + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P0, P3, P4, EE, EG, P7, + ST_QUA, COLOR1, P0, EA, EC, P3, + // Case #154 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, P0, EA, EH, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY6, COLOR1, EA, P1, EB, EC, P3, P4, + ST_POLY6, COLOR1, EA, P4, EE, EG, P7, EH, + // Case #155 + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P7, + ST_POLY5, COLOR1, P3, P4, EE, EG, P7, + // Case #156 + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_QUA, COLOR0, P0, P1, EB, EH, + ST_POLY6, COLOR1, P2, P3, P4, EE, EG, P7, + ST_QUA, COLOR1, EB, P2, P7, EH, + // Case #157 + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY6, COLOR1, P0, EA, EB, P2, P3, P4, + ST_POLY5, COLOR1, P0, P4, EE, EG, P7, + // Case #158 + ST_TRI, COLOR0, P0, EA, EH, + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY6, COLOR1, EA, P1, P2, P3, P4, EH, + ST_POLY5, COLOR1, P4, EE, EG, P7, EH, + // Case #159 + ST_QUA, COLOR0, EE, P5, P6, EG, + ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P7, + ST_QUA, COLOR1, P4, EE, EG, P7, + // Case #160 + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY6, COLOR0, P0, P1, P2, P3, P4, EH, + ST_TRI, COLOR0, P4, EE, EH, + ST_POLY6, COLOR1, EE, P5, EF, EG, P7, EH, + // Case #161 + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY6, COLOR0, EA, P1, P2, P3, P4, EE, + ST_POLY6, COLOR1, P0, EE, P5, EF, EG, P7, + ST_TRI, COLOR1, P0, EA, EE, + // Case #162 + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, P0, EA, EH, + ST_POLY5, COLOR0, EB, P2, P3, P4, EE, + ST_POLY6, COLOR1, EA, P5, EF, EG, P7, EH, + ST_POLY5, COLOR1, EA, P1, EB, EE, P5, + // Case #163 + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY5, COLOR0, EB, P2, P3, P4, EE, + ST_POLY6, COLOR1, P0, P1, P5, EF, EG, P7, + ST_QUA, COLOR1, P1, EB, EE, P5, + // Case #164 + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, P0, P1, EB, EH, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, EB, P5, EF, EG, P7, EH, + ST_POLY5, COLOR1, EB, P2, EC, EE, P5, + // Case #165 + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, P0, EA, P5, EF, EG, P7, + ST_POLY6, COLOR1, EA, EB, P2, EC, EE, P5, + // Case #166 + ST_TRI, COLOR0, P0, EA, EH, + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, EA, P1, P2, EG, P7, EH, + ST_POLY6, COLOR1, P2, EC, EE, P5, EF, EG, + // Case #167 + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, P0, P1, P2, EF, EG, P7, + ST_POLY5, COLOR1, P2, EC, EE, P5, EF, + // Case #168 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY5, COLOR0, P0, P1, P2, EC, EH, + ST_POLY6, COLOR1, P3, ED, EE, P5, EF, EG, + ST_POLY5, COLOR1, EC, P3, EG, P7, EH, + // Case #169 + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P0, EE, P5, EF, EG, P7, + ST_POLY6, COLOR1, P0, EA, EC, P3, ED, EE, + // Case #170 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, P0, EA, EH, + ST_POLY6, COLOR1, P1, EB, EC, P3, ED, EE, + ST_POLY6, COLOR1, P1, EE, P5, EF, EG, P7, + ST_QUA, COLOR1, EA, P1, P7, EH, + // Case #171 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P7, + ST_POLY6, COLOR1, P3, ED, EE, P5, EF, P7, + ST_TRI, COLOR1, EF, EG, P7, + // Case #172 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, P0, P1, EB, EH, + ST_POLY6, COLOR1, P2, P3, ED, EE, P5, EF, + ST_POLY6, COLOR1, EB, P2, EF, EG, P7, EH, + // Case #173 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY6, COLOR1, P0, EA, EB, P2, P3, P7, + ST_POLY6, COLOR1, P3, ED, EE, P5, EF, P7, + ST_TRI, COLOR1, EF, EG, P7, + // Case #174 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, P0, EA, EH, + ST_POLY6, COLOR1, P1, P2, P3, ED, EE, P5, + ST_POLY6, COLOR1, P1, P5, EF, EG, P7, EH, + ST_TRI, COLOR1, EA, P1, EH, + // Case #175 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY6, COLOR1, P0, P1, P2, P3, ED, P7, + ST_POLY6, COLOR1, ED, EE, P5, EF, EG, P7, + // Case #176 + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY6, COLOR0, P0, P1, P2, P3, ED, EH, + ST_POLY6, COLOR1, P4, P5, EF, EG, P7, EH, + ST_TRI, COLOR1, ED, P4, EH, + // Case #177 + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY5, COLOR0, EA, P1, P2, P3, ED, + ST_POLY6, COLOR1, P0, P4, P5, EF, EG, P7, + ST_QUA, COLOR1, P0, EA, ED, P4, + // Case #178 + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, P0, EA, EH, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, P4, P5, EF, EG, P7, EH, + ST_POLY6, COLOR1, EA, P1, EB, ED, P4, EH, + // Case #179 + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, P0, P1, P5, EF, EG, P7, + ST_POLY5, COLOR1, P1, EB, ED, P4, P5, + // Case #180 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, P0, P1, EB, EH, + ST_POLY6, COLOR1, P2, EC, ED, P4, P5, EF, + ST_POLY6, COLOR1, EB, P2, EF, EG, P7, EH, + // Case #181 + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY6, COLOR1, P0, P4, P5, EF, EG, P7, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, P4, + ST_TRI, COLOR1, EC, ED, P4, + // Case #182 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, P0, EA, EH, + ST_POLY6, COLOR1, P1, P2, EC, ED, P4, P5, + ST_POLY6, COLOR1, P1, P5, EF, EG, P7, EH, + ST_TRI, COLOR1, EA, P1, EH, + // Case #183 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY6, COLOR1, P0, P1, P2, EC, ED, P7, + ST_POLY6, COLOR1, ED, P4, P5, EF, EG, P7, + // Case #184 + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY5, COLOR0, P0, P1, P2, EC, EH, + ST_POLY6, COLOR1, P3, P4, P5, EF, EG, P7, + ST_QUA, COLOR1, EC, P3, P7, EH, + // Case #185 + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P3, P4, P5, EF, EG, P7, + ST_POLY5, COLOR1, P0, EA, EC, P3, P7, + // Case #186 + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, P0, EA, EH, + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR1, P3, P4, P5, EF, EG, P7, + ST_POLY6, COLOR1, EA, P1, EB, P3, P7, EH, + ST_TRI, COLOR1, EB, EC, P3, + // Case #187 + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR1, P3, P4, P5, EF, EG, P7, + ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P7, + // Case #188 + ST_TRI, COLOR0, EF, P6, EG, + ST_QUA, COLOR0, P0, P1, EB, EH, + ST_POLY6, COLOR1, P2, P3, P4, P5, EF, EG, + ST_POLY5, COLOR1, EB, P2, EG, P7, EH, + // Case #189 + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR1, P2, P3, P4, P5, EF, EG, + ST_POLY6, COLOR1, P0, EA, EB, P2, EG, P7, + // Case #190 + ST_TRI, COLOR0, EF, P6, EG, + ST_TRI, COLOR0, P0, EA, EH, + ST_POLY6, COLOR1, P1, P2, P3, P4, P5, EF, + ST_POLY6, COLOR1, EA, P1, EF, EG, P7, EH, + // Case #191 + ST_TRI, COLOR0, EF, P6, EG, + ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P7, + ST_POLY5, COLOR1, P4, P5, EF, EG, P7, + // Case #192 + ST_POLY6, COLOR0, P0, P1, P2, P3, P4, EH, + ST_QUA, COLOR0, P4, P5, EF, EH, + ST_QUA, COLOR1, EF, P6, P7, EH, + // Case #193 + ST_POLY6, COLOR0, EA, P1, P2, P3, P4, P5, + ST_TRI, COLOR0, EA, P5, EF, + ST_POLY5, COLOR1, P0, EA, EF, P6, P7, + // Case #194 + ST_TRI, COLOR0, P0, EA, EH, + ST_POLY6, COLOR0, EB, P2, P3, P4, P5, EF, + ST_POLY6, COLOR1, EA, P1, EB, P6, P7, EH, + ST_TRI, COLOR1, EB, EF, P6, + // Case #195 + ST_POLY6, COLOR0, EB, P2, P3, P4, P5, EF, + ST_POLY6, COLOR1, P0, P1, EB, EF, P6, P7, + // Case #196 + ST_QUA, COLOR0, P0, P1, EB, EH, + ST_POLY5, COLOR0, EC, P3, P4, P5, EF, + ST_POLY6, COLOR1, EB, P2, EC, P6, P7, EH, + ST_TRI, COLOR1, EC, EF, P6, + // Case #197 + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY5, COLOR0, EC, P3, P4, P5, EF, + ST_POLY6, COLOR1, P0, EA, EB, P2, P6, P7, + ST_QUA, COLOR1, P2, EC, EF, P6, + // Case #198 + ST_TRI, COLOR0, P0, EA, EH, + ST_POLY5, COLOR0, EC, P3, P4, P5, EF, + ST_POLY6, COLOR1, EA, P1, P2, P6, P7, EH, + ST_QUA, COLOR1, P2, EC, EF, P6, + // Case #199 + ST_POLY5, COLOR0, EC, P3, P4, P5, EF, + ST_POLY6, COLOR1, P0, P1, P2, EC, P6, P7, + ST_TRI, COLOR1, EC, EF, P6, + // Case #200 + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY5, COLOR0, P0, P1, P2, EC, EH, + ST_POLY6, COLOR1, EC, P3, ED, EF, P6, P7, + ST_TRI, COLOR1, EC, P7, EH, + // Case #201 + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, P0, EA, EC, P3, P6, P7, + ST_QUA, COLOR1, P3, ED, EF, P6, + // Case #202 + ST_TRI, COLOR0, P0, EA, EH, + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, EA, P1, EB, P6, P7, EH, + ST_POLY6, COLOR1, EB, EC, P3, ED, EF, P6, + // Case #203 + ST_TRI, COLOR0, EB, P2, EC, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, P0, P1, EB, EC, P6, P7, + ST_POLY5, COLOR1, EC, P3, ED, EF, P6, + // Case #204 + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_QUA, COLOR0, P0, P1, EB, EH, + ST_POLY6, COLOR1, P2, P3, ED, EF, P6, P7, + ST_QUA, COLOR1, EB, P2, P7, EH, + // Case #205 + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, P0, EA, EB, P2, P6, P7, + ST_POLY5, COLOR1, P2, P3, ED, EF, P6, + // Case #206 + ST_TRI, COLOR0, P0, EA, EH, + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, EA, P1, P2, P3, P7, EH, + ST_POLY5, COLOR1, P3, ED, EF, P6, P7, + // Case #207 + ST_QUA, COLOR0, ED, P4, P5, EF, + ST_POLY6, COLOR1, P0, P1, P2, P3, P6, P7, + ST_QUA, COLOR1, P3, ED, EF, P6, + // Case #208 + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY6, COLOR0, P0, P1, P2, P3, ED, EH, + ST_POLY6, COLOR1, ED, P4, EE, EF, P6, P7, + ST_TRI, COLOR1, ED, P7, EH, + // Case #209 + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY5, COLOR0, EA, P1, P2, P3, ED, + ST_POLY6, COLOR1, P0, P4, EE, EF, P6, P7, + ST_QUA, COLOR1, P0, EA, ED, P4, + // Case #210 + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, P0, EA, EH, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, P4, EE, EF, P6, P7, EH, + ST_POLY6, COLOR1, EA, P1, EB, ED, P4, EH, + // Case #211 + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, P0, P1, EE, EF, P6, P7, + ST_POLY5, COLOR1, P1, EB, ED, P4, EE, + // Case #212 + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, P0, P1, EB, EH, + ST_POLY6, COLOR1, ED, P4, EE, EF, P6, P7, + ST_POLY6, COLOR1, EB, P2, EC, ED, P7, EH, + // Case #213 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY6, COLOR1, P0, EA, EB, P2, P6, P7, + ST_POLY6, COLOR1, P2, EC, ED, P4, EE, P6, + ST_TRI, COLOR1, EE, EF, P6, + // Case #214 + ST_TRI, COLOR0, P0, EA, EH, + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY6, COLOR1, EA, P1, P2, P6, P7, EH, + ST_POLY6, COLOR1, P2, EC, ED, P4, EE, P6, + ST_TRI, COLOR1, EE, EF, P6, + // Case #215 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY6, COLOR1, P0, P1, P2, EC, P6, P7, + ST_POLY6, COLOR1, EC, ED, P4, EE, EF, P6, + // Case #216 + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY5, COLOR0, P0, P1, P2, EC, EH, + ST_POLY6, COLOR1, P3, P4, EE, EF, P6, P7, + ST_QUA, COLOR1, EC, P3, P7, EH, + // Case #217 + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P0, P4, EE, EF, P6, P7, + ST_POLY5, COLOR1, P0, EA, EC, P3, P4, + // Case #218 + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, P0, EA, EH, + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR1, P3, P4, EE, EF, P6, P7, + ST_POLY6, COLOR1, EA, P1, EB, P3, P7, EH, + ST_TRI, COLOR1, EB, EC, P3, + // Case #219 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY6, COLOR1, P0, P1, EB, EC, P6, P7, + ST_POLY6, COLOR1, EC, P3, P4, EE, EF, P6, + // Case #220 + ST_TRI, COLOR0, EE, P5, EF, + ST_QUA, COLOR0, P0, P1, EB, EH, + ST_POLY6, COLOR1, P2, P3, P4, EE, EF, P6, + ST_POLY5, COLOR1, EB, P2, P6, P7, EH, + // Case #221 + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR1, P2, P3, P4, EE, EF, P6, + ST_POLY6, COLOR1, P0, EA, EB, P2, P6, P7, + // Case #222 + ST_TRI, COLOR0, EE, P5, EF, + ST_TRI, COLOR0, P0, EA, EH, + ST_POLY6, COLOR1, P1, P2, P3, P4, EE, EF, + ST_POLY6, COLOR1, EA, P1, EF, P6, P7, EH, + // Case #223 + ST_TRI, COLOR0, EE, P5, EF, + ST_POLY6, COLOR1, P0, P1, P2, P3, P6, P7, + ST_POLY5, COLOR1, P3, P4, EE, EF, P6, + // Case #224 + ST_POLY6, COLOR0, P0, P1, P2, P3, P4, EH, + ST_TRI, COLOR0, P4, EE, EH, + ST_POLY5, COLOR1, EE, P5, P6, P7, EH, + // Case #225 + ST_POLY6, COLOR0, EA, P1, P2, P3, P4, EE, + ST_POLY6, COLOR1, P0, EA, EE, P5, P6, P7, + // Case #226 + ST_TRI, COLOR0, P0, EA, EH, + ST_POLY5, COLOR0, EB, P2, P3, P4, EE, + ST_POLY6, COLOR1, EA, P1, P5, P6, P7, EH, + ST_QUA, COLOR1, P1, EB, EE, P5, + // Case #227 + ST_POLY5, COLOR0, EB, P2, P3, P4, EE, + ST_POLY6, COLOR1, P0, P1, EB, P5, P6, P7, + ST_TRI, COLOR1, EB, EE, P5, + // Case #228 + ST_QUA, COLOR0, P0, P1, EB, EH, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, EB, P2, P5, P6, P7, EH, + ST_QUA, COLOR1, P2, EC, EE, P5, + // Case #229 + ST_TRI, COLOR0, EA, P1, EB, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, P0, EA, EB, P5, P6, P7, + ST_POLY5, COLOR1, EB, P2, EC, EE, P5, + // Case #230 + ST_TRI, COLOR0, P0, EA, EH, + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, EA, P1, P5, P6, P7, EH, + ST_POLY5, COLOR1, P1, P2, EC, EE, P5, + // Case #231 + ST_QUA, COLOR0, EC, P3, P4, EE, + ST_POLY6, COLOR1, P0, P1, P2, P5, P6, P7, + ST_QUA, COLOR1, P2, EC, EE, P5, + // Case #232 + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY5, COLOR0, P0, P1, P2, EC, EH, + ST_POLY6, COLOR1, P3, ED, EE, P5, P6, P7, + ST_QUA, COLOR1, EC, P3, P7, EH, + // Case #233 + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P0, ED, EE, P5, P6, P7, + ST_POLY5, COLOR1, P0, EA, EC, P3, ED, + // Case #234 + ST_TRI, COLOR0, P0, EA, EH, + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY6, COLOR1, EA, P1, P5, P6, P7, EH, + ST_POLY6, COLOR1, P1, EB, EC, P3, ED, P5, + ST_TRI, COLOR1, ED, EE, P5, + // Case #235 + ST_TRI, COLOR0, EB, P2, EC, + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY6, COLOR1, P0, P1, EB, P5, P6, P7, + ST_POLY6, COLOR1, EB, EC, P3, ED, EE, P5, + // Case #236 + ST_TRI, COLOR0, ED, P4, EE, + ST_QUA, COLOR0, P0, P1, EB, EH, + ST_POLY6, COLOR1, P3, ED, EE, P5, P6, P7, + ST_POLY5, COLOR1, EB, P2, P3, P7, EH, + // Case #237 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY6, COLOR1, P0, EA, EB, P5, P6, P7, + ST_POLY6, COLOR1, EB, P2, P3, ED, EE, P5, + // Case #238 + ST_TRI, COLOR0, ED, P4, EE, + ST_TRI, COLOR0, P0, EA, EH, + ST_POLY6, COLOR1, P1, P2, P3, ED, EE, P5, + ST_POLY6, COLOR1, EA, P1, P5, P6, P7, EH, + // Case #239 + ST_TRI, COLOR0, ED, P4, EE, + ST_POLY6, COLOR1, P0, P1, P2, P5, P6, P7, + ST_POLY5, COLOR1, P2, P3, ED, EE, P5, + // Case #240 + ST_POLY6, COLOR0, P0, P1, P2, P3, ED, EH, + ST_POLY6, COLOR1, ED, P4, P5, P6, P7, EH, + // Case #241 + ST_POLY5, COLOR0, EA, P1, P2, P3, ED, + ST_POLY6, COLOR1, P0, EA, P4, P5, P6, P7, + ST_TRI, COLOR1, EA, ED, P4, + // Case #242 + ST_TRI, COLOR0, P0, EA, EH, + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, EA, P4, P5, P6, P7, EH, + ST_POLY5, COLOR1, EA, P1, EB, ED, P4, + // Case #243 + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_POLY6, COLOR1, P0, P1, P4, P5, P6, P7, + ST_QUA, COLOR1, P1, EB, ED, P4, + // Case #244 + ST_TRI, COLOR0, EC, P3, ED, + ST_QUA, COLOR0, P0, P1, EB, EH, + ST_POLY6, COLOR1, EC, ED, P4, P5, P6, P7, + ST_POLY5, COLOR1, EB, P2, EC, P7, EH, + // Case #245 + ST_TRI, COLOR0, EA, P1, EB, + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY6, COLOR1, P0, EA, P4, P5, P6, P7, + ST_POLY6, COLOR1, EA, EB, P2, EC, ED, P4, + // Case #246 + ST_TRI, COLOR0, P0, EA, EH, + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY6, COLOR1, EA, P4, P5, P6, P7, EH, + ST_POLY6, COLOR1, EA, P1, P2, EC, ED, P4, + // Case #247 + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY6, COLOR1, P0, P1, P4, P5, P6, P7, + ST_POLY5, COLOR1, P1, P2, EC, ED, P4, + // Case #248 + ST_POLY5, COLOR0, P0, P1, P2, EC, EH, + ST_POLY6, COLOR1, P3, P4, P5, P6, P7, EH, + ST_TRI, COLOR1, EC, P3, EH, + // Case #249 + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_POLY6, COLOR1, P0, P3, P4, P5, P6, P7, + ST_QUA, COLOR1, P0, EA, EC, P3, + // Case #250 + ST_TRI, COLOR0, P0, EA, EH, + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR1, P3, P4, P5, P6, P7, EH, + ST_POLY6, COLOR1, EA, P1, EB, EC, P3, EH, + // Case #251 + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR1, P0, P3, P4, P5, P6, P7, + ST_POLY5, COLOR1, P0, P1, EB, EC, P3, + // Case #252 + ST_QUA, COLOR0, P0, P1, EB, EH, + ST_POLY6, COLOR1, P2, P3, P4, P5, P6, P7, + ST_QUA, COLOR1, EB, P2, P7, EH, + // Case #253 + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR1, P2, P3, P4, P5, P6, P7, + ST_POLY5, COLOR1, P0, EA, EB, P2, P7, + // Case #254 + ST_TRI, COLOR0, P0, EA, EH, + ST_POLY6, COLOR1, P1, P2, P3, P4, P5, P6, + ST_POLY5, COLOR1, EA, P1, P6, P7, EH, + // Case #255 + ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P5, + ST_QUA, COLOR1, P0, P5, P6, P7 +}; +// clang-format on + +const size_t clipShapesPoly8Size = sizeof(clipShapesPoly8) / sizeof(unsigned char); + +} // namespace tables +} // namespace clipping +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/polygonalClipCasesQua.cpp b/src/axom/bump/clipping/polygonalClipCasesQua.cpp new file mode 100644 index 0000000000..f6144fc74d --- /dev/null +++ b/src/axom/bump/clipping/polygonalClipCasesQua.cpp @@ -0,0 +1,80 @@ +// Copyright (c) 2017-2025, Lawrence Livermore National Security, LLC and +// other Axom Project Developers. See the top-level LICENSE file for details. +// +// SPDX-License-Identifier: (BSD-3-Clause) +#include "ClipCases.h" + +namespace axom { +namespace bump { +namespace clipping { +namespace tables { + +int numClipCasesQua = 16; + +int numClipShapesQua[] = { + 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 3, 2, 2, 2, 2, 1 +}; + +int startClipShapesQua[] = { + 0, 6, 18, 30, 42, 54, 72, 84, 96, 108, 120, 138, 150, 162, 174, 186 +}; + +// clang-format off +unsigned char clipShapesQua[] = { + // Case #0 + ST_QUA, COLOR0, P0, P1, P2, P3, + // Case #1 + ST_POLY5, COLOR0, EA, P1, P2, P3, ED, + ST_TRI, COLOR1, P0, EA, ED, + // Case #2 + ST_POLY5, COLOR0, P0, EA, EB, P2, P3, + ST_TRI, COLOR1, EA, P1, EB, + // Case #3 + ST_QUA, COLOR0, EB, P2, P3, ED, + ST_QUA, COLOR1, P0, P1, EB, ED, + // Case #4 + ST_POLY5, COLOR0, P0, P1, EB, EC, P3, + ST_TRI, COLOR1, EB, P2, EC, + // Case #5 + ST_TRI, COLOR0, EC, P3, ED, + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY6, COLOR1, P0, EA, EB, P2, EC, ED, + // Case #6 + ST_QUA, COLOR0, P0, EA, EC, P3, + ST_QUA, COLOR1, EA, P1, P2, EC, + // Case #7 + ST_TRI, COLOR0, EC, P3, ED, + ST_POLY5, COLOR1, P0, P1, P2, EC, ED, + // Case #8 + ST_POLY5, COLOR0, P0, P1, P2, EC, ED, + ST_TRI, COLOR1, EC, P3, ED, + // Case #9 + ST_QUA, COLOR0, EA, P1, P2, EC, + ST_QUA, COLOR1, P0, EA, EC, P3, + // Case #10 + ST_TRI, COLOR0, P0, EA, ED, + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY6, COLOR1, EA, P1, EB, EC, P3, ED, + // Case #11 + ST_TRI, COLOR0, EB, P2, EC, + ST_POLY5, COLOR1, P0, P1, EB, EC, P3, + // Case #12 + ST_QUA, COLOR0, P0, P1, EB, ED, + ST_QUA, COLOR1, EB, P2, P3, ED, + // Case #13 + ST_TRI, COLOR0, EA, P1, EB, + ST_POLY5, COLOR1, P0, EA, EB, P2, P3, + // Case #14 + ST_TRI, COLOR0, P0, EA, ED, + ST_POLY5, COLOR1, EA, P1, P2, P3, ED, + // Case #15 + ST_QUA, COLOR1, P0, P1, P2, P3 +}; +// clang-format on + +const size_t clipShapesQuaSize = sizeof(clipShapesQua) / sizeof(unsigned char); + +} // namespace tables +} // namespace clipping +} // namespace bump +} // namespace axom From 4cf4e9ae4c4571d7d6ceeb3295b3ad9dd0f3e381 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Fri, 5 Dec 2025 11:53:52 -0800 Subject: [PATCH 14/28] Use traits more for Blueprint shape names. --- src/axom/bump/MergeMeshes.hpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/axom/bump/MergeMeshes.hpp b/src/axom/bump/MergeMeshes.hpp index eb0ca81e3c..dedb2e7fe2 100644 --- a/src/axom/bump/MergeMeshes.hpp +++ b/src/axom/bump/MergeMeshes.hpp @@ -482,7 +482,7 @@ class MergeMeshes { // Check the shape types. std::map shape_map = buildShapeMap(inputs); - if(shape_map.find("polyhedral") != shape_map.end()) + if(shape_map.find(views::PolyhedronTraits::name()) != shape_map.end()) { // At least one input was polyhedral. Force all polyhedral output. mergeTopologiesPolyhedral(inputs, n_options, output); @@ -516,10 +516,10 @@ class MergeMeshes // If there are polygon shapes then assume that the rest of the shapes // are 2D and should be promoted to polygons. - if(shape_map.find("polygonal") != shape_map.end() && shape_map.size() > 1) + if(shape_map.find(views::PolygonTraits::name()) != shape_map.end() && shape_map.size() > 1) { shape_map.clear(); - shape_map["polygonal"] = axom::bump::views::shapeNameToID("polygonal"); + shape_map[views::PolygonTraits::name()] = views::PolygonTraits::id(); } conduit::Node *n_newTopoPtr = nullptr; @@ -527,7 +527,6 @@ class MergeMeshes for(axom::IndexType i = 0; i < n; i++) { const conduit::Node &n_srcTopo = getTopology(inputs[i]); - const std::string srcShape = n_srcTopo.fetch_existing("elements/shape").as_string(); const conduit::Node &n_srcConn = n_srcTopo.fetch_existing("elements/connectivity"); const conduit::Node &n_srcSizes = n_srcTopo.fetch_existing("elements/sizes"); @@ -703,28 +702,28 @@ class MergeMeshes views::IndexNode_to_ArrayView(n_elem_conn, [&](auto connView) { using ConnectivityType = typename decltype(connView)::value_type; - if(shape == "tet") + if(shape == views::TetTraits::name()) { using TetShape = views::TetShape; auto topologyView = views::make_unstructured_single_shape_topology::view(n_srcTopo); makePolyhedralMesh(topologyView, n_srcTopo, n_phTopo); } - else if(shape == "pyramid") + else if(shape == views::PyramidTraits::name()) { using PyramidShape = views::PyramidShape; auto topologyView = views::make_unstructured_single_shape_topology::view(n_srcTopo); makePolyhedralMesh(topologyView, n_srcTopo, n_phTopo); } - else if(shape == "wedge") + else if(shape == views::WedgeTraits::name()) { using WedgeShape = views::WedgeShape; auto topologyView = views::make_unstructured_single_shape_topology::view(n_srcTopo); makePolyhedralMesh(topologyView, n_srcTopo, n_phTopo); } - else if(shape == "hex") + else if(shape == views::HexTraits::name()) { using HexShape = views::HexShape; auto topologyView = From 61566356c62c9027801d1751a71c45ebab918ab5 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Fri, 5 Dec 2025 16:40:35 -0800 Subject: [PATCH 15/28] Only pass fields that are on the relevant topology in EquiZ so debug iterations make valid files. --- src/axom/mir/EquiZAlgorithm.hpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/axom/mir/EquiZAlgorithm.hpp b/src/axom/mir/EquiZAlgorithm.hpp index 0f1986478f..eb28616fa6 100644 --- a/src/axom/mir/EquiZAlgorithm.hpp +++ b/src/axom/mir/EquiZAlgorithm.hpp @@ -567,7 +567,11 @@ class EquiZAlgorithm : public axom::mir::MIRAlgorithm n_InputFields.reset(); for(conduit::index_t i = 0; i < n_fields.number_of_children(); i++) { - n_InputFields[n_fields[i].name()].set_external(n_fields[i]); + const conduit::Node &n_field = n_fields[i]; + if(n_field["topology"].as_string() == n_newTopo.name()) + { + n_InputFields[n_fields[i].name()].set_external(n_fields[i]); + } } makeNodeCenteredVFs(n_topo, n_coordset, n_InputFields, mixedMats); makeWorkingFields(n_topo, n_InputFields, cleanMats, mixedMats); From 5e222dcce5d9f326ddd12b46457810a7d3569438 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Fri, 5 Dec 2025 16:41:00 -0800 Subject: [PATCH 16/28] Check MIR output in saveMesh. --- src/axom/mir/MIRAlgorithm.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/axom/mir/MIRAlgorithm.cpp b/src/axom/mir/MIRAlgorithm.cpp index 9cf525f716..9073b59c06 100644 --- a/src/axom/mir/MIRAlgorithm.cpp +++ b/src/axom/mir/MIRAlgorithm.cpp @@ -178,6 +178,13 @@ void MIRAlgorithm::saveMesh(const conduit::Node &n_mesh, const std::string &file conduit::Node n_mesh_host; axom::bump::utilities::copy(n_mesh_host, n_mesh); + // Check the mesh we're saving. + conduit::Node info; + if(!conduit::blueprint::mesh::verify(n_mesh_host, info)) + { + printNode(n_mesh_host); + } + conduit::relay::io::save(n_mesh_host, filebase + ".yaml", "yaml"); #if defined(AXOM_USE_HDF5) conduit::relay::io::blueprint::save_mesh(n_mesh_host, filebase, "hdf5"); From 29440ae3e95ee7757f66bfc18910bc3a368ac4e0 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Fri, 5 Dec 2025 16:45:49 -0800 Subject: [PATCH 17/28] Fixed polygon support issues. --- src/axom/bump/clipping/ClipField.hpp | 312 ++++++++++++++------------- 1 file changed, 160 insertions(+), 152 deletions(-) diff --git a/src/axom/bump/clipping/ClipField.hpp b/src/axom/bump/clipping/ClipField.hpp index f771c4a96c..049ed1fb02 100644 --- a/src/axom/bump/clipping/ClipField.hpp +++ b/src/axom/bump/clipping/ClipField.hpp @@ -197,33 +197,6 @@ constexpr IndexType maxEdgeForDimension(int dim, IndexType numPoints) return maxEdge; } -template -inline AXOM_HOST_DEVICE int unique_count(const IdType *values, int n) -{ - IdType v[MAXSIZE]; - // Start off with one unique element - int nv = 1; - v[0] = values[0]; - // Scan the rest - for(int j = 1; j < n; j++) - { - int fi = -1; - for(int i = 0; i < nv; i++) - { - if(values[j] == v[i]) - { - fi = i; - break; - } - } - if(fi == -1) - { - v[nv++] = values[j]; - } - } - return nv; -} - //------------------------------------------------------------------------------ // NOTE - These types were pulled out of ClipField so they could be used in // some code that was moved out to handle degeneracies using partial @@ -247,85 +220,49 @@ struct FragmentData }; //------------------------------------------------------------------------------ -#if defined(AXOM_CLIP_FILTER_DEGENERATES) -/*! - * \brief Replace data in the input Conduit node with a denser version using the mask. - * - * \tparam ExecSpace The execution space. - * \tparam DataView The type of data view that is operated on. - * - * \param n_src The Conduit node that contains the data. - * \param srcView A view that wraps the input Conduit data. - * \param newSize The new array size. - * \param maskView The mask for valid data elements. - * \param maskOffsetsView The offsets view to indicate where to write the new data. - */ -template -DataView filter(conduit::Node &n_src, - DataView srcView, - axom::IndexType newSize, - axom::ArrayView maskView, - axom::ArrayView maskOffsetsView) -{ - using value_type = typename DataView::value_type; - namespace utils = axom::bump::utilities; - - // Get the ID of a Conduit allocator that will allocate through Axom with device allocator allocatorID. - utils::ConduitAllocateThroughAxom c2a; - const int conduitAllocatorID = c2a.getConduitAllocatorID(); - - conduit::Node n_values; - n_values.set_allocator(conduitAllocatorID); - n_values.set(conduit::DataType(utils::cpp2conduit::id, newSize)); - auto valuesView = utils::make_array_view(n_values); - const auto nValues = maskView.size(); - axom::for_all( - nValues, - AXOM_LAMBDA(axom::IndexType index) { - if(maskView[index] > 0) - { - const auto destIndex = maskOffsetsView[index]; - valuesView[destIndex] = srcView[index]; - } - }); - - n_src.swap(n_values); - return utils::make_array_view(n_src); -} - -/// NOTE - Use partial specialization (instead of the cleaner "if constexpr") -/// for now to implement some 2D-specific behavior. - /*! - * \brief Base template for degenerate removal. + * \brief Base template for handling fragments when we make new connectivity. */ template -struct DegenerateHandler +struct FragmentOperations { /*! - * \brief Set the size for the current fragment. + * \brief Add the current fragment. * - * \param fragmentsView The number of fragments for the szIndex zone. + * \param fragment The current fragment to add. * \param connView The new connectivity. - * \param sizesView The new mesh sizes. - * \param szIndex The zone index currently being processed. - * \param nidsThisFragment The number of node ids in the current fragment. - * \param sizeIndex The write index for the sizes to output. - * \param outputIndex The write index for the offsets to output. + * \param size The size for the current fragment. + * \param offset The offset for the current fragment. + * \param shape The shape for the current fragment. + * \param color The color for the current fragment. + * \param point_2_new A map to determine the new node id from the current node id. + * \param[out] outputIndex The offset in the connView where we're writing fragment data. * - * \return True if the fragment is degenerate, false otherwise. + * \return True if the fragment was added, false otherwise. */ AXOM_HOST_DEVICE - static bool setSize(axom::ArrayView AXOM_UNUSED_PARAM(fragmentsView), - axom::ArrayView AXOM_UNUSED_PARAM(connView), - axom::ArrayView sizesView, - axom::IndexType AXOM_UNUSED_PARAM(szIndex), - int nIdsThisFragment, - int sizeIndex, - int &AXOM_UNUSED_PARAM(outputIndex)) + static bool addFragment(const axom::bump::clipping::TableView::TableDataView &fragment, + axom::ArrayView connView, + ConnectivityType &size, + ConnectivityType &offset, + ConnectivityType &shape, + int &color, + const ConnectivityType *point_2_new, + int &outputIndex) { - sizesView[sizeIndex] = nIdsThisFragment; - return false; + // Output the nodes used in this zone. + const int fragmentSize = fragment.size(); + const auto fragmentShape = fragment[0]; + offset = outputIndex; + for(int i = 2; i < fragmentSize; i++) + { + connView[outputIndex++] = point_2_new[fragment[i]]; + } + const auto nIdsThisFragment = fragmentSize - 2; + size = nIdsThisFragment; + shape = detail::ST_Index_to_ShapeID(fragmentShape); + color = fragment[1] - axom::bump::clipping::tables::COLOR0; + return true; } /*! @@ -372,56 +309,128 @@ struct DegenerateHandler } }; +#if defined(AXOM_CLIP_FILTER_DEGENERATES) +/*! + * \brief Replace data in the input Conduit node with a denser version using the mask. + * + * \tparam ExecSpace The execution space. + * \tparam DataView The type of data view that is operated on. + * + * \param n_src The Conduit node that contains the data. + * \param srcView A view that wraps the input Conduit data. + * \param newSize The new array size. + * \param maskView The mask for valid data elements. + * \param maskOffsetsView The offsets view to indicate where to write the new data. + */ +template +DataView filter(conduit::Node &n_src, + DataView srcView, + axom::IndexType newSize, + axom::ArrayView maskView, + axom::ArrayView maskOffsetsView) +{ + using value_type = typename DataView::value_type; + namespace utils = axom::bump::utilities; + + // Get the ID of a Conduit allocator that will allocate through Axom with device allocator allocatorID. + utils::ConduitAllocateThroughAxom c2a; + const int conduitAllocatorID = c2a.getConduitAllocatorID(); + + conduit::Node n_values; + n_values.set_allocator(conduitAllocatorID); + n_values.set(conduit::DataType(utils::cpp2conduit::id, newSize)); + auto valuesView = utils::make_array_view(n_values); + const auto nValues = maskView.size(); + axom::for_all( + nValues, + AXOM_LAMBDA(axom::IndexType index) { + if(maskView[index] > 0) + { + const auto destIndex = maskOffsetsView[index]; + valuesView[destIndex] = srcView[index]; + } + }); + + n_src.swap(n_values); + return utils::make_array_view(n_src); +} + /*! - * \brief Partial specialization that implements some degeneracy handling for 2D meshes. + * \brief Partial specialization that implements adding fragments for 2D meshes with + * some degeneracy handling. This specialization is only enabled for 2D meshes + * when AXOM_CLIP_FILTER_DEGENERATES is enabled. */ template -struct DegenerateHandler<2, ExecSpace, ConnectivityType> +struct FragmentOperations<2, ExecSpace, ConnectivityType> { using reduce_policy = typename axom::execution_space::reduce_policy; /*! - * \brief Set the size for the current fragment. + * \brief Add the current fragment. * - * \param fragmentsView The number of fragments for the szIndex zone. + * \param fragment The current fragment to add. * \param connView The new connectivity. - * \param sizesView The new mesh sizes. - * \param szIndex The zone index currently being processed. - * \param nidsThisFragment The number of node ids in the current fragment. - * \param sizeIndex The write index for the sizes to output. - * \param outputIndex The write index for the offsets to output. + * \param size The size for the current fragment. + * \param offset The offset for the current fragment. + * \param shape The shape for the current fragment. + * \param color The color for the current fragment. + * \param point_2_new A map to determine the new node id from the current node id. + * \param[out] outputIndex The offset in the connView where we're writing fragment data. * - * \return True if the fragment is degenerate, false otherwise. + * \return True if the fragment was added, false otherwise. */ AXOM_HOST_DEVICE - static bool setSize(axom::ArrayView fragmentsView, - axom::ArrayView connView, - axom::ArrayView sizesView, - axom::IndexType szIndex, - int nIdsThisFragment, - int sizeIndex, - int &outputIndex) + static bool addFragment(const axom::bump::clipping::TableView::TableDataView &fragment, + axom::ArrayView connView, + ConnectivityType &size, + ConnectivityType &offset, + ConnectivityType &shape, + int &color, + const ConnectivityType *point_2_new, + int &outputIndex) { - const int connStart = outputIndex - nIdsThisFragment; + constexpr int NotFound = -1; + // Output the nodes used in this zone. + const int fragmentSize = fragment.size(); + const auto fragmentShape = fragment[0]; + int nIdsThisFragment = 0; + for(int i = 2; i < fragmentSize; i++) + { + const auto nodeId = point_2_new[fragment[i]]; + // In a 2D shape, skip adding the node if we've added it before. + int foundIndex = NotFound; + for(int j = 0; j < nIdsThisFragment && foundIndex == NotFound; j++) + { + if(connView[outputIndex + j] == nodeId) + { + foundIndex = j; + } + } + if(foundIndex == NotFound) + { + connView[outputIndex + nIdsThisFragment] = nodeId; + nIdsThisFragment++; + } + } - // Check for degenerate - const int nUniqueIds = - detail::unique_count(connView.data() + connStart, nIdsThisFragment); - const bool thisFragmentDegenerate = nUniqueIds < (nIdsThisFragment - 1); + const bool added = nIdsThisFragment >= 3; + offset = outputIndex; - // Rewind the outputIndex so we don't emit it in the connectivity. - if(thisFragmentDegenerate) - { - outputIndex = connStart; + // If we're adding the fragment, record non-zero size. + size = added ? nIdsThisFragment : 0; - // There is one less fragment than we're expecting in the output. - fragmentsView[szIndex] -= 1; - } + // Determine the shape from the number of ids we admitted. + shape = detail::ST_Index_to_ShapeID(fragmentShape); + shape = (nIdsThisFragment == 3) ? static_cast(views::Tri_ShapeID) : shape; + shape = (nIdsThisFragment == 4) ? static_cast(views::Quad_ShapeID) : shape; + shape = (nIdsThisFragment > 4) ? static_cast(views::Polygon_ShapeID) : shape; + + color = fragment[1] - axom::bump::clipping::tables::COLOR0; - // Mark empty size. - sizesView[sizeIndex] = thisFragmentDegenerate ? 0 : nIdsThisFragment; + // Move the connectivity output index forward if we added the fragment. + outputIndex += added ? nIdsThisFragment : 0; - return thisFragmentDegenerate; + return added; } /*! @@ -1706,6 +1715,7 @@ class ClipField { AXOM_ANNOTATE_SCOPE("makeTopology"); using namespace axom::bump::clipping::tables; + using FragmentOps = detail::FragmentOperations; const auto selection = getSelection(opts); AXOM_ANNOTATE_BEGIN("allocation"); @@ -1867,6 +1877,7 @@ class ClipField int sizeIndex = fragmentData.m_fragmentOffsetsView[szIndex]; #if defined(AXOM_CLIP_FILTER_DEGENERATES) bool degenerates = false; + int thisFragments = 0; #endif // Iterate over the selected fragments and emit connectivity for them. const auto clipcase = zoneData.m_clipCasesView[szIndex]; @@ -1884,36 +1895,33 @@ class ClipField { if(detail::shapeIsSelected(fragment[1], selection)) { - // Output the nodes used in this zone. - const int fragmentSize = fragment.size(); - offsetsView[sizeIndex] = outputIndex; - for(int i = 2; i < fragmentSize; i++) - { - connView[outputIndex++] = point_2_new[fragment[i]]; - } - const auto nIdsThisFragment = fragmentSize - 2; + [[maybe_unused]] const bool addedFragment = FragmentOps::addFragment(fragment, + connView, + sizesView[sizeIndex], + offsetsView[sizeIndex], + shapesView[sizeIndex], + colorView[sizeIndex], + point_2_new, + outputIndex); + sizeIndex++; + #if defined(AXOM_CLIP_FILTER_DEGENERATES) - // Set the output zone size, checking to see whether it is degenerate. - degenerates |= - detail::DegenerateHandler::setSize( - fragmentData.m_fragmentsView, - connView, - sizesView, - szIndex, - nIdsThisFragment, - sizeIndex, - outputIndex); -#else - sizesView[sizeIndex] = nIdsThisFragment; + thisFragments += addedFragment ? 1 : 0; + + // Record whether we have had any degenerates. + degenerates |= !addedFragment; #endif - shapesView[sizeIndex] = detail::ST_Index_to_ShapeID(fragmentShape); - colorView[sizeIndex] = fragment[1] - COLOR0; - sizeIndex++; } } } #if defined(AXOM_CLIP_FILTER_DEGENERATES) + // If there were degenerates then update the fragment count. + if(degenerates) + { + fragmentData.m_fragmentsView[szIndex] = thisFragments; + } + // Reduce overall whether there are degenerates. degenerates_reduce |= degenerates; #endif @@ -1939,7 +1947,7 @@ class ClipField // Filter out shapes that were marked as zero-size, adjusting connectivity and other arrays. if(degenerates_reduce.get()) { - detail::DegenerateHandler::filterZeroSizes( + FragmentOps::filterZeroSizes( fragmentData, n_sizes, n_offsets, @@ -1978,7 +1986,7 @@ class ClipField #if defined(AXOM_CLIP_FILTER_DEGENERATES) // Handle some quad->tri degeneracies, depending on dimension. shapesUsed = - detail::DegenerateHandler::quadtri( + FragmentOps::quadtri( shapesUsed, connView, sizesView, From baa76a07147e7f1de9e68e327c36cc1bdd6f04ee Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Fri, 5 Dec 2025 16:46:29 -0800 Subject: [PATCH 18/28] Improved polygonal clipping tables. --- src/axom/bump/clipping/convert_clip_cases.py | 13 +- .../bump/clipping/polygonalClipCasesPoly5.cpp | 19 +- .../bump/clipping/polygonalClipCasesPoly6.cpp | 103 ++--- .../bump/clipping/polygonalClipCasesPoly7.cpp | 220 ++++------ .../bump/clipping/polygonalClipCasesPoly8.cpp | 388 ++++++------------ 5 files changed, 255 insertions(+), 488 deletions(-) diff --git a/src/axom/bump/clipping/convert_clip_cases.py b/src/axom/bump/clipping/convert_clip_cases.py index 8c0edf0893..b37000b1c6 100644 --- a/src/axom/bump/clipping/convert_clip_cases.py +++ b/src/axom/bump/clipping/convert_clip_cases.py @@ -80,11 +80,16 @@ def combine_polygons(polygons, max_edges=8): if shared_edge: new_poly = merge_polygons(polygons[i], polygons[j], shared_edge) if len(new_poly) <= max_edges: + # We should sort the points so merging works better + new_poly = tuple(sort_points(new_poly, 8)) + #print("Created ", new_poly, "from", polygons[i], polygons[j]) new_polygons.append(new_poly) skip.update([i, j]) merged = True changed = True break + #else: + # print("Could not combine polygons due to length!", polygons[i], polygons[j]) if not merged: new_polygons.append(polygons[i]) polygons = new_polygons @@ -143,13 +148,13 @@ def convert_clip_cases(filename, name, npts): nptsToShapeName[advance[k] - 2] = k sizes = read_array_cc(filename, f"numClipShapes{name}", True) - print(sizes) + #print(sizes) offsets = read_array_cc(filename, f"startClipShapes{name}", True) - print(offsets) + #print(offsets) shapes = read_array_cc(filename, f"clipShapes{name}", False) - print(shapes) + #print(shapes) numCases = len(sizes) @@ -173,7 +178,7 @@ def convert_clip_cases(filename, name, npts): color0.append(shapeTokens[2:]) else: color1.append(shapeTokens[2:]) - print(" ", shapeTokens) + #print(" ", shapeTokens) offset = offset + shapeSize outOffsets[ci] = outOffset diff --git a/src/axom/bump/clipping/polygonalClipCasesPoly5.cpp b/src/axom/bump/clipping/polygonalClipCasesPoly5.cpp index c9b98854ff..212d1f36ed 100644 --- a/src/axom/bump/clipping/polygonalClipCasesPoly5.cpp +++ b/src/axom/bump/clipping/polygonalClipCasesPoly5.cpp @@ -12,11 +12,11 @@ namespace tables { int numClipCasesPoly5 = 32; int numClipShapesPoly5[] = { - 1, 2, 2, 2, 2, 3, 2, 2, 2, 3, 3, 4, 2, 4, 2, 2, 2, 2, 3, 2, 3, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 1 + 1, 2, 2, 2, 2, 3, 2, 2, 2, 3, 3, 3, 2, 3, 2, 2, 2, 2, 3, 2, 3, 3, 3, 2, 2, 2, 3, 2, 2, 2, 2, 1 }; int startClipShapesPoly5[] = { - 0, 7, 20, 33, 46, 59, 78, 91, 104, 117, 136, 155, 178, 191, 214, 227, 240, 253, 266, 285, 298, 317, 340, 363, 376, 389, 402, 425, 438, 451, 464, 477 + 0, 7, 20, 33, 46, 59, 78, 91, 104, 117, 136, 155, 174, 187, 206, 219, 232, 245, 258, 277, 290, 309, 328, 347, 360, 373, 386, 405, 418, 431, 444, 457 }; // clang-format off @@ -59,16 +59,14 @@ unsigned char clipShapesPoly5[] = { // Case #11 ST_TRI, COLOR0, EB, P2, EC, ST_TRI, COLOR0, ED, P4, EE, - ST_POLY6, COLOR1, P0, P1, EB, EC, P3, ED, - ST_TRI, COLOR1, P0, ED, EE, + ST_POLY7, COLOR1, P0, P1, EB, EC, P3, ED, EE, // Case #12 ST_POLY5, COLOR0, P0, P1, EB, ED, P4, ST_QUA, COLOR1, EB, P2, P3, ED, // Case #13 ST_TRI, COLOR0, ED, P4, EE, ST_TRI, COLOR0, EA, P1, EB, - ST_POLY6, COLOR1, P0, EA, P2, P3, ED, EE, - ST_TRI, COLOR1, EA, EB, P2, + ST_POLY7, COLOR1, P0, EA, EB, P2, P3, ED, EE, // Case #14 ST_QUA, COLOR0, P0, EA, ED, P4, ST_POLY5, COLOR1, EA, P1, P2, P3, ED, @@ -95,13 +93,11 @@ unsigned char clipShapesPoly5[] = { // Case #21 ST_TRI, COLOR0, EA, P1, EB, ST_TRI, COLOR0, EC, P3, ED, - ST_POLY6, COLOR1, P0, EA, EB, P2, EC, P4, - ST_TRI, COLOR1, EC, ED, P4, + ST_POLY7, COLOR1, P0, EA, EB, P2, EC, ED, P4, // Case #22 ST_TRI, COLOR0, EC, P3, ED, ST_TRI, COLOR0, P0, EA, EE, - ST_POLY6, COLOR1, P1, P2, EC, ED, P4, EE, - ST_TRI, COLOR1, EA, P1, EE, + ST_POLY7, COLOR1, EA, P1, P2, EC, ED, P4, EE, // Case #23 ST_TRI, COLOR0, EC, P3, ED, ST_POLY6, COLOR1, P0, P1, P2, EC, ED, P4, @@ -114,8 +110,7 @@ unsigned char clipShapesPoly5[] = { // Case #26 ST_TRI, COLOR0, P0, EA, EE, ST_TRI, COLOR0, EB, P2, EC, - ST_POLY6, COLOR1, EA, P1, EB, P3, P4, EE, - ST_TRI, COLOR1, EB, EC, P3, + ST_POLY7, COLOR1, EA, P1, EB, EC, P3, P4, EE, // Case #27 ST_TRI, COLOR0, EB, P2, EC, ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P4, diff --git a/src/axom/bump/clipping/polygonalClipCasesPoly6.cpp b/src/axom/bump/clipping/polygonalClipCasesPoly6.cpp index 9254a91a63..3463a2761d 100644 --- a/src/axom/bump/clipping/polygonalClipCasesPoly6.cpp +++ b/src/axom/bump/clipping/polygonalClipCasesPoly6.cpp @@ -12,11 +12,11 @@ namespace tables { int numClipCasesPoly6 = 64; int numClipShapesPoly6[] = { - 1, 3, 3, 2, 3, 3, 2, 2, 3, 3, 3, 4, 2, 4, 2, 2, 3, 3, 3, 4, 3, 5, 4, 4, 2, 4, 4, 4, 2, 4, 2, 3, 3, 2, 3, 2, 3, 4, 4, 2, 3, 4, 5, 4, 4, 4, 4, 3, 2, 2, 4, 2, 4, 4, 4, 3, 2, 2, 4, 3, 2, 3, 3, 1 + 1, 2, 2, 2, 2, 3, 2, 2, 2, 3, 3, 3, 2, 3, 2, 2, 2, 3, 3, 3, 3, 5, 3, 3, 2, 3, 3, 3, 2, 3, 2, 2, 2, 2, 3, 2, 3, 3, 3, 2, 3, 3, 5, 3, 3, 3, 3, 2, 2, 2, 3, 2, 3, 3, 3, 2, 2, 2, 3, 2, 2, 2, 2, 1 }; int startClipShapesPoly6[] = { - 0, 8, 26, 44, 58, 76, 96, 110, 124, 142, 162, 182, 206, 220, 244, 258, 272, 290, 310, 330, 354, 374, 404, 428, 452, 466, 490, 514, 538, 552, 576, 590, 608, 626, 640, 660, 674, 694, 718, 742, 756, 776, 800, 830, 854, 878, 902, 926, 944, 958, 972, 996, 1010, 1034, 1058, 1082, 1100, 1114, 1128, 1152, 1170, 1184, 1202, 1220 + 0, 8, 22, 36, 50, 64, 84, 98, 112, 126, 146, 166, 186, 200, 220, 234, 248, 262, 282, 302, 322, 342, 372, 392, 412, 426, 446, 466, 486, 500, 520, 534, 548, 562, 576, 596, 610, 630, 650, 670, 684, 704, 724, 754, 774, 794, 814, 834, 848, 862, 876, 896, 910, 930, 950, 970, 984, 998, 1012, 1032, 1046, 1060, 1074, 1088 }; // clang-format off @@ -24,19 +24,16 @@ unsigned char clipShapesPoly6[] = { // Case #0 ST_POLY6, COLOR0, P0, P1, P2, P3, P4, P5, // Case #1 - ST_POLY6, COLOR0, EA, P1, P2, P3, P4, P5, - ST_TRI, COLOR0, EA, P5, EF, + ST_POLY7, COLOR0, EA, P1, P2, P3, P4, P5, EF, ST_TRI, COLOR1, P0, EA, EF, // Case #2 - ST_POLY6, COLOR0, P0, EB, P2, P3, P4, P5, - ST_TRI, COLOR0, P0, EA, EB, + ST_POLY7, COLOR0, P0, EA, EB, P2, P3, P4, P5, ST_TRI, COLOR1, EA, P1, EB, // Case #3 ST_POLY6, COLOR0, EB, P2, P3, P4, P5, EF, ST_QUA, COLOR1, P0, P1, EB, EF, // Case #4 - ST_POLY6, COLOR0, P0, P1, EC, P3, P4, P5, - ST_TRI, COLOR0, P1, EB, EC, + ST_POLY7, COLOR0, P0, P1, EB, EC, P3, P4, P5, ST_TRI, COLOR1, EB, P2, EC, // Case #5 ST_TRI, COLOR0, EA, P1, EB, @@ -49,8 +46,7 @@ unsigned char clipShapesPoly6[] = { ST_POLY5, COLOR0, EC, P3, P4, P5, EF, ST_POLY5, COLOR1, P0, P1, P2, EC, EF, // Case #8 - ST_POLY6, COLOR0, P0, P1, P2, ED, P4, P5, - ST_TRI, COLOR0, P2, EC, ED, + ST_POLY7, COLOR0, P0, P1, P2, EC, ED, P4, P5, ST_TRI, COLOR1, EC, P3, ED, // Case #9 ST_QUA, COLOR0, EA, P1, P2, EC, @@ -63,16 +59,14 @@ unsigned char clipShapesPoly6[] = { // Case #11 ST_TRI, COLOR0, EB, P2, EC, ST_QUA, COLOR0, ED, P4, P5, EF, - ST_POLY6, COLOR1, P0, P1, EB, EC, P3, ED, - ST_TRI, COLOR1, P0, ED, EF, + ST_POLY7, COLOR1, P0, P1, EB, EC, P3, ED, EF, // Case #12 ST_POLY6, COLOR0, P0, P1, EB, ED, P4, P5, ST_QUA, COLOR1, EB, P2, P3, ED, // Case #13 ST_TRI, COLOR0, EA, P1, EB, ST_QUA, COLOR0, ED, P4, P5, EF, - ST_POLY6, COLOR1, P0, EA, EB, P2, P3, EF, - ST_TRI, COLOR1, P3, ED, EF, + ST_POLY7, COLOR1, P0, EA, EB, P2, P3, ED, EF, // Case #14 ST_POLY5, COLOR0, P0, EA, ED, P4, P5, ST_POLY5, COLOR1, EA, P1, P2, P3, ED, @@ -80,8 +74,7 @@ unsigned char clipShapesPoly6[] = { ST_QUA, COLOR0, ED, P4, P5, EF, ST_POLY6, COLOR1, P0, P1, P2, P3, ED, EF, // Case #16 - ST_POLY6, COLOR0, P0, P1, P2, P3, EE, P5, - ST_TRI, COLOR0, P3, ED, EE, + ST_POLY7, COLOR0, P0, P1, P2, P3, ED, EE, P5, ST_TRI, COLOR1, ED, P4, EE, // Case #17 ST_TRI, COLOR0, EE, P5, EF, @@ -94,8 +87,7 @@ unsigned char clipShapesPoly6[] = { // Case #19 ST_TRI, COLOR0, EE, P5, EF, ST_QUA, COLOR0, EB, P2, P3, ED, - ST_POLY6, COLOR1, P0, P1, ED, P4, EE, EF, - ST_TRI, COLOR1, P1, EB, ED, + ST_POLY7, COLOR1, P0, P1, EB, ED, P4, EE, EF, // Case #20 ST_TRI, COLOR0, EC, P3, ED, ST_POLY5, COLOR0, P0, P1, EB, EE, P5, @@ -109,49 +101,41 @@ unsigned char clipShapesPoly6[] = { // Case #22 ST_TRI, COLOR0, EC, P3, ED, ST_QUA, COLOR0, P0, EA, EE, P5, - ST_POLY6, COLOR1, P1, P2, EC, ED, P4, EE, - ST_TRI, COLOR1, EA, P1, EE, + ST_POLY7, COLOR1, EA, P1, P2, EC, ED, P4, EE, // Case #23 ST_TRI, COLOR0, EC, P3, ED, ST_TRI, COLOR0, EE, P5, EF, - ST_POLY6, COLOR1, P0, P1, P2, EC, ED, P4, - ST_QUA, COLOR1, P0, P4, EE, EF, + ST_POLY8, COLOR1, P0, P1, P2, EC, ED, P4, EE, EF, // Case #24 ST_POLY6, COLOR0, P0, P1, P2, EC, EE, P5, ST_QUA, COLOR1, EC, P3, P4, EE, // Case #25 ST_TRI, COLOR0, EE, P5, EF, ST_QUA, COLOR0, EA, P1, P2, EC, - ST_POLY6, COLOR1, P0, EA, P3, P4, EE, EF, - ST_TRI, COLOR1, EA, EC, P3, + ST_POLY7, COLOR1, P0, EA, EC, P3, P4, EE, EF, // Case #26 ST_TRI, COLOR0, EB, P2, EC, ST_QUA, COLOR0, P0, EA, EE, P5, - ST_POLY6, COLOR1, EA, P1, EB, EC, P3, P4, - ST_TRI, COLOR1, EA, P4, EE, + ST_POLY7, COLOR1, EA, P1, EB, EC, P3, P4, EE, // Case #27 ST_TRI, COLOR0, EB, P2, EC, ST_TRI, COLOR0, EE, P5, EF, - ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P4, - ST_QUA, COLOR1, P0, P4, EE, EF, + ST_POLY8, COLOR1, P0, P1, EB, EC, P3, P4, EE, EF, // Case #28 ST_POLY5, COLOR0, P0, P1, EB, EE, P5, ST_POLY5, COLOR1, EB, P2, P3, P4, EE, // Case #29 ST_TRI, COLOR0, EE, P5, EF, ST_TRI, COLOR0, EA, P1, EB, - ST_POLY6, COLOR1, P0, P2, P3, P4, EE, EF, - ST_QUA, COLOR1, P0, EA, EB, P2, + ST_POLY8, COLOR1, P0, EA, EB, P2, P3, P4, EE, EF, // Case #30 ST_QUA, COLOR0, P0, EA, EE, P5, ST_POLY6, COLOR1, EA, P1, P2, P3, P4, EE, // Case #31 ST_TRI, COLOR0, EE, P5, EF, - ST_POLY6, COLOR1, P0, P1, P2, P3, P4, EE, - ST_TRI, COLOR1, P0, EE, EF, + ST_POLY7, COLOR1, P0, P1, P2, P3, P4, EE, EF, // Case #32 - ST_POLY6, COLOR0, P0, P1, P2, P3, P4, EF, - ST_TRI, COLOR0, P4, EE, EF, + ST_POLY7, COLOR0, P0, P1, P2, P3, P4, EE, EF, ST_TRI, COLOR1, EE, P5, EF, // Case #33 ST_POLY6, COLOR0, EA, P1, P2, P3, P4, EE, @@ -170,13 +154,11 @@ unsigned char clipShapesPoly6[] = { // Case #37 ST_TRI, COLOR0, EA, P1, EB, ST_QUA, COLOR0, EC, P3, P4, EE, - ST_POLY6, COLOR1, P0, EA, EB, P2, EC, P5, - ST_TRI, COLOR1, EC, EE, P5, + ST_POLY7, COLOR1, P0, EA, EB, P2, EC, EE, P5, // Case #38 ST_TRI, COLOR0, P0, EA, EF, ST_QUA, COLOR0, EC, P3, P4, EE, - ST_POLY6, COLOR1, EA, P1, P2, EE, P5, EF, - ST_TRI, COLOR1, P2, EC, EE, + ST_POLY7, COLOR1, EA, P1, P2, EC, EE, P5, EF, // Case #39 ST_QUA, COLOR0, EC, P3, P4, EE, ST_POLY6, COLOR1, P0, P1, P2, EC, EE, P5, @@ -187,8 +169,7 @@ unsigned char clipShapesPoly6[] = { // Case #41 ST_TRI, COLOR0, ED, P4, EE, ST_QUA, COLOR0, EA, P1, P2, EC, - ST_POLY6, COLOR1, P0, EC, P3, ED, EE, P5, - ST_TRI, COLOR1, P0, EA, EC, + ST_POLY7, COLOR1, P0, EA, EC, P3, ED, EE, P5, // Case #42 ST_TRI, COLOR0, EB, P2, EC, ST_TRI, COLOR0, ED, P4, EE, @@ -198,27 +179,22 @@ unsigned char clipShapesPoly6[] = { // Case #43 ST_TRI, COLOR0, EB, P2, EC, ST_TRI, COLOR0, ED, P4, EE, - ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P5, - ST_QUA, COLOR1, P3, ED, EE, P5, + ST_POLY8, COLOR1, P0, P1, EB, EC, P3, ED, EE, P5, // Case #44 ST_TRI, COLOR0, ED, P4, EE, ST_QUA, COLOR0, P0, P1, EB, EF, - ST_POLY6, COLOR1, P2, P3, ED, EE, P5, EF, - ST_TRI, COLOR1, EB, P2, EF, + ST_POLY7, COLOR1, EB, P2, P3, ED, EE, P5, EF, // Case #45 ST_TRI, COLOR0, ED, P4, EE, ST_TRI, COLOR0, EA, P1, EB, - ST_POLY6, COLOR1, P0, P2, P3, ED, EE, P5, - ST_QUA, COLOR1, P0, EA, EB, P2, + ST_POLY8, COLOR1, P0, EA, EB, P2, P3, ED, EE, P5, // Case #46 ST_TRI, COLOR0, ED, P4, EE, ST_TRI, COLOR0, P0, EA, EF, - ST_POLY6, COLOR1, P1, P2, P3, ED, EE, P5, - ST_QUA, COLOR1, EA, P1, P5, EF, + ST_POLY8, COLOR1, EA, P1, P2, P3, ED, EE, P5, EF, // Case #47 ST_TRI, COLOR0, ED, P4, EE, - ST_POLY6, COLOR1, P0, P1, P2, P3, ED, P5, - ST_TRI, COLOR1, ED, EE, P5, + ST_POLY7, COLOR1, P0, P1, P2, P3, ED, EE, P5, // Case #48 ST_POLY6, COLOR0, P0, P1, P2, P3, ED, EF, ST_QUA, COLOR1, ED, P4, P5, EF, @@ -228,30 +204,25 @@ unsigned char clipShapesPoly6[] = { // Case #50 ST_TRI, COLOR0, P0, EA, EF, ST_QUA, COLOR0, EB, P2, P3, ED, - ST_POLY6, COLOR1, EA, P1, EB, P4, P5, EF, - ST_TRI, COLOR1, EB, ED, P4, + ST_POLY7, COLOR1, EA, P1, EB, ED, P4, P5, EF, // Case #51 ST_QUA, COLOR0, EB, P2, P3, ED, ST_POLY6, COLOR1, P0, P1, EB, ED, P4, P5, // Case #52 ST_TRI, COLOR0, EC, P3, ED, ST_QUA, COLOR0, P0, P1, EB, EF, - ST_POLY6, COLOR1, EB, P2, EC, ED, P4, P5, - ST_TRI, COLOR1, EB, P5, EF, + ST_POLY7, COLOR1, EB, P2, EC, ED, P4, P5, EF, // Case #53 ST_TRI, COLOR0, EA, P1, EB, ST_TRI, COLOR0, EC, P3, ED, - ST_POLY6, COLOR1, P0, EA, EB, P2, P4, P5, - ST_QUA, COLOR1, P2, EC, ED, P4, + ST_POLY8, COLOR1, P0, EA, EB, P2, EC, ED, P4, P5, // Case #54 ST_TRI, COLOR0, EC, P3, ED, ST_TRI, COLOR0, P0, EA, EF, - ST_POLY6, COLOR1, P1, P2, EC, ED, P4, P5, - ST_QUA, COLOR1, EA, P1, P5, EF, + ST_POLY8, COLOR1, EA, P1, P2, EC, ED, P4, P5, EF, // Case #55 ST_TRI, COLOR0, EC, P3, ED, - ST_POLY6, COLOR1, P0, P1, P2, EC, P4, P5, - ST_TRI, COLOR1, EC, ED, P4, + ST_POLY7, COLOR1, P0, P1, P2, EC, ED, P4, P5, // Case #56 ST_POLY5, COLOR0, P0, P1, P2, EC, EF, ST_POLY5, COLOR1, EC, P3, P4, P5, EF, @@ -261,23 +232,19 @@ unsigned char clipShapesPoly6[] = { // Case #58 ST_TRI, COLOR0, P0, EA, EF, ST_TRI, COLOR0, EB, P2, EC, - ST_POLY6, COLOR1, EA, P1, P3, P4, P5, EF, - ST_QUA, COLOR1, P1, EB, EC, P3, + ST_POLY8, COLOR1, EA, P1, EB, EC, P3, P4, P5, EF, // Case #59 ST_TRI, COLOR0, EB, P2, EC, - ST_POLY6, COLOR1, P0, P1, EB, P3, P4, P5, - ST_TRI, COLOR1, EB, EC, P3, + ST_POLY7, COLOR1, P0, P1, EB, EC, P3, P4, P5, // Case #60 ST_QUA, COLOR0, P0, P1, EB, EF, ST_POLY6, COLOR1, EB, P2, P3, P4, P5, EF, // Case #61 ST_TRI, COLOR0, EA, P1, EB, - ST_POLY6, COLOR1, P0, EA, P2, P3, P4, P5, - ST_TRI, COLOR1, EA, EB, P2, + ST_POLY7, COLOR1, P0, EA, EB, P2, P3, P4, P5, // Case #62 ST_TRI, COLOR0, P0, EA, EF, - ST_POLY6, COLOR1, P1, P2, P3, P4, P5, EF, - ST_TRI, COLOR1, EA, P1, EF, + ST_POLY7, COLOR1, EA, P1, P2, P3, P4, P5, EF, // Case #63 ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P5 }; diff --git a/src/axom/bump/clipping/polygonalClipCasesPoly7.cpp b/src/axom/bump/clipping/polygonalClipCasesPoly7.cpp index d05754493b..bf58ffde91 100644 --- a/src/axom/bump/clipping/polygonalClipCasesPoly7.cpp +++ b/src/axom/bump/clipping/polygonalClipCasesPoly7.cpp @@ -12,48 +12,41 @@ namespace tables { int numClipCasesPoly7 = 128; int numClipShapesPoly7[] = { - 2, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 4, 3, 4, 2, 2, 3, 3, 3, 4, 3, 5, 4, 4, 3, 4, 4, 4, 2, 4, 2, 3, 3, 3, 3, 4, 3, 5, 4, 4, 3, 5, 5, 5, 4, 5, 4, 4, 3, 4, 4, 4, 4, 5, 4, 4, 2, 4, 4, 4, 2, 4, 3, 3, 3, 3, 3, 2, 3, 4, 4, 2, 3, 4, 5, 4, 4, 4, 4, 3, 3, 4, 5, 4, 5, 5, 5, 4, 4, 4, 5, 4, 4, 4, 4, 3, 3, 2, 4, 2, 4, 4, 4, 3, 4, 4, 5, 4, 4, 4, 4, 3, 2, 2, 4, 3, 4, 4, 4, 3, 2, 3, 4, 3, 3, 3, 3, 2 + 1, 2, 2, 2, 2, 3, 2, 2, 2, 3, 3, 3, 2, 3, 2, 2, 2, 3, 3, 3, 3, 5, 3, 3, 2, 3, 3, 3, 2, 3, 2, 2, 2, 3, 3, 3, 3, 5, 3, 3, 3, 5, 5, 5, 3, 5, 3, 4, 2, 3, 3, 3, 3, 5, 3, 4, 2, 3, 3, 4, 2, 4, 2, 2, 2, 2, 3, 2, 3, 3, 3, 2, 3, 3, 5, 3, 3, 3, 3, 2, 3, 3, 5, 3, 5, 5, 5, 4, 3, 3, 5, 4, 3, 4, 4, 2, 2, 2, 3, 2, 3, 3, 3, 2, 3, 3, 5, 4, 3, 4, 4, 2, 2, 2, 3, 2, 3, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 1 }; int startClipShapesPoly7[] = { - 0, 13, 32, 51, 70, 89, 110, 129, 144, 163, 184, 205, 230, 249, 274, 289, 304, 323, 344, 365, 390, 411, 442, 467, 492, 511, 536, 561, 586, 601, 626, 641, 660, 679, 700, 721, 746, 767, 798, 823, 848, 869, 900, 931, 962, 987, 1018, 1043, 1068, 1087, 1112, 1137, 1162, 1187, 1218, 1243, 1268, 1283, 1308, 1333, 1358, 1373, 1398, 1417, 1436, 1455, 1474, 1495, 1510, 1531, 1556, 1581, 1596, 1617, 1642, 1673, 1698, 1723, 1748, 1773, 1792, 1813, 1838, 1869, 1894, 1925, 1956, 1987, 2012, 2037, 2062, 2093, 2118, 2143, 2168, 2193, 2212, 2231, 2246, 2271, 2286, 2311, 2336, 2361, 2380, 2405, 2430, 2461, 2486, 2511, 2536, 2561, 2580, 2595, 2610, 2635, 2654, 2679, 2704, 2729, 2748, 2763, 2782, 2807, 2826, 2845, 2864, 2883 + 0, 9, 24, 39, 54, 69, 90, 105, 120, 135, 156, 177, 198, 213, 234, 249, 264, 279, 300, 321, 342, 363, 394, 415, 436, 451, 472, 493, 514, 529, 550, 565, 580, 595, 616, 637, 658, 679, 710, 731, 752, 773, 804, 835, 866, 887, 918, 939, 964, 979, 1000, 1021, 1042, 1063, 1094, 1115, 1140, 1155, 1176, 1197, 1222, 1237, 1262, 1277, 1292, 1307, 1322, 1343, 1358, 1379, 1400, 1421, 1436, 1457, 1478, 1509, 1530, 1551, 1572, 1593, 1608, 1629, 1650, 1681, 1702, 1733, 1764, 1795, 1820, 1841, 1862, 1893, 1918, 1939, 1964, 1989, 2004, 2019, 2034, 2055, 2070, 2091, 2112, 2133, 2148, 2169, 2190, 2221, 2246, 2267, 2292, 2317, 2332, 2347, 2362, 2383, 2398, 2419, 2444, 2469, 2484, 2499, 2514, 2539, 2554, 2569, 2584, 2599 }; // clang-format off unsigned char clipShapesPoly7[] = { // Case #0 - ST_POLY6, COLOR0, P0, P1, P2, P3, P4, P5, - ST_TRI, COLOR0, P0, P5, P6, + ST_POLY7, COLOR0, P0, P1, P2, P3, P4, P5, P6, // Case #1 - ST_POLY6, COLOR0, EA, P1, P2, P3, P4, P5, - ST_QUA, COLOR0, EA, P5, P6, EG, + ST_POLY8, COLOR0, EA, P1, P2, P3, P4, P5, P6, EG, ST_TRI, COLOR1, P0, EA, EG, // Case #2 - ST_POLY6, COLOR0, EB, P2, P3, P4, P5, P6, - ST_QUA, COLOR0, P0, EA, EB, P6, + ST_POLY8, COLOR0, P0, EA, EB, P2, P3, P4, P5, P6, ST_TRI, COLOR1, EA, P1, EB, // Case #3 - ST_POLY6, COLOR0, EB, P2, P3, P4, P5, P6, - ST_TRI, COLOR0, EB, P6, EG, + ST_POLY7, COLOR0, EB, P2, P3, P4, P5, P6, EG, ST_QUA, COLOR1, P0, P1, EB, EG, // Case #4 - ST_POLY6, COLOR0, P0, EC, P3, P4, P5, P6, - ST_QUA, COLOR0, P0, P1, EB, EC, + ST_POLY8, COLOR0, P0, P1, EB, EC, P3, P4, P5, P6, ST_TRI, COLOR1, EB, P2, EC, // Case #5 ST_TRI, COLOR0, EA, P1, EB, ST_POLY6, COLOR0, EC, P3, P4, P5, P6, EG, ST_POLY6, COLOR1, P0, EA, EB, P2, EC, EG, // Case #6 - ST_POLY6, COLOR0, P0, EC, P3, P4, P5, P6, - ST_TRI, COLOR0, P0, EA, EC, + ST_POLY7, COLOR0, P0, EA, EC, P3, P4, P5, P6, ST_QUA, COLOR1, EA, P1, P2, EC, // Case #7 ST_POLY6, COLOR0, EC, P3, P4, P5, P6, EG, ST_POLY5, COLOR1, P0, P1, P2, EC, EG, // Case #8 - ST_POLY6, COLOR0, P0, P1, ED, P4, P5, P6, - ST_QUA, COLOR0, P1, P2, EC, ED, + ST_POLY8, COLOR0, P0, P1, P2, EC, ED, P4, P5, P6, ST_TRI, COLOR1, EC, P3, ED, // Case #9 ST_QUA, COLOR0, EA, P1, P2, EC, @@ -66,17 +59,14 @@ unsigned char clipShapesPoly7[] = { // Case #11 ST_TRI, COLOR0, EB, P2, EC, ST_POLY5, COLOR0, ED, P4, P5, P6, EG, - ST_POLY6, COLOR1, P0, P1, EB, EC, P3, ED, - ST_TRI, COLOR1, P0, ED, EG, + ST_POLY7, COLOR1, P0, P1, EB, EC, P3, ED, EG, // Case #12 - ST_POLY6, COLOR0, P0, P1, ED, P4, P5, P6, - ST_TRI, COLOR0, P1, EB, ED, + ST_POLY7, COLOR0, P0, P1, EB, ED, P4, P5, P6, ST_QUA, COLOR1, EB, P2, P3, ED, // Case #13 ST_TRI, COLOR0, EA, P1, EB, ST_POLY5, COLOR0, ED, P4, P5, P6, EG, - ST_POLY6, COLOR1, P0, EA, EB, P2, P3, EG, - ST_TRI, COLOR1, P3, ED, EG, + ST_POLY7, COLOR1, P0, EA, EB, P2, P3, ED, EG, // Case #14 ST_POLY6, COLOR0, P0, EA, ED, P4, P5, P6, ST_POLY5, COLOR1, EA, P1, P2, P3, ED, @@ -84,8 +74,7 @@ unsigned char clipShapesPoly7[] = { ST_POLY5, COLOR0, ED, P4, P5, P6, EG, ST_POLY6, COLOR1, P0, P1, P2, P3, ED, EG, // Case #16 - ST_POLY6, COLOR0, P0, P1, P2, EE, P5, P6, - ST_QUA, COLOR0, P2, P3, ED, EE, + ST_POLY8, COLOR0, P0, P1, P2, P3, ED, EE, P5, P6, ST_TRI, COLOR1, ED, P4, EE, // Case #17 ST_QUA, COLOR0, EE, P5, P6, EG, @@ -98,8 +87,7 @@ unsigned char clipShapesPoly7[] = { // Case #19 ST_QUA, COLOR0, EB, P2, P3, ED, ST_QUA, COLOR0, EE, P5, P6, EG, - ST_POLY6, COLOR1, P0, P1, EB, ED, P4, EE, - ST_TRI, COLOR1, P0, EE, EG, + ST_POLY7, COLOR1, P0, P1, EB, ED, P4, EE, EG, // Case #20 ST_TRI, COLOR0, EC, P3, ED, ST_POLY6, COLOR0, P0, P1, EB, EE, P5, P6, @@ -113,50 +101,41 @@ unsigned char clipShapesPoly7[] = { // Case #22 ST_TRI, COLOR0, EC, P3, ED, ST_POLY5, COLOR0, P0, EA, EE, P5, P6, - ST_POLY6, COLOR1, P1, P2, EC, ED, P4, EE, - ST_TRI, COLOR1, EA, P1, EE, + ST_POLY7, COLOR1, EA, P1, P2, EC, ED, P4, EE, // Case #23 ST_TRI, COLOR0, EC, P3, ED, ST_QUA, COLOR0, EE, P5, P6, EG, - ST_POLY6, COLOR1, P0, P1, P2, EC, ED, P4, - ST_QUA, COLOR1, P0, P4, EE, EG, + ST_POLY8, COLOR1, P0, P1, P2, EC, ED, P4, EE, EG, // Case #24 - ST_POLY6, COLOR0, P0, P1, P2, EE, P5, P6, - ST_TRI, COLOR0, P2, EC, EE, + ST_POLY7, COLOR0, P0, P1, P2, EC, EE, P5, P6, ST_QUA, COLOR1, EC, P3, P4, EE, // Case #25 ST_QUA, COLOR0, EE, P5, P6, EG, ST_QUA, COLOR0, EA, P1, P2, EC, - ST_POLY6, COLOR1, P0, EA, P3, P4, EE, EG, - ST_TRI, COLOR1, EA, EC, P3, + ST_POLY7, COLOR1, P0, EA, EC, P3, P4, EE, EG, // Case #26 ST_TRI, COLOR0, EB, P2, EC, ST_POLY5, COLOR0, P0, EA, EE, P5, P6, - ST_POLY6, COLOR1, EA, P1, EB, EC, P3, P4, - ST_TRI, COLOR1, EA, P4, EE, + ST_POLY7, COLOR1, EA, P1, EB, EC, P3, P4, EE, // Case #27 ST_TRI, COLOR0, EB, P2, EC, ST_QUA, COLOR0, EE, P5, P6, EG, - ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P4, - ST_QUA, COLOR1, P0, P4, EE, EG, + ST_POLY8, COLOR1, P0, P1, EB, EC, P3, P4, EE, EG, // Case #28 ST_POLY6, COLOR0, P0, P1, EB, EE, P5, P6, ST_POLY5, COLOR1, EB, P2, P3, P4, EE, // Case #29 ST_TRI, COLOR0, EA, P1, EB, ST_QUA, COLOR0, EE, P5, P6, EG, - ST_POLY6, COLOR1, P0, EA, EB, P2, P3, P4, - ST_QUA, COLOR1, P0, P4, EE, EG, + ST_POLY8, COLOR1, P0, EA, EB, P2, P3, P4, EE, EG, // Case #30 ST_POLY5, COLOR0, P0, EA, EE, P5, P6, ST_POLY6, COLOR1, EA, P1, P2, P3, P4, EE, // Case #31 ST_QUA, COLOR0, EE, P5, P6, EG, - ST_POLY6, COLOR1, P0, P1, P2, P3, P4, EE, - ST_TRI, COLOR1, P0, EE, EG, + ST_POLY7, COLOR1, P0, P1, P2, P3, P4, EE, EG, // Case #32 - ST_POLY6, COLOR0, P0, P1, P2, P3, EF, P6, - ST_QUA, COLOR0, P3, P4, EE, EF, + ST_POLY8, COLOR0, P0, P1, P2, P3, P4, EE, EF, P6, ST_TRI, COLOR1, EE, P5, EF, // Case #33 ST_TRI, COLOR0, EF, P6, EG, @@ -169,8 +148,7 @@ unsigned char clipShapesPoly7[] = { // Case #35 ST_TRI, COLOR0, EF, P6, EG, ST_POLY5, COLOR0, EB, P2, P3, P4, EE, - ST_POLY6, COLOR1, P0, P1, EE, P5, EF, EG, - ST_TRI, COLOR1, P1, EB, EE, + ST_POLY7, COLOR1, P0, P1, EB, EE, P5, EF, EG, // Case #36 ST_QUA, COLOR0, EC, P3, P4, EE, ST_POLY5, COLOR0, P0, P1, EB, EF, P6, @@ -184,13 +162,11 @@ unsigned char clipShapesPoly7[] = { // Case #38 ST_QUA, COLOR0, EC, P3, P4, EE, ST_QUA, COLOR0, P0, EA, EF, P6, - ST_POLY6, COLOR1, P1, P2, EC, EE, P5, EF, - ST_TRI, COLOR1, EA, P1, EF, + ST_POLY7, COLOR1, EA, P1, P2, EC, EE, P5, EF, // Case #39 ST_TRI, COLOR0, EF, P6, EG, ST_QUA, COLOR0, EC, P3, P4, EE, - ST_POLY6, COLOR1, P0, P1, P2, P5, EF, EG, - ST_QUA, COLOR1, P2, EC, EE, P5, + ST_POLY8, COLOR1, P0, P1, P2, EC, EE, P5, EF, EG, // Case #40 ST_TRI, COLOR0, ED, P4, EE, ST_POLY6, COLOR0, P0, P1, P2, EC, EF, P6, @@ -216,8 +192,7 @@ unsigned char clipShapesPoly7[] = { // Case #44 ST_TRI, COLOR0, ED, P4, EE, ST_POLY5, COLOR0, P0, P1, EB, EF, P6, - ST_POLY6, COLOR1, P2, P3, ED, EE, P5, EF, - ST_TRI, COLOR1, EB, P2, EF, + ST_POLY7, COLOR1, EB, P2, P3, ED, EE, P5, EF, // Case #45 ST_TRI, COLOR0, ED, P4, EE, ST_TRI, COLOR0, EF, P6, EG, @@ -227,37 +202,31 @@ unsigned char clipShapesPoly7[] = { // Case #46 ST_TRI, COLOR0, ED, P4, EE, ST_QUA, COLOR0, P0, EA, EF, P6, - ST_POLY6, COLOR1, P1, P2, P3, ED, EE, P5, - ST_QUA, COLOR1, EA, P1, P5, EF, + ST_POLY8, COLOR1, EA, P1, P2, P3, ED, EE, P5, EF, // Case #47 ST_TRI, COLOR0, ED, P4, EE, ST_TRI, COLOR0, EF, P6, EG, ST_POLY6, COLOR1, P0, P1, P2, P3, ED, EE, ST_POLY5, COLOR1, P0, EE, P5, EF, EG, // Case #48 - ST_POLY6, COLOR0, P0, P1, P2, P3, EF, P6, - ST_TRI, COLOR0, P3, ED, EF, + ST_POLY7, COLOR0, P0, P1, P2, P3, ED, EF, P6, ST_QUA, COLOR1, ED, P4, P5, EF, // Case #49 ST_TRI, COLOR0, EF, P6, EG, ST_POLY5, COLOR0, EA, P1, P2, P3, ED, - ST_POLY6, COLOR1, P0, EA, P4, P5, EF, EG, - ST_TRI, COLOR1, EA, ED, P4, + ST_POLY7, COLOR1, P0, EA, ED, P4, P5, EF, EG, // Case #50 ST_QUA, COLOR0, P0, EA, EF, P6, ST_QUA, COLOR0, EB, P2, P3, ED, - ST_POLY6, COLOR1, EA, P1, EB, P4, P5, EF, - ST_TRI, COLOR1, EB, ED, P4, + ST_POLY7, COLOR1, EA, P1, EB, ED, P4, P5, EF, // Case #51 ST_TRI, COLOR0, EF, P6, EG, ST_QUA, COLOR0, EB, P2, P3, ED, - ST_POLY6, COLOR1, P0, P1, P4, P5, EF, EG, - ST_QUA, COLOR1, P1, EB, ED, P4, + ST_POLY8, COLOR1, P0, P1, EB, ED, P4, P5, EF, EG, // Case #52 ST_TRI, COLOR0, EC, P3, ED, ST_POLY5, COLOR0, P0, P1, EB, EF, P6, - ST_POLY6, COLOR1, EB, P2, EC, ED, P4, P5, - ST_TRI, COLOR1, EB, P5, EF, + ST_POLY7, COLOR1, EB, P2, EC, ED, P4, P5, EF, // Case #53 ST_TRI, COLOR0, EF, P6, EG, ST_TRI, COLOR0, EA, P1, EB, @@ -267,8 +236,7 @@ unsigned char clipShapesPoly7[] = { // Case #54 ST_TRI, COLOR0, EC, P3, ED, ST_QUA, COLOR0, P0, EA, EF, P6, - ST_POLY6, COLOR1, P1, P2, EC, ED, P4, P5, - ST_QUA, COLOR1, EA, P1, P5, EF, + ST_POLY8, COLOR1, EA, P1, P2, EC, ED, P4, P5, EF, // Case #55 ST_TRI, COLOR0, EC, P3, ED, ST_TRI, COLOR0, EF, P6, EG, @@ -280,13 +248,11 @@ unsigned char clipShapesPoly7[] = { // Case #57 ST_TRI, COLOR0, EF, P6, EG, ST_QUA, COLOR0, EA, P1, P2, EC, - ST_POLY6, COLOR1, P0, P3, P4, P5, EF, EG, - ST_QUA, COLOR1, P0, EA, EC, P3, + ST_POLY8, COLOR1, P0, EA, EC, P3, P4, P5, EF, EG, // Case #58 ST_TRI, COLOR0, EB, P2, EC, ST_QUA, COLOR0, P0, EA, EF, P6, - ST_POLY6, COLOR1, P1, EB, EC, P3, P4, P5, - ST_QUA, COLOR1, EA, P1, P5, EF, + ST_POLY8, COLOR1, EA, P1, EB, EC, P3, P4, P5, EF, // Case #59 ST_TRI, COLOR0, EF, P6, EG, ST_TRI, COLOR0, EB, P2, EC, @@ -302,19 +268,15 @@ unsigned char clipShapesPoly7[] = { ST_POLY5, COLOR1, P0, EA, EB, P2, EG, // Case #62 ST_QUA, COLOR0, P0, EA, EF, P6, - ST_POLY6, COLOR1, P1, P2, P3, P4, P5, EF, - ST_TRI, COLOR1, EA, P1, EF, + ST_POLY7, COLOR1, EA, P1, P2, P3, P4, P5, EF, // Case #63 ST_TRI, COLOR0, EF, P6, EG, - ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P5, - ST_QUA, COLOR1, P0, P5, EF, EG, + ST_POLY8, COLOR1, P0, P1, P2, P3, P4, P5, EF, EG, // Case #64 - ST_POLY6, COLOR0, P0, P1, P2, P3, P4, EG, - ST_QUA, COLOR0, P4, P5, EF, EG, + ST_POLY8, COLOR0, P0, P1, P2, P3, P4, P5, EF, EG, ST_TRI, COLOR1, EF, P6, EG, // Case #65 - ST_POLY6, COLOR0, EA, P1, P2, P3, P4, P5, - ST_TRI, COLOR0, EA, P5, EF, + ST_POLY7, COLOR0, EA, P1, P2, P3, P4, P5, EF, ST_QUA, COLOR1, P0, EA, EF, P6, // Case #66 ST_TRI, COLOR0, P0, EA, EG, @@ -330,13 +292,11 @@ unsigned char clipShapesPoly7[] = { // Case #69 ST_TRI, COLOR0, EA, P1, EB, ST_POLY5, COLOR0, EC, P3, P4, P5, EF, - ST_POLY6, COLOR1, P0, EA, EB, P2, EC, P6, - ST_TRI, COLOR1, EC, EF, P6, + ST_POLY7, COLOR1, P0, EA, EB, P2, EC, EF, P6, // Case #70 ST_TRI, COLOR0, P0, EA, EG, ST_POLY5, COLOR0, EC, P3, P4, P5, EF, - ST_POLY6, COLOR1, EA, P1, P2, EF, P6, EG, - ST_TRI, COLOR1, P2, EC, EF, + ST_POLY7, COLOR1, EA, P1, P2, EC, EF, P6, EG, // Case #71 ST_POLY5, COLOR0, EC, P3, P4, P5, EF, ST_POLY6, COLOR1, P0, P1, P2, EC, EF, P6, @@ -347,8 +307,7 @@ unsigned char clipShapesPoly7[] = { // Case #73 ST_QUA, COLOR0, EA, P1, P2, EC, ST_QUA, COLOR0, ED, P4, P5, EF, - ST_POLY6, COLOR1, P0, EA, EC, P3, ED, P6, - ST_TRI, COLOR1, ED, EF, P6, + ST_POLY7, COLOR1, P0, EA, EC, P3, ED, EF, P6, // Case #74 ST_TRI, COLOR0, P0, EA, EG, ST_TRI, COLOR0, EB, P2, EC, @@ -358,27 +317,22 @@ unsigned char clipShapesPoly7[] = { // Case #75 ST_TRI, COLOR0, EB, P2, EC, ST_QUA, COLOR0, ED, P4, P5, EF, - ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P6, - ST_QUA, COLOR1, P3, ED, EF, P6, + ST_POLY8, COLOR1, P0, P1, EB, EC, P3, ED, EF, P6, // Case #76 ST_QUA, COLOR0, ED, P4, P5, EF, ST_QUA, COLOR0, P0, P1, EB, EG, - ST_POLY6, COLOR1, P2, P3, ED, EF, P6, EG, - ST_TRI, COLOR1, EB, P2, EG, + ST_POLY7, COLOR1, EB, P2, P3, ED, EF, P6, EG, // Case #77 ST_TRI, COLOR0, EA, P1, EB, ST_QUA, COLOR0, ED, P4, P5, EF, - ST_POLY6, COLOR1, P0, EA, EB, P2, P3, P6, - ST_QUA, COLOR1, P3, ED, EF, P6, + ST_POLY8, COLOR1, P0, EA, EB, P2, P3, ED, EF, P6, // Case #78 ST_TRI, COLOR0, P0, EA, EG, ST_QUA, COLOR0, ED, P4, P5, EF, - ST_POLY6, COLOR1, EA, P1, P2, P3, P6, EG, - ST_QUA, COLOR1, P3, ED, EF, P6, + ST_POLY8, COLOR1, EA, P1, P2, P3, ED, EF, P6, EG, // Case #79 ST_QUA, COLOR0, ED, P4, P5, EF, - ST_POLY6, COLOR1, P0, P1, P2, P3, ED, P6, - ST_TRI, COLOR1, ED, EF, P6, + ST_POLY7, COLOR1, P0, P1, P2, P3, ED, EF, P6, // Case #80 ST_TRI, COLOR0, EE, P5, EF, ST_POLY6, COLOR0, P0, P1, P2, P3, ED, EG, @@ -386,8 +340,7 @@ unsigned char clipShapesPoly7[] = { // Case #81 ST_TRI, COLOR0, EE, P5, EF, ST_POLY5, COLOR0, EA, P1, P2, P3, ED, - ST_POLY6, COLOR1, P0, ED, P4, EE, EF, P6, - ST_TRI, COLOR1, P0, EA, ED, + ST_POLY7, COLOR1, P0, EA, ED, P4, EE, EF, P6, // Case #82 ST_TRI, COLOR0, EE, P5, EF, ST_TRI, COLOR0, P0, EA, EG, @@ -397,8 +350,7 @@ unsigned char clipShapesPoly7[] = { // Case #83 ST_TRI, COLOR0, EE, P5, EF, ST_QUA, COLOR0, EB, P2, P3, ED, - ST_POLY6, COLOR1, P0, P1, P4, EE, EF, P6, - ST_QUA, COLOR1, P1, EB, ED, P4, + ST_POLY8, COLOR1, P0, P1, EB, ED, P4, EE, EF, P6, // Case #84 ST_TRI, COLOR0, EC, P3, ED, ST_TRI, COLOR0, EE, P5, EF, @@ -425,13 +377,11 @@ unsigned char clipShapesPoly7[] = { // Case #88 ST_TRI, COLOR0, EE, P5, EF, ST_POLY5, COLOR0, P0, P1, P2, EC, EG, - ST_POLY6, COLOR1, P3, P4, EE, EF, P6, EG, - ST_TRI, COLOR1, EC, P3, EG, + ST_POLY7, COLOR1, EC, P3, P4, EE, EF, P6, EG, // Case #89 ST_TRI, COLOR0, EE, P5, EF, ST_QUA, COLOR0, EA, P1, P2, EC, - ST_POLY6, COLOR1, P0, P3, P4, EE, EF, P6, - ST_QUA, COLOR1, P0, EA, EC, P3, + ST_POLY8, COLOR1, P0, EA, EC, P3, P4, EE, EF, P6, // Case #90 ST_TRI, COLOR0, EE, P5, EF, ST_TRI, COLOR0, P0, EA, EG, @@ -446,8 +396,7 @@ unsigned char clipShapesPoly7[] = { // Case #92 ST_TRI, COLOR0, EE, P5, EF, ST_QUA, COLOR0, P0, P1, EB, EG, - ST_POLY6, COLOR1, P2, P3, P4, EE, EF, P6, - ST_QUA, COLOR1, EB, P2, P6, EG, + ST_POLY8, COLOR1, EB, P2, P3, P4, EE, EF, P6, EG, // Case #93 ST_TRI, COLOR0, EE, P5, EF, ST_TRI, COLOR0, EA, P1, EB, @@ -460,11 +409,9 @@ unsigned char clipShapesPoly7[] = { ST_POLY5, COLOR1, EA, P1, EF, P6, EG, // Case #95 ST_TRI, COLOR0, EE, P5, EF, - ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P6, - ST_QUA, COLOR1, P4, EE, EF, P6, + ST_POLY8, COLOR1, P0, P1, P2, P3, P4, EE, EF, P6, // Case #96 - ST_POLY6, COLOR0, P0, P1, P2, P3, P4, EG, - ST_TRI, COLOR0, P4, EE, EG, + ST_POLY7, COLOR0, P0, P1, P2, P3, P4, EE, EG, ST_QUA, COLOR1, EE, P5, P6, EG, // Case #97 ST_POLY6, COLOR0, EA, P1, P2, P3, P4, EE, @@ -472,40 +419,33 @@ unsigned char clipShapesPoly7[] = { // Case #98 ST_TRI, COLOR0, P0, EA, EG, ST_POLY5, COLOR0, EB, P2, P3, P4, EE, - ST_POLY6, COLOR1, EA, P1, EB, P5, P6, EG, - ST_TRI, COLOR1, EB, EE, P5, + ST_POLY7, COLOR1, EA, P1, EB, EE, P5, P6, EG, // Case #99 ST_POLY5, COLOR0, EB, P2, P3, P4, EE, ST_POLY6, COLOR1, P0, P1, EB, EE, P5, P6, // Case #100 ST_QUA, COLOR0, P0, P1, EB, EG, ST_QUA, COLOR0, EC, P3, P4, EE, - ST_POLY6, COLOR1, EB, P2, EC, P5, P6, EG, - ST_TRI, COLOR1, EC, EE, P5, + ST_POLY7, COLOR1, EB, P2, EC, EE, P5, P6, EG, // Case #101 ST_TRI, COLOR0, EA, P1, EB, ST_QUA, COLOR0, EC, P3, P4, EE, - ST_POLY6, COLOR1, P0, EA, EB, P2, P5, P6, - ST_QUA, COLOR1, P2, EC, EE, P5, + ST_POLY8, COLOR1, P0, EA, EB, P2, EC, EE, P5, P6, // Case #102 ST_TRI, COLOR0, P0, EA, EG, ST_QUA, COLOR0, EC, P3, P4, EE, - ST_POLY6, COLOR1, EA, P1, P2, P5, P6, EG, - ST_QUA, COLOR1, P2, EC, EE, P5, + ST_POLY8, COLOR1, EA, P1, P2, EC, EE, P5, P6, EG, // Case #103 ST_QUA, COLOR0, EC, P3, P4, EE, - ST_POLY6, COLOR1, P0, P1, P2, EC, P5, P6, - ST_TRI, COLOR1, EC, EE, P5, + ST_POLY7, COLOR1, P0, P1, P2, EC, EE, P5, P6, // Case #104 ST_TRI, COLOR0, ED, P4, EE, ST_POLY5, COLOR0, P0, P1, P2, EC, EG, - ST_POLY6, COLOR1, EC, P3, ED, EE, P5, P6, - ST_TRI, COLOR1, EC, P6, EG, + ST_POLY7, COLOR1, EC, P3, ED, EE, P5, P6, EG, // Case #105 ST_TRI, COLOR0, ED, P4, EE, ST_QUA, COLOR0, EA, P1, P2, EC, - ST_POLY6, COLOR1, P0, P3, ED, EE, P5, P6, - ST_QUA, COLOR1, P0, EA, EC, P3, + ST_POLY8, COLOR1, P0, EA, EC, P3, ED, EE, P5, P6, // Case #106 ST_TRI, COLOR0, P0, EA, EG, ST_TRI, COLOR0, EB, P2, EC, @@ -520,8 +460,7 @@ unsigned char clipShapesPoly7[] = { // Case #108 ST_TRI, COLOR0, ED, P4, EE, ST_QUA, COLOR0, P0, P1, EB, EG, - ST_POLY6, COLOR1, P2, P3, ED, EE, P5, P6, - ST_QUA, COLOR1, EB, P2, P6, EG, + ST_POLY8, COLOR1, EB, P2, P3, ED, EE, P5, P6, EG, // Case #109 ST_TRI, COLOR0, EA, P1, EB, ST_TRI, COLOR0, ED, P4, EE, @@ -534,8 +473,7 @@ unsigned char clipShapesPoly7[] = { ST_POLY5, COLOR1, EA, P1, P5, P6, EG, // Case #111 ST_TRI, COLOR0, ED, P4, EE, - ST_POLY6, COLOR1, P0, P1, P2, P3, P5, P6, - ST_QUA, COLOR1, P3, ED, EE, P5, + ST_POLY8, COLOR1, P0, P1, P2, P3, ED, EE, P5, P6, // Case #112 ST_POLY6, COLOR0, P0, P1, P2, P3, ED, EG, ST_POLY5, COLOR1, ED, P4, P5, P6, EG, @@ -545,17 +483,14 @@ unsigned char clipShapesPoly7[] = { // Case #114 ST_TRI, COLOR0, P0, EA, EG, ST_QUA, COLOR0, EB, P2, P3, ED, - ST_POLY6, COLOR1, EA, P1, P4, P5, P6, EG, - ST_QUA, COLOR1, P1, EB, ED, P4, + ST_POLY8, COLOR1, EA, P1, EB, ED, P4, P5, P6, EG, // Case #115 ST_QUA, COLOR0, EB, P2, P3, ED, - ST_POLY6, COLOR1, P0, P1, EB, P4, P5, P6, - ST_TRI, COLOR1, EB, ED, P4, + ST_POLY7, COLOR1, P0, P1, EB, ED, P4, P5, P6, // Case #116 ST_TRI, COLOR0, EC, P3, ED, ST_QUA, COLOR0, P0, P1, EB, EG, - ST_POLY6, COLOR1, P2, EC, ED, P4, P5, P6, - ST_QUA, COLOR1, EB, P2, P6, EG, + ST_POLY8, COLOR1, EB, P2, EC, ED, P4, P5, P6, EG, // Case #117 ST_TRI, COLOR0, EA, P1, EB, ST_TRI, COLOR0, EC, P3, ED, @@ -568,15 +503,13 @@ unsigned char clipShapesPoly7[] = { ST_POLY5, COLOR1, P1, P2, EC, ED, P4, // Case #119 ST_TRI, COLOR0, EC, P3, ED, - ST_POLY6, COLOR1, P0, P1, P2, P4, P5, P6, - ST_QUA, COLOR1, P2, EC, ED, P4, + ST_POLY8, COLOR1, P0, P1, P2, EC, ED, P4, P5, P6, // Case #120 ST_POLY5, COLOR0, P0, P1, P2, EC, EG, ST_POLY6, COLOR1, EC, P3, P4, P5, P6, EG, // Case #121 ST_QUA, COLOR0, EA, P1, P2, EC, - ST_POLY6, COLOR1, P0, EA, P3, P4, P5, P6, - ST_TRI, COLOR1, EA, EC, P3, + ST_POLY7, COLOR1, P0, EA, EC, P3, P4, P5, P6, // Case #122 ST_TRI, COLOR0, P0, EA, EG, ST_TRI, COLOR0, EB, P2, EC, @@ -584,23 +517,18 @@ unsigned char clipShapesPoly7[] = { ST_POLY5, COLOR1, EA, P1, EB, EC, P3, // Case #123 ST_TRI, COLOR0, EB, P2, EC, - ST_POLY6, COLOR1, P0, P1, P3, P4, P5, P6, - ST_QUA, COLOR1, P1, EB, EC, P3, + ST_POLY8, COLOR1, P0, P1, EB, EC, P3, P4, P5, P6, // Case #124 ST_QUA, COLOR0, P0, P1, EB, EG, - ST_POLY6, COLOR1, P2, P3, P4, P5, P6, EG, - ST_TRI, COLOR1, EB, P2, EG, + ST_POLY7, COLOR1, EB, P2, P3, P4, P5, P6, EG, // Case #125 ST_TRI, COLOR0, EA, P1, EB, - ST_POLY6, COLOR1, P0, P2, P3, P4, P5, P6, - ST_QUA, COLOR1, P0, EA, EB, P2, + ST_POLY8, COLOR1, P0, EA, EB, P2, P3, P4, P5, P6, // Case #126 ST_TRI, COLOR0, P0, EA, EG, - ST_POLY6, COLOR1, P1, P2, P3, P4, P5, P6, - ST_QUA, COLOR1, EA, P1, P6, EG, + ST_POLY8, COLOR1, EA, P1, P2, P3, P4, P5, P6, EG, // Case #127 - ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P5, - ST_TRI, COLOR1, P0, P5, P6 + ST_POLY7, COLOR1, P0, P1, P2, P3, P4, P5, P6 }; // clang-format on diff --git a/src/axom/bump/clipping/polygonalClipCasesPoly8.cpp b/src/axom/bump/clipping/polygonalClipCasesPoly8.cpp index 4aabe7503f..4434a3ad39 100644 --- a/src/axom/bump/clipping/polygonalClipCasesPoly8.cpp +++ b/src/axom/bump/clipping/polygonalClipCasesPoly8.cpp @@ -12,18 +12,17 @@ namespace tables { int numClipCasesPoly8 = 256; int numClipShapesPoly8[] = { - 2, 3, 3, 3, 3, 4, 3, 3, 3, 3, 4, 4, 3, 4, 3, 2, 3, 3, 3, 4, 4, 5, 4, 4, 3, 4, 4, 4, 3, 4, 2, 3, 3, 3, 3, 4, 3, 5, 4, 4, 4, 5, 5, 5, 4, 5, 4, 4, 3, 4, 4, 4, 4, 5, 4, 4, 3, 4, 4, 4, 2, 4, 3, 3, 3, 4, 3, 4, 3, 5, 4, 4, 3, 5, 5, 5, 4, 5, 4, 4, 4, 5, 5, 5, 5, 7, 5, 6, 4, 5, 5, 6, 4, 6, 4, 4, 3, 4, 4, 4, 4, 5, 4, 4, 4, 5, 5, 6, 4, 6, 4, 4, 3, 4, 4, 4, 4, 6, 4, 4, 2, 4, 4, 4, 3, 4, 3, 3, 3, 3, 4, 3, 3, 4, 4, 2, 3, 4, 5, 4, 4, 4, 4, 3, 3, 4, 5, 4, 5, 5, 5, 4, 4, 4, 5, 4, 4, 4, 4, 3, 4, 4, 5, 4, 5, 5, 5, 4, 5, 5, 7, 6, 5, 6, 6, 4, 4, 4, 5, 4, 5, 6, 6, 4, 4, 4, 6, 4, 4, 4, 4, 3, 3, 3, 4, 2, 4, 4, 4, 3, 4, 4, 5, 4, 4, 4, 4, 3, 4, 4, 5, 4, 5, 6, 6, 4, 4, 4, 6, 4, 4, 4, 4, 3, 3, 2, 4, 3, 4, 4, 4, 3, 4, 4, 6, 4, 4, 4, 4, 3, 2, 3, 4, 3, 4, 4, 4, 3, 3, 3, 4, 3, 3, 3, 3, 2 + 1, 3, 3, 2, 3, 3, 2, 2, 3, 3, 3, 3, 2, 3, 2, 2, 3, 3, 3, 3, 3, 5, 3, 3, 2, 3, 3, 3, 2, 3, 2, 2, 3, 3, 3, 3, 3, 5, 3, 3, 3, 5, 5, 5, 3, 5, 3, 4, 2, 3, 3, 3, 3, 5, 3, 4, 2, 3, 3, 4, 2, 4, 2, 2, 3, 3, 3, 3, 3, 5, 3, 3, 3, 5, 5, 5, 3, 5, 3, 4, 3, 5, 5, 5, 5, 6, 5, 5, 3, 5, 5, 5, 3, 5, 4, 4, 2, 3, 3, 3, 3, 5, 3, 4, 3, 5, 5, 5, 3, 5, 4, 4, 2, 3, 3, 4, 3, 5, 4, 4, 2, 4, 4, 4, 2, 4, 2, 3, 3, 2, 3, 2, 3, 3, 3, 2, 3, 3, 5, 3, 3, 3, 3, 2, 3, 3, 5, 3, 5, 5, 5, 4, 3, 3, 5, 4, 3, 4, 4, 2, 3, 3, 5, 3, 5, 5, 5, 4, 5, 5, 6, 5, 5, 5, 5, 4, 3, 3, 5, 4, 5, 5, 5, 4, 3, 4, 5, 4, 4, 4, 4, 3, 2, 2, 3, 2, 3, 3, 3, 2, 3, 3, 5, 4, 3, 4, 4, 2, 3, 3, 5, 4, 5, 5, 5, 4, 3, 4, 5, 4, 4, 4, 4, 3, 2, 2, 3, 2, 3, 4, 4, 2, 3, 4, 5, 4, 4, 4, 4, 3, 2, 2, 4, 2, 4, 4, 4, 3, 2, 2, 4, 3, 2, 3, 3, 1 }; int startClipShapesPoly8[] = { - 0, 14, 34, 54, 74, 94, 120, 140, 160, 180, 202, 228, 254, 274, 300, 320, 336, 356, 378, 400, 426, 452, 484, 510, 536, 556, 582, 608, 634, 654, 680, 696, 716, 736, 758, 780, 806, 828, 860, 886, 912, 938, 970, 1002, 1034, 1060, 1092, 1118, 1144, 1164, 1190, 1216, 1242, 1268, 1300, 1326, 1352, 1372, 1398, 1424, 1450, 1466, 1492, 1512, 1532, 1552, 1578, 1600, 1626, 1648, 1680, 1706, 1732, 1754, 1786, 1818, 1850, 1876, 1908, 1934, 1960, 1986, 2018, 2050, 2082, 2114, 2156, 2188, 2224, 2250, 2282, 2314, 2350, 2376, 2412, 2438, 2464, 2484, 2510, 2536, 2562, 2588, 2620, 2646, 2672, 2698, 2730, 2762, 2798, 2824, 2860, 2886, 2912, 2932, 2958, 2984, 3010, 3036, 3072, 3098, 3124, 3140, 3166, 3192, 3218, 3238, 3264, 3284, 3304, 3324, 3344, 3370, 3390, 3412, 3438, 3464, 3480, 3502, 3528, 3560, 3586, 3612, 3638, 3664, 3684, 3706, 3732, 3764, 3790, 3822, 3854, 3886, 3912, 3938, 3964, 3996, 4022, 4048, 4074, 4100, 4120, 4146, 4172, 4204, 4230, 4262, 4294, 4326, 4352, 4384, 4416, 4458, 4494, 4526, 4562, 4598, 4624, 4650, 4676, 4708, 4734, 4766, 4802, 4838, 4864, 4890, 4916, 4952, 4978, 5004, 5030, 5056, 5076, 5096, 5116, 5142, 5158, 5184, 5210, 5236, 5256, 5282, 5308, 5340, 5366, 5392, 5418, 5444, 5464, 5490, 5516, 5548, 5574, 5606, 5642, 5678, 5704, 5730, 5756, 5792, 5818, 5844, 5870, 5896, 5916, 5936, 5952, 5978, 5998, 6024, 6050, 6076, 6096, 6122, 6148, 6184, 6210, 6236, 6262, 6288, 6308, 6324, 6344, 6370, 6390, 6416, 6442, 6468, 6488, 6508, 6528, 6554, 6574, 6594, 6614, 6634 + 0, 10, 30, 50, 66, 86, 108, 124, 140, 160, 182, 204, 226, 242, 264, 280, 296, 316, 338, 360, 382, 404, 436, 458, 480, 496, 518, 540, 562, 578, 600, 616, 632, 652, 674, 696, 718, 740, 772, 794, 816, 838, 870, 902, 934, 956, 988, 1010, 1036, 1052, 1074, 1096, 1118, 1140, 1172, 1194, 1220, 1236, 1258, 1280, 1306, 1322, 1348, 1364, 1380, 1400, 1422, 1444, 1466, 1488, 1520, 1542, 1564, 1586, 1618, 1650, 1682, 1704, 1736, 1758, 1784, 1806, 1838, 1870, 1902, 1934, 1972, 2004, 2036, 2058, 2090, 2122, 2154, 2176, 2208, 2234, 2260, 2276, 2298, 2320, 2342, 2364, 2396, 2418, 2444, 2466, 2498, 2530, 2562, 2584, 2616, 2642, 2668, 2684, 2706, 2728, 2754, 2776, 2808, 2834, 2860, 2876, 2902, 2928, 2954, 2970, 2996, 3012, 3032, 3052, 3068, 3090, 3106, 3128, 3150, 3172, 3188, 3210, 3232, 3264, 3286, 3308, 3330, 3352, 3368, 3390, 3412, 3444, 3466, 3498, 3530, 3562, 3588, 3610, 3632, 3664, 3690, 3712, 3738, 3764, 3780, 3802, 3824, 3856, 3878, 3910, 3942, 3974, 4000, 4032, 4064, 4102, 4134, 4166, 4198, 4230, 4256, 4278, 4300, 4332, 4358, 4390, 4422, 4454, 4480, 4502, 4528, 4560, 4586, 4612, 4638, 4664, 4684, 4700, 4716, 4738, 4754, 4776, 4798, 4820, 4836, 4858, 4880, 4912, 4938, 4960, 4986, 5012, 5028, 5050, 5072, 5104, 5130, 5162, 5194, 5226, 5252, 5274, 5300, 5332, 5358, 5384, 5410, 5436, 5456, 5472, 5488, 5510, 5526, 5548, 5574, 5600, 5616, 5638, 5664, 5696, 5722, 5748, 5774, 5800, 5820, 5836, 5852, 5878, 5894, 5920, 5946, 5972, 5992, 6008, 6024, 6050, 6070, 6086, 6106, 6126 }; // clang-format off unsigned char clipShapesPoly8[] = { // Case #0 - ST_POLY6, COLOR0, P0, P1, P2, P3, P4, P5, - ST_QUA, COLOR0, P0, P5, P6, P7, + ST_POLY8, COLOR0, P0, P1, P2, P3, P4, P5, P6, P7, // Case #1 ST_POLY6, COLOR0, EA, P1, P2, P3, P4, P5, ST_POLY5, COLOR0, EA, P5, P6, P7, EH, @@ -33,8 +32,7 @@ unsigned char clipShapesPoly8[] = { ST_POLY5, COLOR0, P0, EA, EB, P6, P7, ST_TRI, COLOR1, EA, P1, EB, // Case #3 - ST_POLY6, COLOR0, EB, P2, P3, P4, P5, P6, - ST_QUA, COLOR0, EB, P6, P7, EH, + ST_POLY8, COLOR0, EB, P2, P3, P4, P5, P6, P7, EH, ST_QUA, COLOR1, P0, P1, EB, EH, // Case #4 ST_POLY6, COLOR0, EC, P3, P4, P5, P6, P7, @@ -42,16 +40,13 @@ unsigned char clipShapesPoly8[] = { ST_TRI, COLOR1, EB, P2, EC, // Case #5 ST_TRI, COLOR0, EA, P1, EB, - ST_POLY6, COLOR0, EC, P3, P4, P5, P6, P7, - ST_TRI, COLOR0, EC, P7, EH, + ST_POLY7, COLOR0, EC, P3, P4, P5, P6, P7, EH, ST_POLY6, COLOR1, P0, EA, EB, P2, EC, EH, // Case #6 - ST_POLY6, COLOR0, EC, P3, P4, P5, P6, P7, - ST_QUA, COLOR0, P0, EA, EC, P7, + ST_POLY8, COLOR0, P0, EA, EC, P3, P4, P5, P6, P7, ST_QUA, COLOR1, EA, P1, P2, EC, // Case #7 - ST_POLY6, COLOR0, EC, P3, P4, P5, P6, P7, - ST_TRI, COLOR0, EC, P7, EH, + ST_POLY7, COLOR0, EC, P3, P4, P5, P6, P7, EH, ST_POLY5, COLOR1, P0, P1, P2, EC, EH, // Case #8 ST_POLY6, COLOR0, P0, ED, P4, P5, P6, P7, @@ -63,26 +58,21 @@ unsigned char clipShapesPoly8[] = { ST_POLY6, COLOR1, P0, EA, EC, P3, ED, EH, // Case #10 ST_TRI, COLOR0, EB, P2, EC, - ST_POLY6, COLOR0, P0, ED, P4, P5, P6, P7, - ST_TRI, COLOR0, P0, EA, ED, + ST_POLY7, COLOR0, P0, EA, ED, P4, P5, P6, P7, ST_POLY6, COLOR1, EA, P1, EB, EC, P3, ED, // Case #11 ST_TRI, COLOR0, EB, P2, EC, ST_POLY6, COLOR0, ED, P4, P5, P6, P7, EH, - ST_POLY6, COLOR1, P0, P1, EB, EC, P3, ED, - ST_TRI, COLOR1, P0, ED, EH, + ST_POLY7, COLOR1, P0, P1, EB, EC, P3, ED, EH, // Case #12 - ST_POLY6, COLOR0, P0, ED, P4, P5, P6, P7, - ST_QUA, COLOR0, P0, P1, EB, ED, + ST_POLY8, COLOR0, P0, P1, EB, ED, P4, P5, P6, P7, ST_QUA, COLOR1, EB, P2, P3, ED, // Case #13 ST_TRI, COLOR0, EA, P1, EB, ST_POLY6, COLOR0, ED, P4, P5, P6, P7, EH, - ST_POLY6, COLOR1, P0, EA, EB, P2, P3, EH, - ST_TRI, COLOR1, P3, ED, EH, + ST_POLY7, COLOR1, P0, EA, EB, P2, P3, ED, EH, // Case #14 - ST_POLY6, COLOR0, P0, ED, P4, P5, P6, P7, - ST_TRI, COLOR0, P0, EA, ED, + ST_POLY7, COLOR0, P0, EA, ED, P4, P5, P6, P7, ST_POLY5, COLOR1, EA, P1, P2, P3, ED, // Case #15 ST_POLY6, COLOR0, ED, P4, P5, P6, P7, EH, @@ -102,12 +92,10 @@ unsigned char clipShapesPoly8[] = { // Case #19 ST_QUA, COLOR0, EB, P2, P3, ED, ST_POLY5, COLOR0, EE, P5, P6, P7, EH, - ST_POLY6, COLOR1, P0, P1, EB, ED, P4, EE, - ST_TRI, COLOR1, P0, EE, EH, + ST_POLY7, COLOR1, P0, P1, EB, ED, P4, EE, EH, // Case #20 ST_TRI, COLOR0, EC, P3, ED, - ST_POLY6, COLOR0, P0, P1, EE, P5, P6, P7, - ST_TRI, COLOR0, P1, EB, EE, + ST_POLY7, COLOR0, P0, P1, EB, EE, P5, P6, P7, ST_POLY6, COLOR1, EB, P2, EC, ED, P4, EE, // Case #21 ST_TRI, COLOR0, EA, P1, EB, @@ -118,48 +106,39 @@ unsigned char clipShapesPoly8[] = { // Case #22 ST_TRI, COLOR0, EC, P3, ED, ST_POLY6, COLOR0, P0, EA, EE, P5, P6, P7, - ST_POLY6, COLOR1, P1, P2, EC, ED, P4, EE, - ST_TRI, COLOR1, EA, P1, EE, + ST_POLY7, COLOR1, EA, P1, P2, EC, ED, P4, EE, // Case #23 ST_TRI, COLOR0, EC, P3, ED, ST_POLY5, COLOR0, EE, P5, P6, P7, EH, - ST_POLY6, COLOR1, P0, P1, P2, EC, ED, P4, - ST_QUA, COLOR1, P0, P4, EE, EH, + ST_POLY8, COLOR1, P0, P1, P2, EC, ED, P4, EE, EH, // Case #24 - ST_POLY6, COLOR0, P0, P1, EE, P5, P6, P7, - ST_QUA, COLOR0, P1, P2, EC, EE, + ST_POLY8, COLOR0, P0, P1, P2, EC, EE, P5, P6, P7, ST_QUA, COLOR1, EC, P3, P4, EE, // Case #25 ST_QUA, COLOR0, EA, P1, P2, EC, ST_POLY5, COLOR0, EE, P5, P6, P7, EH, - ST_POLY6, COLOR1, P0, EA, EC, P3, P4, EH, - ST_TRI, COLOR1, P4, EE, EH, + ST_POLY7, COLOR1, P0, EA, EC, P3, P4, EE, EH, // Case #26 ST_TRI, COLOR0, EB, P2, EC, ST_POLY6, COLOR0, P0, EA, EE, P5, P6, P7, - ST_POLY6, COLOR1, EA, P1, EB, EC, P3, P4, - ST_TRI, COLOR1, EA, P4, EE, + ST_POLY7, COLOR1, EA, P1, EB, EC, P3, P4, EE, // Case #27 ST_TRI, COLOR0, EB, P2, EC, ST_POLY5, COLOR0, EE, P5, P6, P7, EH, - ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P4, - ST_QUA, COLOR1, P0, P4, EE, EH, + ST_POLY8, COLOR1, P0, P1, EB, EC, P3, P4, EE, EH, // Case #28 - ST_POLY6, COLOR0, P0, P1, EE, P5, P6, P7, - ST_TRI, COLOR0, P1, EB, EE, + ST_POLY7, COLOR0, P0, P1, EB, EE, P5, P6, P7, ST_POLY5, COLOR1, EB, P2, P3, P4, EE, // Case #29 ST_TRI, COLOR0, EA, P1, EB, ST_POLY5, COLOR0, EE, P5, P6, P7, EH, - ST_POLY6, COLOR1, P0, EA, EB, P2, P3, P4, - ST_QUA, COLOR1, P0, P4, EE, EH, + ST_POLY8, COLOR1, P0, EA, EB, P2, P3, P4, EE, EH, // Case #30 ST_POLY6, COLOR0, P0, EA, EE, P5, P6, P7, ST_POLY6, COLOR1, EA, P1, P2, P3, P4, EE, // Case #31 ST_POLY5, COLOR0, EE, P5, P6, P7, EH, - ST_POLY6, COLOR1, P0, P1, P2, P3, P4, EE, - ST_TRI, COLOR1, P0, EE, EH, + ST_POLY7, COLOR1, P0, P1, P2, P3, P4, EE, EH, // Case #32 ST_POLY6, COLOR0, P0, P1, P2, EF, P6, P7, ST_POLY5, COLOR0, P2, P3, P4, EE, EF, @@ -175,8 +154,7 @@ unsigned char clipShapesPoly8[] = { // Case #35 ST_QUA, COLOR0, EF, P6, P7, EH, ST_POLY5, COLOR0, EB, P2, P3, P4, EE, - ST_POLY6, COLOR1, P0, P1, EE, P5, EF, EH, - ST_TRI, COLOR1, P1, EB, EE, + ST_POLY7, COLOR1, P0, P1, EB, EE, P5, EF, EH, // Case #36 ST_QUA, COLOR0, EC, P3, P4, EE, ST_POLY6, COLOR0, P0, P1, EB, EF, P6, P7, @@ -190,17 +168,14 @@ unsigned char clipShapesPoly8[] = { // Case #38 ST_QUA, COLOR0, EC, P3, P4, EE, ST_POLY5, COLOR0, P0, EA, EF, P6, P7, - ST_POLY6, COLOR1, P1, P2, EC, EE, P5, EF, - ST_TRI, COLOR1, EA, P1, EF, + ST_POLY7, COLOR1, EA, P1, P2, EC, EE, P5, EF, // Case #39 ST_QUA, COLOR0, EC, P3, P4, EE, ST_QUA, COLOR0, EF, P6, P7, EH, - ST_POLY6, COLOR1, P0, P1, P2, EC, EE, P5, - ST_QUA, COLOR1, P0, P5, EF, EH, + ST_POLY8, COLOR1, P0, P1, P2, EC, EE, P5, EF, EH, // Case #40 ST_TRI, COLOR0, ED, P4, EE, - ST_POLY6, COLOR0, P0, P1, P2, EF, P6, P7, - ST_TRI, COLOR0, P2, EC, EF, + ST_POLY7, COLOR0, P0, P1, P2, EC, EF, P6, P7, ST_POLY6, COLOR1, EC, P3, ED, EE, P5, EF, // Case #41 ST_TRI, COLOR0, ED, P4, EE, @@ -223,8 +198,7 @@ unsigned char clipShapesPoly8[] = { // Case #44 ST_TRI, COLOR0, ED, P4, EE, ST_POLY6, COLOR0, P0, P1, EB, EF, P6, P7, - ST_POLY6, COLOR1, P2, P3, ED, EE, P5, EF, - ST_TRI, COLOR1, EB, P2, EF, + ST_POLY7, COLOR1, EB, P2, P3, ED, EE, P5, EF, // Case #45 ST_TRI, COLOR0, EA, P1, EB, ST_TRI, COLOR0, ED, P4, EE, @@ -234,37 +208,31 @@ unsigned char clipShapesPoly8[] = { // Case #46 ST_TRI, COLOR0, ED, P4, EE, ST_POLY5, COLOR0, P0, EA, EF, P6, P7, - ST_POLY6, COLOR1, P1, P2, P3, ED, EE, P5, - ST_QUA, COLOR1, EA, P1, P5, EF, + ST_POLY8, COLOR1, EA, P1, P2, P3, ED, EE, P5, EF, // Case #47 ST_TRI, COLOR0, ED, P4, EE, ST_QUA, COLOR0, EF, P6, P7, EH, ST_POLY6, COLOR1, P0, P1, P2, P3, ED, EE, ST_POLY5, COLOR1, P0, EE, P5, EF, EH, // Case #48 - ST_POLY6, COLOR0, P0, P1, P2, EF, P6, P7, - ST_QUA, COLOR0, P2, P3, ED, EF, + ST_POLY8, COLOR0, P0, P1, P2, P3, ED, EF, P6, P7, ST_QUA, COLOR1, ED, P4, P5, EF, // Case #49 ST_QUA, COLOR0, EF, P6, P7, EH, ST_POLY5, COLOR0, EA, P1, P2, P3, ED, - ST_POLY6, COLOR1, P0, EA, P4, P5, EF, EH, - ST_TRI, COLOR1, EA, ED, P4, + ST_POLY7, COLOR1, P0, EA, ED, P4, P5, EF, EH, // Case #50 ST_QUA, COLOR0, EB, P2, P3, ED, ST_POLY5, COLOR0, P0, EA, EF, P6, P7, - ST_POLY6, COLOR1, EA, P1, EB, ED, P4, P5, - ST_TRI, COLOR1, EA, P5, EF, + ST_POLY7, COLOR1, EA, P1, EB, ED, P4, P5, EF, // Case #51 ST_QUA, COLOR0, EB, P2, P3, ED, ST_QUA, COLOR0, EF, P6, P7, EH, - ST_POLY6, COLOR1, P0, P1, EB, ED, P4, P5, - ST_QUA, COLOR1, P0, P5, EF, EH, + ST_POLY8, COLOR1, P0, P1, EB, ED, P4, P5, EF, EH, // Case #52 ST_TRI, COLOR0, EC, P3, ED, ST_POLY6, COLOR0, P0, P1, EB, EF, P6, P7, - ST_POLY6, COLOR1, EB, P2, EC, ED, P4, P5, - ST_TRI, COLOR1, EB, P5, EF, + ST_POLY7, COLOR1, EB, P2, EC, ED, P4, P5, EF, // Case #53 ST_TRI, COLOR0, EC, P3, ED, ST_TRI, COLOR0, EA, P1, EB, @@ -274,27 +242,23 @@ unsigned char clipShapesPoly8[] = { // Case #54 ST_TRI, COLOR0, EC, P3, ED, ST_POLY5, COLOR0, P0, EA, EF, P6, P7, - ST_POLY6, COLOR1, P1, P2, EC, ED, P4, P5, - ST_QUA, COLOR1, EA, P1, P5, EF, + ST_POLY8, COLOR1, EA, P1, P2, EC, ED, P4, P5, EF, // Case #55 ST_TRI, COLOR0, EC, P3, ED, ST_QUA, COLOR0, EF, P6, P7, EH, ST_POLY6, COLOR1, P0, P1, P2, EC, ED, P4, ST_POLY5, COLOR1, P0, P4, P5, EF, EH, // Case #56 - ST_POLY6, COLOR0, P0, P1, P2, EF, P6, P7, - ST_TRI, COLOR0, P2, EC, EF, + ST_POLY7, COLOR0, P0, P1, P2, EC, EF, P6, P7, ST_POLY5, COLOR1, EC, P3, P4, P5, EF, // Case #57 ST_QUA, COLOR0, EF, P6, P7, EH, ST_QUA, COLOR0, EA, P1, P2, EC, - ST_POLY6, COLOR1, P0, P3, P4, P5, EF, EH, - ST_QUA, COLOR1, P0, EA, EC, P3, + ST_POLY8, COLOR1, P0, EA, EC, P3, P4, P5, EF, EH, // Case #58 ST_TRI, COLOR0, EB, P2, EC, ST_POLY5, COLOR0, P0, EA, EF, P6, P7, - ST_POLY6, COLOR1, P1, EB, EC, P3, P4, P5, - ST_QUA, COLOR1, EA, P1, P5, EF, + ST_POLY8, COLOR1, EA, P1, EB, EC, P3, P4, P5, EF, // Case #59 ST_TRI, COLOR0, EB, P2, EC, ST_QUA, COLOR0, EF, P6, P7, EH, @@ -310,20 +274,17 @@ unsigned char clipShapesPoly8[] = { ST_POLY5, COLOR1, P0, EA, P5, EF, EH, // Case #62 ST_POLY5, COLOR0, P0, EA, EF, P6, P7, - ST_POLY6, COLOR1, P1, P2, P3, P4, P5, EF, - ST_TRI, COLOR1, EA, P1, EF, + ST_POLY7, COLOR1, EA, P1, P2, P3, P4, P5, EF, // Case #63 ST_QUA, COLOR0, EF, P6, P7, EH, - ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P5, - ST_QUA, COLOR1, P0, P5, EF, EH, + ST_POLY8, COLOR1, P0, P1, P2, P3, P4, P5, EF, EH, // Case #64 ST_POLY6, COLOR0, P0, P1, P2, P3, EG, P7, ST_POLY5, COLOR0, P3, P4, P5, EF, EG, ST_TRI, COLOR1, EF, P6, EG, // Case #65 ST_TRI, COLOR0, EG, P7, EH, - ST_POLY6, COLOR0, EA, P1, P2, P3, P4, P5, - ST_TRI, COLOR0, EA, P5, EF, + ST_POLY7, COLOR0, EA, P1, P2, P3, P4, P5, EF, ST_POLY6, COLOR1, P0, EA, EF, P6, EG, EH, // Case #66 ST_QUA, COLOR0, P0, EA, EG, P7, @@ -332,8 +293,7 @@ unsigned char clipShapesPoly8[] = { // Case #67 ST_TRI, COLOR0, EG, P7, EH, ST_POLY6, COLOR0, EB, P2, P3, P4, P5, EF, - ST_POLY6, COLOR1, P0, P1, EF, P6, EG, EH, - ST_TRI, COLOR1, P1, EB, EF, + ST_POLY7, COLOR1, P0, P1, EB, EF, P6, EG, EH, // Case #68 ST_POLY5, COLOR0, EC, P3, P4, P5, EF, ST_POLY5, COLOR0, P0, P1, EB, EG, P7, @@ -347,13 +307,11 @@ unsigned char clipShapesPoly8[] = { // Case #70 ST_QUA, COLOR0, P0, EA, EG, P7, ST_POLY5, COLOR0, EC, P3, P4, P5, EF, - ST_POLY6, COLOR1, EA, P1, P2, EF, P6, EG, - ST_TRI, COLOR1, P2, EC, EF, + ST_POLY7, COLOR1, EA, P1, P2, EC, EF, P6, EG, // Case #71 ST_TRI, COLOR0, EG, P7, EH, ST_POLY5, COLOR0, EC, P3, P4, P5, EF, - ST_POLY6, COLOR1, P0, P1, P2, P6, EG, EH, - ST_QUA, COLOR1, P2, EC, EF, P6, + ST_POLY8, COLOR1, P0, P1, P2, EC, EF, P6, EG, EH, // Case #72 ST_QUA, COLOR0, ED, P4, P5, EF, ST_POLY6, COLOR0, P0, P1, P2, EC, EG, P7, @@ -379,8 +337,7 @@ unsigned char clipShapesPoly8[] = { // Case #76 ST_QUA, COLOR0, ED, P4, P5, EF, ST_POLY5, COLOR0, P0, P1, EB, EG, P7, - ST_POLY6, COLOR1, P2, P3, ED, EF, P6, EG, - ST_TRI, COLOR1, EB, P2, EG, + ST_POLY7, COLOR1, EB, P2, P3, ED, EF, P6, EG, // Case #77 ST_TRI, COLOR0, EA, P1, EB, ST_TRI, COLOR0, EG, P7, EH, @@ -390,8 +347,7 @@ unsigned char clipShapesPoly8[] = { // Case #78 ST_QUA, COLOR0, ED, P4, P5, EF, ST_QUA, COLOR0, P0, EA, EG, P7, - ST_POLY6, COLOR1, P1, P2, P3, ED, EF, P6, - ST_QUA, COLOR1, EA, P1, P6, EG, + ST_POLY8, COLOR1, EA, P1, P2, P3, ED, EF, P6, EG, // Case #79 ST_TRI, COLOR0, EG, P7, EH, ST_QUA, COLOR0, ED, P4, P5, EF, @@ -399,8 +355,7 @@ unsigned char clipShapesPoly8[] = { ST_POLY5, COLOR1, P3, ED, EF, P6, EG, // Case #80 ST_TRI, COLOR0, EE, P5, EF, - ST_POLY6, COLOR0, P0, P1, P2, P3, EG, P7, - ST_TRI, COLOR0, P3, ED, EG, + ST_POLY7, COLOR0, P0, P1, P2, P3, ED, EG, P7, ST_POLY6, COLOR1, ED, P4, EE, EF, P6, EG, // Case #81 ST_TRI, COLOR0, EE, P5, EF, @@ -432,8 +387,7 @@ unsigned char clipShapesPoly8[] = { ST_TRI, COLOR0, EE, P5, EF, ST_TRI, COLOR0, EG, P7, EH, ST_POLY6, COLOR1, P0, EA, EB, P2, EC, ED, - ST_POLY6, COLOR1, P0, ED, P4, EE, EF, P6, - ST_QUA, COLOR1, P0, P6, EG, EH, + ST_POLY8, COLOR1, P0, ED, P4, EE, EF, P6, EG, EH, // Case #86 ST_TRI, COLOR0, EC, P3, ED, ST_TRI, COLOR0, EE, P5, EF, @@ -445,13 +399,11 @@ unsigned char clipShapesPoly8[] = { ST_TRI, COLOR0, EE, P5, EF, ST_TRI, COLOR0, EG, P7, EH, ST_POLY6, COLOR1, P0, P1, P2, EC, ED, P4, - ST_POLY6, COLOR1, P0, P4, EE, EF, P6, EG, - ST_TRI, COLOR1, P0, EG, EH, + ST_POLY7, COLOR1, P0, P4, EE, EF, P6, EG, EH, // Case #88 ST_TRI, COLOR0, EE, P5, EF, ST_POLY6, COLOR0, P0, P1, P2, EC, EG, P7, - ST_POLY6, COLOR1, P3, P4, EE, EF, P6, EG, - ST_TRI, COLOR1, EC, P3, EG, + ST_POLY7, COLOR1, EC, P3, P4, EE, EF, P6, EG, // Case #89 ST_TRI, COLOR0, EE, P5, EF, ST_TRI, COLOR0, EG, P7, EH, @@ -469,20 +421,17 @@ unsigned char clipShapesPoly8[] = { ST_TRI, COLOR0, EE, P5, EF, ST_TRI, COLOR0, EG, P7, EH, ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P4, - ST_POLY6, COLOR1, P0, P4, EE, EF, P6, EG, - ST_TRI, COLOR1, P0, EG, EH, + ST_POLY7, COLOR1, P0, P4, EE, EF, P6, EG, EH, // Case #92 ST_TRI, COLOR0, EE, P5, EF, ST_POLY5, COLOR0, P0, P1, EB, EG, P7, - ST_POLY6, COLOR1, P2, P3, P4, EE, EF, P6, - ST_QUA, COLOR1, EB, P2, P6, EG, + ST_POLY8, COLOR1, EB, P2, P3, P4, EE, EF, P6, EG, // Case #93 ST_TRI, COLOR0, EE, P5, EF, ST_TRI, COLOR0, EG, P7, EH, ST_TRI, COLOR0, EA, P1, EB, ST_POLY6, COLOR1, P2, P3, P4, EE, EF, P6, - ST_POLY6, COLOR1, P0, EA, P2, P6, EG, EH, - ST_TRI, COLOR1, EA, EB, P2, + ST_POLY7, COLOR1, P0, EA, EB, P2, P6, EG, EH, // Case #94 ST_TRI, COLOR0, EE, P5, EF, ST_QUA, COLOR0, P0, EA, EG, P7, @@ -494,29 +443,24 @@ unsigned char clipShapesPoly8[] = { ST_POLY6, COLOR1, P0, P1, P2, P3, P4, EE, ST_POLY6, COLOR1, P0, EE, EF, P6, EG, EH, // Case #96 - ST_POLY6, COLOR0, P0, P1, P2, P3, EG, P7, - ST_QUA, COLOR0, P3, P4, EE, EG, + ST_POLY8, COLOR0, P0, P1, P2, P3, P4, EE, EG, P7, ST_QUA, COLOR1, EE, P5, P6, EG, // Case #97 ST_TRI, COLOR0, EG, P7, EH, ST_POLY6, COLOR0, EA, P1, P2, P3, P4, EE, - ST_POLY6, COLOR1, P0, EA, P5, P6, EG, EH, - ST_TRI, COLOR1, EA, EE, P5, + ST_POLY7, COLOR1, P0, EA, EE, P5, P6, EG, EH, // Case #98 ST_QUA, COLOR0, P0, EA, EG, P7, ST_POLY5, COLOR0, EB, P2, P3, P4, EE, - ST_POLY6, COLOR1, EA, P1, EB, P5, P6, EG, - ST_TRI, COLOR1, EB, EE, P5, + ST_POLY7, COLOR1, EA, P1, EB, EE, P5, P6, EG, // Case #99 ST_TRI, COLOR0, EG, P7, EH, ST_POLY5, COLOR0, EB, P2, P3, P4, EE, - ST_POLY6, COLOR1, P0, P1, P5, P6, EG, EH, - ST_QUA, COLOR1, P1, EB, EE, P5, + ST_POLY8, COLOR1, P0, P1, EB, EE, P5, P6, EG, EH, // Case #100 ST_QUA, COLOR0, EC, P3, P4, EE, ST_POLY5, COLOR0, P0, P1, EB, EG, P7, - ST_POLY6, COLOR1, EB, P2, EC, EE, P5, P6, - ST_TRI, COLOR1, EB, P6, EG, + ST_POLY7, COLOR1, EB, P2, EC, EE, P5, P6, EG, // Case #101 ST_TRI, COLOR0, EG, P7, EH, ST_TRI, COLOR0, EA, P1, EB, @@ -526,8 +470,7 @@ unsigned char clipShapesPoly8[] = { // Case #102 ST_QUA, COLOR0, EC, P3, P4, EE, ST_QUA, COLOR0, P0, EA, EG, P7, - ST_POLY6, COLOR1, P1, P2, EC, EE, P5, P6, - ST_QUA, COLOR1, EA, P1, P6, EG, + ST_POLY8, COLOR1, EA, P1, P2, EC, EE, P5, P6, EG, // Case #103 ST_TRI, COLOR0, EG, P7, EH, ST_QUA, COLOR0, EC, P3, P4, EE, @@ -536,8 +479,7 @@ unsigned char clipShapesPoly8[] = { // Case #104 ST_TRI, COLOR0, ED, P4, EE, ST_POLY6, COLOR0, P0, P1, P2, EC, EG, P7, - ST_POLY6, COLOR1, EC, P3, ED, EE, P5, P6, - ST_TRI, COLOR1, EC, P6, EG, + ST_POLY7, COLOR1, EC, P3, ED, EE, P5, P6, EG, // Case #105 ST_TRI, COLOR0, ED, P4, EE, ST_TRI, COLOR0, EG, P7, EH, @@ -555,20 +497,17 @@ unsigned char clipShapesPoly8[] = { ST_TRI, COLOR0, EB, P2, EC, ST_TRI, COLOR0, ED, P4, EE, ST_POLY6, COLOR1, P0, P1, P5, P6, EG, EH, - ST_POLY6, COLOR1, P1, EB, EC, P3, ED, P5, - ST_TRI, COLOR1, ED, EE, P5, + ST_POLY7, COLOR1, P1, EB, EC, P3, ED, EE, P5, // Case #108 ST_TRI, COLOR0, ED, P4, EE, ST_POLY5, COLOR0, P0, P1, EB, EG, P7, - ST_POLY6, COLOR1, P2, P3, ED, EE, P5, P6, - ST_QUA, COLOR1, EB, P2, P6, EG, + ST_POLY8, COLOR1, EB, P2, P3, ED, EE, P5, P6, EG, // Case #109 ST_TRI, COLOR0, ED, P4, EE, ST_TRI, COLOR0, EG, P7, EH, ST_TRI, COLOR0, EA, P1, EB, ST_POLY6, COLOR1, P2, P3, ED, EE, P5, P6, - ST_POLY6, COLOR1, P0, EA, P2, P6, EG, EH, - ST_TRI, COLOR1, EA, EB, P2, + ST_POLY7, COLOR1, P0, EA, EB, P2, P6, EG, EH, // Case #110 ST_TRI, COLOR0, ED, P4, EE, ST_QUA, COLOR0, P0, EA, EG, P7, @@ -580,19 +519,16 @@ unsigned char clipShapesPoly8[] = { ST_POLY6, COLOR1, P0, P1, P2, P3, ED, EE, ST_POLY6, COLOR1, P0, EE, P5, P6, EG, EH, // Case #112 - ST_POLY6, COLOR0, P0, P1, P2, P3, EG, P7, - ST_TRI, COLOR0, P3, ED, EG, + ST_POLY7, COLOR0, P0, P1, P2, P3, ED, EG, P7, ST_POLY5, COLOR1, ED, P4, P5, P6, EG, // Case #113 ST_TRI, COLOR0, EG, P7, EH, ST_POLY5, COLOR0, EA, P1, P2, P3, ED, - ST_POLY6, COLOR1, P0, P4, P5, P6, EG, EH, - ST_QUA, COLOR1, P0, EA, ED, P4, + ST_POLY8, COLOR1, P0, EA, ED, P4, P5, P6, EG, EH, // Case #114 ST_QUA, COLOR0, P0, EA, EG, P7, ST_QUA, COLOR0, EB, P2, P3, ED, - ST_POLY6, COLOR1, EA, P1, P4, P5, P6, EG, - ST_QUA, COLOR1, P1, EB, ED, P4, + ST_POLY8, COLOR1, EA, P1, EB, ED, P4, P5, P6, EG, // Case #115 ST_TRI, COLOR0, EG, P7, EH, ST_QUA, COLOR0, EB, P2, P3, ED, @@ -601,15 +537,13 @@ unsigned char clipShapesPoly8[] = { // Case #116 ST_TRI, COLOR0, EC, P3, ED, ST_POLY5, COLOR0, P0, P1, EB, EG, P7, - ST_POLY6, COLOR1, P2, EC, ED, P4, P5, P6, - ST_QUA, COLOR1, EB, P2, P6, EG, + ST_POLY8, COLOR1, EB, P2, EC, ED, P4, P5, P6, EG, // Case #117 ST_TRI, COLOR0, EG, P7, EH, ST_TRI, COLOR0, EA, P1, EB, ST_TRI, COLOR0, EC, P3, ED, ST_POLY6, COLOR1, P0, P4, P5, P6, EG, EH, - ST_POLY6, COLOR1, P0, EA, EB, P2, EC, P4, - ST_TRI, COLOR1, EC, ED, P4, + ST_POLY7, COLOR1, P0, EA, EB, P2, EC, ED, P4, // Case #118 ST_TRI, COLOR0, EC, P3, ED, ST_QUA, COLOR0, P0, EA, EG, P7, @@ -640,8 +574,7 @@ unsigned char clipShapesPoly8[] = { ST_POLY6, COLOR1, P0, P1, EB, EC, P3, EH, // Case #124 ST_POLY5, COLOR0, P0, P1, EB, EG, P7, - ST_POLY6, COLOR1, P2, P3, P4, P5, P6, EG, - ST_TRI, COLOR1, EB, P2, EG, + ST_POLY7, COLOR1, EB, P2, P3, P4, P5, P6, EG, // Case #125 ST_TRI, COLOR0, EG, P7, EH, ST_TRI, COLOR0, EA, P1, EB, @@ -649,8 +582,7 @@ unsigned char clipShapesPoly8[] = { ST_POLY6, COLOR1, P0, EA, EB, P2, EG, EH, // Case #126 ST_QUA, COLOR0, P0, EA, EG, P7, - ST_POLY6, COLOR1, P1, P2, P3, P4, P5, P6, - ST_QUA, COLOR1, EA, P1, P6, EG, + ST_POLY8, COLOR1, EA, P1, P2, P3, P4, P5, P6, EG, // Case #127 ST_TRI, COLOR0, EG, P7, EH, ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P5, @@ -660,17 +592,14 @@ unsigned char clipShapesPoly8[] = { ST_POLY5, COLOR0, P4, P5, P6, EG, EH, ST_TRI, COLOR1, EG, P7, EH, // Case #129 - ST_POLY6, COLOR0, EA, P1, P2, P3, P4, P5, - ST_QUA, COLOR0, EA, P5, P6, EG, + ST_POLY8, COLOR0, EA, P1, P2, P3, P4, P5, P6, EG, ST_QUA, COLOR1, P0, EA, EG, P7, // Case #130 ST_TRI, COLOR0, P0, EA, EH, - ST_POLY6, COLOR0, EB, P2, P3, P4, P5, P6, - ST_TRI, COLOR0, EB, P6, EG, + ST_POLY7, COLOR0, EB, P2, P3, P4, P5, P6, EG, ST_POLY6, COLOR1, EA, P1, EB, EG, P7, EH, // Case #131 - ST_POLY6, COLOR0, EB, P2, P3, P4, P5, P6, - ST_TRI, COLOR0, EB, P6, EG, + ST_POLY7, COLOR0, EB, P2, P3, P4, P5, P6, EG, ST_POLY5, COLOR1, P0, P1, EB, EG, P7, // Case #132 ST_QUA, COLOR0, P0, P1, EB, EH, @@ -679,13 +608,11 @@ unsigned char clipShapesPoly8[] = { // Case #133 ST_TRI, COLOR0, EA, P1, EB, ST_POLY6, COLOR0, EC, P3, P4, P5, P6, EG, - ST_POLY6, COLOR1, P0, EA, EB, P2, EC, P7, - ST_TRI, COLOR1, EC, EG, P7, + ST_POLY7, COLOR1, P0, EA, EB, P2, EC, EG, P7, // Case #134 ST_TRI, COLOR0, P0, EA, EH, ST_POLY6, COLOR0, EC, P3, P4, P5, P6, EG, - ST_POLY6, COLOR1, EA, P1, P2, EG, P7, EH, - ST_TRI, COLOR1, P2, EC, EG, + ST_POLY7, COLOR1, EA, P1, P2, EC, EG, P7, EH, // Case #135 ST_POLY6, COLOR0, EC, P3, P4, P5, P6, EG, ST_POLY6, COLOR1, P0, P1, P2, EC, EG, P7, @@ -696,8 +623,7 @@ unsigned char clipShapesPoly8[] = { // Case #137 ST_QUA, COLOR0, EA, P1, P2, EC, ST_POLY5, COLOR0, ED, P4, P5, P6, EG, - ST_POLY6, COLOR1, P0, EA, EC, P3, ED, P7, - ST_TRI, COLOR1, ED, EG, P7, + ST_POLY7, COLOR1, P0, EA, EC, P3, ED, EG, P7, // Case #138 ST_TRI, COLOR0, P0, EA, EH, ST_TRI, COLOR0, EB, P2, EC, @@ -707,27 +633,22 @@ unsigned char clipShapesPoly8[] = { // Case #139 ST_TRI, COLOR0, EB, P2, EC, ST_POLY5, COLOR0, ED, P4, P5, P6, EG, - ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P7, - ST_QUA, COLOR1, P3, ED, EG, P7, + ST_POLY8, COLOR1, P0, P1, EB, EC, P3, ED, EG, P7, // Case #140 ST_QUA, COLOR0, P0, P1, EB, EH, ST_POLY5, COLOR0, ED, P4, P5, P6, EG, - ST_POLY6, COLOR1, EB, P2, P3, EG, P7, EH, - ST_TRI, COLOR1, P3, ED, EG, + ST_POLY7, COLOR1, EB, P2, P3, ED, EG, P7, EH, // Case #141 ST_TRI, COLOR0, EA, P1, EB, ST_POLY5, COLOR0, ED, P4, P5, P6, EG, - ST_POLY6, COLOR1, P0, EA, EB, P2, P3, P7, - ST_QUA, COLOR1, P3, ED, EG, P7, + ST_POLY8, COLOR1, P0, EA, EB, P2, P3, ED, EG, P7, // Case #142 ST_TRI, COLOR0, P0, EA, EH, ST_POLY5, COLOR0, ED, P4, P5, P6, EG, - ST_POLY6, COLOR1, EA, P1, P2, P3, P7, EH, - ST_QUA, COLOR1, P3, ED, EG, P7, + ST_POLY8, COLOR1, EA, P1, P2, P3, ED, EG, P7, EH, // Case #143 ST_POLY5, COLOR0, ED, P4, P5, P6, EG, - ST_POLY6, COLOR1, P0, P1, P2, P3, ED, P7, - ST_TRI, COLOR1, ED, EG, P7, + ST_POLY7, COLOR1, P0, P1, P2, P3, ED, EG, P7, // Case #144 ST_QUA, COLOR0, EE, P5, P6, EG, ST_POLY6, COLOR0, P0, P1, P2, P3, ED, EH, @@ -735,8 +656,7 @@ unsigned char clipShapesPoly8[] = { // Case #145 ST_QUA, COLOR0, EE, P5, P6, EG, ST_POLY5, COLOR0, EA, P1, P2, P3, ED, - ST_POLY6, COLOR1, P0, ED, P4, EE, EG, P7, - ST_TRI, COLOR1, P0, EA, ED, + ST_POLY7, COLOR1, P0, EA, ED, P4, EE, EG, P7, // Case #146 ST_TRI, COLOR0, P0, EA, EH, ST_QUA, COLOR0, EB, P2, P3, ED, @@ -746,8 +666,7 @@ unsigned char clipShapesPoly8[] = { // Case #147 ST_QUA, COLOR0, EB, P2, P3, ED, ST_QUA, COLOR0, EE, P5, P6, EG, - ST_POLY6, COLOR1, P0, P1, EB, ED, P4, P7, - ST_QUA, COLOR1, P4, EE, EG, P7, + ST_POLY8, COLOR1, P0, P1, EB, ED, P4, EE, EG, P7, // Case #148 ST_TRI, COLOR0, EC, P3, ED, ST_QUA, COLOR0, EE, P5, P6, EG, @@ -774,13 +693,11 @@ unsigned char clipShapesPoly8[] = { // Case #152 ST_QUA, COLOR0, EE, P5, P6, EG, ST_POLY5, COLOR0, P0, P1, P2, EC, EH, - ST_POLY6, COLOR1, P3, P4, EE, EG, P7, EH, - ST_TRI, COLOR1, EC, P3, EH, + ST_POLY7, COLOR1, EC, P3, P4, EE, EG, P7, EH, // Case #153 ST_QUA, COLOR0, EE, P5, P6, EG, ST_QUA, COLOR0, EA, P1, P2, EC, - ST_POLY6, COLOR1, P0, P3, P4, EE, EG, P7, - ST_QUA, COLOR1, P0, EA, EC, P3, + ST_POLY8, COLOR1, P0, EA, EC, P3, P4, EE, EG, P7, // Case #154 ST_TRI, COLOR0, EB, P2, EC, ST_TRI, COLOR0, P0, EA, EH, @@ -795,8 +712,7 @@ unsigned char clipShapesPoly8[] = { // Case #156 ST_QUA, COLOR0, EE, P5, P6, EG, ST_QUA, COLOR0, P0, P1, EB, EH, - ST_POLY6, COLOR1, P2, P3, P4, EE, EG, P7, - ST_QUA, COLOR1, EB, P2, P7, EH, + ST_POLY8, COLOR1, EB, P2, P3, P4, EE, EG, P7, EH, // Case #157 ST_TRI, COLOR0, EA, P1, EB, ST_QUA, COLOR0, EE, P5, P6, EG, @@ -809,18 +725,15 @@ unsigned char clipShapesPoly8[] = { ST_POLY5, COLOR1, P4, EE, EG, P7, EH, // Case #159 ST_QUA, COLOR0, EE, P5, P6, EG, - ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P7, - ST_QUA, COLOR1, P4, EE, EG, P7, + ST_POLY8, COLOR1, P0, P1, P2, P3, P4, EE, EG, P7, // Case #160 ST_TRI, COLOR0, EF, P6, EG, - ST_POLY6, COLOR0, P0, P1, P2, P3, P4, EH, - ST_TRI, COLOR0, P4, EE, EH, + ST_POLY7, COLOR0, P0, P1, P2, P3, P4, EE, EH, ST_POLY6, COLOR1, EE, P5, EF, EG, P7, EH, // Case #161 ST_TRI, COLOR0, EF, P6, EG, ST_POLY6, COLOR0, EA, P1, P2, P3, P4, EE, - ST_POLY6, COLOR1, P0, EE, P5, EF, EG, P7, - ST_TRI, COLOR1, P0, EA, EE, + ST_POLY7, COLOR1, P0, EA, EE, P5, EF, EG, P7, // Case #162 ST_TRI, COLOR0, EF, P6, EG, ST_TRI, COLOR0, P0, EA, EH, @@ -830,8 +743,7 @@ unsigned char clipShapesPoly8[] = { // Case #163 ST_TRI, COLOR0, EF, P6, EG, ST_POLY5, COLOR0, EB, P2, P3, P4, EE, - ST_POLY6, COLOR1, P0, P1, P5, EF, EG, P7, - ST_QUA, COLOR1, P1, EB, EE, P5, + ST_POLY8, COLOR1, P0, P1, EB, EE, P5, EF, EG, P7, // Case #164 ST_TRI, COLOR0, EF, P6, EG, ST_QUA, COLOR0, P0, P1, EB, EH, @@ -873,15 +785,13 @@ unsigned char clipShapesPoly8[] = { ST_TRI, COLOR0, EF, P6, EG, ST_TRI, COLOR0, P0, EA, EH, ST_POLY6, COLOR1, P1, EB, EC, P3, ED, EE, - ST_POLY6, COLOR1, P1, EE, P5, EF, EG, P7, - ST_QUA, COLOR1, EA, P1, P7, EH, + ST_POLY8, COLOR1, EA, P1, EE, P5, EF, EG, P7, EH, // Case #171 ST_TRI, COLOR0, EB, P2, EC, ST_TRI, COLOR0, ED, P4, EE, ST_TRI, COLOR0, EF, P6, EG, ST_POLY6, COLOR1, P0, P1, EB, EC, P3, P7, - ST_POLY6, COLOR1, P3, ED, EE, P5, EF, P7, - ST_TRI, COLOR1, EF, EG, P7, + ST_POLY7, COLOR1, P3, ED, EE, P5, EF, EG, P7, // Case #172 ST_TRI, COLOR0, ED, P4, EE, ST_TRI, COLOR0, EF, P6, EG, @@ -893,15 +803,13 @@ unsigned char clipShapesPoly8[] = { ST_TRI, COLOR0, ED, P4, EE, ST_TRI, COLOR0, EF, P6, EG, ST_POLY6, COLOR1, P0, EA, EB, P2, P3, P7, - ST_POLY6, COLOR1, P3, ED, EE, P5, EF, P7, - ST_TRI, COLOR1, EF, EG, P7, + ST_POLY7, COLOR1, P3, ED, EE, P5, EF, EG, P7, // Case #174 ST_TRI, COLOR0, ED, P4, EE, ST_TRI, COLOR0, EF, P6, EG, ST_TRI, COLOR0, P0, EA, EH, ST_POLY6, COLOR1, P1, P2, P3, ED, EE, P5, - ST_POLY6, COLOR1, P1, P5, EF, EG, P7, EH, - ST_TRI, COLOR1, EA, P1, EH, + ST_POLY7, COLOR1, EA, P1, P5, EF, EG, P7, EH, // Case #175 ST_TRI, COLOR0, ED, P4, EE, ST_TRI, COLOR0, EF, P6, EG, @@ -910,13 +818,11 @@ unsigned char clipShapesPoly8[] = { // Case #176 ST_TRI, COLOR0, EF, P6, EG, ST_POLY6, COLOR0, P0, P1, P2, P3, ED, EH, - ST_POLY6, COLOR1, P4, P5, EF, EG, P7, EH, - ST_TRI, COLOR1, ED, P4, EH, + ST_POLY7, COLOR1, ED, P4, P5, EF, EG, P7, EH, // Case #177 ST_TRI, COLOR0, EF, P6, EG, ST_POLY5, COLOR0, EA, P1, P2, P3, ED, - ST_POLY6, COLOR1, P0, P4, P5, EF, EG, P7, - ST_QUA, COLOR1, P0, EA, ED, P4, + ST_POLY8, COLOR1, P0, EA, ED, P4, P5, EF, EG, P7, // Case #178 ST_TRI, COLOR0, EF, P6, EG, ST_TRI, COLOR0, P0, EA, EH, @@ -939,15 +845,13 @@ unsigned char clipShapesPoly8[] = { ST_TRI, COLOR0, EA, P1, EB, ST_TRI, COLOR0, EC, P3, ED, ST_POLY6, COLOR1, P0, P4, P5, EF, EG, P7, - ST_POLY6, COLOR1, P0, EA, EB, P2, EC, P4, - ST_TRI, COLOR1, EC, ED, P4, + ST_POLY7, COLOR1, P0, EA, EB, P2, EC, ED, P4, // Case #182 ST_TRI, COLOR0, EC, P3, ED, ST_TRI, COLOR0, EF, P6, EG, ST_TRI, COLOR0, P0, EA, EH, ST_POLY6, COLOR1, P1, P2, EC, ED, P4, P5, - ST_POLY6, COLOR1, P1, P5, EF, EG, P7, EH, - ST_TRI, COLOR1, EA, P1, EH, + ST_POLY7, COLOR1, EA, P1, P5, EF, EG, P7, EH, // Case #183 ST_TRI, COLOR0, EC, P3, ED, ST_TRI, COLOR0, EF, P6, EG, @@ -956,8 +860,7 @@ unsigned char clipShapesPoly8[] = { // Case #184 ST_TRI, COLOR0, EF, P6, EG, ST_POLY5, COLOR0, P0, P1, P2, EC, EH, - ST_POLY6, COLOR1, P3, P4, P5, EF, EG, P7, - ST_QUA, COLOR1, EC, P3, P7, EH, + ST_POLY8, COLOR1, EC, P3, P4, P5, EF, EG, P7, EH, // Case #185 ST_TRI, COLOR0, EF, P6, EG, ST_QUA, COLOR0, EA, P1, P2, EC, @@ -968,8 +871,7 @@ unsigned char clipShapesPoly8[] = { ST_TRI, COLOR0, P0, EA, EH, ST_TRI, COLOR0, EB, P2, EC, ST_POLY6, COLOR1, P3, P4, P5, EF, EG, P7, - ST_POLY6, COLOR1, EA, P1, EB, P3, P7, EH, - ST_TRI, COLOR1, EB, EC, P3, + ST_POLY7, COLOR1, EA, P1, EB, EC, P3, P7, EH, // Case #187 ST_TRI, COLOR0, EF, P6, EG, ST_TRI, COLOR0, EB, P2, EC, @@ -995,50 +897,41 @@ unsigned char clipShapesPoly8[] = { ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P7, ST_POLY5, COLOR1, P4, P5, EF, EG, P7, // Case #192 - ST_POLY6, COLOR0, P0, P1, P2, P3, P4, EH, - ST_QUA, COLOR0, P4, P5, EF, EH, + ST_POLY8, COLOR0, P0, P1, P2, P3, P4, P5, EF, EH, ST_QUA, COLOR1, EF, P6, P7, EH, // Case #193 - ST_POLY6, COLOR0, EA, P1, P2, P3, P4, P5, - ST_TRI, COLOR0, EA, P5, EF, + ST_POLY7, COLOR0, EA, P1, P2, P3, P4, P5, EF, ST_POLY5, COLOR1, P0, EA, EF, P6, P7, // Case #194 ST_TRI, COLOR0, P0, EA, EH, ST_POLY6, COLOR0, EB, P2, P3, P4, P5, EF, - ST_POLY6, COLOR1, EA, P1, EB, P6, P7, EH, - ST_TRI, COLOR1, EB, EF, P6, + ST_POLY7, COLOR1, EA, P1, EB, EF, P6, P7, EH, // Case #195 ST_POLY6, COLOR0, EB, P2, P3, P4, P5, EF, ST_POLY6, COLOR1, P0, P1, EB, EF, P6, P7, // Case #196 ST_QUA, COLOR0, P0, P1, EB, EH, ST_POLY5, COLOR0, EC, P3, P4, P5, EF, - ST_POLY6, COLOR1, EB, P2, EC, P6, P7, EH, - ST_TRI, COLOR1, EC, EF, P6, + ST_POLY7, COLOR1, EB, P2, EC, EF, P6, P7, EH, // Case #197 ST_TRI, COLOR0, EA, P1, EB, ST_POLY5, COLOR0, EC, P3, P4, P5, EF, - ST_POLY6, COLOR1, P0, EA, EB, P2, P6, P7, - ST_QUA, COLOR1, P2, EC, EF, P6, + ST_POLY8, COLOR1, P0, EA, EB, P2, EC, EF, P6, P7, // Case #198 ST_TRI, COLOR0, P0, EA, EH, ST_POLY5, COLOR0, EC, P3, P4, P5, EF, - ST_POLY6, COLOR1, EA, P1, P2, P6, P7, EH, - ST_QUA, COLOR1, P2, EC, EF, P6, + ST_POLY8, COLOR1, EA, P1, P2, EC, EF, P6, P7, EH, // Case #199 ST_POLY5, COLOR0, EC, P3, P4, P5, EF, - ST_POLY6, COLOR1, P0, P1, P2, EC, P6, P7, - ST_TRI, COLOR1, EC, EF, P6, + ST_POLY7, COLOR1, P0, P1, P2, EC, EF, P6, P7, // Case #200 ST_QUA, COLOR0, ED, P4, P5, EF, ST_POLY5, COLOR0, P0, P1, P2, EC, EH, - ST_POLY6, COLOR1, EC, P3, ED, EF, P6, P7, - ST_TRI, COLOR1, EC, P7, EH, + ST_POLY7, COLOR1, EC, P3, ED, EF, P6, P7, EH, // Case #201 ST_QUA, COLOR0, EA, P1, P2, EC, ST_QUA, COLOR0, ED, P4, P5, EF, - ST_POLY6, COLOR1, P0, EA, EC, P3, P6, P7, - ST_QUA, COLOR1, P3, ED, EF, P6, + ST_POLY8, COLOR1, P0, EA, EC, P3, ED, EF, P6, P7, // Case #202 ST_TRI, COLOR0, P0, EA, EH, ST_TRI, COLOR0, EB, P2, EC, @@ -1053,8 +946,7 @@ unsigned char clipShapesPoly8[] = { // Case #204 ST_QUA, COLOR0, ED, P4, P5, EF, ST_QUA, COLOR0, P0, P1, EB, EH, - ST_POLY6, COLOR1, P2, P3, ED, EF, P6, P7, - ST_QUA, COLOR1, EB, P2, P7, EH, + ST_POLY8, COLOR1, EB, P2, P3, ED, EF, P6, P7, EH, // Case #205 ST_TRI, COLOR0, EA, P1, EB, ST_QUA, COLOR0, ED, P4, P5, EF, @@ -1067,18 +959,15 @@ unsigned char clipShapesPoly8[] = { ST_POLY5, COLOR1, P3, ED, EF, P6, P7, // Case #207 ST_QUA, COLOR0, ED, P4, P5, EF, - ST_POLY6, COLOR1, P0, P1, P2, P3, P6, P7, - ST_QUA, COLOR1, P3, ED, EF, P6, + ST_POLY8, COLOR1, P0, P1, P2, P3, ED, EF, P6, P7, // Case #208 ST_TRI, COLOR0, EE, P5, EF, ST_POLY6, COLOR0, P0, P1, P2, P3, ED, EH, - ST_POLY6, COLOR1, ED, P4, EE, EF, P6, P7, - ST_TRI, COLOR1, ED, P7, EH, + ST_POLY7, COLOR1, ED, P4, EE, EF, P6, P7, EH, // Case #209 ST_TRI, COLOR0, EE, P5, EF, ST_POLY5, COLOR0, EA, P1, P2, P3, ED, - ST_POLY6, COLOR1, P0, P4, EE, EF, P6, P7, - ST_QUA, COLOR1, P0, EA, ED, P4, + ST_POLY8, COLOR1, P0, EA, ED, P4, EE, EF, P6, P7, // Case #210 ST_TRI, COLOR0, EE, P5, EF, ST_TRI, COLOR0, P0, EA, EH, @@ -1101,15 +990,13 @@ unsigned char clipShapesPoly8[] = { ST_TRI, COLOR0, EC, P3, ED, ST_TRI, COLOR0, EE, P5, EF, ST_POLY6, COLOR1, P0, EA, EB, P2, P6, P7, - ST_POLY6, COLOR1, P2, EC, ED, P4, EE, P6, - ST_TRI, COLOR1, EE, EF, P6, + ST_POLY7, COLOR1, P2, EC, ED, P4, EE, EF, P6, // Case #214 ST_TRI, COLOR0, P0, EA, EH, ST_TRI, COLOR0, EC, P3, ED, ST_TRI, COLOR0, EE, P5, EF, ST_POLY6, COLOR1, EA, P1, P2, P6, P7, EH, - ST_POLY6, COLOR1, P2, EC, ED, P4, EE, P6, - ST_TRI, COLOR1, EE, EF, P6, + ST_POLY7, COLOR1, P2, EC, ED, P4, EE, EF, P6, // Case #215 ST_TRI, COLOR0, EC, P3, ED, ST_TRI, COLOR0, EE, P5, EF, @@ -1118,8 +1005,7 @@ unsigned char clipShapesPoly8[] = { // Case #216 ST_TRI, COLOR0, EE, P5, EF, ST_POLY5, COLOR0, P0, P1, P2, EC, EH, - ST_POLY6, COLOR1, P3, P4, EE, EF, P6, P7, - ST_QUA, COLOR1, EC, P3, P7, EH, + ST_POLY8, COLOR1, EC, P3, P4, EE, EF, P6, P7, EH, // Case #217 ST_TRI, COLOR0, EE, P5, EF, ST_QUA, COLOR0, EA, P1, P2, EC, @@ -1130,8 +1016,7 @@ unsigned char clipShapesPoly8[] = { ST_TRI, COLOR0, P0, EA, EH, ST_TRI, COLOR0, EB, P2, EC, ST_POLY6, COLOR1, P3, P4, EE, EF, P6, P7, - ST_POLY6, COLOR1, EA, P1, EB, P3, P7, EH, - ST_TRI, COLOR1, EB, EC, P3, + ST_POLY7, COLOR1, EA, P1, EB, EC, P3, P7, EH, // Case #219 ST_TRI, COLOR0, EB, P2, EC, ST_TRI, COLOR0, EE, P5, EF, @@ -1157,8 +1042,7 @@ unsigned char clipShapesPoly8[] = { ST_POLY6, COLOR1, P0, P1, P2, P3, P6, P7, ST_POLY5, COLOR1, P3, P4, EE, EF, P6, // Case #224 - ST_POLY6, COLOR0, P0, P1, P2, P3, P4, EH, - ST_TRI, COLOR0, P4, EE, EH, + ST_POLY7, COLOR0, P0, P1, P2, P3, P4, EE, EH, ST_POLY5, COLOR1, EE, P5, P6, P7, EH, // Case #225 ST_POLY6, COLOR0, EA, P1, P2, P3, P4, EE, @@ -1166,17 +1050,14 @@ unsigned char clipShapesPoly8[] = { // Case #226 ST_TRI, COLOR0, P0, EA, EH, ST_POLY5, COLOR0, EB, P2, P3, P4, EE, - ST_POLY6, COLOR1, EA, P1, P5, P6, P7, EH, - ST_QUA, COLOR1, P1, EB, EE, P5, + ST_POLY8, COLOR1, EA, P1, EB, EE, P5, P6, P7, EH, // Case #227 ST_POLY5, COLOR0, EB, P2, P3, P4, EE, - ST_POLY6, COLOR1, P0, P1, EB, P5, P6, P7, - ST_TRI, COLOR1, EB, EE, P5, + ST_POLY7, COLOR1, P0, P1, EB, EE, P5, P6, P7, // Case #228 ST_QUA, COLOR0, P0, P1, EB, EH, ST_QUA, COLOR0, EC, P3, P4, EE, - ST_POLY6, COLOR1, EB, P2, P5, P6, P7, EH, - ST_QUA, COLOR1, P2, EC, EE, P5, + ST_POLY8, COLOR1, EB, P2, EC, EE, P5, P6, P7, EH, // Case #229 ST_TRI, COLOR0, EA, P1, EB, ST_QUA, COLOR0, EC, P3, P4, EE, @@ -1189,13 +1070,11 @@ unsigned char clipShapesPoly8[] = { ST_POLY5, COLOR1, P1, P2, EC, EE, P5, // Case #231 ST_QUA, COLOR0, EC, P3, P4, EE, - ST_POLY6, COLOR1, P0, P1, P2, P5, P6, P7, - ST_QUA, COLOR1, P2, EC, EE, P5, + ST_POLY8, COLOR1, P0, P1, P2, EC, EE, P5, P6, P7, // Case #232 ST_TRI, COLOR0, ED, P4, EE, ST_POLY5, COLOR0, P0, P1, P2, EC, EH, - ST_POLY6, COLOR1, P3, ED, EE, P5, P6, P7, - ST_QUA, COLOR1, EC, P3, P7, EH, + ST_POLY8, COLOR1, EC, P3, ED, EE, P5, P6, P7, EH, // Case #233 ST_TRI, COLOR0, ED, P4, EE, ST_QUA, COLOR0, EA, P1, P2, EC, @@ -1206,8 +1085,7 @@ unsigned char clipShapesPoly8[] = { ST_TRI, COLOR0, EB, P2, EC, ST_TRI, COLOR0, ED, P4, EE, ST_POLY6, COLOR1, EA, P1, P5, P6, P7, EH, - ST_POLY6, COLOR1, P1, EB, EC, P3, ED, P5, - ST_TRI, COLOR1, ED, EE, P5, + ST_POLY7, COLOR1, P1, EB, EC, P3, ED, EE, P5, // Case #235 ST_TRI, COLOR0, EB, P2, EC, ST_TRI, COLOR0, ED, P4, EE, @@ -1237,8 +1115,7 @@ unsigned char clipShapesPoly8[] = { ST_POLY6, COLOR1, ED, P4, P5, P6, P7, EH, // Case #241 ST_POLY5, COLOR0, EA, P1, P2, P3, ED, - ST_POLY6, COLOR1, P0, EA, P4, P5, P6, P7, - ST_TRI, COLOR1, EA, ED, P4, + ST_POLY7, COLOR1, P0, EA, ED, P4, P5, P6, P7, // Case #242 ST_TRI, COLOR0, P0, EA, EH, ST_QUA, COLOR0, EB, P2, P3, ED, @@ -1246,8 +1123,7 @@ unsigned char clipShapesPoly8[] = { ST_POLY5, COLOR1, EA, P1, EB, ED, P4, // Case #243 ST_QUA, COLOR0, EB, P2, P3, ED, - ST_POLY6, COLOR1, P0, P1, P4, P5, P6, P7, - ST_QUA, COLOR1, P1, EB, ED, P4, + ST_POLY8, COLOR1, P0, P1, EB, ED, P4, P5, P6, P7, // Case #244 ST_TRI, COLOR0, EC, P3, ED, ST_QUA, COLOR0, P0, P1, EB, EH, @@ -1269,12 +1145,10 @@ unsigned char clipShapesPoly8[] = { ST_POLY5, COLOR1, P1, P2, EC, ED, P4, // Case #248 ST_POLY5, COLOR0, P0, P1, P2, EC, EH, - ST_POLY6, COLOR1, P3, P4, P5, P6, P7, EH, - ST_TRI, COLOR1, EC, P3, EH, + ST_POLY7, COLOR1, EC, P3, P4, P5, P6, P7, EH, // Case #249 ST_QUA, COLOR0, EA, P1, P2, EC, - ST_POLY6, COLOR1, P0, P3, P4, P5, P6, P7, - ST_QUA, COLOR1, P0, EA, EC, P3, + ST_POLY8, COLOR1, P0, EA, EC, P3, P4, P5, P6, P7, // Case #250 ST_TRI, COLOR0, P0, EA, EH, ST_TRI, COLOR0, EB, P2, EC, @@ -1286,8 +1160,7 @@ unsigned char clipShapesPoly8[] = { ST_POLY5, COLOR1, P0, P1, EB, EC, P3, // Case #252 ST_QUA, COLOR0, P0, P1, EB, EH, - ST_POLY6, COLOR1, P2, P3, P4, P5, P6, P7, - ST_QUA, COLOR1, EB, P2, P7, EH, + ST_POLY8, COLOR1, EB, P2, P3, P4, P5, P6, P7, EH, // Case #253 ST_TRI, COLOR0, EA, P1, EB, ST_POLY6, COLOR1, P2, P3, P4, P5, P6, P7, @@ -1297,8 +1170,7 @@ unsigned char clipShapesPoly8[] = { ST_POLY6, COLOR1, P1, P2, P3, P4, P5, P6, ST_POLY5, COLOR1, EA, P1, P6, P7, EH, // Case #255 - ST_POLY6, COLOR1, P0, P1, P2, P3, P4, P5, - ST_QUA, COLOR1, P0, P5, P6, P7 + ST_POLY8, COLOR1, P0, P1, P2, P3, P4, P5, P6, P7 }; // clang-format on From b2686546a658c0310454b4d1117a4aee05a17717 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Fri, 5 Dec 2025 17:05:36 -0800 Subject: [PATCH 19/28] Small change in equiz test. --- src/axom/mir/tests/mir_equiz2d.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/axom/mir/tests/mir_equiz2d.cpp b/src/axom/mir/tests/mir_equiz2d.cpp index 3f3f1d1372..9de796f283 100644 --- a/src/axom/mir/tests/mir_equiz2d.cpp +++ b/src/axom/mir/tests/mir_equiz2d.cpp @@ -174,7 +174,7 @@ class test_Polygonal_MIR EXPECT_EQ(countBadMaterialZones(hostResult["matsets/target2_matset"]), 0); - TestApp.saveVisualization("test_poly_mir", hostResult); + TestApp.saveVisualization(name, hostResult); // Handle baseline comparison. EXPECT_TRUE(TestApp.test(name, hostResult)); From 8b609c6aa3faebdd83fb0e4fb6fa4e55be8ed711 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Fri, 5 Dec 2025 17:05:46 -0800 Subject: [PATCH 20/28] Updated data directory branch. --- data | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data b/data index 0bb8a9b8ec..01d33e2200 160000 --- a/data +++ b/data @@ -1 +1 @@ -Subproject commit 0bb8a9b8eccf4992709dcc4205a69734fe9cbf99 +Subproject commit 01d33e2200abaf9331f65f83d2eb20f1cf972a67 From 2f789c076401960eb1d786b79ef3de165baea0aa Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Fri, 5 Dec 2025 17:07:54 -0800 Subject: [PATCH 21/28] make style --- src/axom/bump/clipping/ClipField.hpp | 99 +++++++++++-------- src/axom/bump/clipping/ClipTableManager.hpp | 3 +- src/axom/bump/clipping/CutCasesHex.cpp | 48 ++++++--- src/axom/bump/clipping/CutCasesPyramid.cpp | 31 +++--- src/axom/bump/clipping/CutCasesTet.cpp | 28 +++--- src/axom/bump/clipping/CutCasesTri.cpp | 28 +++--- src/axom/bump/clipping/CutCasesWedge.cpp | 30 +++--- .../bump/clipping/polygonalClipCasesPoly5.cpp | 31 +++--- .../bump/clipping/polygonalClipCasesPoly6.cpp | 34 ++++--- .../bump/clipping/polygonalClipCasesPoly7.cpp | 36 ++++--- .../bump/clipping/polygonalClipCasesPoly8.cpp | 48 ++++++--- .../bump/clipping/polygonalClipCasesQua.cpp | 28 +++--- src/axom/bump/views/Shapes.hpp | 5 +- .../views/dispatch_unstructured_topology.hpp | 4 +- 14 files changed, 273 insertions(+), 180 deletions(-) diff --git a/src/axom/bump/clipping/ClipField.hpp b/src/axom/bump/clipping/ClipField.hpp index 049ed1fb02..2f0e35a24d 100644 --- a/src/axom/bump/clipping/ClipField.hpp +++ b/src/axom/bump/clipping/ClipField.hpp @@ -114,12 +114,24 @@ inline constexpr int getClipTableIndex(int shapeId, axom::IndexType numNodes) case views::Polygon_ShapeID: switch(numNodes) { - case 3: index = 0; break; // triangle - case 4: index = 1; break; // quad - case 5: index = 2; break; // pentagon - case 6: index = 3; break; // hexagon - case 7: index = 4; break; // septagon - case 8: index = 5; break; // octagon + case 3: + index = 0; + break; // triangle + case 4: + index = 1; + break; // quad + case 5: + index = 2; + break; // pentagon + case 6: + index = 3; + break; // hexagon + case 7: + index = 4; + break; // septagon + case 8: + index = 5; + break; // octagon } break; case views::Tet_ShapeID: @@ -168,8 +180,9 @@ constexpr IndexType maxPointForDimension(int dim, IndexType numPoints) { case 2: // We take the max since we might have a polygon. - maxPoint = axom::utilities::max(static_cast(axom::bump::clipping::tables::P0) + numPoints - 1, - static_cast(axom::bump::clipping::tables::P3)); + maxPoint = + axom::utilities::max(static_cast(axom::bump::clipping::tables::P0) + numPoints - 1, + static_cast(axom::bump::clipping::tables::P3)); break; case 1: maxPoint = static_cast(axom::bump::clipping::tables::P1); @@ -187,8 +200,9 @@ constexpr IndexType maxEdgeForDimension(int dim, IndexType numPoints) { case 2: // We take the max since we might have a polygon. - maxEdge = axom::utilities::max(static_cast(axom::bump::clipping::tables::EA) + numPoints - 1, - static_cast(axom::bump::clipping::tables::ED)); + maxEdge = + axom::utilities::max(static_cast(axom::bump::clipping::tables::EA) + numPoints - 1, + static_cast(axom::bump::clipping::tables::ED)); break; case 1: maxEdge = static_cast(axom::bump::clipping::tables::EA); @@ -1715,7 +1729,8 @@ class ClipField { AXOM_ANNOTATE_SCOPE("makeTopology"); using namespace axom::bump::clipping::tables; - using FragmentOps = detail::FragmentOperations; + using FragmentOps = + detail::FragmentOperations; const auto selection = getSelection(opts); AXOM_ANNOTATE_BEGIN("allocation"); @@ -1895,14 +1910,15 @@ class ClipField { if(detail::shapeIsSelected(fragment[1], selection)) { - [[maybe_unused]] const bool addedFragment = FragmentOps::addFragment(fragment, - connView, - sizesView[sizeIndex], - offsetsView[sizeIndex], - shapesView[sizeIndex], - colorView[sizeIndex], - point_2_new, - outputIndex); + [[maybe_unused]] const bool addedFragment = + FragmentOps::addFragment(fragment, + connView, + sizesView[sizeIndex], + offsetsView[sizeIndex], + shapesView[sizeIndex], + colorView[sizeIndex], + point_2_new, + outputIndex); sizeIndex++; #if defined(AXOM_CLIP_FILTER_DEGENERATES) @@ -1947,16 +1963,15 @@ class ClipField // Filter out shapes that were marked as zero-size, adjusting connectivity and other arrays. if(degenerates_reduce.get()) { - FragmentOps::filterZeroSizes( - fragmentData, - n_sizes, - n_offsets, - n_shapes, - n_color_values, - sizesView, - offsetsView, - shapesView, - colorView); + FragmentOps::filterZeroSizes(fragmentData, + n_sizes, + n_offsets, + n_shapes, + n_color_values, + sizesView, + offsetsView, + shapesView, + colorView); } #endif @@ -1985,13 +2000,7 @@ class ClipField #if defined(AXOM_CLIP_FILTER_DEGENERATES) // Handle some quad->tri degeneracies, depending on dimension. - shapesUsed = - FragmentOps::quadtri( - shapesUsed, - connView, - sizesView, - offsetsView, - shapesView); + shapesUsed = FragmentOps::quadtri(shapesUsed, connView, sizesView, offsetsView, shapesView); #endif // Add shape information to the connectivity. @@ -2250,23 +2259,29 @@ class ClipField { std::map sm; - if(axom::utilities::bitIsSet(shapes, views::Line_ShapeID)) sm[views::LineTraits::name()] = views::Line_ShapeID; + if(axom::utilities::bitIsSet(shapes, views::Line_ShapeID)) + sm[views::LineTraits::name()] = views::Line_ShapeID; - if(axom::utilities::bitIsSet(shapes, views::Tri_ShapeID)) sm[views::TriTraits::name()] = views::Tri_ShapeID; + if(axom::utilities::bitIsSet(shapes, views::Tri_ShapeID)) + sm[views::TriTraits::name()] = views::Tri_ShapeID; - if(axom::utilities::bitIsSet(shapes, views::Quad_ShapeID)) sm[views::QuadTraits::name()] = views::Quad_ShapeID; + if(axom::utilities::bitIsSet(shapes, views::Quad_ShapeID)) + sm[views::QuadTraits::name()] = views::Quad_ShapeID; if(axom::utilities::bitIsSet(shapes, views::Polygon_ShapeID)) sm[views::PolygonTraits::name()] = views::Polygon_ShapeID; - if(axom::utilities::bitIsSet(shapes, views::Tet_ShapeID)) sm[views::TetTraits::name()] = views::Tet_ShapeID; + if(axom::utilities::bitIsSet(shapes, views::Tet_ShapeID)) + sm[views::TetTraits::name()] = views::Tet_ShapeID; if(axom::utilities::bitIsSet(shapes, views::Pyramid_ShapeID)) sm[views::PyramidTraits::name()] = views::Pyramid_ShapeID; - if(axom::utilities::bitIsSet(shapes, views::Wedge_ShapeID)) sm[views::WedgeTraits::name()] = views::Wedge_ShapeID; + if(axom::utilities::bitIsSet(shapes, views::Wedge_ShapeID)) + sm[views::WedgeTraits::name()] = views::Wedge_ShapeID; - if(axom::utilities::bitIsSet(shapes, views::Hex_ShapeID)) sm[views::HexTraits::name()] = views::Hex_ShapeID; + if(axom::utilities::bitIsSet(shapes, views::Hex_ShapeID)) + sm[views::HexTraits::name()] = views::Hex_ShapeID; if(axom::utilities::bitIsSet(shapes, views::Polyhedron_ShapeID)) sm[views::PolyhedronTraits::name()] = views::Polyhedron_ShapeID; diff --git a/src/axom/bump/clipping/ClipTableManager.hpp b/src/axom/bump/clipping/ClipTableManager.hpp index 70a17c7896..3ea1a92dba 100644 --- a/src/axom/bump/clipping/ClipTableManager.hpp +++ b/src/axom/bump/clipping/ClipTableManager.hpp @@ -467,7 +467,8 @@ class ClipTableManager std::vector s; if(dim == -1 || dim == 2) { - for(const auto value : std::vector {ST_TRI, ST_QUA, ST_POLY5, ST_POLY6, ST_POLY7, ST_POLY8}) + for(const auto value : + std::vector {ST_TRI, ST_QUA, ST_POLY5, ST_POLY6, ST_POLY7, ST_POLY8}) { s.push_back(value); } diff --git a/src/axom/bump/clipping/CutCasesHex.cpp b/src/axom/bump/clipping/CutCasesHex.cpp index a4e528f17f..80e98b8141 100644 --- a/src/axom/bump/clipping/CutCasesHex.cpp +++ b/src/axom/bump/clipping/CutCasesHex.cpp @@ -1,9 +1,13 @@ #include "CutCases.h" -namespace axom { -namespace bump { -namespace cutting { -namespace tables { +namespace axom +{ +namespace bump +{ +namespace cutting +{ +namespace tables +{ int numCutCasesHex = 256; @@ -627,16 +631,36 @@ unsigned char cutShapesHex[] = { // clang-format on unsigned char numCutShapesHex[] = { -0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 3, 1, 1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2, 1, 1, 1, 1, 2, 2, 2, 1, 2, 1, 1, 2, 2, 3, 2, 1, 1, 1, 1, 2, 2, 3, 2, 2, 2, 2, 1, 3, 2, 4, 2, 2, 1, 2, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 1, 2, 2, 2, 2, 3, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 3, 2, 2, 3, 4, 2, 2, 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 -}; + 0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, + 1, 2, 1, 1, 2, 3, 1, 1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2, 1, 1, 1, + 1, 2, 2, 2, 1, 2, 1, 1, 2, 2, 3, 2, 1, 1, 1, 1, 2, 2, 3, 2, 2, 2, 2, 1, 3, 2, 4, 2, 2, 1, 2, 1, + 1, 2, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, + 1, 2, 2, 2, 2, 3, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 2, 3, 2, 2, 3, 4, 2, 2, 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, + 1, 2, 2, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}; unsigned char startCutShapesHex[] = { -0, 0, 5, 10, 16, 21, 31, 37, 44, 49, 55, 65, 72, 78, 85, 92, 98, 103, 109, 119, 126, 136, 147, 158, 166, 176, 183, 198, 206, 217, 225, 237, 244, 249, 259, 265, 272, 282, 297, 304, 312, 322, 333, 344, 352, 363, 375, 383, 390, 396, 403, 410, 416, 427, 439, 447, 454, 465, 473, 485, 492, 504, 513, 522, 528, 533, 543, 553, 564, 570, 581, 588, 596, 606, 617, 632, 644, 651, 659, 667, 674, 684, 695, 710, 722, 733, 745, 757, 766, 781, 793, 813, 826, 838, 847, 860, 868, 874, 885, 892, 900, 907, 919, 925, 932, 943, 955, 967, 976, 984, 993, 1000, 1006, 1013, 1021, 1029, 1036, 1044, 1053, 1060, 1066, 1078, 1087, 1100, 1108, 1117, 1127, 1135, 1140, 1145, 1155, 1165, 1176, 1186, 1201, 1212, 1224, 1230, 1237, 1248, 1256, 1263, 1271, 1279, 1286, 1292, 1299, 1310, 1318, 1329, 1341, 1353, 1362, 1369, 1375, 1387, 1394, 1402, 1409, 1418, 1424, 1434, 1449, 1460, 1472, 1487, 1507, 1519, 1532, 1543, 1555, 1567, 1576, 1588, 1601, 1610, 1618, 1625, 1633, 1641, 1648, 1660, 1673, 1682, 1690, 1698, 1705, 1714, 1720, 1729, 1737, 1747, 1752, 1758, 1769, 1780, 1792, 1799, 1811, 1819, 1828, 1835, 1843, 1855, 1864, 1870, 1877, 1884, 1890, 1897, 1905, 1917, 1926, 1934, 1943, 1952, 1962, 1970, 1977, 1990, 1998, 2005, 2011, 2019, 2024, 2031, 2043, 2051, 2060, 2068, 2081, 2088, 2096, 2104, 2113, 2122, 2132, 2139, 2147, 2153, 2158, 2164, 2171, 2178, 2184, 2191, 2199, 2205, 2210, 2217, 2223, 2231, 2236, 2242, 2247, 2252 -}; + 0, 0, 5, 10, 16, 21, 31, 37, 44, 49, 55, 65, 72, 78, 85, 92, + 98, 103, 109, 119, 126, 136, 147, 158, 166, 176, 183, 198, 206, 217, 225, 237, + 244, 249, 259, 265, 272, 282, 297, 304, 312, 322, 333, 344, 352, 363, 375, 383, + 390, 396, 403, 410, 416, 427, 439, 447, 454, 465, 473, 485, 492, 504, 513, 522, + 528, 533, 543, 553, 564, 570, 581, 588, 596, 606, 617, 632, 644, 651, 659, 667, + 674, 684, 695, 710, 722, 733, 745, 757, 766, 781, 793, 813, 826, 838, 847, 860, + 868, 874, 885, 892, 900, 907, 919, 925, 932, 943, 955, 967, 976, 984, 993, 1000, + 1006, 1013, 1021, 1029, 1036, 1044, 1053, 1060, 1066, 1078, 1087, 1100, 1108, 1117, 1127, 1135, + 1140, 1145, 1155, 1165, 1176, 1186, 1201, 1212, 1224, 1230, 1237, 1248, 1256, 1263, 1271, 1279, + 1286, 1292, 1299, 1310, 1318, 1329, 1341, 1353, 1362, 1369, 1375, 1387, 1394, 1402, 1409, 1418, + 1424, 1434, 1449, 1460, 1472, 1487, 1507, 1519, 1532, 1543, 1555, 1567, 1576, 1588, 1601, 1610, + 1618, 1625, 1633, 1641, 1648, 1660, 1673, 1682, 1690, 1698, 1705, 1714, 1720, 1729, 1737, 1747, + 1752, 1758, 1769, 1780, 1792, 1799, 1811, 1819, 1828, 1835, 1843, 1855, 1864, 1870, 1877, 1884, + 1890, 1897, 1905, 1917, 1926, 1934, 1943, 1952, 1962, 1970, 1977, 1990, 1998, 2005, 2011, 2019, + 2024, 2031, 2043, 2051, 2060, 2068, 2081, 2088, 2096, 2104, 2113, 2122, 2132, 2139, 2147, 2153, + 2158, 2164, 2171, 2178, 2184, 2191, 2199, 2205, 2210, 2217, 2223, 2231, 2236, 2242, 2247, 2252}; const size_t cutShapesHexSize = sizeof(cutShapesHex) / sizeof(unsigned char); -} // namespace tables -} // namespace cutting -} // namespace bump -} // namespace axom +} // namespace tables +} // namespace cutting +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/CutCasesPyramid.cpp b/src/axom/bump/clipping/CutCasesPyramid.cpp index 5fb44efcd6..882ad30ecc 100644 --- a/src/axom/bump/clipping/CutCasesPyramid.cpp +++ b/src/axom/bump/clipping/CutCasesPyramid.cpp @@ -1,9 +1,13 @@ #include "CutCases.h" -namespace axom { -namespace bump { -namespace cutting { -namespace tables { +namespace axom +{ +namespace bump +{ +namespace cutting +{ +namespace tables +{ int numCutCasesPyramid = 32; @@ -76,17 +80,16 @@ unsigned char cutShapesPyramid[] = { }; // clang-format on -unsigned char numCutShapesPyramid[] = { -0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 -}; +unsigned char numCutShapesPyramid[] = {0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}; -unsigned char startCutShapesPyramid[] = { -0, 0, 5, 10, 16, 21, 31, 37, 44, 49, 55, 65, 72, 78, 85, 92, 98, 104, 111, 118, 124, 131, 139, 145, 150, 157, 163, 171, 176, 182, 187, 192 -}; +unsigned char startCutShapesPyramid[] = {0, 0, 5, 10, 16, 21, 31, 37, 44, 49, 55, + 65, 72, 78, 85, 92, 98, 104, 111, 118, 124, 131, + 139, 145, 150, 157, 163, 171, 176, 182, 187, 192}; const size_t cutShapesPyramidSize = sizeof(cutShapesPyramid) / sizeof(unsigned char); -} // namespace tables -} // namespace cutting -} // namespace bump -} // namespace axom +} // namespace tables +} // namespace cutting +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/CutCasesTet.cpp b/src/axom/bump/clipping/CutCasesTet.cpp index 361fac2edc..6dbbfe43d6 100644 --- a/src/axom/bump/clipping/CutCasesTet.cpp +++ b/src/axom/bump/clipping/CutCasesTet.cpp @@ -1,9 +1,13 @@ #include "CutCases.h" -namespace axom { -namespace bump { -namespace cutting { -namespace tables { +namespace axom +{ +namespace bump +{ +namespace cutting +{ +namespace tables +{ int numCutCasesTet = 16; @@ -42,17 +46,13 @@ unsigned char cutShapesTet[] = { }; // clang-format on -unsigned char numCutShapesTet[] = { -0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 -}; +unsigned char numCutShapesTet[] = {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}; -unsigned char startCutShapesTet[] = { -0, 0, 5, 10, 16, 21, 27, 33, 38, 43, 49, 55, 60, 66, 71, 76 -}; +unsigned char startCutShapesTet[] = {0, 0, 5, 10, 16, 21, 27, 33, 38, 43, 49, 55, 60, 66, 71, 76}; const size_t cutShapesTetSize = sizeof(cutShapesTet) / sizeof(unsigned char); -} // namespace tables -} // namespace cutting -} // namespace bump -} // namespace axom +} // namespace tables +} // namespace cutting +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/CutCasesTri.cpp b/src/axom/bump/clipping/CutCasesTri.cpp index afa0480d9c..d2b7f02cea 100644 --- a/src/axom/bump/clipping/CutCasesTri.cpp +++ b/src/axom/bump/clipping/CutCasesTri.cpp @@ -1,9 +1,13 @@ #include "CutCases.h" -namespace axom { -namespace bump { -namespace cutting { -namespace tables { +namespace axom +{ +namespace bump +{ +namespace cutting +{ +namespace tables +{ int numCutCasesTri = 8; @@ -26,17 +30,13 @@ unsigned char cutShapesTri[] = { }; // clang-format on -unsigned char numCutShapesTri[] = { -0, 1, 1, 1, 1, 1, 1, 0 -}; +unsigned char numCutShapesTri[] = {0, 1, 1, 1, 1, 1, 1, 0}; -unsigned char startCutShapesTri[] = { -0, 0, 4, 8, 12, 16, 20, 24 -}; +unsigned char startCutShapesTri[] = {0, 0, 4, 8, 12, 16, 20, 24}; const size_t cutShapesTriSize = sizeof(cutShapesTri) / sizeof(unsigned char); -} // namespace tables -} // namespace cutting -} // namespace bump -} // namespace axom +} // namespace tables +} // namespace cutting +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/CutCasesWedge.cpp b/src/axom/bump/clipping/CutCasesWedge.cpp index fd9e98f733..0b8b090ead 100644 --- a/src/axom/bump/clipping/CutCasesWedge.cpp +++ b/src/axom/bump/clipping/CutCasesWedge.cpp @@ -1,9 +1,13 @@ #include "CutCases.h" -namespace axom { -namespace bump { -namespace cutting { -namespace tables { +namespace axom +{ +namespace bump +{ +namespace cutting +{ +namespace tables +{ int numCutCasesWedge = 64; @@ -151,16 +155,18 @@ unsigned char cutShapesWedge[] = { // clang-format on unsigned char numCutShapesWedge[] = { -0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 -}; + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, + 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}; unsigned char startCutShapesWedge[] = { -0, 0, 5, 10, 16, 21, 27, 33, 38, 43, 49, 59, 66, 76, 83, 94, 100, 105, 115, 121, 128, 138, 149, 156, 162, 168, 175, 182, 188, 199, 207, 215, 220, 225, 235, 245, 256, 262, 269, 276, 282, 288, 295, 306, 314, 321, 327, 335, 340, 346, 357, 364, 372, 379, 387, 393, 398, 403, 409, 415, 420, 426, 431, 436 -}; + 0, 0, 5, 10, 16, 21, 27, 33, 38, 43, 49, 59, 66, 76, 83, 94, + 100, 105, 115, 121, 128, 138, 149, 156, 162, 168, 175, 182, 188, 199, 207, 215, + 220, 225, 235, 245, 256, 262, 269, 276, 282, 288, 295, 306, 314, 321, 327, 335, + 340, 346, 357, 364, 372, 379, 387, 393, 398, 403, 409, 415, 420, 426, 431, 436}; const size_t cutShapesWedgeSize = sizeof(cutShapesWedge) / sizeof(unsigned char); -} // namespace tables -} // namespace cutting -} // namespace bump -} // namespace axom +} // namespace tables +} // namespace cutting +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/polygonalClipCasesPoly5.cpp b/src/axom/bump/clipping/polygonalClipCasesPoly5.cpp index 212d1f36ed..af3d4ed68c 100644 --- a/src/axom/bump/clipping/polygonalClipCasesPoly5.cpp +++ b/src/axom/bump/clipping/polygonalClipCasesPoly5.cpp @@ -4,20 +4,23 @@ // SPDX-License-Identifier: (BSD-3-Clause) #include "ClipCases.h" -namespace axom { -namespace bump { -namespace clipping { -namespace tables { +namespace axom +{ +namespace bump +{ +namespace clipping +{ +namespace tables +{ int numClipCasesPoly5 = 32; -int numClipShapesPoly5[] = { - 1, 2, 2, 2, 2, 3, 2, 2, 2, 3, 3, 3, 2, 3, 2, 2, 2, 2, 3, 2, 3, 3, 3, 2, 2, 2, 3, 2, 2, 2, 2, 1 -}; +int numClipShapesPoly5[] = {1, 2, 2, 2, 2, 3, 2, 2, 2, 3, 3, 3, 2, 3, 2, 2, + 2, 2, 3, 2, 3, 3, 3, 2, 2, 2, 3, 2, 2, 2, 2, 1}; -int startClipShapesPoly5[] = { - 0, 7, 20, 33, 46, 59, 78, 91, 104, 117, 136, 155, 174, 187, 206, 219, 232, 245, 258, 277, 290, 309, 328, 347, 360, 373, 386, 405, 418, 431, 444, 457 -}; +int startClipShapesPoly5[] = {0, 7, 20, 33, 46, 59, 78, 91, 104, 117, 136, + 155, 174, 187, 206, 219, 232, 245, 258, 277, 290, 309, + 328, 347, 360, 373, 386, 405, 418, 431, 444, 457}; // clang-format off unsigned char clipShapesPoly5[] = { @@ -130,7 +133,7 @@ unsigned char clipShapesPoly5[] = { const size_t clipShapesPoly5Size = sizeof(clipShapesPoly5) / sizeof(unsigned char); -} // namespace tables -} // namespace clipping -} // namespace bump -} // namespace axom +} // namespace tables +} // namespace clipping +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/polygonalClipCasesPoly6.cpp b/src/axom/bump/clipping/polygonalClipCasesPoly6.cpp index 3463a2761d..248c477829 100644 --- a/src/axom/bump/clipping/polygonalClipCasesPoly6.cpp +++ b/src/axom/bump/clipping/polygonalClipCasesPoly6.cpp @@ -4,20 +4,26 @@ // SPDX-License-Identifier: (BSD-3-Clause) #include "ClipCases.h" -namespace axom { -namespace bump { -namespace clipping { -namespace tables { +namespace axom +{ +namespace bump +{ +namespace clipping +{ +namespace tables +{ int numClipCasesPoly6 = 64; -int numClipShapesPoly6[] = { - 1, 2, 2, 2, 2, 3, 2, 2, 2, 3, 3, 3, 2, 3, 2, 2, 2, 3, 3, 3, 3, 5, 3, 3, 2, 3, 3, 3, 2, 3, 2, 2, 2, 2, 3, 2, 3, 3, 3, 2, 3, 3, 5, 3, 3, 3, 3, 2, 2, 2, 3, 2, 3, 3, 3, 2, 2, 2, 3, 2, 2, 2, 2, 1 -}; +int numClipShapesPoly6[] = {1, 2, 2, 2, 2, 3, 2, 2, 2, 3, 3, 3, 2, 3, 2, 2, 2, 3, 3, 3, 3, 5, + 3, 3, 2, 3, 3, 3, 2, 3, 2, 2, 2, 2, 3, 2, 3, 3, 3, 2, 3, 3, 5, 3, + 3, 3, 3, 2, 2, 2, 3, 2, 3, 3, 3, 2, 2, 2, 3, 2, 2, 2, 2, 1}; -int startClipShapesPoly6[] = { - 0, 8, 22, 36, 50, 64, 84, 98, 112, 126, 146, 166, 186, 200, 220, 234, 248, 262, 282, 302, 322, 342, 372, 392, 412, 426, 446, 466, 486, 500, 520, 534, 548, 562, 576, 596, 610, 630, 650, 670, 684, 704, 724, 754, 774, 794, 814, 834, 848, 862, 876, 896, 910, 930, 950, 970, 984, 998, 1012, 1032, 1046, 1060, 1074, 1088 -}; +int startClipShapesPoly6[] = {0, 8, 22, 36, 50, 64, 84, 98, 112, 126, 146, 166, 186, + 200, 220, 234, 248, 262, 282, 302, 322, 342, 372, 392, 412, 426, + 446, 466, 486, 500, 520, 534, 548, 562, 576, 596, 610, 630, 650, + 670, 684, 704, 724, 754, 774, 794, 814, 834, 848, 862, 876, 896, + 910, 930, 950, 970, 984, 998, 1012, 1032, 1046, 1060, 1074, 1088}; // clang-format off unsigned char clipShapesPoly6[] = { @@ -252,7 +258,7 @@ unsigned char clipShapesPoly6[] = { const size_t clipShapesPoly6Size = sizeof(clipShapesPoly6) / sizeof(unsigned char); -} // namespace tables -} // namespace clipping -} // namespace bump -} // namespace axom +} // namespace tables +} // namespace clipping +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/polygonalClipCasesPoly7.cpp b/src/axom/bump/clipping/polygonalClipCasesPoly7.cpp index bf58ffde91..96069a387a 100644 --- a/src/axom/bump/clipping/polygonalClipCasesPoly7.cpp +++ b/src/axom/bump/clipping/polygonalClipCasesPoly7.cpp @@ -4,20 +4,32 @@ // SPDX-License-Identifier: (BSD-3-Clause) #include "ClipCases.h" -namespace axom { -namespace bump { -namespace clipping { -namespace tables { +namespace axom +{ +namespace bump +{ +namespace clipping +{ +namespace tables +{ int numClipCasesPoly7 = 128; int numClipShapesPoly7[] = { - 1, 2, 2, 2, 2, 3, 2, 2, 2, 3, 3, 3, 2, 3, 2, 2, 2, 3, 3, 3, 3, 5, 3, 3, 2, 3, 3, 3, 2, 3, 2, 2, 2, 3, 3, 3, 3, 5, 3, 3, 3, 5, 5, 5, 3, 5, 3, 4, 2, 3, 3, 3, 3, 5, 3, 4, 2, 3, 3, 4, 2, 4, 2, 2, 2, 2, 3, 2, 3, 3, 3, 2, 3, 3, 5, 3, 3, 3, 3, 2, 3, 3, 5, 3, 5, 5, 5, 4, 3, 3, 5, 4, 3, 4, 4, 2, 2, 2, 3, 2, 3, 3, 3, 2, 3, 3, 5, 4, 3, 4, 4, 2, 2, 2, 3, 2, 3, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 1 -}; + 1, 2, 2, 2, 2, 3, 2, 2, 2, 3, 3, 3, 2, 3, 2, 2, 2, 3, 3, 3, 3, 5, 3, 3, 2, 3, 3, 3, 2, 3, 2, 2, + 2, 3, 3, 3, 3, 5, 3, 3, 3, 5, 5, 5, 3, 5, 3, 4, 2, 3, 3, 3, 3, 5, 3, 4, 2, 3, 3, 4, 2, 4, 2, 2, + 2, 2, 3, 2, 3, 3, 3, 2, 3, 3, 5, 3, 3, 3, 3, 2, 3, 3, 5, 3, 5, 5, 5, 4, 3, 3, 5, 4, 3, 4, 4, 2, + 2, 2, 3, 2, 3, 3, 3, 2, 3, 3, 5, 4, 3, 4, 4, 2, 2, 2, 3, 2, 3, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 1}; int startClipShapesPoly7[] = { - 0, 9, 24, 39, 54, 69, 90, 105, 120, 135, 156, 177, 198, 213, 234, 249, 264, 279, 300, 321, 342, 363, 394, 415, 436, 451, 472, 493, 514, 529, 550, 565, 580, 595, 616, 637, 658, 679, 710, 731, 752, 773, 804, 835, 866, 887, 918, 939, 964, 979, 1000, 1021, 1042, 1063, 1094, 1115, 1140, 1155, 1176, 1197, 1222, 1237, 1262, 1277, 1292, 1307, 1322, 1343, 1358, 1379, 1400, 1421, 1436, 1457, 1478, 1509, 1530, 1551, 1572, 1593, 1608, 1629, 1650, 1681, 1702, 1733, 1764, 1795, 1820, 1841, 1862, 1893, 1918, 1939, 1964, 1989, 2004, 2019, 2034, 2055, 2070, 2091, 2112, 2133, 2148, 2169, 2190, 2221, 2246, 2267, 2292, 2317, 2332, 2347, 2362, 2383, 2398, 2419, 2444, 2469, 2484, 2499, 2514, 2539, 2554, 2569, 2584, 2599 -}; + 0, 9, 24, 39, 54, 69, 90, 105, 120, 135, 156, 177, 198, 213, 234, 249, + 264, 279, 300, 321, 342, 363, 394, 415, 436, 451, 472, 493, 514, 529, 550, 565, + 580, 595, 616, 637, 658, 679, 710, 731, 752, 773, 804, 835, 866, 887, 918, 939, + 964, 979, 1000, 1021, 1042, 1063, 1094, 1115, 1140, 1155, 1176, 1197, 1222, 1237, 1262, 1277, + 1292, 1307, 1322, 1343, 1358, 1379, 1400, 1421, 1436, 1457, 1478, 1509, 1530, 1551, 1572, 1593, + 1608, 1629, 1650, 1681, 1702, 1733, 1764, 1795, 1820, 1841, 1862, 1893, 1918, 1939, 1964, 1989, + 2004, 2019, 2034, 2055, 2070, 2091, 2112, 2133, 2148, 2169, 2190, 2221, 2246, 2267, 2292, 2317, + 2332, 2347, 2362, 2383, 2398, 2419, 2444, 2469, 2484, 2499, 2514, 2539, 2554, 2569, 2584, 2599}; // clang-format off unsigned char clipShapesPoly7[] = { @@ -534,7 +546,7 @@ unsigned char clipShapesPoly7[] = { const size_t clipShapesPoly7Size = sizeof(clipShapesPoly7) / sizeof(unsigned char); -} // namespace tables -} // namespace clipping -} // namespace bump -} // namespace axom +} // namespace tables +} // namespace clipping +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/polygonalClipCasesPoly8.cpp b/src/axom/bump/clipping/polygonalClipCasesPoly8.cpp index 4434a3ad39..064ba4c531 100644 --- a/src/axom/bump/clipping/polygonalClipCasesPoly8.cpp +++ b/src/axom/bump/clipping/polygonalClipCasesPoly8.cpp @@ -4,20 +4,44 @@ // SPDX-License-Identifier: (BSD-3-Clause) #include "ClipCases.h" -namespace axom { -namespace bump { -namespace clipping { -namespace tables { +namespace axom +{ +namespace bump +{ +namespace clipping +{ +namespace tables +{ int numClipCasesPoly8 = 256; int numClipShapesPoly8[] = { - 1, 3, 3, 2, 3, 3, 2, 2, 3, 3, 3, 3, 2, 3, 2, 2, 3, 3, 3, 3, 3, 5, 3, 3, 2, 3, 3, 3, 2, 3, 2, 2, 3, 3, 3, 3, 3, 5, 3, 3, 3, 5, 5, 5, 3, 5, 3, 4, 2, 3, 3, 3, 3, 5, 3, 4, 2, 3, 3, 4, 2, 4, 2, 2, 3, 3, 3, 3, 3, 5, 3, 3, 3, 5, 5, 5, 3, 5, 3, 4, 3, 5, 5, 5, 5, 6, 5, 5, 3, 5, 5, 5, 3, 5, 4, 4, 2, 3, 3, 3, 3, 5, 3, 4, 3, 5, 5, 5, 3, 5, 4, 4, 2, 3, 3, 4, 3, 5, 4, 4, 2, 4, 4, 4, 2, 4, 2, 3, 3, 2, 3, 2, 3, 3, 3, 2, 3, 3, 5, 3, 3, 3, 3, 2, 3, 3, 5, 3, 5, 5, 5, 4, 3, 3, 5, 4, 3, 4, 4, 2, 3, 3, 5, 3, 5, 5, 5, 4, 5, 5, 6, 5, 5, 5, 5, 4, 3, 3, 5, 4, 5, 5, 5, 4, 3, 4, 5, 4, 4, 4, 4, 3, 2, 2, 3, 2, 3, 3, 3, 2, 3, 3, 5, 4, 3, 4, 4, 2, 3, 3, 5, 4, 5, 5, 5, 4, 3, 4, 5, 4, 4, 4, 4, 3, 2, 2, 3, 2, 3, 4, 4, 2, 3, 4, 5, 4, 4, 4, 4, 3, 2, 2, 4, 2, 4, 4, 4, 3, 2, 2, 4, 3, 2, 3, 3, 1 -}; + 1, 3, 3, 2, 3, 3, 2, 2, 3, 3, 3, 3, 2, 3, 2, 2, 3, 3, 3, 3, 3, 5, 3, 3, 2, 3, 3, 3, 2, 3, 2, 2, + 3, 3, 3, 3, 3, 5, 3, 3, 3, 5, 5, 5, 3, 5, 3, 4, 2, 3, 3, 3, 3, 5, 3, 4, 2, 3, 3, 4, 2, 4, 2, 2, + 3, 3, 3, 3, 3, 5, 3, 3, 3, 5, 5, 5, 3, 5, 3, 4, 3, 5, 5, 5, 5, 6, 5, 5, 3, 5, 5, 5, 3, 5, 4, 4, + 2, 3, 3, 3, 3, 5, 3, 4, 3, 5, 5, 5, 3, 5, 4, 4, 2, 3, 3, 4, 3, 5, 4, 4, 2, 4, 4, 4, 2, 4, 2, 3, + 3, 2, 3, 2, 3, 3, 3, 2, 3, 3, 5, 3, 3, 3, 3, 2, 3, 3, 5, 3, 5, 5, 5, 4, 3, 3, 5, 4, 3, 4, 4, 2, + 3, 3, 5, 3, 5, 5, 5, 4, 5, 5, 6, 5, 5, 5, 5, 4, 3, 3, 5, 4, 5, 5, 5, 4, 3, 4, 5, 4, 4, 4, 4, 3, + 2, 2, 3, 2, 3, 3, 3, 2, 3, 3, 5, 4, 3, 4, 4, 2, 3, 3, 5, 4, 5, 5, 5, 4, 3, 4, 5, 4, 4, 4, 4, 3, + 2, 2, 3, 2, 3, 4, 4, 2, 3, 4, 5, 4, 4, 4, 4, 3, 2, 2, 4, 2, 4, 4, 4, 3, 2, 2, 4, 3, 2, 3, 3, 1}; int startClipShapesPoly8[] = { - 0, 10, 30, 50, 66, 86, 108, 124, 140, 160, 182, 204, 226, 242, 264, 280, 296, 316, 338, 360, 382, 404, 436, 458, 480, 496, 518, 540, 562, 578, 600, 616, 632, 652, 674, 696, 718, 740, 772, 794, 816, 838, 870, 902, 934, 956, 988, 1010, 1036, 1052, 1074, 1096, 1118, 1140, 1172, 1194, 1220, 1236, 1258, 1280, 1306, 1322, 1348, 1364, 1380, 1400, 1422, 1444, 1466, 1488, 1520, 1542, 1564, 1586, 1618, 1650, 1682, 1704, 1736, 1758, 1784, 1806, 1838, 1870, 1902, 1934, 1972, 2004, 2036, 2058, 2090, 2122, 2154, 2176, 2208, 2234, 2260, 2276, 2298, 2320, 2342, 2364, 2396, 2418, 2444, 2466, 2498, 2530, 2562, 2584, 2616, 2642, 2668, 2684, 2706, 2728, 2754, 2776, 2808, 2834, 2860, 2876, 2902, 2928, 2954, 2970, 2996, 3012, 3032, 3052, 3068, 3090, 3106, 3128, 3150, 3172, 3188, 3210, 3232, 3264, 3286, 3308, 3330, 3352, 3368, 3390, 3412, 3444, 3466, 3498, 3530, 3562, 3588, 3610, 3632, 3664, 3690, 3712, 3738, 3764, 3780, 3802, 3824, 3856, 3878, 3910, 3942, 3974, 4000, 4032, 4064, 4102, 4134, 4166, 4198, 4230, 4256, 4278, 4300, 4332, 4358, 4390, 4422, 4454, 4480, 4502, 4528, 4560, 4586, 4612, 4638, 4664, 4684, 4700, 4716, 4738, 4754, 4776, 4798, 4820, 4836, 4858, 4880, 4912, 4938, 4960, 4986, 5012, 5028, 5050, 5072, 5104, 5130, 5162, 5194, 5226, 5252, 5274, 5300, 5332, 5358, 5384, 5410, 5436, 5456, 5472, 5488, 5510, 5526, 5548, 5574, 5600, 5616, 5638, 5664, 5696, 5722, 5748, 5774, 5800, 5820, 5836, 5852, 5878, 5894, 5920, 5946, 5972, 5992, 6008, 6024, 6050, 6070, 6086, 6106, 6126 -}; + 0, 10, 30, 50, 66, 86, 108, 124, 140, 160, 182, 204, 226, 242, 264, 280, + 296, 316, 338, 360, 382, 404, 436, 458, 480, 496, 518, 540, 562, 578, 600, 616, + 632, 652, 674, 696, 718, 740, 772, 794, 816, 838, 870, 902, 934, 956, 988, 1010, + 1036, 1052, 1074, 1096, 1118, 1140, 1172, 1194, 1220, 1236, 1258, 1280, 1306, 1322, 1348, 1364, + 1380, 1400, 1422, 1444, 1466, 1488, 1520, 1542, 1564, 1586, 1618, 1650, 1682, 1704, 1736, 1758, + 1784, 1806, 1838, 1870, 1902, 1934, 1972, 2004, 2036, 2058, 2090, 2122, 2154, 2176, 2208, 2234, + 2260, 2276, 2298, 2320, 2342, 2364, 2396, 2418, 2444, 2466, 2498, 2530, 2562, 2584, 2616, 2642, + 2668, 2684, 2706, 2728, 2754, 2776, 2808, 2834, 2860, 2876, 2902, 2928, 2954, 2970, 2996, 3012, + 3032, 3052, 3068, 3090, 3106, 3128, 3150, 3172, 3188, 3210, 3232, 3264, 3286, 3308, 3330, 3352, + 3368, 3390, 3412, 3444, 3466, 3498, 3530, 3562, 3588, 3610, 3632, 3664, 3690, 3712, 3738, 3764, + 3780, 3802, 3824, 3856, 3878, 3910, 3942, 3974, 4000, 4032, 4064, 4102, 4134, 4166, 4198, 4230, + 4256, 4278, 4300, 4332, 4358, 4390, 4422, 4454, 4480, 4502, 4528, 4560, 4586, 4612, 4638, 4664, + 4684, 4700, 4716, 4738, 4754, 4776, 4798, 4820, 4836, 4858, 4880, 4912, 4938, 4960, 4986, 5012, + 5028, 5050, 5072, 5104, 5130, 5162, 5194, 5226, 5252, 5274, 5300, 5332, 5358, 5384, 5410, 5436, + 5456, 5472, 5488, 5510, 5526, 5548, 5574, 5600, 5616, 5638, 5664, 5696, 5722, 5748, 5774, 5800, + 5820, 5836, 5852, 5878, 5894, 5920, 5946, 5972, 5992, 6008, 6024, 6050, 6070, 6086, 6106, 6126}; // clang-format off unsigned char clipShapesPoly8[] = { @@ -1176,7 +1200,7 @@ unsigned char clipShapesPoly8[] = { const size_t clipShapesPoly8Size = sizeof(clipShapesPoly8) / sizeof(unsigned char); -} // namespace tables -} // namespace clipping -} // namespace bump -} // namespace axom +} // namespace tables +} // namespace clipping +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/clipping/polygonalClipCasesQua.cpp b/src/axom/bump/clipping/polygonalClipCasesQua.cpp index f6144fc74d..5bbc45aaf6 100644 --- a/src/axom/bump/clipping/polygonalClipCasesQua.cpp +++ b/src/axom/bump/clipping/polygonalClipCasesQua.cpp @@ -4,20 +4,20 @@ // SPDX-License-Identifier: (BSD-3-Clause) #include "ClipCases.h" -namespace axom { -namespace bump { -namespace clipping { -namespace tables { +namespace axom +{ +namespace bump +{ +namespace clipping +{ +namespace tables +{ int numClipCasesQua = 16; -int numClipShapesQua[] = { - 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 3, 2, 2, 2, 2, 1 -}; +int numClipShapesQua[] = {1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 3, 2, 2, 2, 2, 1}; -int startClipShapesQua[] = { - 0, 6, 18, 30, 42, 54, 72, 84, 96, 108, 120, 138, 150, 162, 174, 186 -}; +int startClipShapesQua[] = {0, 6, 18, 30, 42, 54, 72, 84, 96, 108, 120, 138, 150, 162, 174, 186}; // clang-format off unsigned char clipShapesQua[] = { @@ -74,7 +74,7 @@ unsigned char clipShapesQua[] = { const size_t clipShapesQuaSize = sizeof(clipShapesQua) / sizeof(unsigned char); -} // namespace tables -} // namespace clipping -} // namespace bump -} // namespace axom +} // namespace tables +} // namespace clipping +} // namespace bump +} // namespace axom diff --git a/src/axom/bump/views/Shapes.hpp b/src/axom/bump/views/Shapes.hpp index f447b0ed96..63f6c00d6d 100644 --- a/src/axom/bump/views/Shapes.hpp +++ b/src/axom/bump/views/Shapes.hpp @@ -842,10 +842,7 @@ struct VariableShape AXOM_HOST_DEVICE constexpr static bool is_polyhedral() { return false; } AXOM_HOST_DEVICE constexpr static bool is_variable_size() { return true; } - AXOM_HOST_DEVICE IndexType dimension() const - { - return shapeDimension(m_shapeId); - } + AXOM_HOST_DEVICE IndexType dimension() const { return shapeDimension(m_shapeId); } AXOM_HOST_DEVICE IndexType numberOfNodes() const { return m_ids.size(); } diff --git a/src/axom/bump/views/dispatch_unstructured_topology.hpp b/src/axom/bump/views/dispatch_unstructured_topology.hpp index fb68baf71a..7903f6cff6 100644 --- a/src/axom/bump/views/dispatch_unstructured_topology.hpp +++ b/src/axom/bump/views/dispatch_unstructured_topology.hpp @@ -352,7 +352,9 @@ struct dispatch_shape, FuncType> { if(eligible && shape == "polygonal") { - UnstructuredTopologySingleShapeView> ugView(connView, sizesView, offsetsView); + UnstructuredTopologySingleShapeView> ugView(connView, + sizesView, + offsetsView); func(shape, ugView); eligible = false; } From fd163fb4ae524428a4102482647631b700afec5e Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Fri, 5 Dec 2025 17:08:55 -0800 Subject: [PATCH 22/28] Removed some files that would be in a different PR. --- src/axom/bump/clipping/CutCasesHex.cpp | 666 -------------------- src/axom/bump/clipping/CutCasesPyramid.cpp | 95 --- src/axom/bump/clipping/CutCasesTet.cpp | 58 -- src/axom/bump/clipping/CutCasesTri.cpp | 42 -- src/axom/bump/clipping/CutCasesWedge.cpp | 172 ----- src/axom/bump/clipping/convert_triangles.py | 174 ----- 6 files changed, 1207 deletions(-) delete mode 100644 src/axom/bump/clipping/CutCasesHex.cpp delete mode 100644 src/axom/bump/clipping/CutCasesPyramid.cpp delete mode 100644 src/axom/bump/clipping/CutCasesTet.cpp delete mode 100644 src/axom/bump/clipping/CutCasesTri.cpp delete mode 100644 src/axom/bump/clipping/CutCasesWedge.cpp delete mode 100644 src/axom/bump/clipping/convert_triangles.py diff --git a/src/axom/bump/clipping/CutCasesHex.cpp b/src/axom/bump/clipping/CutCasesHex.cpp deleted file mode 100644 index 80e98b8141..0000000000 --- a/src/axom/bump/clipping/CutCasesHex.cpp +++ /dev/null @@ -1,666 +0,0 @@ -#include "CutCases.h" - -namespace axom -{ -namespace bump -{ -namespace cutting -{ -namespace tables -{ - -int numCutCasesHex = 256; - -// clang-format off -unsigned char cutShapesHex[] = { - // Case 0 - // Case 1 - ST_TRI, COLOR0, EA, ED, EI, - // Case 2 - ST_TRI, COLOR0, EA, EJ, EB, - // Case 3 - ST_QUAD, COLOR0, EB, ED, EI, EJ, - // Case 4 - ST_TRI, COLOR0, EB, EL, EC, - // Case 5 - ST_TRI, COLOR0, EA, ED, EI, - ST_TRI, COLOR0, EB, EL, EC, - // Case 6 - ST_QUAD, COLOR0, EJ, EL, EC, EA, - // Case 7 - ST_POLY5, COLOR0, EI, EJ, EL, EC, ED, - // Case 8 - ST_TRI, COLOR0, ED, EC, EK, - // Case 9 - ST_QUAD, COLOR0, EA, EC, EK, EI, - // Case 10 - ST_TRI, COLOR0, EB, EA, EJ, - ST_TRI, COLOR0, EC, EK, ED, - // Case 11 - ST_POLY5, COLOR0, EK, EI, EJ, EB, EC, - // Case 12 - ST_QUAD, COLOR0, ED, EB, EL, EK, - // Case 13 - ST_POLY5, COLOR0, EL, EK, EI, EA, EB, - // Case 14 - ST_POLY5, COLOR0, EJ, EL, EK, ED, EA, - // Case 15 - ST_QUAD, COLOR0, EI, EJ, EL, EK, - // Case 16 - ST_TRI, COLOR0, EE, EI, EH, - // Case 17 - ST_QUAD, COLOR0, EE, EA, ED, EH, - // Case 18 - ST_TRI, COLOR0, EA, EJ, EB, - ST_TRI, COLOR0, EI, EH, EE, - // Case 19 - ST_POLY5, COLOR0, EB, ED, EH, EE, EJ, - // Case 20 - ST_TRI, COLOR0, EB, EL, EC, - ST_TRI, COLOR0, EI, EH, EE, - // Case 21 - ST_TRI, COLOR0, EB, EL, EC, - ST_QUAD, COLOR0, ED, EH, EE, EA, - // Case 22 - ST_TRI, COLOR0, EI, EH, EE, - ST_QUAD, COLOR0, EJ, EL, EC, EA, - // Case 23 - ST_POLY6, COLOR0, EH, EE, EJ, EL, EC, ED, - // Case 24 - ST_TRI, COLOR0, EI, EH, EE, - ST_TRI, COLOR0, ED, EC, EK, - // Case 25 - ST_POLY5, COLOR0, EE, EA, EC, EK, EH, - // Case 26 - ST_TRI, COLOR0, EJ, EB, EA, - ST_TRI, COLOR0, EI, EH, EE, - ST_TRI, COLOR0, EC, EK, ED, - // Case 27 - ST_POLY6, COLOR0, EK, EH, EE, EJ, EB, EC, - // Case 28 - ST_TRI, COLOR0, EH, EE, EI, - ST_QUAD, COLOR0, ED, EB, EL, EK, - // Case 29 - ST_POLY6, COLOR0, EK, EH, EE, EA, EB, EL, - // Case 30 - ST_TRI, COLOR0, EE, EI, EH, - ST_POLY5, COLOR0, EK, ED, EA, EJ, EL, - // Case 31 - ST_POLY5, COLOR0, EJ, EL, EK, EH, EE, - // Case 32 - ST_TRI, COLOR0, EJ, EE, EF, - // Case 33 - ST_TRI, COLOR0, EJ, EE, EF, - ST_TRI, COLOR0, EA, ED, EI, - // Case 34 - ST_QUAD, COLOR0, EA, EE, EF, EB, - // Case 35 - ST_POLY5, COLOR0, EF, EB, ED, EI, EE, - // Case 36 - ST_TRI, COLOR0, EB, EL, EC, - ST_TRI, COLOR0, EJ, EE, EF, - // Case 37 - ST_TRI, COLOR0, ED, EI, EA, - ST_TRI, COLOR0, EB, EL, EC, - ST_TRI, COLOR0, EE, EF, EJ, - // Case 38 - ST_POLY5, COLOR0, EC, EA, EE, EF, EL, - // Case 39 - ST_POLY6, COLOR0, EF, EL, EC, ED, EI, EE, - // Case 40 - ST_TRI, COLOR0, EJ, EE, EF, - ST_TRI, COLOR0, EC, EK, ED, - // Case 41 - ST_TRI, COLOR0, EE, EF, EJ, - ST_QUAD, COLOR0, EA, EC, EK, EI, - // Case 42 - ST_TRI, COLOR0, EC, EK, ED, - ST_QUAD, COLOR0, EA, EE, EF, EB, - // Case 43 - ST_POLY6, COLOR0, EI, EE, EF, EB, EC, EK, - // Case 44 - ST_TRI, COLOR0, EJ, EE, EF, - ST_QUAD, COLOR0, EL, EK, ED, EB, - // Case 45 - ST_TRI, COLOR0, EE, EF, EJ, - ST_POLY5, COLOR0, EL, EK, EI, EA, EB, - // Case 46 - ST_POLY6, COLOR0, EK, ED, EA, EE, EF, EL, - // Case 47 - ST_POLY5, COLOR0, EL, EK, EI, EE, EF, - // Case 48 - ST_QUAD, COLOR0, EJ, EI, EH, EF, - // Case 49 - ST_POLY5, COLOR0, ED, EH, EF, EJ, EA, - // Case 50 - ST_POLY5, COLOR0, EH, EF, EB, EA, EI, - // Case 51 - ST_QUAD, COLOR0, EF, EB, ED, EH, - // Case 52 - ST_TRI, COLOR0, EL, EC, EB, - ST_QUAD, COLOR0, EJ, EI, EH, EF, - // Case 53 - ST_TRI, COLOR0, EL, EC, EB, - ST_POLY5, COLOR0, ED, EH, EF, EJ, EA, - // Case 54 - ST_POLY6, COLOR0, EF, EL, EC, EA, EI, EH, - // Case 55 - ST_POLY5, COLOR0, ED, EH, EF, EL, EC, - // Case 56 - ST_TRI, COLOR0, ED, EC, EK, - ST_QUAD, COLOR0, EH, EF, EJ, EI, - // Case 57 - ST_POLY6, COLOR0, EC, EK, EH, EF, EJ, EA, - // Case 58 - ST_TRI, COLOR0, EC, EK, ED, - ST_POLY5, COLOR0, EH, EF, EB, EA, EI, - // Case 59 - ST_POLY5, COLOR0, EH, EF, EB, EC, EK, - // Case 60 - ST_QUAD, COLOR0, EF, EJ, EI, EH, - ST_QUAD, COLOR0, ED, EB, EL, EK, - // Case 61 - ST_POLY7, COLOR0, EH, EF, EJ, EA, EB, EL, EK, - // Case 62 - ST_POLY7, COLOR0, EL, EK, ED, EA, EI, EH, EF, - // Case 63 - ST_QUAD, COLOR0, EF, EL, EK, EH, - // Case 64 - ST_TRI, COLOR0, EL, EF, EG, - // Case 65 - ST_TRI, COLOR0, EA, ED, EI, - ST_TRI, COLOR0, EF, EG, EL, - // Case 66 - ST_TRI, COLOR0, EJ, EB, EA, - ST_TRI, COLOR0, EF, EG, EL, - // Case 67 - ST_TRI, COLOR0, EF, EG, EL, - ST_QUAD, COLOR0, EB, ED, EI, EJ, - // Case 68 - ST_QUAD, COLOR0, EB, EF, EG, EC, - // Case 69 - ST_TRI, COLOR0, ED, EI, EA, - ST_QUAD, COLOR0, EB, EF, EG, EC, - // Case 70 - ST_POLY5, COLOR0, EG, EC, EA, EJ, EF, - // Case 71 - ST_POLY6, COLOR0, EC, ED, EI, EJ, EF, EG, - // Case 72 - ST_TRI, COLOR0, EC, EK, ED, - ST_TRI, COLOR0, EL, EF, EG, - // Case 73 - ST_TRI, COLOR0, EL, EF, EG, - ST_QUAD, COLOR0, EK, EI, EA, EC, - // Case 74 - ST_TRI, COLOR0, EA, EJ, EB, - ST_TRI, COLOR0, EC, EK, ED, - ST_TRI, COLOR0, EF, EG, EL, - // Case 75 - ST_TRI, COLOR0, EF, EG, EL, - ST_POLY5, COLOR0, EK, EI, EJ, EB, EC, - // Case 76 - ST_POLY5, COLOR0, ED, EB, EF, EG, EK, - // Case 77 - ST_POLY6, COLOR0, EF, EG, EK, EI, EA, EB, - // Case 78 - ST_POLY6, COLOR0, EG, EK, ED, EA, EJ, EF, - // Case 79 - ST_POLY5, COLOR0, EK, EI, EJ, EF, EG, - // Case 80 - ST_TRI, COLOR0, EF, EG, EL, - ST_TRI, COLOR0, EE, EI, EH, - // Case 81 - ST_TRI, COLOR0, EG, EL, EF, - ST_QUAD, COLOR0, EE, EA, ED, EH, - // Case 82 - ST_TRI, COLOR0, EB, EA, EJ, - ST_TRI, COLOR0, EF, EG, EL, - ST_TRI, COLOR0, EI, EH, EE, - // Case 83 - ST_TRI, COLOR0, EL, EF, EG, - ST_POLY5, COLOR0, EH, EE, EJ, EB, ED, - // Case 84 - ST_TRI, COLOR0, EE, EI, EH, - ST_QUAD, COLOR0, EG, EC, EB, EF, - // Case 85 - ST_QUAD, COLOR0, EC, EB, EF, EG, - ST_QUAD, COLOR0, EE, EA, ED, EH, - // Case 86 - ST_TRI, COLOR0, EI, EH, EE, - ST_POLY5, COLOR0, EG, EC, EA, EJ, EF, - // Case 87 - ST_POLY7, COLOR0, ED, EH, EE, EJ, EF, EG, EC, - // Case 88 - ST_TRI, COLOR0, ED, EC, EK, - ST_TRI, COLOR0, EH, EE, EI, - ST_TRI, COLOR0, EL, EF, EG, - // Case 89 - ST_TRI, COLOR0, EF, EG, EL, - ST_POLY5, COLOR0, EC, EK, EH, EE, EA, - // Case 90 - ST_TRI, COLOR0, EA, EJ, EB, - ST_TRI, COLOR0, EE, EI, EH, - ST_TRI, COLOR0, EC, EK, ED, - ST_TRI, COLOR0, EF, EG, EL, - // Case 91 - ST_TRI, COLOR0, EF, EG, EL, - ST_POLY6, COLOR0, EJ, EB, EC, EK, EH, EE, - // Case 92 - ST_TRI, COLOR0, EI, EH, EE, - ST_POLY5, COLOR0, EF, EG, EK, ED, EB, - // Case 93 - ST_POLY7, COLOR0, EB, EF, EG, EK, EH, EE, EA, - // Case 94 - ST_TRI, COLOR0, EI, EH, EE, - ST_POLY6, COLOR0, EA, EJ, EF, EG, EK, ED, - // Case 95 - ST_POLY6, COLOR0, EJ, EF, EG, EK, EH, EE, - // Case 96 - ST_QUAD, COLOR0, EL, EJ, EE, EG, - // Case 97 - ST_TRI, COLOR0, EA, ED, EI, - ST_QUAD, COLOR0, EE, EG, EL, EJ, - // Case 98 - ST_POLY5, COLOR0, EA, EE, EG, EL, EB, - // Case 99 - ST_POLY6, COLOR0, EG, EL, EB, ED, EI, EE, - // Case 100 - ST_POLY5, COLOR0, EE, EG, EC, EB, EJ, - // Case 101 - ST_TRI, COLOR0, ED, EI, EA, - ST_POLY5, COLOR0, EE, EG, EC, EB, EJ, - // Case 102 - ST_QUAD, COLOR0, EC, EA, EE, EG, - // Case 103 - ST_POLY5, COLOR0, EE, EG, EC, ED, EI, - // Case 104 - ST_TRI, COLOR0, EK, ED, EC, - ST_QUAD, COLOR0, EL, EJ, EE, EG, - // Case 105 - ST_QUAD, COLOR0, EI, EA, EC, EK, - ST_QUAD, COLOR0, EL, EJ, EE, EG, - // Case 106 - ST_TRI, COLOR0, ED, EC, EK, - ST_POLY5, COLOR0, EG, EL, EB, EA, EE, - // Case 107 - ST_POLY7, COLOR0, EE, EG, EL, EB, EC, EK, EI, - // Case 108 - ST_POLY6, COLOR0, EG, EK, ED, EB, EJ, EE, - // Case 109 - ST_POLY7, COLOR0, EK, EI, EA, EB, EJ, EE, EG, - // Case 110 - ST_POLY5, COLOR0, EA, EE, EG, EK, ED, - // Case 111 - ST_QUAD, COLOR0, EI, EE, EG, EK, - // Case 112 - ST_POLY5, COLOR0, EL, EJ, EI, EH, EG, - // Case 113 - ST_POLY6, COLOR0, EH, EG, EL, EJ, EA, ED, - // Case 114 - ST_POLY6, COLOR0, EH, EG, EL, EB, EA, EI, - // Case 115 - ST_POLY5, COLOR0, EB, ED, EH, EG, EL, - // Case 116 - ST_POLY6, COLOR0, EI, EH, EG, EC, EB, EJ, - // Case 117 - ST_POLY7, COLOR0, EG, EC, EB, EJ, EA, ED, EH, - // Case 118 - ST_POLY5, COLOR0, EG, EC, EA, EI, EH, - // Case 119 - ST_QUAD, COLOR0, EC, ED, EH, EG, - // Case 120 - ST_TRI, COLOR0, EC, EK, ED, - ST_POLY5, COLOR0, EI, EH, EG, EL, EJ, - // Case 121 - ST_POLY7, COLOR0, EA, EC, EK, EH, EG, EL, EJ, - // Case 122 - ST_TRI, COLOR0, EC, EK, ED, - ST_POLY6, COLOR0, EB, EA, EI, EH, EG, EL, - // Case 123 - ST_POLY6, COLOR0, EB, EC, EK, EH, EG, EL, - // Case 124 - ST_POLY7, COLOR0, EJ, EI, EH, EG, EK, ED, EB, - // Case 125 - ST_TRI, COLOR0, EA, EB, EJ, - ST_TRI, COLOR0, EK, EH, EG, - // Case 126 - ST_POLY6, COLOR0, EA, EI, EH, EG, EK, ED, - // Case 127 - ST_TRI, COLOR0, EH, EG, EK, - // Case 128 - ST_TRI, COLOR0, EH, EK, EG, - // Case 129 - ST_TRI, COLOR0, ED, EI, EA, - ST_TRI, COLOR0, EK, EG, EH, - // Case 130 - ST_TRI, COLOR0, EA, EJ, EB, - ST_TRI, COLOR0, EK, EG, EH, - // Case 131 - ST_TRI, COLOR0, EK, EG, EH, - ST_QUAD, COLOR0, EI, EJ, EB, ED, - // Case 132 - ST_TRI, COLOR0, EL, EC, EB, - ST_TRI, COLOR0, EG, EH, EK, - // Case 133 - ST_TRI, COLOR0, EB, EL, EC, - ST_TRI, COLOR0, ED, EI, EA, - ST_TRI, COLOR0, EG, EH, EK, - // Case 134 - ST_TRI, COLOR0, EG, EH, EK, - ST_QUAD, COLOR0, EC, EA, EJ, EL, - // Case 135 - ST_TRI, COLOR0, EG, EH, EK, - ST_POLY5, COLOR0, EI, EJ, EL, EC, ED, - // Case 136 - ST_QUAD, COLOR0, EH, ED, EC, EG, - // Case 137 - ST_POLY5, COLOR0, EA, EC, EG, EH, EI, - // Case 138 - ST_TRI, COLOR0, EA, EJ, EB, - ST_QUAD, COLOR0, EC, EG, EH, ED, - // Case 139 - ST_POLY6, COLOR0, EG, EH, EI, EJ, EB, EC, - // Case 140 - ST_POLY5, COLOR0, EH, ED, EB, EL, EG, - // Case 141 - ST_POLY6, COLOR0, EB, EL, EG, EH, EI, EA, - // Case 142 - ST_POLY6, COLOR0, EL, EG, EH, ED, EA, EJ, - // Case 143 - ST_POLY5, COLOR0, EI, EJ, EL, EG, EH, - // Case 144 - ST_QUAD, COLOR0, EG, EE, EI, EK, - // Case 145 - ST_POLY5, COLOR0, EG, EE, EA, ED, EK, - // Case 146 - ST_TRI, COLOR0, EJ, EB, EA, - ST_QUAD, COLOR0, EI, EK, EG, EE, - // Case 147 - ST_POLY6, COLOR0, ED, EK, EG, EE, EJ, EB, - // Case 148 - ST_TRI, COLOR0, EC, EB, EL, - ST_QUAD, COLOR0, EG, EE, EI, EK, - // Case 149 - ST_TRI, COLOR0, EB, EL, EC, - ST_POLY5, COLOR0, EG, EE, EA, ED, EK, - // Case 150 - ST_QUAD, COLOR0, EE, EI, EK, EG, - ST_QUAD, COLOR0, EC, EA, EJ, EL, - // Case 151 - ST_POLY7, COLOR0, EJ, EL, EC, ED, EK, EG, EE, - // Case 152 - ST_POLY5, COLOR0, EC, EG, EE, EI, ED, - // Case 153 - ST_QUAD, COLOR0, EE, EA, EC, EG, - // Case 154 - ST_TRI, COLOR0, EB, EA, EJ, - ST_POLY5, COLOR0, EE, EI, ED, EC, EG, - // Case 155 - ST_POLY5, COLOR0, EC, EG, EE, EJ, EB, - // Case 156 - ST_POLY6, COLOR0, EB, EL, EG, EE, EI, ED, - // Case 157 - ST_POLY5, COLOR0, EG, EE, EA, EB, EL, - // Case 158 - ST_POLY7, COLOR0, EG, EE, EI, ED, EA, EJ, EL, - // Case 159 - ST_QUAD, COLOR0, EE, EJ, EL, EG, - // Case 160 - ST_TRI, COLOR0, EE, EF, EJ, - ST_TRI, COLOR0, EH, EK, EG, - // Case 161 - ST_TRI, COLOR0, EA, ED, EI, - ST_TRI, COLOR0, EE, EF, EJ, - ST_TRI, COLOR0, EK, EG, EH, - // Case 162 - ST_TRI, COLOR0, EH, EK, EG, - ST_QUAD, COLOR0, EF, EB, EA, EE, - // Case 163 - ST_TRI, COLOR0, EK, EG, EH, - ST_POLY5, COLOR0, EF, EB, ED, EI, EE, - // Case 164 - ST_TRI, COLOR0, EJ, EE, EF, - ST_TRI, COLOR0, EL, EC, EB, - ST_TRI, COLOR0, EH, EK, EG, - // Case 165 - ST_TRI, COLOR0, EG, EH, EK, - ST_TRI, COLOR0, EB, EL, EC, - ST_TRI, COLOR0, EA, ED, EI, - ST_TRI, COLOR0, EE, EF, EJ, - // Case 166 - ST_TRI, COLOR0, EH, EK, EG, - ST_POLY5, COLOR0, EC, EA, EE, EF, EL, - // Case 167 - ST_TRI, COLOR0, EK, EG, EH, - ST_POLY6, COLOR0, ED, EI, EE, EF, EL, EC, - // Case 168 - ST_TRI, COLOR0, EF, EJ, EE, - ST_QUAD, COLOR0, EH, ED, EC, EG, - // Case 169 - ST_TRI, COLOR0, EJ, EE, EF, - ST_POLY5, COLOR0, EG, EH, EI, EA, EC, - // Case 170 - ST_QUAD, COLOR0, ED, EC, EG, EH, - ST_QUAD, COLOR0, EF, EB, EA, EE, - // Case 171 - ST_POLY7, COLOR0, EC, EG, EH, EI, EE, EF, EB, - // Case 172 - ST_TRI, COLOR0, EJ, EE, EF, - ST_POLY5, COLOR0, EH, ED, EB, EL, EG, - // Case 173 - ST_TRI, COLOR0, EJ, EE, EF, - ST_POLY6, COLOR0, EB, EL, EG, EH, EI, EA, - // Case 174 - ST_POLY7, COLOR0, EA, EE, EF, EL, EG, EH, ED, - // Case 175 - ST_POLY6, COLOR0, EL, EG, EH, EI, EE, EF, - // Case 176 - ST_POLY5, COLOR0, EJ, EI, EK, EG, EF, - // Case 177 - ST_POLY6, COLOR0, EA, ED, EK, EG, EF, EJ, - // Case 178 - ST_POLY6, COLOR0, EK, EG, EF, EB, EA, EI, - // Case 179 - ST_POLY5, COLOR0, EF, EB, ED, EK, EG, - // Case 180 - ST_TRI, COLOR0, EB, EL, EC, - ST_POLY5, COLOR0, EK, EG, EF, EJ, EI, - // Case 181 - ST_TRI, COLOR0, EB, EL, EC, - ST_POLY6, COLOR0, EA, ED, EK, EG, EF, EJ, - // Case 182 - ST_POLY7, COLOR0, EI, EK, EG, EF, EL, EC, EA, - // Case 183 - ST_POLY6, COLOR0, ED, EK, EG, EF, EL, EC, - // Case 184 - ST_POLY6, COLOR0, EI, ED, EC, EG, EF, EJ, - // Case 185 - ST_POLY5, COLOR0, EA, EC, EG, EF, EJ, - // Case 186 - ST_POLY7, COLOR0, EF, EB, EA, EI, ED, EC, EG, - // Case 187 - ST_QUAD, COLOR0, EG, EF, EB, EC, - // Case 188 - ST_POLY7, COLOR0, ED, EB, EL, EG, EF, EJ, EI, - // Case 189 - ST_POLY6, COLOR0, EA, EB, EL, EG, EF, EJ, - // Case 190 - ST_TRI, COLOR0, EA, EI, ED, - ST_TRI, COLOR0, EF, EL, EG, - // Case 191 - ST_TRI, COLOR0, EL, EG, EF, - // Case 192 - ST_QUAD, COLOR0, EK, EL, EF, EH, - // Case 193 - ST_TRI, COLOR0, EI, EA, ED, - ST_QUAD, COLOR0, EK, EL, EF, EH, - // Case 194 - ST_TRI, COLOR0, EB, EA, EJ, - ST_QUAD, COLOR0, EF, EH, EK, EL, - // Case 195 - ST_QUAD, COLOR0, EL, EF, EH, EK, - ST_QUAD, COLOR0, EI, EJ, EB, ED, - // Case 196 - ST_POLY5, COLOR0, EB, EF, EH, EK, EC, - // Case 197 - ST_TRI, COLOR0, EA, ED, EI, - ST_POLY5, COLOR0, EH, EK, EC, EB, EF, - // Case 198 - ST_POLY6, COLOR0, EH, EK, EC, EA, EJ, EF, - // Case 199 - ST_POLY7, COLOR0, EF, EH, EK, EC, ED, EI, EJ, - // Case 200 - ST_POLY5, COLOR0, EF, EH, ED, EC, EL, - // Case 201 - ST_POLY6, COLOR0, EC, EL, EF, EH, EI, EA, - // Case 202 - ST_TRI, COLOR0, EJ, EB, EA, - ST_POLY5, COLOR0, ED, EC, EL, EF, EH, - // Case 203 - ST_POLY7, COLOR0, EI, EJ, EB, EC, EL, EF, EH, - // Case 204 - ST_QUAD, COLOR0, ED, EB, EF, EH, - // Case 205 - ST_POLY5, COLOR0, EB, EF, EH, EI, EA, - // Case 206 - ST_POLY5, COLOR0, EF, EH, ED, EA, EJ, - // Case 207 - ST_QUAD, COLOR0, EH, EI, EJ, EF, - // Case 208 - ST_POLY5, COLOR0, EI, EK, EL, EF, EE, - // Case 209 - ST_POLY6, COLOR0, EA, ED, EK, EL, EF, EE, - // Case 210 - ST_TRI, COLOR0, EA, EJ, EB, - ST_POLY5, COLOR0, EL, EF, EE, EI, EK, - // Case 211 - ST_POLY7, COLOR0, EK, EL, EF, EE, EJ, EB, ED, - // Case 212 - ST_POLY6, COLOR0, EF, EE, EI, EK, EC, EB, - // Case 213 - ST_POLY7, COLOR0, EE, EA, ED, EK, EC, EB, EF, - // Case 214 - ST_POLY7, COLOR0, EC, EA, EJ, EF, EE, EI, EK, - // Case 215 - ST_TRI, COLOR0, EJ, EF, EE, - ST_TRI, COLOR0, EC, ED, EK, - // Case 216 - ST_POLY6, COLOR0, ED, EC, EL, EF, EE, EI, - // Case 217 - ST_POLY5, COLOR0, EE, EA, EC, EL, EF, - // Case 218 - ST_TRI, COLOR0, EA, EJ, EB, - ST_POLY6, COLOR0, ED, EC, EL, EF, EE, EI, - // Case 219 - ST_POLY6, COLOR0, EC, EL, EF, EE, EJ, EB, - // Case 220 - ST_POLY5, COLOR0, ED, EB, EF, EE, EI, - // Case 221 - ST_QUAD, COLOR0, EF, EE, EA, EB, - // Case 222 - ST_POLY6, COLOR0, EF, EE, EI, ED, EA, EJ, - // Case 223 - ST_TRI, COLOR0, EJ, EF, EE, - // Case 224 - ST_POLY5, COLOR0, EK, EL, EJ, EE, EH, - // Case 225 - ST_TRI, COLOR0, EA, ED, EI, - ST_POLY5, COLOR0, EK, EL, EJ, EE, EH, - // Case 226 - ST_POLY6, COLOR0, EE, EH, EK, EL, EB, EA, - // Case 227 - ST_POLY7, COLOR0, EB, ED, EI, EE, EH, EK, EL, - // Case 228 - ST_POLY6, COLOR0, EJ, EE, EH, EK, EC, EB, - // Case 229 - ST_TRI, COLOR0, EA, ED, EI, - ST_POLY6, COLOR0, EJ, EE, EH, EK, EC, EB, - // Case 230 - ST_POLY5, COLOR0, EC, EA, EE, EH, EK, - // Case 231 - ST_POLY6, COLOR0, EE, EH, EK, EC, ED, EI, - // Case 232 - ST_POLY6, COLOR0, EJ, EE, EH, ED, EC, EL, - // Case 233 - ST_POLY7, COLOR0, EL, EJ, EE, EH, EI, EA, EC, - // Case 234 - ST_POLY7, COLOR0, EH, ED, EC, EL, EB, EA, EE, - // Case 235 - ST_TRI, COLOR0, EB, EC, EL, - ST_TRI, COLOR0, EI, EE, EH, - // Case 236 - ST_POLY5, COLOR0, EH, ED, EB, EJ, EE, - // Case 237 - ST_POLY6, COLOR0, EB, EJ, EE, EH, EI, EA, - // Case 238 - ST_QUAD, COLOR0, ED, EA, EE, EH, - // Case 239 - ST_TRI, COLOR0, EE, EH, EI, - // Case 240 - ST_QUAD, COLOR0, EL, EJ, EI, EK, - // Case 241 - ST_POLY5, COLOR0, EK, EL, EJ, EA, ED, - // Case 242 - ST_POLY5, COLOR0, EI, EK, EL, EB, EA, - // Case 243 - ST_QUAD, COLOR0, EL, EB, ED, EK, - // Case 244 - ST_POLY5, COLOR0, EJ, EI, EK, EC, EB, - // Case 245 - ST_POLY6, COLOR0, EJ, EA, ED, EK, EC, EB, - // Case 246 - ST_QUAD, COLOR0, EK, EC, EA, EI, - // Case 247 - ST_TRI, COLOR0, ED, EK, EC, - // Case 248 - ST_POLY5, COLOR0, EL, EJ, EI, ED, EC, - // Case 249 - ST_QUAD, COLOR0, EC, EL, EJ, EA, - // Case 250 - ST_POLY6, COLOR0, EI, ED, EC, EL, EB, EA, - // Case 251 - ST_TRI, COLOR0, EB, EC, EL, - // Case 252 - ST_QUAD, COLOR0, EI, ED, EB, EJ, - // Case 253 - ST_TRI, COLOR0, EA, EB, EJ, - // Case 254 - ST_TRI, COLOR0, EA, EI, ED, - // Case 255 -}; -// clang-format on - -unsigned char numCutShapesHex[] = { - 0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 1, 3, 1, 2, 1, 2, 1, - 1, 2, 1, 1, 2, 3, 1, 1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 2, 1, 2, 1, 1, 1, - 1, 2, 2, 2, 1, 2, 1, 1, 2, 2, 3, 2, 1, 1, 1, 1, 2, 2, 3, 2, 2, 2, 2, 1, 3, 2, 4, 2, 2, 1, 2, 1, - 1, 2, 1, 1, 1, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, - 1, 2, 2, 2, 2, 3, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, - 2, 3, 2, 2, 3, 4, 2, 2, 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, - 1, 2, 2, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}; - -unsigned char startCutShapesHex[] = { - 0, 0, 5, 10, 16, 21, 31, 37, 44, 49, 55, 65, 72, 78, 85, 92, - 98, 103, 109, 119, 126, 136, 147, 158, 166, 176, 183, 198, 206, 217, 225, 237, - 244, 249, 259, 265, 272, 282, 297, 304, 312, 322, 333, 344, 352, 363, 375, 383, - 390, 396, 403, 410, 416, 427, 439, 447, 454, 465, 473, 485, 492, 504, 513, 522, - 528, 533, 543, 553, 564, 570, 581, 588, 596, 606, 617, 632, 644, 651, 659, 667, - 674, 684, 695, 710, 722, 733, 745, 757, 766, 781, 793, 813, 826, 838, 847, 860, - 868, 874, 885, 892, 900, 907, 919, 925, 932, 943, 955, 967, 976, 984, 993, 1000, - 1006, 1013, 1021, 1029, 1036, 1044, 1053, 1060, 1066, 1078, 1087, 1100, 1108, 1117, 1127, 1135, - 1140, 1145, 1155, 1165, 1176, 1186, 1201, 1212, 1224, 1230, 1237, 1248, 1256, 1263, 1271, 1279, - 1286, 1292, 1299, 1310, 1318, 1329, 1341, 1353, 1362, 1369, 1375, 1387, 1394, 1402, 1409, 1418, - 1424, 1434, 1449, 1460, 1472, 1487, 1507, 1519, 1532, 1543, 1555, 1567, 1576, 1588, 1601, 1610, - 1618, 1625, 1633, 1641, 1648, 1660, 1673, 1682, 1690, 1698, 1705, 1714, 1720, 1729, 1737, 1747, - 1752, 1758, 1769, 1780, 1792, 1799, 1811, 1819, 1828, 1835, 1843, 1855, 1864, 1870, 1877, 1884, - 1890, 1897, 1905, 1917, 1926, 1934, 1943, 1952, 1962, 1970, 1977, 1990, 1998, 2005, 2011, 2019, - 2024, 2031, 2043, 2051, 2060, 2068, 2081, 2088, 2096, 2104, 2113, 2122, 2132, 2139, 2147, 2153, - 2158, 2164, 2171, 2178, 2184, 2191, 2199, 2205, 2210, 2217, 2223, 2231, 2236, 2242, 2247, 2252}; - -const size_t cutShapesHexSize = sizeof(cutShapesHex) / sizeof(unsigned char); - -} // namespace tables -} // namespace cutting -} // namespace bump -} // namespace axom diff --git a/src/axom/bump/clipping/CutCasesPyramid.cpp b/src/axom/bump/clipping/CutCasesPyramid.cpp deleted file mode 100644 index 882ad30ecc..0000000000 --- a/src/axom/bump/clipping/CutCasesPyramid.cpp +++ /dev/null @@ -1,95 +0,0 @@ -#include "CutCases.h" - -namespace axom -{ -namespace bump -{ -namespace cutting -{ -namespace tables -{ - -int numCutCasesPyramid = 32; - -// clang-format off -unsigned char cutShapesPyramid[] = { - // Case 0 - // Case 1 - ST_TRI, COLOR0, EA, EE, ED, - // Case 2 - ST_TRI, COLOR0, EA, EB, EF, - // Case 3 - ST_QUAD, COLOR0, EB, EF, EE, ED, - // Case 4 - ST_TRI, COLOR0, EB, EC, EG, - // Case 5 - ST_TRI, COLOR0, EA, EE, ED, - ST_TRI, COLOR0, EB, EC, EG, - // Case 6 - ST_QUAD, COLOR0, EF, EA, EC, EG, - // Case 7 - ST_POLY5, COLOR0, EC, EG, EF, EE, ED, - // Case 8 - ST_TRI, COLOR0, ED, EH, EC, - // Case 9 - ST_QUAD, COLOR0, EE, EH, EC, EA, - // Case 10 - ST_TRI, COLOR0, EA, EB, EF, - ST_TRI, COLOR0, ED, EH, EC, - // Case 11 - ST_POLY5, COLOR0, EE, EH, EC, EB, EF, - // Case 12 - ST_QUAD, COLOR0, EG, EB, ED, EH, - // Case 13 - ST_POLY5, COLOR0, EB, EA, EE, EH, EG, - // Case 14 - ST_POLY5, COLOR0, ED, EH, EG, EF, EA, - // Case 15 - ST_QUAD, COLOR0, EF, EE, EH, EG, - // Case 16 - ST_QUAD, COLOR0, EH, EE, EF, EG, - // Case 17 - ST_POLY5, COLOR0, EG, EH, ED, EA, EF, - // Case 18 - ST_POLY5, COLOR0, EB, EG, EH, EE, EA, - // Case 19 - ST_QUAD, COLOR0, ED, EB, EG, EH, - // Case 20 - ST_POLY5, COLOR0, EC, EH, EE, EF, EB, - // Case 21 - ST_POLY6, COLOR0, EH, ED, EA, EF, EB, EC, - // Case 22 - ST_QUAD, COLOR0, EE, EA, EC, EH, - // Case 23 - ST_TRI, COLOR0, ED, EC, EH, - // Case 24 - ST_POLY5, COLOR0, EF, EG, EC, ED, EE, - // Case 25 - ST_QUAD, COLOR0, EC, EA, EF, EG, - // Case 26 - ST_POLY6, COLOR0, EE, EA, EB, EG, EC, ED, - // Case 27 - ST_TRI, COLOR0, EB, EG, EC, - // Case 28 - ST_QUAD, COLOR0, EB, ED, EE, EF, - // Case 29 - ST_TRI, COLOR0, EA, EF, EB, - // Case 30 - ST_TRI, COLOR0, EA, ED, EE, - // Case 31 -}; -// clang-format on - -unsigned char numCutShapesPyramid[] = {0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}; - -unsigned char startCutShapesPyramid[] = {0, 0, 5, 10, 16, 21, 31, 37, 44, 49, 55, - 65, 72, 78, 85, 92, 98, 104, 111, 118, 124, 131, - 139, 145, 150, 157, 163, 171, 176, 182, 187, 192}; - -const size_t cutShapesPyramidSize = sizeof(cutShapesPyramid) / sizeof(unsigned char); - -} // namespace tables -} // namespace cutting -} // namespace bump -} // namespace axom diff --git a/src/axom/bump/clipping/CutCasesTet.cpp b/src/axom/bump/clipping/CutCasesTet.cpp deleted file mode 100644 index 6dbbfe43d6..0000000000 --- a/src/axom/bump/clipping/CutCasesTet.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include "CutCases.h" - -namespace axom -{ -namespace bump -{ -namespace cutting -{ -namespace tables -{ - -int numCutCasesTet = 16; - -// clang-format off -unsigned char cutShapesTet[] = { - // Case 0 - // Case 1 - ST_TRI, COLOR0, EA, ED, EC, - // Case 2 - ST_TRI, COLOR0, EA, EB, EE, - // Case 3 - ST_QUAD, COLOR0, EE, ED, EC, EB, - // Case 4 - ST_TRI, COLOR0, EB, EC, EF, - // Case 5 - ST_QUAD, COLOR0, ED, EF, EB, EA, - // Case 6 - ST_QUAD, COLOR0, EA, EC, EF, EE, - // Case 7 - ST_TRI, COLOR0, ED, EF, EE, - // Case 8 - ST_TRI, COLOR0, ED, EE, EF, - // Case 9 - ST_QUAD, COLOR0, EA, EE, EF, EC, - // Case 10 - ST_QUAD, COLOR0, EF, ED, EA, EB, - // Case 11 - ST_TRI, COLOR0, EF, EC, EB, - // Case 12 - ST_QUAD, COLOR0, ED, EE, EB, EC, - // Case 13 - ST_TRI, COLOR0, EA, EE, EB, - // Case 14 - ST_TRI, COLOR0, EA, EC, ED, - // Case 15 -}; -// clang-format on - -unsigned char numCutShapesTet[] = {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}; - -unsigned char startCutShapesTet[] = {0, 0, 5, 10, 16, 21, 27, 33, 38, 43, 49, 55, 60, 66, 71, 76}; - -const size_t cutShapesTetSize = sizeof(cutShapesTet) / sizeof(unsigned char); - -} // namespace tables -} // namespace cutting -} // namespace bump -} // namespace axom diff --git a/src/axom/bump/clipping/CutCasesTri.cpp b/src/axom/bump/clipping/CutCasesTri.cpp deleted file mode 100644 index d2b7f02cea..0000000000 --- a/src/axom/bump/clipping/CutCasesTri.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include "CutCases.h" - -namespace axom -{ -namespace bump -{ -namespace cutting -{ -namespace tables -{ - -int numCutCasesTri = 8; - -// clang-format off -unsigned char cutShapesTri[] = { - // Case 0 - // Case 1 - ST_LIN, COLOR0, EA, EC, - // Case 2 - ST_LIN, COLOR0, EA, EB, - // Case 3 - ST_LIN, COLOR0, EC, EB, - // Case 4 - ST_LIN, COLOR0, EC, EB, - // Case 5 - ST_LIN, COLOR0, EA, EB, - // Case 6 - ST_LIN, COLOR0, EA, EC - // Case 7 -}; -// clang-format on - -unsigned char numCutShapesTri[] = {0, 1, 1, 1, 1, 1, 1, 0}; - -unsigned char startCutShapesTri[] = {0, 0, 4, 8, 12, 16, 20, 24}; - -const size_t cutShapesTriSize = sizeof(cutShapesTri) / sizeof(unsigned char); - -} // namespace tables -} // namespace cutting -} // namespace bump -} // namespace axom diff --git a/src/axom/bump/clipping/CutCasesWedge.cpp b/src/axom/bump/clipping/CutCasesWedge.cpp deleted file mode 100644 index 0b8b090ead..0000000000 --- a/src/axom/bump/clipping/CutCasesWedge.cpp +++ /dev/null @@ -1,172 +0,0 @@ -#include "CutCases.h" - -namespace axom -{ -namespace bump -{ -namespace cutting -{ -namespace tables -{ - -int numCutCasesWedge = 64; - -// clang-format off -unsigned char cutShapesWedge[] = { - // Case 0 - // Case 1 - ST_TRI, COLOR0, EA, EG, EC, - // Case 2 - ST_TRI, COLOR0, EA, EB, EH, - // Case 3 - ST_QUAD, COLOR0, EB, EH, EG, EC, - // Case 4 - ST_TRI, COLOR0, EB, EC, EI, - // Case 5 - ST_QUAD, COLOR0, EB, EA, EG, EI, - // Case 6 - ST_QUAD, COLOR0, EA, EC, EI, EH, - // Case 7 - ST_TRI, COLOR0, EH, EG, EI, - // Case 8 - ST_TRI, COLOR0, ED, EF, EG, - // Case 9 - ST_QUAD, COLOR0, EA, ED, EF, EC, - // Case 10 - ST_TRI, COLOR0, EA, EB, EH, - ST_TRI, COLOR0, EG, ED, EF, - // Case 11 - ST_POLY5, COLOR0, EF, EC, EB, EH, ED, - // Case 12 - ST_TRI, COLOR0, EC, EI, EB, - ST_TRI, COLOR0, EG, ED, EF, - // Case 13 - ST_POLY5, COLOR0, EF, EI, EB, EA, ED, - // Case 14 - ST_TRI, COLOR0, EG, ED, EF, - ST_QUAD, COLOR0, EI, EH, EA, EC, - // Case 15 - ST_QUAD, COLOR0, EH, ED, EF, EI, - // Case 16 - ST_TRI, COLOR0, EH, EE, ED, - // Case 17 - ST_TRI, COLOR0, EH, EE, ED, - ST_TRI, COLOR0, EA, EG, EC, - // Case 18 - ST_QUAD, COLOR0, ED, EA, EB, EE, - // Case 19 - ST_POLY5, COLOR0, EG, EC, EB, EE, ED, - // Case 20 - ST_TRI, COLOR0, EH, EE, ED, - ST_TRI, COLOR0, EC, EI, EB, - // Case 21 - ST_TRI, COLOR0, EH, EE, ED, - ST_QUAD, COLOR0, EB, EA, EG, EI, - // Case 22 - ST_POLY5, COLOR0, EA, EC, EI, EE, ED, - // Case 23 - ST_QUAD, COLOR0, ED, EG, EI, EE, - // Case 24 - ST_QUAD, COLOR0, EG, EH, EE, EF, - // Case 25 - ST_POLY5, COLOR0, EF, EC, EA, EH, EE, - // Case 26 - ST_POLY5, COLOR0, EB, EE, EF, EG, EA, - // Case 27 - ST_QUAD, COLOR0, EF, EC, EB, EE, - // Case 28 - ST_TRI, COLOR0, EC, EI, EB, - ST_QUAD, COLOR0, EF, EG, EH, EE, - // Case 29 - ST_POLY6, COLOR0, EA, EH, EE, EF, EI, EB, - // Case 30 - ST_POLY6, COLOR0, EA, EC, EI, EE, EF, EG, - // Case 31 - ST_TRI, COLOR0, EI, EE, EF, - // Case 32 - ST_TRI, COLOR0, EE, EI, EF, - // Case 33 - ST_TRI, COLOR0, EE, EI, EF, - ST_TRI, COLOR0, EA, EG, EC, - // Case 34 - ST_TRI, COLOR0, EE, EI, EF, - ST_TRI, COLOR0, EA, EB, EH, - // Case 35 - ST_TRI, COLOR0, EE, EI, EF, - ST_QUAD, COLOR0, EB, EH, EG, EC, - // Case 36 - ST_QUAD, COLOR0, EF, EE, EB, EC, - // Case 37 - ST_POLY5, COLOR0, EB, EA, EG, EF, EE, - // Case 38 - ST_POLY5, COLOR0, EA, EC, EF, EE, EH, - // Case 39 - ST_QUAD, COLOR0, EE, EH, EG, EF, - // Case 40 - ST_QUAD, COLOR0, EI, EG, ED, EE, - // Case 41 - ST_POLY5, COLOR0, EI, EC, EA, ED, EE, - // Case 42 - ST_TRI, COLOR0, EH, EA, EB, - ST_QUAD, COLOR0, EG, ED, EE, EI, - // Case 43 - ST_POLY6, COLOR0, EC, EB, EH, ED, EE, EI, - // Case 44 - ST_POLY5, COLOR0, ED, EE, EB, EC, EG, - // Case 45 - ST_QUAD, COLOR0, EB, EA, ED, EE, - // Case 46 - ST_POLY6, COLOR0, EE, EH, EA, EC, EG, ED, - // Case 47 - ST_TRI, COLOR0, EH, ED, EE, - // Case 48 - ST_QUAD, COLOR0, EH, EI, EF, ED, - // Case 49 - ST_TRI, COLOR0, EA, EG, EC, - ST_QUAD, COLOR0, EH, EI, EF, ED, - // Case 50 - ST_POLY5, COLOR0, EB, EI, EF, ED, EA, - // Case 51 - ST_POLY6, COLOR0, ED, EG, EC, EB, EI, EF, - // Case 52 - ST_POLY5, COLOR0, EB, EC, EF, ED, EH, - // Case 53 - ST_POLY6, COLOR0, EB, EA, EG, EF, ED, EH, - // Case 54 - ST_QUAD, COLOR0, EA, EC, EF, ED, - // Case 55 - ST_TRI, COLOR0, ED, EG, EF, - // Case 56 - ST_TRI, COLOR0, EH, EI, EG, - // Case 57 - ST_QUAD, COLOR0, EA, EH, EI, EC, - // Case 58 - ST_QUAD, COLOR0, EG, EA, EB, EI, - // Case 59 - ST_TRI, COLOR0, EC, EB, EI, - // Case 60 - ST_QUAD, COLOR0, EG, EH, EB, EC, - // Case 61 - ST_TRI, COLOR0, EA, EH, EB, - // Case 62 - ST_TRI, COLOR0, EA, EC, EG, - // Case 63 -}; -// clang-format on - -unsigned char numCutShapesWedge[] = { - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, - 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}; - -unsigned char startCutShapesWedge[] = { - 0, 0, 5, 10, 16, 21, 27, 33, 38, 43, 49, 59, 66, 76, 83, 94, - 100, 105, 115, 121, 128, 138, 149, 156, 162, 168, 175, 182, 188, 199, 207, 215, - 220, 225, 235, 245, 256, 262, 269, 276, 282, 288, 295, 306, 314, 321, 327, 335, - 340, 346, 357, 364, 372, 379, 387, 393, 398, 403, 409, 415, 420, 426, 431, 436}; - -const size_t cutShapesWedgeSize = sizeof(cutShapesWedge) / sizeof(unsigned char); - -} // namespace tables -} // namespace cutting -} // namespace bump -} // namespace axom diff --git a/src/axom/bump/clipping/convert_triangles.py b/src/axom/bump/clipping/convert_triangles.py deleted file mode 100644 index d1ce7a6374..0000000000 --- a/src/axom/bump/clipping/convert_triangles.py +++ /dev/null @@ -1,174 +0,0 @@ -from collections import defaultdict - -def extract_triangles(arr): - """Extract valid triangles from the input array.""" - triangles = [] - for i in range(0, len(arr), 3): - tri = arr[i:i+3] - if -1 not in tri and len(tri) == 3: - triangles.append(tuple(tri)) - return triangles - -#def edges(triangle): -# """Return the set of edges (as sorted tuples) from a triangle.""" -# a, b, c = triangle -# return {(min(a, b), max(a, b)), (min(b, c), max(b, c)), (min(c, a), max(c, a))} -def edges(polygon): - return sorted(polygon) - - -def merge_polygons(poly1, poly2): - """Merge two polygons that share an edge into a larger polygon.""" - n1, n2 = len(poly1), len(poly2) - # Find the shared edge - for i in range(n1): - a1, a2 = poly1[i], poly1[(i+1)%n1] - for j in range(n2): - b1, b2 = poly2[j], poly2[(j+1)%n2] - if {a1, a2} == {b1, b2}: - # Merge poly2 into poly1 at the shared edge - # Remove the shared edge from both - # poly1: ... a1 a2 ... - # poly2: ... b1 b2 ... - # We want: ... a2 ... a1 ... (excluding the shared edge) - # Find the order to append poly2 - # poly1: a1 a2 ... (rest) - # poly2: b2 ... (rest) b1 - # Remove the shared edge from both - idx1 = i - idx2 = j - # Build new polygon - new_poly = [] - # Add poly1 from a2 (next after shared edge) to a1 (before shared edge) - k = (idx1 + 1) % n1 - while k != idx1: - new_poly.append(poly1[k]) - k = (k + 1) % n1 - # Add poly2 from b2 (next after shared edge) to b1 (before shared edge), in reverse - k = (idx2 + 1) % n2 - temp = [] - while k != idx2: - temp.append(poly2[k]) - k = (k + 1) % n2 - new_poly += temp - return tuple(new_poly) - return None - -def combine_triangles(arr): - triangles = extract_triangles(arr) - polygons = [tri for tri in triangles] - merged = True - while merged: - merged = False - n = len(polygons) - for i in range(n): - for j in range(i+1, n): - poly1, poly2 = polygons[i], polygons[j] - # If they share an edge - if set(edges(poly1)) & set(edges(poly2)): - new_poly = merge_polygons(poly1, poly2) - if new_poly: - # Replace poly1 and poly2 with new_poly - polygons = [p for k, p in enumerate(polygons) if k not in (i, j)] + [new_poly] - merged = True - break - if merged: - break - return tuple(polygons) - -def read_array(filename, name): - lines = open(filename, "rt").readlines() - reading = False - polys = [] - for line in lines: - if not reading: - if line.find(name) != -1: - reading = True - else: - if line.find(";") != -1: - reading = False - break - else: - s = line.find("{") + 1 - e = line.find("}") - numbers = eval("[" + line[s:e] + "]") - polys.append(numbers) - return polys - -def write_new_table(filename, name, polys): - edgeNames = ("EA", "EB", "EC", "ED", - "EE", "EF", "EG", "EH", - "EI", "EJ", "EK", "EL") - polyNames = ("", "", "", - "ST_TRI, ", - "ST_QUAD, ", - "ST_POLY5,", - "ST_POLY6,", - "ST_POLY7,", - "ST_POLY8,") - - f = open(filename, "wt") - f.write("#include \"CutCases.h\"\n\n") - - f.write("namespace axom {\n") - f.write("namespace bump {\n") - f.write("namespace cutting {\n") - f.write("namespace tables {\n\n") - f.write(f"int numCutCases{name} = {len(polys)};\n\n") - f.write("// clang-format off\n") - f.write(f"unsigned char cutShapes{name}[] = ") - f.write("{\n") - offset = 0 - offsets = [] - sizes = [] - i = 0 - for p in polys: - result = combine_triangles(p) - f.write(f" // Case {i}\n") - offsets.append(offset) - sizes.append(len(result)) - for shape in result: - shapeName = polyNames[len(shape)] - offset = offset + 2 + len(shape) - edges = [edgeNames[x] for x in shape] - shape_str = str(edges)[1:-1] - shape_str = shape_str.replace("'", "") - s = f" {shapeName} COLOR0, {shape_str},\n" - f.write(s) - i = i + 1 - f.write("};\n") - f.write("// clang-format on\n\n") - - f.write(f"unsigned char numCutShapes{name}[] = ") - f.write("{\n") - f.write(str(sizes)[1:-1]) - f.write("\n};\n\n") - - f.write(f"unsigned char startCutShapes{name}[] = ") - f.write("{\n") - f.write(str(offsets)[1:-1]) - f.write("\n};\n\n") - - f.write(f"const size_t cutShapes{name}Size = sizeof(cutShapes{name}) / sizeof(unsigned char);\n\n") - f.write("} // namespace tables\n") - f.write("} // namespace cutting\n") - f.write("} // namespace bump\n") - f.write("} // namespace axom\n") - f.close() - -# Example usage: -arr = [1, 3, 8, 9, 1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1] -result = combine_triangles(arr) -print(result) - -polys = read_array("vtkTriangulationTable.C", "tetTriangulationTable") -write_new_table("CutCasesTet.cpp", "Tet", polys) - -polys = read_array("vtkTriangulationTable.C", "pyramidTriangulationTable") -write_new_table("CutCasesPyramid.cpp", "Pyramid", polys) - -polys = read_array("vtkTriangulationTable.C", "wedgeTriangulationTable") -write_new_table("CutCasesWedge.cpp", "Wedge", polys) - -polys = read_array("vtkTriangulationTable.C", "hexTriangulationTable") -write_new_table("CutCasesHex.cpp", "Hex", polys) From 3725bde02777ed8ff6359f3dba047396f418b779 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Fri, 5 Dec 2025 18:50:49 -0800 Subject: [PATCH 23/28] Added calls to save vis files in clipfield test. Updated one test. --- src/axom/bump/tests/bump_clipfield.cpp | 30 +++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/axom/bump/tests/bump_clipfield.cpp b/src/axom/bump/tests/bump_clipfield.cpp index 094d686934..d914789f31 100644 --- a/src/axom/bump/tests/bump_clipfield.cpp +++ b/src/axom/bump/tests/bump_clipfield.cpp @@ -451,6 +451,8 @@ void test_one_shape(const conduit::Node &hostMesh, const std::string &name) conduit::Node hostClipMesh; utils::copy(hostClipMesh, deviceClipMesh); + TestApp.saveVisualization(name, hostClipMesh); + // Handle baseline comparison. EXPECT_TRUE(TestApp.test(name, hostClipMesh)); } @@ -543,6 +545,8 @@ void braid2d_clip_test(const std::string &type, const std::string &name) conduit::Node hostClipMesh; utils::copy(hostClipMesh, deviceClipMesh); + TestApp.saveVisualization(name, hostClipMesh); + // Handle baseline comparison. EXPECT_TRUE(TestApp.test(name, hostClipMesh)); @@ -608,6 +612,8 @@ void braid2d_clip_test(const std::string &type, const std::string &name) conduit::Node hostClipMixedMesh; utils::copy(hostClipMixedMesh, deviceClipMixedMesh); + TestApp.saveVisualization(name + "_mixed", hostClipMixedMesh); + // Handle baseline comparison. EXPECT_TRUE(TestApp.test(name + "_mixed", hostClipMixedMesh)); } @@ -672,6 +678,8 @@ void braid_rectilinear_clip_test(const std::string &name) conduit::Node hostClipMesh; utils::copy(hostClipMesh, deviceClipMesh); + TestApp.saveVisualization(name, hostClipMesh); + // Handle baseline comparison. EXPECT_TRUE(TestApp.test(name, hostClipMesh)); } @@ -741,6 +749,8 @@ void strided_structured_clip_test(const std::string &name, const conduit::Node & // device->host utils::copy(hostClipMesh, deviceClipMesh); + TestApp.saveVisualization(name, hostClipMesh); + // Handle baseline comparison. EXPECT_TRUE(TestApp.test(name, hostClipMesh)); } @@ -823,6 +833,8 @@ void braid3d_clip_test(const std::string &type, const std::string &name) conduit::Node hostClipMesh; utils::copy(hostClipMesh, deviceClipMesh); + TestApp.saveVisualization(name, hostClipMesh); + // Handle baseline comparison. EXPECT_TRUE(TestApp.test(name, hostClipMesh)); } @@ -932,6 +944,8 @@ void braid3d_mixed_clip_test(const std::string &name) conduit::Node hostClipMesh; utils::copy(hostClipMesh, deviceClipMesh); + TestApp.saveVisualization(name, hostClipMesh); + // Handle baseline comparison. EXPECT_TRUE(TestApp.test(name, hostClipMesh)); } @@ -984,6 +998,7 @@ struct point_merge_test { conduit::Node hostMesh; create(hostMesh); + TestApp.saveVisualization("pointmerge_orig", hostMesh); // host->device conduit::Node deviceMesh; @@ -1013,6 +1028,8 @@ struct point_merge_test utils::copy(hostClipMesh, deviceClipMesh); //printNode(hostClipMesh); + TestApp.saveVisualization("pointmerge", hostClipMesh); + // Check that the points were merged when making the new mesh. std::vector x {{2.0, 2.0, 0.0, 1.0, 2.0, 1.5, 1.0}}; std::vector y {{0.0, 1.0, 2.0, 2.0, 2.0, 1.0, 1.5}}; @@ -1024,11 +1041,10 @@ struct point_merge_test EXPECT_FLOAT_EQ(hostClipMesh["coordsets/coords/values/y"].as_float_accessor()[i], y[i]); } - // Check that the degenerate quads were turned into triangles. - std::vector shapes {{2, 2, 3, 2}}; - std::vector sizes {{3, 3, 4, 3}}; - std::vector offsets {{0, 4, 8, 12}}; - compare_values(shapes, hostClipMesh["topologies/mesh/elements/shapes"].as_int_accessor()); + // Check that we git tris and a pentagon. + EXPECT_EQ(hostClipMesh["topologies/mesh/elements/shape"].as_string(), "polygonal"); + std::vector sizes {{3, 3, 5}}; + std::vector offsets {{0, 4, 8}}; compare_values(sizes, hostClipMesh["topologies/mesh/elements/sizes"].as_int_accessor()); compare_values(offsets, hostClipMesh["topologies/mesh/elements/offsets"].as_int_accessor()); } @@ -1085,6 +1101,8 @@ struct test_selectedzones conduit::Node hostResult; utils::copy(hostResult, deviceResult); + TestApp.saveVisualization("selectedzones1", hostResult); + // Handle baseline comparison. EXPECT_TRUE(TestApp.test("selectedzones1", hostResult)); @@ -1100,6 +1118,8 @@ struct test_selectedzones // device->host utils::copy(hostResult, deviceResult); + TestApp.saveVisualization("selectedzones2", hostResult); + EXPECT_TRUE(TestApp.test("selectedzones2", hostResult)); } From cc3c43d684842261f37f9ce2209fe4e980faac21 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Fri, 5 Dec 2025 19:09:05 -0800 Subject: [PATCH 24/28] Fixed a test after clip algorithm changes. --- src/axom/bump/tests/bump_clipfield.cpp | 42 +++++++++++++------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/axom/bump/tests/bump_clipfield.cpp b/src/axom/bump/tests/bump_clipfield.cpp index d914789f31..993825953b 100644 --- a/src/axom/bump/tests/bump_clipfield.cpp +++ b/src/axom/bump/tests/bump_clipfield.cpp @@ -15,6 +15,7 @@ #include namespace bump = axom::bump; +namespace views = axom::bump::views; namespace utils = axom::bump::utilities; std::string baselineDirectory() @@ -569,32 +570,26 @@ void braid2d_clip_test(const std::string &type, const std::string &name) options["fields/color"] = "new_color"; options["fields/new_radial"] = "new_radial2"; - conduit::Node deviceClipMixedMesh; - if(n_device_topo.has_path("elements/shape") && - n_device_topo.fetch_existing("elements/shape").as_string() == "mixed") + const auto shape = n_device_topo.fetch_existing("elements/shape").as_string(); + + conduit::Node deviceClipMesh2; + if(shape == "polygonal") { - auto shapesView = - utils::make_array_view(n_device_topo.fetch_existing("elements/shapes")); const auto sizesView = utils::make_array_view(n_device_topo.fetch_existing("elements/sizes")); const auto offsetsView = utils::make_array_view(n_device_topo.fetch_existing("elements/offsets")); - // Make the shape map. - volatile int allocatorID = axom::execution_space::allocatorID(); - axom::Array values, ids; - auto shapeMap = axom::bump::views::buildShapeMap(n_device_topo, values, ids, allocatorID); - - using MixedTopoView = axom::bump::views::UnstructuredTopologyMixedShapeView; - MixedTopoView mixedTopoView(connView, shapesView, sizesView, offsetsView, shapeMap); + using PolyTopoView = views::UnstructuredTopologySingleShapeView>; + PolyTopoView polyTopoView(connView, sizesView, offsetsView); // Clip the data - axom::bump::clipping::ClipField mixedClipper( - mixedTopoView, + axom::bump::clipping::ClipField polyClipper( + polyTopoView, expCoordsetView); - mixedClipper.execute(deviceClipMesh, options, deviceClipMixedMesh); + polyClipper.execute(deviceClipMesh, options, deviceClipMesh2); } - else + else if(shape == "quad") { // Depending on optimizations, we might get a mesh with just quads. using QuadTopoView = @@ -605,17 +600,22 @@ void braid2d_clip_test(const std::string &type, const std::string &name) axom::bump::clipping::ClipField quadClipper( quadTopoView, expCoordsetView); - quadClipper.execute(deviceClipMesh, options, deviceClipMixedMesh); + quadClipper.execute(deviceClipMesh, options, deviceClipMesh2); + } + else + { + std::cout << "The test got an unexpected shape " << shape << std::endl; + FAIL(); } // Copy device->host - conduit::Node hostClipMixedMesh; - utils::copy(hostClipMixedMesh, deviceClipMixedMesh); + conduit::Node hostClipMesh2; + utils::copy(hostClipMesh2, deviceClipMesh2); - TestApp.saveVisualization(name + "_mixed", hostClipMixedMesh); + TestApp.saveVisualization(name + "_clip2", hostClipMesh2); // Handle baseline comparison. - EXPECT_TRUE(TestApp.test(name + "_mixed", hostClipMixedMesh)); + EXPECT_TRUE(TestApp.test(name + "_clip2", hostClipMesh2)); } TEST(bump_clipfield, uniform2d) From 519f2fd649ee7fa1636d39b99f35729fae3f4d75 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Fri, 5 Dec 2025 19:09:13 -0800 Subject: [PATCH 25/28] Updated data dir --- data | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data b/data index 01d33e2200..89fb79f99b 160000 --- a/data +++ b/data @@ -1 +1 @@ -Subproject commit 01d33e2200abaf9331f65f83d2eb20f1cf972a67 +Subproject commit 89fb79f99b989fe05b14148bca2dcbc9287cd9bc From f5a9cea15533293bd1dab3a312aa5e7a5de5f7e7 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Sat, 6 Dec 2025 00:03:00 -0800 Subject: [PATCH 26/28] Moved some files. --- src/axom/bump/clipping/{ => split}/ClipCasesPoly5.cpp | 0 src/axom/bump/clipping/{ => split}/ClipCasesPoly6.cpp | 0 src/axom/bump/clipping/{ => split}/ClipCasesPoly7.cpp | 0 src/axom/bump/clipping/{ => split}/ClipCasesPoly8.cpp | 0 src/axom/bump/clipping/{ => split}/ClipCasesQua.cpp | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename src/axom/bump/clipping/{ => split}/ClipCasesPoly5.cpp (100%) rename src/axom/bump/clipping/{ => split}/ClipCasesPoly6.cpp (100%) rename src/axom/bump/clipping/{ => split}/ClipCasesPoly7.cpp (100%) rename src/axom/bump/clipping/{ => split}/ClipCasesPoly8.cpp (100%) rename src/axom/bump/clipping/{ => split}/ClipCasesQua.cpp (100%) diff --git a/src/axom/bump/clipping/ClipCasesPoly5.cpp b/src/axom/bump/clipping/split/ClipCasesPoly5.cpp similarity index 100% rename from src/axom/bump/clipping/ClipCasesPoly5.cpp rename to src/axom/bump/clipping/split/ClipCasesPoly5.cpp diff --git a/src/axom/bump/clipping/ClipCasesPoly6.cpp b/src/axom/bump/clipping/split/ClipCasesPoly6.cpp similarity index 100% rename from src/axom/bump/clipping/ClipCasesPoly6.cpp rename to src/axom/bump/clipping/split/ClipCasesPoly6.cpp diff --git a/src/axom/bump/clipping/ClipCasesPoly7.cpp b/src/axom/bump/clipping/split/ClipCasesPoly7.cpp similarity index 100% rename from src/axom/bump/clipping/ClipCasesPoly7.cpp rename to src/axom/bump/clipping/split/ClipCasesPoly7.cpp diff --git a/src/axom/bump/clipping/ClipCasesPoly8.cpp b/src/axom/bump/clipping/split/ClipCasesPoly8.cpp similarity index 100% rename from src/axom/bump/clipping/ClipCasesPoly8.cpp rename to src/axom/bump/clipping/split/ClipCasesPoly8.cpp diff --git a/src/axom/bump/clipping/ClipCasesQua.cpp b/src/axom/bump/clipping/split/ClipCasesQua.cpp similarity index 100% rename from src/axom/bump/clipping/ClipCasesQua.cpp rename to src/axom/bump/clipping/split/ClipCasesQua.cpp From 554d9b0e076b3b086e84aaf0ee572cdebefc26c8 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Sat, 6 Dec 2025 00:15:03 -0800 Subject: [PATCH 27/28] Renamed some files. --- src/axom/bump/CMakeLists.txt | 10 +++++----- ...{polygonalClipCasesPoly5.cpp => ClipCasesPoly5.cpp} | 0 ...{polygonalClipCasesPoly6.cpp => ClipCasesPoly6.cpp} | 0 ...{polygonalClipCasesPoly7.cpp => ClipCasesPoly7.cpp} | 0 ...{polygonalClipCasesPoly8.cpp => ClipCasesPoly8.cpp} | 0 .../{polygonalClipCasesQua.cpp => ClipCasesQua.cpp} | 0 .../bump/clipping/{ => split}/convert_clip_cases.py | 0 7 files changed, 5 insertions(+), 5 deletions(-) rename src/axom/bump/clipping/{polygonalClipCasesPoly5.cpp => ClipCasesPoly5.cpp} (100%) rename src/axom/bump/clipping/{polygonalClipCasesPoly6.cpp => ClipCasesPoly6.cpp} (100%) rename src/axom/bump/clipping/{polygonalClipCasesPoly7.cpp => ClipCasesPoly7.cpp} (100%) rename src/axom/bump/clipping/{polygonalClipCasesPoly8.cpp => ClipCasesPoly8.cpp} (100%) rename src/axom/bump/clipping/{polygonalClipCasesQua.cpp => ClipCasesQua.cpp} (100%) rename src/axom/bump/clipping/{ => split}/convert_clip_cases.py (100%) diff --git a/src/axom/bump/CMakeLists.txt b/src/axom/bump/CMakeLists.txt index 0b595884a7..920a9d4219 100644 --- a/src/axom/bump/CMakeLists.txt +++ b/src/axom/bump/CMakeLists.txt @@ -85,12 +85,12 @@ set(bump_headers set(bump_sources clipping/ClipCasesHex.cpp - clipping/polygonalClipCasesPoly5.cpp - clipping/polygonalClipCasesPoly6.cpp - clipping/polygonalClipCasesPoly7.cpp - clipping/polygonalClipCasesPoly8.cpp + clipping/ClipCasesPoly5.cpp + clipping/ClipCasesPoly6.cpp + clipping/ClipCasesPoly7.cpp + clipping/ClipCasesPoly8.cpp clipping/ClipCasesPyr.cpp - clipping/polygonalClipCasesQua.cpp + clipping/ClipCasesQua.cpp clipping/ClipCasesTet.cpp clipping/ClipCasesTri.cpp clipping/ClipCasesWdg.cpp diff --git a/src/axom/bump/clipping/polygonalClipCasesPoly5.cpp b/src/axom/bump/clipping/ClipCasesPoly5.cpp similarity index 100% rename from src/axom/bump/clipping/polygonalClipCasesPoly5.cpp rename to src/axom/bump/clipping/ClipCasesPoly5.cpp diff --git a/src/axom/bump/clipping/polygonalClipCasesPoly6.cpp b/src/axom/bump/clipping/ClipCasesPoly6.cpp similarity index 100% rename from src/axom/bump/clipping/polygonalClipCasesPoly6.cpp rename to src/axom/bump/clipping/ClipCasesPoly6.cpp diff --git a/src/axom/bump/clipping/polygonalClipCasesPoly7.cpp b/src/axom/bump/clipping/ClipCasesPoly7.cpp similarity index 100% rename from src/axom/bump/clipping/polygonalClipCasesPoly7.cpp rename to src/axom/bump/clipping/ClipCasesPoly7.cpp diff --git a/src/axom/bump/clipping/polygonalClipCasesPoly8.cpp b/src/axom/bump/clipping/ClipCasesPoly8.cpp similarity index 100% rename from src/axom/bump/clipping/polygonalClipCasesPoly8.cpp rename to src/axom/bump/clipping/ClipCasesPoly8.cpp diff --git a/src/axom/bump/clipping/polygonalClipCasesQua.cpp b/src/axom/bump/clipping/ClipCasesQua.cpp similarity index 100% rename from src/axom/bump/clipping/polygonalClipCasesQua.cpp rename to src/axom/bump/clipping/ClipCasesQua.cpp diff --git a/src/axom/bump/clipping/convert_clip_cases.py b/src/axom/bump/clipping/split/convert_clip_cases.py similarity index 100% rename from src/axom/bump/clipping/convert_clip_cases.py rename to src/axom/bump/clipping/split/convert_clip_cases.py From 0a93cae00b67f0a4fe27773dcb5e79fe9617fb97 Mon Sep 17 00:00:00 2001 From: Brad Whitlock Date: Sat, 6 Dec 2025 00:48:55 -0800 Subject: [PATCH 28/28] make style --- src/axom/bump/tests/bump_clipfield.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/axom/bump/tests/bump_clipfield.cpp b/src/axom/bump/tests/bump_clipfield.cpp index 993825953b..dfc7b3f4b4 100644 --- a/src/axom/bump/tests/bump_clipfield.cpp +++ b/src/axom/bump/tests/bump_clipfield.cpp @@ -571,7 +571,7 @@ void braid2d_clip_test(const std::string &type, const std::string &name) options["fields/new_radial"] = "new_radial2"; const auto shape = n_device_topo.fetch_existing("elements/shape").as_string(); - + conduit::Node deviceClipMesh2; if(shape == "polygonal") { @@ -580,7 +580,8 @@ void braid2d_clip_test(const std::string &type, const std::string &name) const auto offsetsView = utils::make_array_view(n_device_topo.fetch_existing("elements/offsets")); - using PolyTopoView = views::UnstructuredTopologySingleShapeView>; + using PolyTopoView = + views::UnstructuredTopologySingleShapeView>; PolyTopoView polyTopoView(connView, sizesView, offsetsView); // Clip the data