cgal/Kinetic_shape_reconstruction/include/CGAL/Kinetic_shape_partitioning_...

82 lines
2.8 KiB
C++

// Copyright (c) 2019 GeometryFactory SARL (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).
//
// $URL$
// $Id$
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial
//
//
// Author(s) : Simon Giraudot, Dmitry Anisimov, Sven Oesau
#ifndef CGAL_KINETIC_SHAPE_PARTITIONING_TRAITS_3_H
#define CGAL_KINETIC_SHAPE_PARTITIONING_TRAITS_3_H
// #include <CGAL/license/Kinetic_shape_reconstruction.h>
#include <CGAL/Cartesian_converter.h>
namespace CGAL {
/*!
\ingroup PkgKineticPartition
\brief %Default traits class for the `CGAL::Kinetic_shape_partition_3`.
\cgalModels `KineticShapePartitioningTraits_3`
\tparam GeomTraits must be a model of the concept `Kernel`. This Kernel is used for non critical calculations and assumed for the input data.
\tparam IntersectionTraits must be a model of the concept `Kernel`. A Kernel with exact constructions is advised.
\tparam InputRange must be a model of `Range` with random access iterators, providing input points through the following property map.
\tparam PointMap must be a model of `ReadablePropertyMap` with `std::iterator_traits<Input_range::iterator>::%value_type` as key type and `Geom_traits::Point_3` as value type.
*/
template<typename GeomTraits, typename IntersectionTraits, typename InputRange, typename PointMap>
class Kinetic_shape_partitioning_traits_3 {
public:
using Kernel = GeomTraits;
using Intersection_Kernel = IntersectionTraits;
using Input_range = InputRange; /// must be a model of `ConstRange` whose iterator type is `RandomAccessIterator`and value type is `Point_3`
using Point_map = PointMap;
using FT = typename Kernel::FT;
using Point_2 = typename Kernel::Point_2;
using Point_3 = typename Kernel::Point_3;
using Vector_2 = typename Kernel::Vector_2;
using Vector_3 = typename Kernel::Vector_3;
using Direction_2 = typename Kernel::Direction_2;
using Segment_2 = typename Kernel::Segment_2;
using Segment_3 = typename Kernel::Segment_3;
using Line_2 = typename Kernel::Line_2;
using Line_3 = typename Kernel::Line_3;
using Plane_3 = typename Kernel::Plane_3;
using IK_Point_2 = typename Intersection_Kernel::Point_2;
using IK_Point_3 = typename Intersection_Kernel::Point_3;
using IK_Segment_3 = typename Intersection_Kernel::Segment_3;
using IK_Line_3 = typename Intersection_Kernel::Line_3;
using Transform_3 = typename Kernel::Aff_transformation_3;
using Triangle_2 = typename Kernel::Triangle_2;
using Triangle_3 = typename Kernel::Triangle_3;
using Tetrahedron_3 = typename Kernel::Tetrahedron_3;
using From_exact = CGAL::Cartesian_converter<Intersection_Kernel, Kernel>;
using To_exact = CGAL::Cartesian_converter<Kernel, Intersection_Kernel>;
};
} // namespace CGAL
#endif // CGAL_KINETIC_SHAPE_PARTITIONING_TRAITS_3_H