diff --git a/Heat_method_3/doc/Heat_method_3/Concepts/HeatMethodTraits_3.h b/Heat_method_3/doc/Heat_method_3/Concepts/HeatMethodTraits_3.h index 4979d087520..fcb821be832 100644 --- a/Heat_method_3/doc/Heat_method_3/Concepts/HeatMethodTraits_3.h +++ b/Heat_method_3/doc/Heat_method_3/Concepts/HeatMethodTraits_3.h @@ -19,20 +19,52 @@ public: /// \name Types /// @{ - /// The 3D point type. + // The number type. It must be `CopyConstructible` and `DefaultConstructible`, + // and be constructible from `double`. + typdef unspecified_type FT; + + /// The 3D point type. It must be `CopyConstructible` and `DefaultConstructible`, + /// and have a constructor with three parameters of a type constructibe from `double`. typedef unspecified_type Point_3; - /// The 3D vector type. + /// The 3D vector type. It must be `CopyConstructible` and `DefaultConstructible`, + /// and have a constructor with three parameters of a type constructibe from `double`. typedef unspecified_type Vector_3; - + + /// Functor with operator: `Vector_3 operator()(Point_3 from, Point_3 to) const`. typedef unspecified_type Construct_vector_3; + + /// Functor with operator: `Vector_3 operator()(Vector_3 v, Vector_3 w) const`. typedef unspecified_type Construct_sum_of_vectors_3; + + /// Functor with operator: `Vector_3 operator()(Vector_3 v, double d) const`. typedef unspecified_type Construct_scaled_vector_3; + + /// Functor with operator: `Vector_3 operator()(Vector_3 v, Vector_3 w) const`. typedef unspecified_type Construct_cross_product_vector_3; + + /// Functor with operator: `double operator()(Vector_3 v, Vector_3 w) const`. typedef unspecified_type Compute_scalar_product_3; + + /// Functor with operator: `double operator()(Point_3 p, Point_3 q) const`. typedef unspecified_type Compute_squared_distance_3; + /// @} +/*! \name Operations +For each of the above function object types, +`Func_obj_type`, a function must exist with the name +`func_obj_type_object` that creates an instance of the function or +predicate object type. For example: +*/ +/// @{ + +/*! + +*/ +Construct_vector_3 construct_vector_3_object(); + +/// @} }; diff --git a/Heat_method_3/include/CGAL/Heat_method_3/Surface_mesh_geodesic_distances_3.h b/Heat_method_3/include/CGAL/Heat_method_3/Surface_mesh_geodesic_distances_3.h index ca2af279354..9e5eafb2b14 100644 --- a/Heat_method_3/include/CGAL/Heat_method_3/Surface_mesh_geodesic_distances_3.h +++ b/Heat_method_3/include/CGAL/Heat_method_3/Surface_mesh_geodesic_distances_3.h @@ -740,27 +740,26 @@ struct Base_helper * time after changes of the set of sources. * * \tparam TriangleMesh a triangulated surface mesh, model of `FaceListGraph` and `HalfedgeListGraph` - * \tparam Traits a model of HeatMethodTraits_3 - * \tparam Mode indicates if an intrinsic Delaunay triangulation should be internally constructed (`Intrinsic_Delaunay`) - * or if the input mesh should be used as is (`Direct`). + * \tparam Mode must be `Intrinsic_Delaunay` to indicatethat an intrinsic Delaunay triangulation is internally constructed () + * or `Direct`to indicate that the input mesh should be used as is. * If `Intrinsic_Delaunay` the type `TriangleMesh` must have an internal property for `vertex_point` * and its value type must be the same as the value type of `VertexPointMap`. - * \tparam LA a model of `SparseLinearAlgebraWithFactorTraits_d`. - * \tparam VertexPointMap a model of `ReadablePropertyMap` with * `boost::graph_traits::%vertex_descriptor` as key and * `Traits::Point_3` as value type. * The default is `typename boost::property_map::%type`. + * \tparam LA a model of `SparseLinearAlgebraWithFactorTraits_d`. + * \tparam Traits a model of `HeatMethodTraits_3` * */ template ::const_type, #ifdef CGAL_EIGEN3_ENABLED typename LA = Eigen_solver_traits::EigenType > >, #else typename LA = Default, #endif - typename VertexPointMap = typename boost::property_map< TriangleMesh, vertex_point_t>::const_type, typename Traits = typename Kernel_traits< typename boost::property_traits::value_type>::Kernel > class Surface_mesh_geodesic_distances_3 #ifndef DOXYGEN_RUNNING