Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/carve/include/carve/octree_decl.hpp')
-rw-r--r--extern/carve/include/carve/octree_decl.hpp193
1 files changed, 0 insertions, 193 deletions
diff --git a/extern/carve/include/carve/octree_decl.hpp b/extern/carve/include/carve/octree_decl.hpp
deleted file mode 100644
index 46d5d4a22fe..00000000000
--- a/extern/carve/include/carve/octree_decl.hpp
+++ /dev/null
@@ -1,193 +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/geom3d.hpp>
-#include <carve/aabb.hpp>
-
-#include <carve/polyhedron_base.hpp>
-
-namespace carve {
-
- namespace csg {
-
- const double SLACK_FACTOR=1.0009765625;
- const unsigned FACE_SPLIT_THRESHOLD=50U;
- const unsigned EDGE_SPLIT_THRESHOLD=50U;
- const unsigned POINT_SPLIT_THRESHOLD=20U;
- const unsigned MAX_SPLIT_DEPTH=32;
-
- class Octree {
-
- public:
- class Node {
- private:
- Node(const Node &node); // undefined.
- Node &operator=(const Node &node); // undefined.
-
- public:
- Node *parent;
- Node *children[8];
- bool is_leaf;
-
- carve::geom3d::Vector min;
- carve::geom3d::Vector max;
-
- std::vector<const carve::poly::Geometry<3>::face_t *> faces;
- std::vector<const carve::poly::Geometry<3>::edge_t *> edges;
- std::vector<const carve::poly::Geometry<3>::vertex_t *> vertices;
-
- carve::geom3d::AABB aabb;
-
- Node();
-
- Node(const carve::geom3d::Vector &newMin, const carve::geom3d::Vector &newMax);
- Node(Node *p, double x1, double y1, double z1, double x2, double y2, double z2);
-
- ~Node();
-
- bool mightContain(const carve::poly::Geometry<3>::face_t &face);
- bool mightContain(const carve::poly::Geometry<3>::edge_t &edge);
- bool mightContain(const carve::poly::Geometry<3>::vertex_t &p);
- bool hasChildren();
- bool hasGeometry();
-
- template <class T>
- void putInside(const T &input, Node *child, T &output);
-
- bool split();
- };
-
-
-
- Node *root;
-
-
-
- struct no_filter {
- bool operator()(const carve::poly::Geometry<3>::edge_t *) { return true; }
- bool operator()(const carve::poly::Geometry<3>::face_t *) { return true; }
- };
-
-
-
- Octree();
-
- ~Octree();
-
-
-
- void setBounds(const carve::geom3d::Vector &min, const carve::geom3d::Vector &max);
- void setBounds(carve::geom3d::AABB aabb);
-
-
-
- void addEdges(const std::vector<carve::poly::Geometry<3>::edge_t > &edges);
- void addFaces(const std::vector<carve::poly::Geometry<3>::face_t > &faces);
- void addVertices(const std::vector<const carve::poly::Geometry<3>::vertex_t *> &vertices);
-
-
-
- static carve::geom3d::AABB makeAABB(const Node *node);
-
-
-
- void doFindEdges(const carve::geom::aabb<3> &aabb,
- Node *node,
- std::vector<const carve::poly::Geometry<3>::edge_t *> &out,
- unsigned depth) const;
- void doFindEdges(const carve::geom3d::LineSegment &l,
- Node *node,
- std::vector<const carve::poly::Geometry<3>::edge_t *> &out,
- unsigned depth) const;
- void doFindEdges(const carve::geom3d::Vector &v,
- Node *node,
- std::vector<const carve::poly::Geometry<3>::edge_t *> &out,
- unsigned depth) const;
- void doFindFaces(const carve::geom::aabb<3> &aabb,
- Node *node,
- std::vector<const carve::poly::Geometry<3>::face_t *> &out,
- unsigned depth) const;
- void doFindFaces(const carve::geom3d::LineSegment &l,
- Node *node,
- std::vector<const carve::poly::Geometry<3>::face_t *> &out,
- unsigned depth) const;
-
-
-
- void doFindVerticesAllowDupes(const carve::geom3d::Vector &v,
- Node *node,
- std::vector<const carve::poly::Geometry<3>::vertex_t *> &out,
- unsigned depth) const;
-
- void findVerticesNearAllowDupes(const carve::geom3d::Vector &v,
- std::vector<const carve::poly::Geometry<3>::vertex_t *> &out) const;
-
-
-
- template<typename filter_t>
- void doFindEdges(const carve::poly::Geometry<3>::face_t &f, Node *node,
- std::vector<const carve::poly::Geometry<3>::edge_t *> &out,
- unsigned depth,
- filter_t filter) const;
-
- template<typename filter_t>
- void findEdgesNear(const carve::poly::Geometry<3>::face_t &f,
- std::vector<const carve::poly::Geometry<3>::edge_t *> &out,
- filter_t filter) const;
-
- void findEdgesNear(const carve::poly::Geometry<3>::face_t &f,
- std::vector<const carve::poly::Geometry<3>::edge_t *> &out) const {
- return findEdgesNear(f, out, no_filter());
- }
-
-
-
- void findEdgesNear(const carve::geom::aabb<3> &aabb, std::vector<const carve::poly::Geometry<3>::edge_t *> &out) const;
- void findEdgesNear(const carve::geom3d::LineSegment &l, std::vector<const carve::poly::Geometry<3>::edge_t *> &out) const;
- void findEdgesNear(const carve::poly::Geometry<3>::edge_t &e, std::vector<const carve::poly::Geometry<3>::edge_t *> &out) const;
- void findEdgesNear(const carve::geom3d::Vector &v, std::vector<const carve::poly::Geometry<3>::edge_t *> &out) const;
-
-
-
- void findFacesNear(const carve::geom::aabb<3> &aabb, std::vector<const carve::poly::Geometry<3>::face_t *> &out) const;
- void findFacesNear(const carve::geom3d::LineSegment &l, std::vector<const carve::poly::Geometry<3>::face_t *> &out) const;
- void findFacesNear(const carve::poly::Geometry<3>::edge_t &e, std::vector<const carve::poly::Geometry<3>::face_t *> &out) const;
-
-
-
- static void doSplit(int maxSplit, Node *node);
-
-
-
- template <typename FUNC>
- void doIterate(int level, Node *node, const FUNC &f) const;
-
- template <typename FUNC>
- void iterateNodes(const FUNC &f) const;
-
-
-
- void splitTree();
-
- };
-
- }
-}