summaryrefslogtreecommitdiff
path: root/include/gudhi/Skeleton_blocker_geometric_complex.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/gudhi/Skeleton_blocker_geometric_complex.h')
-rw-r--r--include/gudhi/Skeleton_blocker_geometric_complex.h227
1 files changed, 0 insertions, 227 deletions
diff --git a/include/gudhi/Skeleton_blocker_geometric_complex.h b/include/gudhi/Skeleton_blocker_geometric_complex.h
deleted file mode 100644
index 39b88ceb..00000000
--- a/include/gudhi/Skeleton_blocker_geometric_complex.h
+++ /dev/null
@@ -1,227 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): David Salinas
- *
- * Copyright (C) 2014 Inria
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SKELETON_BLOCKER_GEOMETRIC_COMPLEX_H_
-#define SKELETON_BLOCKER_GEOMETRIC_COMPLEX_H_
-
-#include <gudhi/Skeleton_blocker_complex.h>
-#include <gudhi/Skeleton_blocker/Skeleton_blocker_sub_complex.h>
-#include <gudhi/Debug_utils.h>
-
-namespace Gudhi {
-
-namespace skeleton_blocker {
-
-/**
- * @brief Class that represents a geometric complex that can be simplified.
- * The class allows access to points of vertices.
- * @ingroup skbl
- */
-template<typename SkeletonBlockerGeometricDS>
-class Skeleton_blocker_geometric_complex :
-public Skeleton_blocker_complex<SkeletonBlockerGeometricDS> {
- public:
- typedef typename SkeletonBlockerGeometricDS::GT GT;
-
- typedef Skeleton_blocker_complex<SkeletonBlockerGeometricDS> SimplifiableSkeletonblocker;
-
- typedef typename SimplifiableSkeletonblocker::Vertex_handle Vertex_handle;
- typedef typename SimplifiableSkeletonblocker::Root_vertex_handle Root_vertex_handle;
- typedef typename SimplifiableSkeletonblocker::Edge_handle Edge_handle;
- typedef typename SimplifiableSkeletonblocker::Simplex Simplex;
-
- typedef typename SimplifiableSkeletonblocker::Graph_vertex Graph_vertex;
-
- typedef typename SkeletonBlockerGeometricDS::Point Point;
-
- Skeleton_blocker_geometric_complex() { }
-
- /**
- * constructor given a list of points
- */
- template<typename PointIterator>
- explicit Skeleton_blocker_geometric_complex(int num_vertices, PointIterator begin, PointIterator end) {
- for (auto point = begin; point != end; ++point)
- add_vertex(*point);
- }
-
- /**
- * @brief Constructor with a list of simplices.
- * @details is_flag_complex indicates if the complex is a flag complex or not (to know if blockers have to be
- * computed or not).
- */
- template<typename SimpleHandleOutputIterator, typename PointIterator>
- Skeleton_blocker_geometric_complex(
- SimpleHandleOutputIterator simplex_begin, SimpleHandleOutputIterator simplex_end,
- PointIterator points_begin, PointIterator points_end,
- bool is_flag_complex = false)
- : Skeleton_blocker_complex<SkeletonBlockerGeometricDS>(simplex_begin, simplex_end, is_flag_complex) {
- unsigned current = 0;
- for (auto point = points_begin; point != points_end; ++point)
- (*this)[Vertex_handle(current++)].point() = Point(point->begin(), point->end());
- }
-
- /**
- * @brief Constructor with a list of simplices.
- * Points of every vertex are the point constructed with default constructor.
- * @details is_flag_complex indicates if the complex is a flag complex or not (to know if blockers have to be computed or not).
- */
- template<typename SimpleHandleOutputIterator>
- Skeleton_blocker_geometric_complex(
- SimpleHandleOutputIterator simplex_begin, SimpleHandleOutputIterator simplex_end,
- bool is_flag_complex = false)
- : Skeleton_blocker_complex<SkeletonBlockerGeometricDS>(simplex_begin, simplex_end, is_flag_complex) { }
-
- /**
- * @brief Add a vertex to the complex with a default constructed associated point.
- */
- Vertex_handle add_vertex() {
- return SimplifiableSkeletonblocker::add_vertex();
- }
-
- /**
- * @brief Add a vertex to the complex with its associated point.
- */
- Vertex_handle add_vertex(const Point& point) {
- Vertex_handle ad = SimplifiableSkeletonblocker::add_vertex();
- (*this)[ad].point() = point;
- return ad;
- }
-
- /**
- * @brief Returns the Point associated to the vertex v.
- */
- const Point& point(Vertex_handle v) const {
- assert(this->contains_vertex(v));
- return (*this)[v].point();
- }
-
- /**
- * @brief Returns the Point associated to the vertex v.
- */
- Point& point(Vertex_handle v) {
- assert(this->contains_vertex(v));
- return (*this)[v].point();
- }
-
- const Point& point(Root_vertex_handle global_v) const {
- Vertex_handle local_v((*this)[global_v]);
- assert(this->contains_vertex(local_v));
- return (*this)[local_v].point();
- }
-
- Point& point(Root_vertex_handle global_v) {
- Vertex_handle local_v((*this)[global_v]);
- assert(this->contains_vertex(local_v));
- return (*this)[local_v].point();
- }
-
- typedef Skeleton_blocker_link_complex<Skeleton_blocker_geometric_complex> Geometric_link;
-
- /**
- * Constructs the link of 'simplex' with points coordinates.
- */
- Geometric_link link(Vertex_handle v) const {
- Geometric_link link(*this, Simplex(v));
- // we now add the point info
- add_points_to_link(link);
- return link;
- }
-
- /**
- * Constructs the link of 'simplex' with points coordinates.
- */
- Geometric_link link(const Simplex& simplex) const {
- Geometric_link link(*this, simplex);
- // we now add the point info
- add_points_to_link(link);
- return link;
- }
-
- /**
- * Constructs the link of 'simplex' with points coordinates.
- */
- Geometric_link link(Edge_handle edge) const {
- Geometric_link link(*this, edge);
- // we now add the point info
- add_points_to_link(link);
- return link;
- }
-
- typedef Skeleton_blocker_link_complex<Skeleton_blocker_complex<SkeletonBlockerGeometricDS>> Abstract_link;
-
- /**
- * Constructs the abstract link of v (without points coordinates).
- */
- Abstract_link abstract_link(Vertex_handle v) const {
- return Abstract_link(*this, Simplex(v));
- }
-
- /**
- * Constructs the link of 'simplex' with points coordinates.
- */
- Abstract_link abstract_link(const Simplex& simplex) const {
- return Abstract_link(*this, simplex);
- }
-
- /**
- * Constructs the link of 'simplex' with points coordinates.
- */
- Abstract_link abstract_link(Edge_handle edge) const {
- return Abstract_link(*this, edge);
- }
-
- private:
- void add_points_to_link(Geometric_link& link) const {
- for (Vertex_handle v : link.vertex_range()) {
- Root_vertex_handle v_root(link.get_id(v));
- link.point(v) = (*this).point(v_root);
- }
- }
-};
-
-
-template<typename SkeletonBlockerGeometricComplex, typename SimpleHandleOutputIterator, typename PointIterator>
-SkeletonBlockerGeometricComplex make_complex_from_top_faces(
- SimpleHandleOutputIterator simplex_begin,
- SimpleHandleOutputIterator simplex_end,
- PointIterator points_begin,
- PointIterator points_end,
- bool is_flag_complex = false) {
- typedef SkeletonBlockerGeometricComplex SBGC;
- SkeletonBlockerGeometricComplex complex;
- unsigned current = 0;
- complex =
- make_complex_from_top_faces<SBGC>(simplex_begin, simplex_end, is_flag_complex);
- for (auto point = points_begin; point != points_end; ++point)
- // complex.point(Vertex_handle(current++)) = Point(point->begin(),point->end());
- complex.point(typename SBGC::Vertex_handle(current++)) = typename SBGC::Point(*point);
- return complex;
-}
-
-} // namespace skeleton_blocker
-
-namespace skbl = skeleton_blocker;
-
-} // namespace Gudhi
-
-#endif // SKELETON_BLOCKER_GEOMETRIC_COMPLEX_H_