RIT VEXU Core API
Toggle main menu visibility
Loading...
Searching...
No Matches
cubic_hermite_spline.h
1
#pragma once
2
3
#include <array>
4
5
#include "core/math/spline/hermite_point.h"
6
#include "core/math/spline/spline_base.h"
7
13
class
CubicHermiteSpline
:
public
HermiteSpline
<3> {
14
public
:
16
CubicHermiteSpline
() =
default
;
17
24
CubicHermiteSpline
(
const
HermitePoint
& start,
const
HermitePoint
& end,
double
max_err = 1e-4)
25
:
CubicHermiteSpline
(start.point, end.point, start.tangent, end.tangent, max_err) {}
26
35
CubicHermiteSpline
(
const
Translation2d& start_pos,
const
Translation2d& end_pos,
36
const
Translation2d& start_tangent,
const
Translation2d& end_tangent,
37
double
max_err = 1e-4) {
38
this->x_ = cubic_coeffs(start_pos.
x
(units::in), end_pos.
x
(units::in),
39
start_tangent.
x
(units::in), end_tangent.
x
(units::in));
40
this->y_ = cubic_coeffs(start_pos.
y
(units::in), end_pos.
y
(units::in),
41
start_tangent.
y
(units::in), end_tangent.
y
(units::in));
42
build_arc_table
(max_err);
43
}
44
45
private
:
49
static
std::array<double, 4> cubic_coeffs(
double
start_pos,
double
end_pos,
double
start_tangent,
50
double
end_tangent) {
51
return
{
52
start_pos,
53
start_tangent,
54
-3.0 * start_pos + 3.0 * end_pos - 2.0 * start_tangent - end_tangent,
55
2.0 * start_pos - 2.0 * end_pos + start_tangent + end_tangent,
56
};
57
}
58
};
CubicHermiteSpline::CubicHermiteSpline
CubicHermiteSpline(const Translation2d &start_pos, const Translation2d &end_pos, const Translation2d &start_tangent, const Translation2d &end_tangent, double max_err=1e-4)
Constructs cubic Hermite spline from explicit 2D position and tangent vectors.
Definition
cubic_hermite_spline.h:35
CubicHermiteSpline::CubicHermiteSpline
CubicHermiteSpline(const HermitePoint &start, const HermitePoint &end, double max_err=1e-4)
Constructs cubic Hermite spline from start and end HermitePoint structures.
Definition
cubic_hermite_spline.h:24
CubicHermiteSpline::CubicHermiteSpline
CubicHermiteSpline()=default
Default constructor.
HermiteSpline
CRTP base class for Hermite splines of specific polynomial order.
Definition
spline_base.h:342
LinearVector2d::x
constexpr Q x() const
Gets the x component.
Definition
translation2d.h:65
LinearVector2d::y
constexpr Q y() const
Gets the y component.
Definition
translation2d.h:74
SplineBase::build_arc_table
void build_arc_table(double max_err=1e-4)
Builds pre-computed parameter u and arc-length lookup tables using adaptive refinement.
Definition
spline_base.h:277
HermitePoint
Represents a boundary point along a Hermite spline.
Definition
hermite_point.h:16
include
core
math
spline
cubic_hermite_spline.h
Generated by
1.18.0