/* 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): Vincent Rouvreau
*
* Copyright (C) 2018 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 .
*/
#ifndef ALPHA_COMPLEX_3D_H_
#define ALPHA_COMPLEX_3D_H_
#include
#include
#include
#include
#include
namespace Gudhi {
namespace alpha_complex {
template
class Alpha_complex_3d {
private:
using Alpha_shape_3 = typename AlphaComplex3dOptions::Alpha_shape_3;
// filtration with alpha values needed type definition
using Alpha_value_type = typename Alpha_shape_3::FT;
using Object = CGAL::Object;
using Dispatch =
CGAL::Dispatch_output_iterator,
CGAL::cpp11::tuple >,
std::back_insert_iterator > > >;
using Cell_handle = typename Alpha_shape_3::Cell_handle;
using Facet = typename Alpha_shape_3::Facet;
using Edge_3 = typename Alpha_shape_3::Edge;
using Vertex_handle = typename Alpha_shape_3::Vertex_handle;
public:
/** \brief Alpha_complex constructor from a list of points.
*
* Duplicate points are inserted once in the Alpha_complex. This is the reason why the vertices may be not contiguous.
*
* @param[in] points Range of points to triangulate. Points must be in AlphaComplex3dOptions::Point_3
*
* The type InputPointRange must be a range for which std::begin and
* std::end return input iterators on a AlphaComplex3dOptions::Point_3.
*/
template
Alpha_complex_3d(const InputPointRange& points) {
static_assert(!AlphaComplex3dOptions::weighted, "This constructor is not available for weighted versions of Alpha_complex_3d");
static_assert(!AlphaComplex3dOptions::periodic, "This constructor is not available for periodic versions of Alpha_complex_3d");
std::cout << points[0] << std::endl;
Alpha_shape_3 alpha_shape_3(std::begin(points), std::end(points), 0, Alpha_shape_3::GENERAL);
Dispatch disp = CGAL::dispatch_output