From 4ebdf2b588017f2ac4a07753c2b1c2a6a569e576 Mon Sep 17 00:00:00 2001 From: ROUVREAU Vincent Date: Mon, 21 Sep 2020 16:19:42 +0200 Subject: struct Function should be abstract and virtual functions signatures --- .../example/manifold_tracing_custom_function.cpp | 8 ++++---- .../include/gudhi/Functions/Cartesian_product.h | 8 ++++---- .../include/gudhi/Functions/Constant_function.h | 8 ++++---- .../include/gudhi/Functions/Embed_in_Rd.h | 8 ++++---- src/Coxeter_triangulation/include/gudhi/Functions/Function.h | 10 +++++----- .../include/gudhi/Functions/Function_Sm_in_Rd.h | 8 ++++---- .../include/gudhi/Functions/Function_affine_plane_in_Rd.h | 8 ++++---- .../include/gudhi/Functions/Function_chair_in_R3.h | 8 ++++---- .../include/gudhi/Functions/Function_iron_in_R3.h | 8 ++++---- .../gudhi/Functions/Function_lemniscate_revolution_in_R3.h | 8 ++++---- .../include/gudhi/Functions/Function_moment_curve_in_Rd.h | 8 ++++---- .../include/gudhi/Functions/Function_torus_in_R3.h | 8 ++++---- .../include/gudhi/Functions/Function_whitney_umbrella_in_R3.h | 8 ++++---- .../include/gudhi/Functions/Linear_transformation.h | 8 ++++---- src/Coxeter_triangulation/include/gudhi/Functions/Negation.h | 8 ++++---- .../include/gudhi/Functions/PL_approximation.h | 8 ++++---- src/Coxeter_triangulation/include/gudhi/Functions/Translate.h | 8 ++++---- 17 files changed, 69 insertions(+), 69 deletions(-) diff --git a/src/Coxeter_triangulation/example/manifold_tracing_custom_function.cpp b/src/Coxeter_triangulation/example/manifold_tracing_custom_function.cpp index 7a89a32f..95f63b4f 100644 --- a/src/Coxeter_triangulation/example/manifold_tracing_custom_function.cpp +++ b/src/Coxeter_triangulation/example/manifold_tracing_custom_function.cpp @@ -21,7 +21,7 @@ using namespace Gudhi::coxeter_triangulation; */ struct Function_surface_on_CP2_in_R4 : public Function { - Eigen::VectorXd operator()(const Eigen::VectorXd& p) const { + virtual Eigen::VectorXd operator()(const Eigen::VectorXd& p) const override { // The real and imaginary parts of the variables x and y double xr = p(0), xi = p(1), yr = p(2), yi = p(3); Eigen::VectorXd result(cod_d()); @@ -42,10 +42,10 @@ struct Function_surface_on_CP2_in_R4 : public Function { return result; } - std::size_t amb_d() const {return 4;}; - std::size_t cod_d() const {return 2;}; + virtual std::size_t amb_d() const override {return 4;}; + virtual std::size_t cod_d() const override {return 2;}; - Eigen::VectorXd seed() const { + virtual Eigen::VectorXd seed() const override { Eigen::VectorXd result = Eigen::VectorXd::Zero(4); return result; } diff --git a/src/Coxeter_triangulation/include/gudhi/Functions/Cartesian_product.h b/src/Coxeter_triangulation/include/gudhi/Functions/Cartesian_product.h index 43198b89..9fd0d69b 100644 --- a/src/Coxeter_triangulation/include/gudhi/Functions/Cartesian_product.h +++ b/src/Coxeter_triangulation/include/gudhi/Functions/Cartesian_product.h @@ -110,20 +110,20 @@ struct Cartesian_product : public Function { * \brief Value of the function at a specified point. * @param[in] p The input point. The dimension needs to coincide with the ambient dimension. */ - Eigen::VectorXd operator()(const Eigen::VectorXd& p) const { + virtual Eigen::VectorXd operator()(const Eigen::VectorXd& p) const override { Eigen::VectorXd result(cod_d_); get_value(function_tuple_, p, result, 0, 0); return result; } /** \brief Returns the domain (ambient) dimension. */ - std::size_t amb_d() const {return amb_d_;} + virtual std::size_t amb_d() const override {return amb_d_;} /** \brief Returns the codomain dimension. */ - std::size_t cod_d() const {return cod_d_;} + virtual std::size_t cod_d() const override {return cod_d_;} /** \brief Returns a point on the zero-set. */ - Eigen::VectorXd seed() const { + virtual Eigen::VectorXd seed() const override { Eigen::VectorXd result(amb_d_); get_seed(function_tuple_, result, 0); return result; diff --git a/src/Coxeter_triangulation/include/gudhi/Functions/Constant_function.h b/src/Coxeter_triangulation/include/gudhi/Functions/Constant_function.h index ea354fac..b0c7a167 100644 --- a/src/Coxeter_triangulation/include/gudhi/Functions/Constant_function.h +++ b/src/Coxeter_triangulation/include/gudhi/Functions/Constant_function.h @@ -32,19 +32,19 @@ struct Constant_function : public Function { /** \brief Value of the function at a specified point. The value is constant. * @param[in] p The input point. The dimension needs to coincide with the ambient dimension. */ - Eigen::VectorXd operator()(const Eigen::VectorXd& p) const { + virtual Eigen::VectorXd operator()(const Eigen::VectorXd& p) const override { Eigen::VectorXd result = value_; return result; } /** \brief Returns the domain dimension. Same as the ambient dimension of the sphere. */ - std::size_t amb_d() const {return d_;}; + virtual std::size_t amb_d() const override {return d_;}; /** \brief Returns the codomain dimension. Same as the codimension of the sphere. */ - std::size_t cod_d() const {return k_;}; + virtual std::size_t cod_d() const override {return k_;}; /** \brief No seed point is available. Throws an exception on evocation. */ - Eigen::VectorXd seed() const { + virtual Eigen::VectorXd seed() const override { throw "Seed invoked on a constant function.\n"; } diff --git a/src/Coxeter_triangulation/include/gudhi/Functions/Embed_in_Rd.h b/src/Coxeter_triangulation/include/gudhi/Functions/Embed_in_Rd.h index 9476944b..c2419783 100644 --- a/src/Coxeter_triangulation/include/gudhi/Functions/Embed_in_Rd.h +++ b/src/Coxeter_triangulation/include/gudhi/Functions/Embed_in_Rd.h @@ -40,7 +40,7 @@ struct Embed_in_Rd : public Function { * \brief Value of the function at a specified point. * @param[in] p The input point. The dimension needs to coincide with the ambient dimension. */ - Eigen::VectorXd operator()(const Eigen::VectorXd& p) const { + virtual Eigen::VectorXd operator()(const Eigen::VectorXd& p) const override { Eigen::VectorXd x = p; Eigen::VectorXd x_k(fun_.amb_d()), x_rest(d_ - fun_.amb_d()); for (std::size_t i = 0; i < fun_.amb_d(); ++i) @@ -55,13 +55,13 @@ struct Embed_in_Rd : public Function { } /** \brief Returns the domain (ambient) dimension. */ - std::size_t amb_d() const {return d_;} + virtual std::size_t amb_d() const override {return d_;} /** \brief Returns the codomain dimension. */ - std::size_t cod_d() const {return d_-(fun_.amb_d() - fun_.cod_d());} + virtual std::size_t cod_d() const override {return d_-(fun_.amb_d() - fun_.cod_d());} /** \brief Returns a point on the zero-set of the embedded function. */ - Eigen::VectorXd seed() const { + virtual Eigen::VectorXd seed() const override { Eigen::VectorXd result = fun_.seed(); result.conservativeResize(d_); for (std::size_t l = fun_.amb_d(); l < d_; ++l) diff --git a/src/Coxeter_triangulation/include/gudhi/Functions/Function.h b/src/Coxeter_triangulation/include/gudhi/Functions/Function.h index dbcb0142..afafbb2f 100644 --- a/src/Coxeter_triangulation/include/gudhi/Functions/Function.h +++ b/src/Coxeter_triangulation/include/gudhi/Functions/Function.h @@ -31,16 +31,16 @@ struct Function { /** \brief Virtual method for the value of the function at a specified point. * @param[in] p The input point. */ - virtual Eigen::VectorXd evaluate(const Eigen::VectorXd& p) const {return Eigen::VectorXd(0);} - + virtual Eigen::VectorXd operator()(const Eigen::VectorXd& p) const = 0; + /** \brief Virtual method for the domain dimension. */ - virtual std::size_t amb_d() const {return 0;}; + virtual std::size_t amb_d() const = 0; /** \brief Virtual method for the codomain dimension. */ - virtual std::size_t cod_d() const {return 0;}; + virtual std::size_t cod_d() const = 0; /** \brief Virtual method for the seed point. */ - virtual Eigen::VectorXd seed() const {return Eigen::VectorXd(0);} + virtual Eigen::VectorXd seed() const = 0; /** \brief Virtual destructor. */ virtual ~Function() {} diff --git a/src/Coxeter_triangulation/include/gudhi/Functions/Function_Sm_in_Rd.h b/src/Coxeter_triangulation/include/gudhi/Functions/Function_Sm_in_Rd.h index a7d4a965..d8b3a780 100644 --- a/src/Coxeter_triangulation/include/gudhi/Functions/Function_Sm_in_Rd.h +++ b/src/Coxeter_triangulation/include/gudhi/Functions/Function_Sm_in_Rd.h @@ -32,7 +32,7 @@ struct Function_Sm_in_Rd: public Function { /** \brief Value of the function at a specified point. * @param[in] p The input point. The dimension needs to coincide with the ambient dimension. */ - Eigen::VectorXd operator()(const Eigen::VectorXd& p) const { + virtual Eigen::VectorXd operator()(const Eigen::VectorXd& p) const override { Eigen::VectorXd x = p; for (std::size_t i = 0; i < d_; ++i) x(i) -= center_[i]; @@ -46,13 +46,13 @@ struct Function_Sm_in_Rd: public Function { } /** \brief Returns the domain dimension. Same as the ambient dimension of the sphere. */ - std::size_t amb_d() const {return d_;}; + virtual std::size_t amb_d() const override {return d_;}; /** \brief Returns the codomain dimension. Same as the codimension of the sphere. */ - std::size_t cod_d() const {return k_;}; + virtual std::size_t cod_d() const override {return k_;}; /** \brief Returns a point on the sphere. */ - Eigen::VectorXd seed() const { + virtual Eigen::VectorXd seed() const override { Eigen::VectorXd result = Eigen::VectorXd::Zero(d_); result(0) += r_; for (std::size_t i = 0; i < d_; ++i) diff --git a/src/Coxeter_triangulation/include/gudhi/Functions/Function_affine_plane_in_Rd.h b/src/Coxeter_triangulation/include/gudhi/Functions/Function_affine_plane_in_Rd.h index cb3af848..3af0b14c 100644 --- a/src/Coxeter_triangulation/include/gudhi/Functions/Function_affine_plane_in_Rd.h +++ b/src/Coxeter_triangulation/include/gudhi/Functions/Function_affine_plane_in_Rd.h @@ -33,19 +33,19 @@ struct Function_affine_plane_in_Rd : public Function { * \brief Value of the function at a specified point. * @param[in] p The input point. The dimension needs to coincide with the ambient dimension. */ - Eigen::VectorXd operator()(const Eigen::VectorXd& p) const { + virtual Eigen::VectorXd operator()(const Eigen::VectorXd& p) const override { Eigen::VectorXd result = normal_matrix_.transpose() * (p - off_); return result; } /** \brief Returns the domain dimension. Same as the ambient dimension of the sphere. */ - std::size_t amb_d() const {return d_;}; + virtual std::size_t amb_d() const override {return d_;}; /** \brief Returns the codomain dimension. Same as the codimension of the sphere. */ - std::size_t cod_d() const {return k_;}; + virtual std::size_t cod_d() const override {return k_;}; /** \brief Returns a point on the affine plane. */ - Eigen::VectorXd seed() const { + virtual Eigen::VectorXd seed() const override { Eigen::VectorXd result = off_; return result; } diff --git a/src/Coxeter_triangulation/include/gudhi/Functions/Function_chair_in_R3.h b/src/Coxeter_triangulation/include/gudhi/Functions/Function_chair_in_R3.h index 2a76e631..26b62731 100644 --- a/src/Coxeter_triangulation/include/gudhi/Functions/Function_chair_in_R3.h +++ b/src/Coxeter_triangulation/include/gudhi/Functions/Function_chair_in_R3.h @@ -35,7 +35,7 @@ struct Function_chair_in_R3 : public Function { * \brief Value of the function at a specified point. * @param[in] p The input point. The dimension needs to coincide with the ambient dimension. */ - Eigen::VectorXd operator()(const Eigen::VectorXd& p) const { + virtual Eigen::VectorXd operator()(const Eigen::VectorXd& p) const override { double x = p(0)-off_[0], y = p(1)-off_[1], z = p(2)-off_[2]; Eigen::VectorXd result(cod_d()); result(0) = std::pow(x*x + y*y + z*z - a_*k_*k_, 2) - b_*((z-k_)*(z-k_) - 2*x*x)*((z+k_)*(z+k_) - 2*y*y); @@ -43,13 +43,13 @@ struct Function_chair_in_R3 : public Function { } /** \brief Returns the domain (ambient) dimension. */ - std::size_t amb_d() const {return 3;} + virtual std::size_t amb_d() const override {return 3;} /** \brief Returns the codomain dimension. */ - std::size_t cod_d() const {return 1;} + virtual std::size_t cod_d() const override {return 1;} /** \brief Returns a point on the surface. */ - Eigen::VectorXd seed() const { + virtual Eigen::VectorXd seed() const override { double t1 = a_-b_; double discr = t1*t1 - (1.0 - b_)*(a_*a_ - b_); double z0 = k_*std::sqrt((t1+std::sqrt(discr))/(1-b_)); diff --git a/src/Coxeter_triangulation/include/gudhi/Functions/Function_iron_in_R3.h b/src/Coxeter_triangulation/include/gudhi/Functions/Function_iron_in_R3.h index af323c94..ad12a29f 100644 --- a/src/Coxeter_triangulation/include/gudhi/Functions/Function_iron_in_R3.h +++ b/src/Coxeter_triangulation/include/gudhi/Functions/Function_iron_in_R3.h @@ -33,7 +33,7 @@ struct Function_iron_in_R3 : public Function { * \brief Value of the function at a specified point. * @param[in] p The input point. The dimension needs to coincide with the ambient dimension. */ - Eigen::VectorXd operator()(const Eigen::VectorXd& p) const { + virtual Eigen::VectorXd operator()(const Eigen::VectorXd& p) const override { double x = p(0), y = p(1), z = p(2); Eigen::VectorXd result(cod_d()); result(0) = - std::pow(x,6)/300. - std::pow(y,6)/300. - std::pow(z,6)/300. + x*y*y*z/2.1 + y*y + std::pow(z-2, 4) - 1; @@ -41,13 +41,13 @@ struct Function_iron_in_R3 : public Function { } /** \brief Returns the domain (ambient) dimension. */ - std::size_t amb_d() const {return 3;}; + virtual std::size_t amb_d() const override {return 3;}; /** \brief Returns the codomain dimension. */ - std::size_t cod_d() const {return 1;}; + virtual std::size_t cod_d() const override {return 1;}; /** \brief Returns a point on the surface. */ - Eigen::VectorXd seed() const { + virtual Eigen::VectorXd seed() const override { Eigen::Vector3d result(std::pow(4500, 1./6), 0, 0); return result; } diff --git a/src/Coxeter_triangulation/include/gudhi/Functions/Function_lemniscate_revolution_in_R3.h b/src/Coxeter_triangulation/include/gudhi/Functions/Function_lemniscate_revolution_in_R3.h index cd03a0a5..67dcf0b1 100644 --- a/src/Coxeter_triangulation/include/gudhi/Functions/Function_lemniscate_revolution_in_R3.h +++ b/src/Coxeter_triangulation/include/gudhi/Functions/Function_lemniscate_revolution_in_R3.h @@ -33,7 +33,7 @@ struct Function_lemniscate_revolution_in_R3 : public Function { * \brief Value of the function at a specified point. * @param[in] p The input point. The dimension needs to coincide with the ambient dimension. */ - Eigen::VectorXd operator()(const Eigen::VectorXd& p) const { + virtual Eigen::VectorXd operator()(const Eigen::VectorXd& p) const override { double x = p(0)-off_[0], y = p(1)-off_[1], z = p(2)-off_[2]; Eigen::VectorXd result(cod_d()); double x2 = x*x, y2 = y*y, z2 = z*z, a2 = a_*a_; @@ -43,16 +43,16 @@ struct Function_lemniscate_revolution_in_R3 : public Function { } /** \brief Returns the (ambient) domain dimension.*/ - std::size_t amb_d() const {return 3;}; + virtual std::size_t amb_d() const override {return 3;}; /** \brief Returns the codomain dimension. */ - std::size_t cod_d() const {return 1;}; + virtual std::size_t cod_d() const override {return 1;}; /** \brief Returns a point on the surface. This seed point is only one of * two necessary seed points for the manifold tracing algorithm. * See the method seed2() for the other point. */ - Eigen::VectorXd seed() const { + virtual Eigen::VectorXd seed() const override { Eigen::Vector3d result(sqrt(2*a_)+off_[0], off_[1], off_[2]); return result; } diff --git a/src/Coxeter_triangulation/include/gudhi/Functions/Function_moment_curve_in_Rd.h b/src/Coxeter_triangulation/include/gudhi/Functions/Function_moment_curve_in_Rd.h index 91eb016b..e27d35ae 100644 --- a/src/Coxeter_triangulation/include/gudhi/Functions/Function_moment_curve_in_Rd.h +++ b/src/Coxeter_triangulation/include/gudhi/Functions/Function_moment_curve_in_Rd.h @@ -32,7 +32,7 @@ struct Function_moment_curve_in_Rd : public Function { /** \brief Value of the function at a specified point. * @param[in] p The input point. The dimension needs to coincide with the ambient dimension. */ - Eigen::VectorXd operator()(const Eigen::VectorXd& p) const { + virtual Eigen::VectorXd operator()(const Eigen::VectorXd& p) const override { Eigen::VectorXd result(k_); for (std::size_t i = 1; i < d_; ++i) result(i-1) = p(i) - p(0) * p(i-1); @@ -40,13 +40,13 @@ struct Function_moment_curve_in_Rd : public Function { } /** \brief Returns the domain (ambient) dimension.. */ - std::size_t amb_d() const {return d_;}; + virtual std::size_t amb_d() const override {return d_;}; /** \brief Returns the codomain dimension. */ - std::size_t cod_d() const {return k_;}; + virtual std::size_t cod_d() const override {return k_;}; /** \brief Returns a point on the moment curve. */ - Eigen::VectorXd seed() const { + virtual Eigen::VectorXd seed() const override { Eigen::VectorXd result = Eigen::VectorXd::Zero(d_); return result; } diff --git a/src/Coxeter_triangulation/include/gudhi/Functions/Function_torus_in_R3.h b/src/Coxeter_triangulation/include/gudhi/Functions/Function_torus_in_R3.h index 3cda2518..8fd93a2a 100644 --- a/src/Coxeter_triangulation/include/gudhi/Functions/Function_torus_in_R3.h +++ b/src/Coxeter_triangulation/include/gudhi/Functions/Function_torus_in_R3.h @@ -33,7 +33,7 @@ struct Function_torus_in_R3 : public Function { * \brief Value of the function at a specified point. * @param[in] p The input point. The dimension needs to coincide with the ambient dimension. */ - Eigen::VectorXd operator()(const Eigen::VectorXd& p) const { + virtual Eigen::VectorXd operator()(const Eigen::VectorXd& p) const override { double x = p(0)-off_[0], y = p(1)-off_[1], z = p(2)-off_[2]; Eigen::VectorXd result(cod_d()); result(0) = (z*z + (std::sqrt(x*x + y*y) - r_)*(std::sqrt(x*x + y*y) - r_) - R_*R_); @@ -41,13 +41,13 @@ struct Function_torus_in_R3 : public Function { } /** \brief Returns the domain (ambient) dimension. */ - std::size_t amb_d() const {return 3;}; + virtual std::size_t amb_d() const override {return 3;}; /** \brief Returns the codomain dimension. */ - std::size_t cod_d() const {return 1;}; + virtual std::size_t cod_d() const override {return 1;}; /** \brief Returns a point on the surface. */ - Eigen::VectorXd seed() const { + virtual Eigen::VectorXd seed() const override { Eigen::Vector3d result(R_ + r_ +off_[0], off_[1], off_[2]); return result; } diff --git a/src/Coxeter_triangulation/include/gudhi/Functions/Function_whitney_umbrella_in_R3.h b/src/Coxeter_triangulation/include/gudhi/Functions/Function_whitney_umbrella_in_R3.h index 3d825f8f..10ff53f3 100644 --- a/src/Coxeter_triangulation/include/gudhi/Functions/Function_whitney_umbrella_in_R3.h +++ b/src/Coxeter_triangulation/include/gudhi/Functions/Function_whitney_umbrella_in_R3.h @@ -33,7 +33,7 @@ struct Function_whitney_umbrella_in_R3 : public Function { * \brief Value of the function at a specified point. * @param[in] p The input point. The dimension needs to coincide with the ambient dimension. */ - Eigen::VectorXd operator()(const Eigen::VectorXd& p) const { + virtual Eigen::VectorXd operator()(const Eigen::VectorXd& p) const override { double x = p(0)-off_[0], y = p(1)-off_[1], z = p(2)-off_[2]; Eigen::VectorXd result(cod_d()); result(0) = x*x - y*y*z; @@ -41,16 +41,16 @@ struct Function_whitney_umbrella_in_R3 : public Function { } /** \brief Returns the (ambient) domain dimension.*/ - std::size_t amb_d() const {return 3;}; + virtual std::size_t amb_d() const override {return 3;}; /** \brief Returns the codomain dimension. */ - std::size_t cod_d() const {return 1;}; + virtual std::size_t cod_d() const override {return 1;}; /** \brief Returns a point on the surface. This seed point is only one of * two necessary seed points for the manifold tracing algorithm. * See the method seed2() for the other point. */ - Eigen::VectorXd seed() const { + virtual Eigen::VectorXd seed() const override { Eigen::Vector3d result(1+off_[0], 1+off_[1], 1+off_[2]); return result; } diff --git a/src/Coxeter_triangulation/include/gudhi/Functions/Linear_transformation.h b/src/Coxeter_triangulation/include/gudhi/Functions/Linear_transformation.h index 4cb5ca84..5f7485e7 100644 --- a/src/Coxeter_triangulation/include/gudhi/Functions/Linear_transformation.h +++ b/src/Coxeter_triangulation/include/gudhi/Functions/Linear_transformation.h @@ -38,19 +38,19 @@ struct Linear_transformation : public Function { * \brief Value of the function at a specified point. * @param[in] p The input point. The dimension needs to coincide with the ambient dimension. */ - Eigen::VectorXd operator()(const Eigen::VectorXd& p) const { + virtual Eigen::VectorXd operator()(const Eigen::VectorXd& p) const override { Eigen::VectorXd result = fun_(matrix_.householderQr().solve(p)); return result; } /** \brief Returns the domain (ambient) dimension. */ - std::size_t amb_d() const {return fun_.amb_d();} + virtual std::size_t amb_d() const override {return fun_.amb_d();} /** \brief Returns the codomain dimension. */ - std::size_t cod_d() const {return fun_.cod_d();} + virtual std::size_t cod_d() const override {return fun_.cod_d();} /** \brief Returns a point on the zero-set. */ - Eigen::VectorXd seed() const { + virtual Eigen::VectorXd seed() const override { Eigen::VectorXd result = fun_.seed(); result = matrix_ * result; return result; diff --git a/src/Coxeter_triangulation/include/gudhi/Functions/Negation.h b/src/Coxeter_triangulation/include/gudhi/Functions/Negation.h index 6b7feff5..e28d9ddb 100644 --- a/src/Coxeter_triangulation/include/gudhi/Functions/Negation.h +++ b/src/Coxeter_triangulation/include/gudhi/Functions/Negation.h @@ -39,19 +39,19 @@ struct Negation : public Function { * \brief Value of the function at a specified point. * @param[in] p The input point. The dimension needs to coincide with the ambient dimension. */ - Eigen::VectorXd operator()(const Eigen::VectorXd& p) const { + virtual Eigen::VectorXd operator()(const Eigen::VectorXd& p) const override { Eigen::VectorXd result = -fun_(p); return result; } /** \brief Returns the domain (ambient) dimension. */ - std::size_t amb_d() const {return fun_.amb_d();} + virtual std::size_t amb_d() const override {return fun_.amb_d();} /** \brief Returns the codomain dimension. */ - std::size_t cod_d() const {return fun_.cod_d();} + virtual std::size_t cod_d() const override {return fun_.cod_d();} /** \brief Returns a point on the zero-set. */ - Eigen::VectorXd seed() const { + virtual Eigen::VectorXd seed() const override { Eigen::VectorXd result = fun_.seed(); return result; } diff --git a/src/Coxeter_triangulation/include/gudhi/Functions/PL_approximation.h b/src/Coxeter_triangulation/include/gudhi/Functions/PL_approximation.h index 25c8a139..e161f697 100644 --- a/src/Coxeter_triangulation/include/gudhi/Functions/PL_approximation.h +++ b/src/Coxeter_triangulation/include/gudhi/Functions/PL_approximation.h @@ -42,7 +42,7 @@ struct PL_approximation : public Function { * \brief Value of the function at a specified point. * @param[in] p The input point. The dimension needs to coincide with the ambient dimension. */ - Eigen::VectorXd operator()(const Eigen::VectorXd& p) const { + virtual Eigen::VectorXd operator()(const Eigen::VectorXd& p) const override { std::size_t cod_d = this->cod_d(); std::size_t amb_d = this->amb_d(); auto s = tr_.locate_point(p); @@ -71,13 +71,13 @@ struct PL_approximation : public Function { } /** \brief Returns the domain (ambient) dimension. */ - std::size_t amb_d() const {return fun_.amb_d();} + virtual std::size_t amb_d() const override {return fun_.amb_d();} /** \brief Returns the codomain dimension. */ - std::size_t cod_d() const {return fun_.cod_d();} + virtual std::size_t cod_d() const override {return fun_.cod_d();} /** \brief Returns a point on the zero-set. */ - Eigen::VectorXd seed() const { + virtual Eigen::VectorXd seed() const override { // TODO: not finished. Should use an oracle. return Eigen::VectorXd(amb_d()); } diff --git a/src/Coxeter_triangulation/include/gudhi/Functions/Translate.h b/src/Coxeter_triangulation/include/gudhi/Functions/Translate.h index 6edac28c..2236ea31 100644 --- a/src/Coxeter_triangulation/include/gudhi/Functions/Translate.h +++ b/src/Coxeter_triangulation/include/gudhi/Functions/Translate.h @@ -39,19 +39,19 @@ struct Translate : public Function { * \brief Value of the function at a specified point. * @param[in] p The input point. The dimension needs to coincide with the ambient dimension. */ - Eigen::VectorXd operator()(const Eigen::VectorXd& p) const { + virtual Eigen::VectorXd operator()(const Eigen::VectorXd& p) const override { Eigen::VectorXd result = fun_(p - off_); return result; } /** \brief Returns the domain (ambient) dimension. */ - std::size_t amb_d() const {return fun_.amb_d();} + virtual std::size_t amb_d() const override {return fun_.amb_d();} /** \brief Returns the codomain dimension. */ - std::size_t cod_d() const {return fun_.cod_d();} + virtual std::size_t cod_d() const override {return fun_.cod_d();} /** \brief Returns a point on the zero-set. */ - Eigen::VectorXd seed() const { + virtual Eigen::VectorXd seed() const override { Eigen::VectorXd result = fun_.seed(); result += off_; return result; -- cgit v1.2.3