PolynomialValues.h
Go to the documentation of this file.
// This file is a part of the OpenSurgSim project.
// Copyright 2013, SimQuest Solutions Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef SURGSIM_MATH_POLYNOMIALVALUES_H
#define SURGSIM_MATH_POLYNOMIALVALUES_H
#include "SurgSim/Math/Polynomial.h"
#include "SurgSim/Math/PolynomialRoots.h"
#include "SurgSim/Math/IntervalArithmetic.h"
#include "SurgSim/Math/MinMax.h"
namespace SurgSim
{
namespace Math
{
template <typename T, int N> class PolynomialValues;
template <class T>
class PolynomialValues<T, 0>
{
public:
explicit PolynomialValues(const Polynomial<T, 0>& p);
const Polynomial<T, 0>& getPolynomial() const;
Interval<T> valuesOverInterval(const Interval<T>& interval) const;
private:
Polynomial<T, 0> m_polynomial;
};
template <class T>
class PolynomialValues<T, 1>
{
public:
explicit PolynomialValues(const Polynomial<T, 1>& p);
const Polynomial<T, 1>& getPolynomial() const;
Interval<T> valuesOverInterval(const Interval<T>& interval) const;
private:
Polynomial<T, 1> m_polynomial;
};
template <class T>
class PolynomialValues<T, 2>
{
public:
explicit PolynomialValues(const Polynomial<T, 2>& p);
const Polynomial<T, 2>& getPolynomial() const;
const Polynomial<T, 1>& getDerivative() const;
const PolynomialRoots<T, 1>& getLocationsOfExtrema() const;
Interval<T> valuesOverInterval(const Interval<T>& interval) const;
private:
Polynomial<T, 2> m_polynomial;
Polynomial<T, 1> m_derivative;
PolynomialRoots<T, 1> m_locationOfExtremum;
};
template <class T>
class PolynomialValues<T, 3>
{
public:
explicit PolynomialValues(const Polynomial<T, 3>& p);
const Polynomial<T, 3>& getPolynomial() const;
const Polynomial<T, 2>& getDerivative() const;
const PolynomialRoots<T, 2>& getLocationsOfExtrema() const;
Interval<T> valuesOverInterval(const Interval<T>& interval) const;
private:
Polynomial<T, 3> m_polynomial;
Polynomial<T, 2> m_derivative;
PolynomialRoots<T, 2> m_locationOfExtremum;
};
template <class T, int N>
Interval<T> valuesOverInterval(const Polynomial<T, N>& p, const Interval<T>& interval);
}; // Math
}; // SurgSim
#include "SurgSim/Math/PolynomialValues-inl.h"
#endif // SURGSIM_MATH_POLYNOMIALVALUES_H
SurgSim
Definition: CompoundShapeToGraphics.cpp:29
SurgSim::Math::PolynomialValues< T, 3 >::m_derivative
Polynomial< T, 2 > m_derivative
Cached version of the derivative of the polynomial.
Definition: PolynomialValues.h:145
SurgSim::Math::Polynomial< T, 0 >
Polynomial<T, 0> specializes the Polynomial class for degree 0 (constant polynomials) ...
Definition: Polynomial.h:56
SurgSim::Math::PolynomialValues< T, 2 >::m_locationOfExtremum
PolynomialRoots< T, 1 > m_locationOfExtremum
Cached version of the locations of the extrema.
Definition: PolynomialValues.h:113
SurgSim::Math::PolynomialRoots< T, 2 >
PolynomialRoots<T, 2> specializes the PolynomialRoots class for degree 2 (quadratic polynomials) ...
Definition: PolynomialRoots.h:96
SurgSim::Math::PolynomialValues
Class to manage polynomial based calculations of interval boundaries.
Definition: PolynomialValues.h:33
SurgSim::Math::Polynomial
Polynomial<T, N> defines the concept of an N degree polynomial with type T coefficients and provides ...
Definition: Polynomial.h:47
SurgSim::Math::Polynomial< T, 3 >
Polynomial<T, 3> specializes the Polynomial class for degree 3 (cubic polynomials) ...
Definition: Polynomial.h:255
Polynomial.h
PolynomialRoots.h
SurgSim::Math::valuesOverInterval
Interval< T > valuesOverInterval(const Polynomial< T, N > &p, const Interval< T > &interval)
Calculate the minimum and maximum values of the dependent variable over a specified range of the inde...
Definition: PolynomialValues-inl.h:148
SurgSim::Math::Polynomial< T, 2 >
Polynomial<T, 2> specializes the Polynomial class for degree 2 (quadratic polynomials) ...
Definition: Polynomial.h:183
SurgSim::Math::PolynomialValues< T, 1 >::m_polynomial
Polynomial< T, 1 > m_polynomial
The polynomial under consideration.
Definition: PolynomialValues.h:78
MinMax.h
SurgSim::Math::Interval
Interval defines the concept of a mathematical interval and provides operations on it including arith...
Definition: IntervalArithmetic.h:34
SurgSim::Math::PolynomialValues< T, 2 >::m_derivative
Polynomial< T, 1 > m_derivative
Cached version of the derivative of the polynomial.
Definition: PolynomialValues.h:110
PolynomialValues-inl.h
SurgSim::Math::Polynomial< T, 1 >
Polynomial<T, 1> specializes the Polynomial class for degree 1 (linear polynomials) ...
Definition: Polynomial.h:117
SurgSim::Math::PolynomialValues< T, 3 >::m_polynomial
Polynomial< T, 3 > m_polynomial
The polynomial under consideration.
Definition: PolynomialValues.h:142
SurgSim::Math::PolynomialValues< T, 0 >::m_polynomial
Polynomial< T, 0 > m_polynomial
The polynomial under consideration.
Definition: PolynomialValues.h:55
IntervalArithmetic.h
SurgSim::Math::PolynomialValues< T, 2 >::m_polynomial
Polynomial< T, 2 > m_polynomial
The polynomial under consideration.
Definition: PolynomialValues.h:107
SurgSim::Math::PolynomialRoots< T, 1 >
PolynomialRoots<T, 1> specializes the PolynomialRoots class for degree 1 (linear polynomials) ...
Definition: PolynomialRoots.h:84
SurgSim::Math::PolynomialValues< T, 3 >::m_locationOfExtremum
PolynomialRoots< T, 2 > m_locationOfExtremum
Cached version of the locations of the extrema.
Definition: PolynomialValues.h:148