Diese Klasse berechnet auf einer beliebigen Punktwolke (auch scattered data) eine B-Spline-Fläche. More...
#include <ApproxSurface.h>
Public Member Functions | |
BSplineParameterCorrection (unsigned short usUOrder=4, unsigned short usVOrder=4, unsigned short usUCtrlpoints=6, unsigned short usVCtrlpoints=6) | |
virtual void | EnableSmoothing (bool bSmooth, float fSmoothInfl, float fFirst, float fSec, float fThird) |
Verwende Glättungsterme. | |
virtual void | EnableSmoothing (bool bSmooth=true, float fSmoothInfl=1.0f) |
Verwende Glättungsterme. | |
virtual const math_Matrix & | GetFirstSmoothMatrix () const |
Gibt die erste Matrix der Glättungsterme zurück, falls berechnet. | |
virtual const math_Matrix & | GetSecondSmoothMatrix () const |
Gibt die zweite Matrix der Glättungsterme zurück, falls berechnet. | |
virtual const math_Matrix & | GetThirdSmoothMatrix () const |
Gibt die dritte Matrix der Glättungsterme zurück, falls berechnet. | |
virtual void | SetFirstSmoothMatrix (const math_Matrix &rclMat) |
Setzt die erste Matrix der Glättungsterme. | |
virtual void | SetSecondSmoothMatrix (const math_Matrix &rclMat) |
Setzt die zweite Matrix der Glättungsterme. | |
virtual void | SetThirdSmoothMatrix (const math_Matrix &rclMat) |
Setzt die dritte Matrix der Glättungsterme. | |
void | SetUKnots (const std::vector< float > &afKnots) |
Setzen des Knotenvektors. | |
void | SetVKnots (const std::vector< float > &afKnots) |
Setzen des Knotenvektors. | |
virtual | ~BSplineParameterCorrection () |
Protected Member Functions | |
virtual void | CalcFirstSmoothMatrix (Base::SequencerLauncher &) |
Berechnet die Matrix zum ersten Glättungsterm (siehe Diss. | |
virtual void | CalcSecondSmoothMatrix (Base::SequencerLauncher &) |
Berechnet die Matrix zum zweiten Glättunsterm (siehe Diss. | |
virtual void | CalcSmoothingTerms (bool bRecalc, float fFirst, float fSecond, float fThird) |
Berechnet die Matrix zu den Glättungstermen (siehe Dissertation U.Dietz). | |
virtual void | CalcThirdSmoothMatrix (Base::SequencerLauncher &) |
Berechnet die Matrix zum dritten Glättungsterm. | |
virtual void | DoParameterCorrection (unsigned short usIter) |
Führt eine Parameterkorrektur durch. | |
virtual void | Init () |
Initialisierung. | |
virtual bool | SolveWithoutSmoothing () |
Löst ein überbestimmtes LGS mit Hilfe der Householder-Transformation. | |
virtual bool | SolveWithSmoothing (float fWeight) |
Löst ein reguläres Gleichungssystem durch LU-Zerlegung. | |
Protected Attributes | |
math_Matrix | _clFirstMatrix |
Matrix der Glättungsfunktionale. | |
math_Matrix | _clSecondMatrix |
Matrix der 1. Glättungsfunktionale. | |
math_Matrix | _clSmoothMatrix |
B-Spline-Basisfunktion in v-Richtung. | |
math_Matrix | _clThirdMatrix |
Matrix der 2. Glättungsfunktionale. | |
BSplineBasis | _clUSpline |
BSplineBasis | _clVSpline |
B-Spline-Basisfunktion in u-Richtung. |
Diese Klasse berechnet auf einer beliebigen Punktwolke (auch scattered data) eine B-Spline-Fläche.
Die Fläche wird iterativ mit Hilfe einer Parameterkorrektur erzeugt. Siehe dazu Hoschek/Lasser 2. Auflage (1992). Erweitert wird die Approximation um Glättungsterme, so daß glatte Flächen erzeugt werden können.
Definition at line 348 of file ApproxSurface.h.
BSplineParameterCorrection::BSplineParameterCorrection | ( | unsigned short | usUOrder = 4 , |
|
unsigned short | usVOrder = 4 , |
|||
unsigned short | usUCtrlpoints = 6 , |
|||
unsigned short | usVCtrlpoints = 6 | |||
) |
Definition at line 786 of file ApproxSurface.cpp.
References Init().
virtual Reen::BSplineParameterCorrection::~BSplineParameterCorrection | ( | ) | [inline, virtual] |
Definition at line 359 of file ApproxSurface.h.
void BSplineParameterCorrection::CalcFirstSmoothMatrix | ( | Base::SequencerLauncher & | seq | ) | [protected, virtual] |
Berechnet die Matrix zum ersten Glättungsterm (siehe Diss.
U.Dietz)
Definition at line 1121 of file ApproxSurface.cpp.
References _clFirstMatrix, _clUSpline, _clVSpline, Reen::ParameterCorrection::_usUCtrlpoints, Reen::ParameterCorrection::_usVCtrlpoints, Reen::BSplineBasis::GetIntegralOfProductOfBSplines(), k, RobotExample::l, FemExample::m, and Base::SequencerLauncher::next().
Referenced by CalcSmoothingTerms().
void BSplineParameterCorrection::CalcSecondSmoothMatrix | ( | Base::SequencerLauncher & | seq | ) | [protected, virtual] |
Berechnet die Matrix zum zweiten Glättunsterm (siehe Diss.
U.Dietz)
Definition at line 1147 of file ApproxSurface.cpp.
References _clSecondMatrix, _clUSpline, _clVSpline, Reen::ParameterCorrection::_usUCtrlpoints, Reen::ParameterCorrection::_usVCtrlpoints, Reen::BSplineBasis::GetIntegralOfProductOfBSplines(), k, RobotExample::l, FemExample::m, and Base::SequencerLauncher::next().
Referenced by CalcSmoothingTerms().
void BSplineParameterCorrection::CalcSmoothingTerms | ( | bool | bRecalc, | |
float | fFirst, | |||
float | fSecond, | |||
float | fThird | |||
) | [protected, virtual] |
Berechnet die Matrix zu den Glättungstermen (siehe Dissertation U.Dietz).
Definition at line 1106 of file ApproxSurface.cpp.
References _clFirstMatrix, _clSecondMatrix, _clSmoothMatrix, _clThirdMatrix, Reen::ParameterCorrection::_usUCtrlpoints, Reen::ParameterCorrection::_usVCtrlpoints, CalcFirstSmoothMatrix(), CalcSecondSmoothMatrix(), and CalcThirdSmoothMatrix().
Referenced by EnableSmoothing().
void BSplineParameterCorrection::CalcThirdSmoothMatrix | ( | Base::SequencerLauncher & | seq | ) | [protected, virtual] |
Berechnet die Matrix zum dritten Glättungsterm.
Definition at line 1175 of file ApproxSurface.cpp.
References _clThirdMatrix, _clUSpline, _clVSpline, Reen::ParameterCorrection::_usUCtrlpoints, Reen::ParameterCorrection::_usVCtrlpoints, Reen::BSplineBasis::GetIntegralOfProductOfBSplines(), k, RobotExample::l, FemExample::m, and Base::SequencerLauncher::next().
Referenced by CalcSmoothingTerms().
void BSplineParameterCorrection::DoParameterCorrection | ( | unsigned short | usIter | ) | [protected, virtual] |
Führt eine Parameterkorrektur durch.
Implements Reen::ParameterCorrection.
Definition at line 883 of file ApproxSurface.cpp.
References Reen::ParameterCorrection::_bSmoothing, Reen::ParameterCorrection::_fSmoothInfluence, Reen::ParameterCorrection::_pvcPoints, Reen::ParameterCorrection::_pvcUVParam, Reen::ParameterCorrection::_usUOrder, Reen::ParameterCorrection::_usVOrder, Reen::ParameterCorrection::_vCtrlPntsOfSurf, Reen::ParameterCorrection::_vUKnots, Reen::ParameterCorrection::_vUMults, Reen::ParameterCorrection::_vVKnots, Reen::ParameterCorrection::_vVMults, SketcherExample::f, FLOAT_EPS, SolveWithoutSmoothing(), and SolveWithSmoothing().
void BSplineParameterCorrection::EnableSmoothing | ( | bool | bSmooth, | |
float | fSmoothInfl, | |||
float | fFirst, | |||
float | fSec, | |||
float | fThird | |||
) | [virtual] |
Verwende Glättungsterme.
Definition at line 1218 of file ApproxSurface.cpp.
References Reen::ParameterCorrection::_bSmoothing, CalcSmoothingTerms(), and EnableSmoothing().
void BSplineParameterCorrection::EnableSmoothing | ( | bool | bSmooth = true , |
|
float | fSmoothInfl = 1.0f | |||
) | [virtual] |
Verwende Glättungsterme.
Reimplemented from Reen::ParameterCorrection.
Definition at line 1213 of file ApproxSurface.cpp.
References SketcherExample::f.
Referenced by approxSurface(), and EnableSmoothing().
const math_Matrix & BSplineParameterCorrection::GetFirstSmoothMatrix | ( | ) | const [virtual] |
Gibt die erste Matrix der Glättungsterme zurück, falls berechnet.
Definition at line 1229 of file ApproxSurface.cpp.
References _clFirstMatrix.
const math_Matrix & BSplineParameterCorrection::GetSecondSmoothMatrix | ( | ) | const [virtual] |
Gibt die zweite Matrix der Glättungsterme zurück, falls berechnet.
Definition at line 1234 of file ApproxSurface.cpp.
References _clSecondMatrix.
const math_Matrix & BSplineParameterCorrection::GetThirdSmoothMatrix | ( | ) | const [virtual] |
Gibt die dritte Matrix der Glättungsterme zurück, falls berechnet.
Definition at line 1239 of file ApproxSurface.cpp.
References _clThirdMatrix.
void BSplineParameterCorrection::Init | ( | void | ) | [protected, virtual] |
Initialisierung.
Definition at line 808 of file ApproxSurface.cpp.
References _clFirstMatrix, _clSecondMatrix, _clSmoothMatrix, _clThirdMatrix, _clUSpline, _clVSpline, Reen::ParameterCorrection::_pvcPoints, Reen::ParameterCorrection::_pvcUVParam, Reen::ParameterCorrection::_usUCtrlpoints, Reen::ParameterCorrection::_usUOrder, Reen::ParameterCorrection::_usVCtrlpoints, Reen::ParameterCorrection::_usVOrder, Reen::ParameterCorrection::_vUKnots, Reen::ParameterCorrection::_vUMults, Reen::ParameterCorrection::_vVKnots, Reen::ParameterCorrection::_vVMults, SketcherExample::f, and Reen::SplineBasisfunction::SetKnots().
Referenced by BSplineParameterCorrection().
void BSplineParameterCorrection::SetFirstSmoothMatrix | ( | const math_Matrix & | rclMat | ) | [virtual] |
Setzt die erste Matrix der Glättungsterme.
Definition at line 1244 of file ApproxSurface.cpp.
References _clFirstMatrix.
void BSplineParameterCorrection::SetSecondSmoothMatrix | ( | const math_Matrix & | rclMat | ) | [virtual] |
Setzt die zweite Matrix der Glättungsterme.
Definition at line 1249 of file ApproxSurface.cpp.
References _clSecondMatrix.
void BSplineParameterCorrection::SetThirdSmoothMatrix | ( | const math_Matrix & | rclMat | ) | [virtual] |
Setzt die dritte Matrix der Glättungsterme.
Definition at line 1254 of file ApproxSurface.cpp.
References _clThirdMatrix.
void BSplineParameterCorrection::SetUKnots | ( | const std::vector< float > & | afKnots | ) |
Setzen des Knotenvektors.
Definition at line 845 of file ApproxSurface.cpp.
References _clUSpline, Reen::ParameterCorrection::_usUCtrlpoints, Reen::ParameterCorrection::_usUOrder, Reen::ParameterCorrection::_vUKnots, Reen::ParameterCorrection::_vUMults, Py::long, and Reen::SplineBasisfunction::SetKnots().
void BSplineParameterCorrection::SetVKnots | ( | const std::vector< float > & | afKnots | ) |
Setzen des Knotenvektors.
Definition at line 864 of file ApproxSurface.cpp.
References _clVSpline, Reen::ParameterCorrection::_usVCtrlpoints, Reen::ParameterCorrection::_usVOrder, Reen::ParameterCorrection::_vVKnots, Reen::ParameterCorrection::_vVMults, Py::long, and Reen::SplineBasisfunction::SetKnots().
bool BSplineParameterCorrection::SolveWithoutSmoothing | ( | ) | [protected, virtual] |
Löst ein überbestimmtes LGS mit Hilfe der Householder-Transformation.
Implements Reen::ParameterCorrection.
Definition at line 963 of file ApproxSurface.cpp.
References _clUSpline, _clVSpline, Reen::ParameterCorrection::_pvcPoints, Reen::ParameterCorrection::_pvcUVParam, Reen::ParameterCorrection::_usUCtrlpoints, Reen::ParameterCorrection::_usVCtrlpoints, Reen::ParameterCorrection::_vCtrlPntsOfSurf, Reen::BSplineBasis::BasisFunction(), and k.
Referenced by DoParameterCorrection().
bool BSplineParameterCorrection::SolveWithSmoothing | ( | float | fWeight | ) | [protected, virtual] |
Löst ein reguläres Gleichungssystem durch LU-Zerlegung.
Es fließen je nach Gewichtung Glättungsterme mit ein
Implements Reen::ParameterCorrection.
Definition at line 1022 of file ApproxSurface.cpp.
References _clSmoothMatrix, _clUSpline, _clVSpline, Reen::ParameterCorrection::_pvcPoints, Reen::ParameterCorrection::_pvcUVParam, Reen::ParameterCorrection::_usUCtrlpoints, Reen::ParameterCorrection::_usVCtrlpoints, Reen::ParameterCorrection::_vCtrlPntsOfSurf, Reen::BSplineBasis::BasisFunction(), k, and FemExample::m.
Referenced by DoParameterCorrection().
math_Matrix Reen::BSplineParameterCorrection::_clFirstMatrix [protected] |
Matrix der Glättungsfunktionale.
Definition at line 463 of file ApproxSurface.h.
Referenced by CalcFirstSmoothMatrix(), CalcSmoothingTerms(), GetFirstSmoothMatrix(), Init(), and SetFirstSmoothMatrix().
math_Matrix Reen::BSplineParameterCorrection::_clSecondMatrix [protected] |
Matrix der 1. Glättungsfunktionale.
Definition at line 464 of file ApproxSurface.h.
Referenced by CalcSecondSmoothMatrix(), CalcSmoothingTerms(), GetSecondSmoothMatrix(), Init(), and SetSecondSmoothMatrix().
math_Matrix Reen::BSplineParameterCorrection::_clSmoothMatrix [protected] |
B-Spline-Basisfunktion in v-Richtung.
Definition at line 462 of file ApproxSurface.h.
Referenced by CalcSmoothingTerms(), Init(), and SolveWithSmoothing().
math_Matrix Reen::BSplineParameterCorrection::_clThirdMatrix [protected] |
Matrix der 2. Glättungsfunktionale.
Definition at line 465 of file ApproxSurface.h.
Referenced by CalcSmoothingTerms(), CalcThirdSmoothMatrix(), GetThirdSmoothMatrix(), Init(), and SetThirdSmoothMatrix().
Definition at line 460 of file ApproxSurface.h.
Referenced by CalcFirstSmoothMatrix(), CalcSecondSmoothMatrix(), CalcThirdSmoothMatrix(), Init(), SetUKnots(), SolveWithoutSmoothing(), and SolveWithSmoothing().
B-Spline-Basisfunktion in u-Richtung.
Definition at line 461 of file ApproxSurface.h.
Referenced by CalcFirstSmoothMatrix(), CalcSecondSmoothMatrix(), CalcThirdSmoothMatrix(), Init(), SetVKnots(), SolveWithoutSmoothing(), and SolveWithSmoothing().