Approximation of a quadratic surface into a given set of points. More...
#include <Approximation.h>
Public Member Functions | |
void | CalcEigenValues (float &dLambda1, float &dLambda2, float &dLambda3, Base::Vector3f &clEV1, Base::Vector3f &clEV2, Base::Vector3f &clEV3) const |
Aufstellen der Formanmatrix A und Berechnen der Eigenwerte. | |
void | CalcZValues (float x, float y, float &dZ1, float &dZ2) const |
float | Fit () |
Aufruf des Fit-Algorithmus. | |
float | GetCoeff (unsigned long ulIndex) const |
Übertragen der Quadric-Koeffizienten. | |
const float & | GetCoeffArray () const |
Übertragen der Koeffizientan als Referenz auf das interne Array. | |
bool | GetCurvatureInfo (float x, float y, float z, float &rfCurv0, float &rfcurv1) |
bool | GetCurvatureInfo (float x, float y, float z, float &rfCurv0, float &rfCurv1, Base::Vector3f &rkDir0, Base::Vector3f &rkDir1, float &dDistance) |
Berechnen der Krümmungswerte der Quadric in einem bestimmten Punkt. | |
QuadraticFit () | |
Construction. | |
virtual | ~QuadraticFit () |
Destruction. | |
Protected Attributes | |
float | _fCoeff [10] |
Ziel der Koeffizienten aus dem Fit. |
Approximation of a quadratic surface into a given set of points.
The implicit form of the surface is defined by F(x,y,z) = a * x^2 + b * y^2 + c * z^2 + 2d * x * y + 2e * x * z + 2f * y * z + g * x + h * y + * i * z + k = 0 Depending on the parameters (a,..,k) this surface defines a sphere, ellipsoid, cylinder, cone and so on.
Definition at line 190 of file Approximation.h.
MeshCore::QuadraticFit::QuadraticFit | ( | ) | [inline] |
Construction.
Definition at line 196 of file Approximation.h.
virtual MeshCore::QuadraticFit::~QuadraticFit | ( | ) | [inline, virtual] |
Destruction.
Definition at line 200 of file Approximation.h.
void QuadraticFit::CalcEigenValues | ( | float & | dLambda1, | |
float & | dLambda2, | |||
float & | dLambda3, | |||
Base::Vector3f & | clEV1, | |||
Base::Vector3f & | clEV2, | |||
Base::Vector3f & | clEV3 | |||
) | const |
Aufstellen der Formanmatrix A und Berechnen der Eigenwerte.
dLambda1 | Eigenwert 1 | |
dLambda2 | Eigenwert 2 | |
dLambda3 | Eigenwert 3 | |
clEV1 | Eigenvektor 1 | |
clEV2 | Eigenvektor 2 | |
clEV3 | Eigenvektor 3 |
Definition at line 428 of file Approximation.cpp.
References MeshCore::Approximation::_bIsFitted, _fCoeff, MeshCore::Approximation::Convert(), Wm4::Matrix3< Real >::EigenDecomposition(), SketcherExample::f, and Wm4::Matrix3< Real >::GetColumn().
void QuadraticFit::CalcZValues | ( | float | x, | |
float | y, | |||
float & | dZ1, | |||
float & | dZ2 | |||
) | const |
Definition at line 474 of file Approximation.cpp.
References MeshCore::Approximation::_bIsFitted, _fCoeff, SketcherExample::f, FLOAT_MAX, and KDL::sqrt().
float QuadraticFit::Fit | ( | ) | [virtual] |
Aufruf des Fit-Algorithmus.
Implements MeshCore::Approximation.
Definition at line 412 of file Approximation.cpp.
References MeshCore::Approximation::_bIsFitted, _fCoeff, MeshCore::Approximation::_fLastResult, MeshCore::Approximation::CountPoints(), FLOAT_MAX, MeshCore::Approximation::GetMgcVectorArray(), and Wm4::QuadraticFit3< float >().
float QuadraticFit::GetCoeff | ( | unsigned long | ulIndex | ) | const |
Übertragen der Quadric-Koeffizienten.
ulIndex | Nummer des Koeffizienten (0..9) |
Definition at line 402 of file Approximation.cpp.
References MeshCore::Approximation::_bIsFitted, _fCoeff, and FLOAT_MAX.
const float & QuadraticFit::GetCoeffArray | ( | ) | const |
Übertragen der Koeffizientan als Referenz auf das interne Array.
Definition at line 397 of file Approximation.cpp.
References _fCoeff.
bool QuadraticFit::GetCurvatureInfo | ( | float | x, | |
float | y, | |||
float | z, | |||
float & | rfCurv0, | |||
float & | rfcurv1 | |||
) |
Definition at line 385 of file Approximation.cpp.
References MeshCore::Approximation::_bIsFitted, _fCoeff, and MeshCore::FunctionContainer::CurvatureInfo().
bool QuadraticFit::GetCurvatureInfo | ( | float | x, | |
float | y, | |||
float | z, | |||
float & | rfCurv0, | |||
float & | rfCurv1, | |||
Base::Vector3f & | rkDir0, | |||
Base::Vector3f & | rkDir1, | |||
float & | dDistance | |||
) |
Berechnen der Krümmungswerte der Quadric in einem bestimmten Punkt.
x | X-Koordinate | |
y | Y-Koordinate | |
z | Z-Koordinate | |
rfCurv0 | 1. Hauptkrümmung | |
rfCurv1 | 2. Hauptkrümmung | |
rkDir0 | Richtung der 1. Hauptkrümmung | |
rkDir1 | Richtung der 2. Hauptkrümmung | |
dDistance |
Definition at line 365 of file Approximation.cpp.
References MeshCore::Approximation::_bIsFitted, _fCoeff, MeshCore::Approximation::Convert(), MeshCore::FunctionContainer::CurvatureInfo(), MeshCore::FunctionContainer::GetGradient(), and Base::Vector3< _Precision >::Length().
float MeshCore::QuadraticFit::_fCoeff[10] [protected] |
Ziel der Koeffizienten aus dem Fit.
Definition at line 251 of file Approximation.h.
Referenced by CalcEigenValues(), CalcZValues(), Fit(), GetCoeff(), GetCoeffArray(), and GetCurvatureInfo().