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  */
23 
24 #include "../exceptions/InterpolationNotDefinedException.h"
25 
26 using namespace armarx;
27 
29 {
30  if (number >= parent->getNumberOfControlPoints() - 1 || number < 0)
31  {
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  {
44  }
45  return parent->getPoseAt(poseAccesStart + poseAccesFactor * time);
46 }
47 
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