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/face_decl.hpp')
-rw-r--r--extern/carve/include/carve/face_decl.hpp208
1 files changed, 0 insertions, 208 deletions
diff --git a/extern/carve/include/carve/face_decl.hpp b/extern/carve/include/carve/face_decl.hpp
deleted file mode 100644
index f37464be914..00000000000
--- a/extern/carve/include/carve/face_decl.hpp
+++ /dev/null
@@ -1,208 +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/geom2d.hpp>
-#include <carve/vector.hpp>
-#include <carve/matrix.hpp>
-#include <carve/geom3d.hpp>
-#include <carve/aabb.hpp>
-#include <carve/tag.hpp>
-
-#include <vector>
-#include <list>
-#include <map>
-
-namespace carve {
- namespace poly {
-
-
-
- struct Object;
-
- template<unsigned ndim>
- class Edge;
-
-
-
- template<unsigned ndim>
- struct p2_adapt_project {
- typedef carve::geom2d::P2 (*proj_t)(const carve::geom::vector<ndim> &);
- proj_t proj;
- p2_adapt_project(proj_t _proj) : proj(_proj) { }
- carve::geom2d::P2 operator()(const carve::geom::vector<ndim> &v) const { return proj(v); }
- carve::geom2d::P2 operator()(const carve::geom::vector<ndim> *v) const { return proj(*v); }
- carve::geom2d::P2 operator()(const Vertex<ndim> &v) const { return proj(v.v); }
- carve::geom2d::P2 operator()(const Vertex<ndim> *v) const { return proj(v->v); }
- };
-
-
- template<unsigned ndim>
- class Face : public tagable {
- public:
- typedef Vertex<ndim> vertex_t;
- typedef typename Vertex<ndim>::vector_t vector_t;
- typedef Edge<ndim> edge_t;
- typedef Object obj_t;
- typedef carve::geom::aabb<ndim> aabb_t;
- typedef carve::geom::plane<ndim> plane_t;
-
- typedef carve::geom2d::P2 (*project_t)(const vector_t &);
- typedef vector_t (*unproject_t)(const carve::geom2d::P2 &, const plane_t &);
-
- protected:
- std::vector<const vertex_t *> vertices; // pointer into polyhedron.vertices
- std::vector<const edge_t *> edges; // pointer into polyhedron.edges
-
- project_t getProjector(bool positive_facing, int axis);
- unproject_t getUnprojector(bool positive_facing, int axis);
-
- public:
- typedef typename std::vector<const vertex_t *>::iterator vertex_iter_t;
- typedef typename std::vector<const vertex_t *>::const_iterator const_vertex_iter_t;
-
- typedef typename std::vector<const edge_t *>::iterator edge_iter_t;
- typedef typename std::vector<const edge_t *>::const_iterator const_edge_iter_t;
-
- obj_t *owner;
-
- aabb_t aabb;
- plane_t plane_eqn;
- int manifold_id;
- int group_id;
-
- project_t project;
- unproject_t unproject;
-
- Face(const std::vector<const vertex_t *> &_vertices, bool delay_recalc = false);
- Face(const vertex_t *v1, const vertex_t *v2, const vertex_t *v3, bool delay_recalc = false);
- Face(const vertex_t *v1, const vertex_t *v2, const vertex_t *v3, const vertex_t *v4, bool delay_recalc = false);
-
- template <typename iter_t>
- Face(const Face *base, iter_t vbegin, iter_t vend, bool flipped) {
- init(base, vbegin, vend, flipped);
- }
-
- Face(const Face *base, const std::vector<const vertex_t *> &_vertices, bool flipped) {
- init(base, _vertices, flipped);
- }
-
- Face() {}
- ~Face() {}
-
- bool recalc();
-
- template<typename iter_t>
- Face *init(const Face *base, iter_t vbegin, iter_t vend, bool flipped);
- Face *init(const Face *base, const std::vector<const vertex_t *> &_vertices, bool flipped);
-
- template<typename iter_t>
- Face *create(iter_t vbegin, iter_t vend, bool flipped) const;
- Face *create(const std::vector<const vertex_t *> &_vertices, bool flipped) const;
-
- Face *clone(bool flipped = false) const;
- void invert();
-
- void getVertexLoop(std::vector<const vertex_t *> &loop) const;
-
- const vertex_t *&vertex(size_t idx);
- const vertex_t *vertex(size_t idx) const;
- size_t nVertices() const;
-
- vertex_iter_t vbegin() { return vertices.begin(); }
- vertex_iter_t vend() { return vertices.end(); }
- const_vertex_iter_t vbegin() const { return vertices.begin(); }
- const_vertex_iter_t vend() const { return vertices.end(); }
-
- std::vector<carve::geom::vector<2> > projectedVertices() const;
-
- const edge_t *&edge(size_t idx);
- const edge_t *edge(size_t idx) const;
- size_t nEdges() const;
-
- edge_iter_t ebegin() { return edges.begin(); }
- edge_iter_t eend() { return edges.end(); }
- const_edge_iter_t ebegin() const { return edges.begin(); }
- const_edge_iter_t eend() const { return edges.end(); }
-
- bool containsPoint(const vector_t &p) const;
- bool containsPointInProjection(const vector_t &p) const;
- bool simpleLineSegmentIntersection(const carve::geom::linesegment<ndim> &line,
- vector_t &intersection) const;
- IntersectionClass lineSegmentIntersection(const carve::geom::linesegment<ndim> &line,
- vector_t &intersection) const;
- vector_t centroid() const;
-
- p2_adapt_project<ndim> projector() const {
- return p2_adapt_project<ndim>(project);
- }
-
- void swap(Face<ndim> &other);
- };
-
-
-
- struct hash_face_ptr {
- template<unsigned ndim>
- size_t operator()(const Face<ndim> * const &f) const {
- return (size_t)f;
- }
- };
-
-
-
- namespace face {
-
-
-
- template<unsigned ndim>
- static inline carve::geom2d::P2 project(const Face<ndim> *f, const typename Face<ndim>::vector_t &v) {
- return f->project(v);
- }
-
-
-
- template<unsigned ndim>
- static inline carve::geom2d::P2 project(const Face<ndim> &f, const typename Face<ndim>::vector_t &v) {
- return f.project(v);
- }
-
-
-
- template<unsigned ndim>
- static inline typename Face<ndim>::vector_t unproject(const Face<ndim> *f, const carve::geom2d::P2 &p) {
- return f->unproject(p, f->plane_eqn);
- }
-
-
-
- template<unsigned ndim>
- static inline typename Face<ndim>::vector_t unproject(const Face<ndim> &f, const carve::geom2d::P2 &p) {
- return f.unproject(p, f.plane_eqn);
- }
-
-
-
- }
-
-
-
- }
-}