GCC Code Coverage Report


Directory: ./
File: include/ndcurves/optimization/integral_cost.h
Date: 2025-03-05 17:18:30
Exec Total Coverage
Lines: 10 10 100.0%
Branches: 2 4 50.0%

Line Branch Exec Source
1 /**
2 * \file bezier_curve.h
3 * \brief class allowing to create a Bezier curve of dimension 1 <= n <= 3.
4 * \author Steve T.
5 * \version 0.1
6 * \date 06/17/2013
7 */
8
9 #ifndef _CLASS_QUADRATIC_COST
10 #define _CLASS_QUADRATIC_COST
11
12 #include <Eigen/Core>
13
14 #include "ndcurves/optimization/definitions.h"
15 #include "ndcurves/optimization/details.h"
16
17 namespace ndcurves {
18 namespace optimization {
19
20 enum integral_cost_flag {
21 DISTANCE = 0x000,
22 VELOCITY = 0x001,
23 ACCELERATION = 0x002,
24 JERK = 0x003,
25 FOURTH = 0x004,
26 FIFTH = 0x005
27 };
28
29 template <typename Point, typename Numeric>
30 2 quadratic_variable<Numeric> compute_integral_cost_internal(
31 const problem_data<Point, Numeric>& pData, const std::size_t num_derivate) {
32 typedef bezier_curve<Numeric, Numeric, true, linear_variable<Numeric> >
33 bezier_t;
34 typedef typename bezier_t::t_point_t t_point_t;
35 typedef typename t_point_t::const_iterator cit_point_t;
36
1/2
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
2 bezier_t acc = pData.bezier->compute_derivate(num_derivate);
37 2 const t_point_t& wps = acc.waypoints();
38
1/2
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
2 quadratic_variable<Numeric> res(bezier_product<Point, Numeric, cit_point_t>(
39 2 wps.begin(), wps.end(), wps.begin(), wps.end(), pData.dim_));
40 4 return res;
41 2 }
42
43 template <typename Point, typename Numeric>
44 2 quadratic_variable<Numeric> compute_integral_cost(
45 const problem_data<Point, Numeric>& pData, const integral_cost_flag flag) {
46 2 std::size_t size = (std::size_t)(flag);
47 2 return compute_integral_cost_internal<Point, Numeric>(pData, size);
48 }
49
50 } // namespace optimization
51 } // namespace ndcurves
52 #endif //_CLASS_QUADRATIC_COST
53