HighMap library (C++)
Loading...
Searching...
No Matches
interpolate_curve.hpp
Go to the documentation of this file.
1/* Copyright (c) 2023 Otto Link. Distributed under the terms of the GNU General
2 Public License. The full license is in the file LICENSE, distributed with
3 this software. */
4
14#pragma once
15#include <functional>
16
18
19namespace hmap
20{
41
50{
51public:
62 std::vector<Point> points,
64
74 std::vector<Point> operator()(std::vector<float> t) const;
75
76private:
77 // clang-format off
78std::vector<Point> points_data;
79// interpolate.
81// used.
82std::vector<float> arc_length;
83// between points.
84std::function<Point(float)> interp;
85// interpolation based on `method`.
86 // clang-format on
87
100 void get_segment_interpolation_parameters(float t, size_t &ileft, float &u);
101};
102
103} // namespace hmap
Class for performing curve interpolation on a set of points.
Definition interpolate_curve.hpp:50
std::vector< Point > operator()(std::vector< float > t) const
Performs interpolation over the provided parameter values.
Definition interpolate_curve.cpp:185
A class to represent and manipulate 2D points that can carry a value.
Definition point.hpp:23
Definition algebra.hpp:23
InterpolationMethodCurve
Enumeration for specifying the interpolation method for curves.
Definition interpolate_curve.hpp:34
@ DECASTELJAU
De Casteljau algorithm for Bézier curve computation.
Definition interpolate_curve.hpp:38
@ BSPLINE
B-spline interpolation.
Definition interpolate_curve.hpp:36
@ POINTS_LERP
Linear interpolation between points.
Definition interpolate_curve.hpp:39
@ BEZIER
Bezier curve interpolation.
Definition interpolate_curve.hpp:35
@ CATMULLROM
Catmull-Rom spline interpolation.
Definition interpolate_curve.hpp:37