diff options
Diffstat (limited to 'extern/carve/include/carve/classification.hpp')
-rw-r--r-- | extern/carve/include/carve/classification.hpp | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/extern/carve/include/carve/classification.hpp b/extern/carve/include/carve/classification.hpp deleted file mode 100644 index ebda48e61a5..00000000000 --- a/extern/carve/include/carve/classification.hpp +++ /dev/null @@ -1,115 +0,0 @@ -// Begin License: -// Copyright (C) 2006-2014 Tobias Sargeant (tobias.sargeant@gmail.com). -// All rights reserved. -// -// This file is part of the Carve CSG Library (http://carve-csg.com/) -// -// This file may be used under the terms of either the GNU General -// Public License version 2 or 3 (at your option) as published by the -// Free Software Foundation and appearing in the files LICENSE.GPL2 -// and LICENSE.GPL3 included in the packaging of this file. -// -// This file is provided "AS IS" with NO WARRANTY OF ANY KIND, -// INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE. -// End: - - -#pragma once - -#include <carve/carve.hpp> -#include <carve/collection_types.hpp> - -namespace carve { - namespace csg { - - enum FaceClass { - FACE_UNCLASSIFIED = -3, - FACE_ON_ORIENT_OUT = -2, - FACE_OUT = -1, - FACE_ON = 0, - FACE_IN = +1, - FACE_ON_ORIENT_IN = +2 - }; - - enum FaceClassBit { - FACE_ON_ORIENT_OUT_BIT = 0x01, - FACE_OUT_BIT = 0x02, - FACE_IN_BIT = 0x04, - FACE_ON_ORIENT_IN_BIT = 0x08, - - FACE_ANY_BIT = 0x0f, - FACE_ON_BIT = 0x09, - FACE_NOT_ON_BIT = 0x06 - }; - - static inline FaceClass class_bit_to_class(unsigned i) { - if (i & FACE_ON_ORIENT_OUT_BIT) return FACE_ON_ORIENT_OUT; - if (i & FACE_OUT_BIT) return FACE_OUT; - if (i & FACE_IN_BIT) return FACE_IN; - if (i & FACE_ON_ORIENT_IN_BIT) return FACE_ON_ORIENT_IN; - return FACE_UNCLASSIFIED; - } - - static inline unsigned class_to_class_bit(FaceClass f) { - switch (f) { - case FACE_ON_ORIENT_OUT: return FACE_ON_ORIENT_OUT_BIT; - case FACE_OUT: return FACE_OUT_BIT; - case FACE_ON: return FACE_ON_BIT; - case FACE_IN: return FACE_IN_BIT; - case FACE_ON_ORIENT_IN: return FACE_ON_ORIENT_IN_BIT; - case FACE_UNCLASSIFIED: return FACE_ANY_BIT; - default: return 0; - } - } - - enum EdgeClass { - EDGE_UNK = -2, - EDGE_OUT = -1, - EDGE_ON = 0, - EDGE_IN = 1 - }; - - - - const char *ENUM(FaceClass f); - const char *ENUM(PointClass p); - - - - struct ClassificationInfo { - const carve::mesh::Mesh<3> *intersected_mesh; - FaceClass classification; - - ClassificationInfo() : intersected_mesh(NULL), classification(FACE_UNCLASSIFIED) { } - ClassificationInfo(const carve::mesh::Mesh<3> *_intersected_mesh, - FaceClass _classification) : - intersected_mesh(_intersected_mesh), - classification(_classification) { - } - bool intersectedMeshIsClosed() const { - return intersected_mesh->isClosed(); - } - }; - - - - struct EC2 { - EdgeClass cls[2]; - EC2() { cls[0] = cls[1] = EDGE_UNK; } - EC2(EdgeClass a, EdgeClass b) { cls[0] = a; cls[1] = b; } - }; - - struct PC2 { - PointClass cls[2]; - PC2() { cls[0] = cls[1] = POINT_UNK; } - PC2(PointClass a, PointClass b) { cls[0] = a; cls[1] = b; } - }; - - typedef std::unordered_map<std::pair<const carve::mesh::MeshSet<3>::vertex_t *, const carve::mesh::MeshSet<3>::vertex_t *>, - EC2> EdgeClassification; - - typedef std::unordered_map<const carve::mesh::Vertex<3> *, PC2> VertexClassification; - - } -} |