cgal/Weights/include/CGAL/Weights/triangular_region_weights.h

123 lines
3.4 KiB
C++

// Copyright (c) 2020 GeometryFactory SARL (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).
//
// $URL$
// $Id$
// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-Commercial
//
//
// Author(s) : Dmitry Anisimov
//
#ifndef CGAL_TRIANGULAR_REGION_WEIGHTS_H
#define CGAL_TRIANGULAR_REGION_WEIGHTS_H
// Internal includes.
#include <CGAL/Weights/internal/utils.h>
namespace CGAL {
namespace Weights {
#if defined(DOXYGEN_RUNNING)
/*!
\ingroup PkgWeightsRefTriangularRegionWeights
\brief computes the area of the triangular cell in 2D using the points `p`, `q`
and `r`, given a traits class `traits` with geometric objects, predicates, and constructions.
*/
template<typename GeomTraits>
typename GeomTraits::FT triangular_area(
const typename GeomTraits::Point_2& p,
const typename GeomTraits::Point_2& q,
const typename GeomTraits::Point_2& r,
const GeomTraits& traits) { }
/*!
\ingroup PkgWeightsRefTriangularRegionWeights
\brief computes the area of the triangular cell in 3D using the points `p`, `q`
and `r`, given a traits class `traits` with geometric objects, predicates, and constructions.
*/
template<typename GeomTraits>
typename GeomTraits::FT triangular_area(
const typename GeomTraits::Point_3& p,
const typename GeomTraits::Point_3& q,
const typename GeomTraits::Point_3& r,
const GeomTraits& traits) { }
/*!
\ingroup PkgWeightsRefTriangularRegionWeights
\brief computes the area of the triangular cell in 2D using the points `p`, `q`
and `r` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT triangular_area(
const CGAL::Point_2<K>& p,
const CGAL::Point_2<K>& q,
const CGAL::Point_2<K>& r) { }
/*!
\ingroup PkgWeightsRefTriangularRegionWeights
\brief computes the area of the triangular cell in 3D using the points `p`, `q`
and `r` which are parameterized by a `Kernel` K.
*/
template<typename K>
typename K::FT triangular_area(
const CGAL::Point_3<K>& p,
const CGAL::Point_3<K>& q,
const CGAL::Point_3<K>& r) { }
#endif // DOXYGEN_RUNNING
/// \cond SKIP_IN_MANUAL
template<typename GeomTraits>
typename GeomTraits::FT triangular_area(
const typename GeomTraits::Point_2& p,
const typename GeomTraits::Point_2& q,
const typename GeomTraits::Point_2& r,
const GeomTraits& traits) {
return internal::positive_area_2(traits, p, q, r);
}
template<typename GeomTraits>
typename GeomTraits::FT triangular_area(
const CGAL::Point_2<GeomTraits>& p,
const CGAL::Point_2<GeomTraits>& q,
const CGAL::Point_2<GeomTraits>& r) {
const GeomTraits traits;
return triangular_area(p, q, r, traits);
}
template<typename GeomTraits>
typename GeomTraits::FT triangular_area(
const typename GeomTraits::Point_3& p,
const typename GeomTraits::Point_3& q,
const typename GeomTraits::Point_3& r,
const GeomTraits& traits) {
return internal::positive_area_3(traits, p, q, r);
}
template<typename GeomTraits>
typename GeomTraits::FT triangular_area(
const CGAL::Point_3<GeomTraits>& p,
const CGAL::Point_3<GeomTraits>& q,
const CGAL::Point_3<GeomTraits>& r) {
const GeomTraits traits;
return triangular_area(p, q, r, traits);
}
/// \endcond
} // namespace Weights
} // namespace CGAL
#endif // CGAL_TRIANGULAR_REGION_WEIGHTS_H