SplineInterpolationSegment.cpp
Go to the documentation of this file.
1
/*
2
* This file is part of ArmarX.
3
*
4
* ArmarX is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License version 2 as
6
* published by the Free Software Foundation.
7
*
8
* ArmarX is distributed in the hope that it will be useful, but
9
* WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
12
*
13
* You should have received a copy of the GNU General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
15
*
16
* @package ArmarXGuiPlugins::RobotTrajectoryDesigner::Interpolation
17
* @author Timo Birr
18
* @date 2018
19
* @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20
* GNU General Public License
21
*/
22
#include "
SplineInterpolationSegment.h
"
23
24
#include "../exceptions/InterpolationNotDefinedException.h"
25
26
using namespace
armarx
;
27
28
SplineInterpolationSegment::SplineInterpolationSegment
(
int
number,
AbstractInterpolationPtr
parent)
29
{
30
if
(number >= parent->getNumberOfControlPoints() - 1 || number < 0)
31
{
32
throw
new
exceptions::local::InterpolationNotDefinedException
(number);
33
}
34
this->parent = parent;
35
this->poseAccesFactor = 1.0 / (parent.get()->getNumberOfControlPoints() - 1);
36
this->poseAccesStart = poseAccesFactor * number;
37
}
38
39
PoseBasePtr
SplineInterpolationSegment::getPoseAt
(
double
time)
40
{
41
if
(time < 0 || time > 1)
42
{
43
throw
new
exceptions::local::InterpolationNotDefinedException
(time);
44
}
45
return
parent->getPoseAt(poseAccesStart + poseAccesFactor * time);
46
}
47
48
int
SplineInterpolationSegment::getNumberOfControlPoints
()
49
{
50
return
2;
51
}
armarx::SplineInterpolationSegment::getPoseAt
PoseBasePtr getPoseAt(double time) override
getPoseAt returns the Pose defined by f(time)
Definition:
SplineInterpolationSegment.cpp:39
armarx::AbstractInterpolationPtr
std::shared_ptr< AbstractInterpolation > AbstractInterpolationPtr
Definition:
AbstractInterpolation.h:77
armarx::exceptions::local::InterpolationNotDefinedException
Definition:
InterpolationNotDefinedException.h:42
armarx::SplineInterpolationSegment::getNumberOfControlPoints
int getNumberOfControlPoints()
always returns 2 as there are always 2 control points in a spline interpolation segment
Definition:
SplineInterpolationSegment.cpp:48
SplineInterpolationSegment.h
armarx::SplineInterpolationSegment::SplineInterpolationSegment
SplineInterpolationSegment(int number, AbstractInterpolationPtr parent)
SplineInterpolationSegment creates a new SplineInterpolation.
Definition:
SplineInterpolationSegment.cpp:28
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition:
ArmarXTimeserver.cpp:28
RobotComponents
gui-plugins
RobotTrajectoryDesignerGuiPlugin
Interpolation
SplineInterpolationSegment.cpp
Generated on Sat Oct 12 2024 09:14:13 for armarx_documentation by
1.8.17