Reen::BSplineParameterCorrection Class Reference

Diese Klasse berechnet auf einer beliebigen Punktwolke (auch scattered data) eine B-Spline-Flaeche. More...

#include <ApproxSurface.h>

Public Member Functions

 BSplineParameterCorrection (unsigned usUOrder=4, unsigned usVOrder=4, unsigned usUCtrlpoints=6, unsigned usVCtrlpoints=6)
 
virtual void EnableSmoothing (bool bSmooth, double fSmoothInfl, double fFirst, double fSec, double fThird)
 Verwende Glaettungsterme. More...
 
virtual void EnableSmoothing (bool bSmooth=true, double fSmoothInfl=1.0f)
 Verwende Glaettungsterme. More...
 
virtual const math_Matrix & GetFirstSmoothMatrix () const
 Gibt die erste Matrix der Glaettungsterme zurueck, falls berechnet. More...
 
virtual const math_Matrix & GetSecondSmoothMatrix () const
 Gibt die zweite Matrix der Glaettungsterme zurueck, falls berechnet. More...
 
virtual const math_Matrix & GetThirdSmoothMatrix () const
 Gibt die dritte Matrix der Glaettungsterme zurueck, falls berechnet. More...
 
virtual void SetFirstSmoothMatrix (const math_Matrix &rclMat)
 Setzt die erste Matrix der Glaettungsterme. More...
 
virtual void SetSecondSmoothMatrix (const math_Matrix &rclMat)
 Setzt die zweite Matrix der Glaettungsterme. More...
 
virtual void SetThirdSmoothMatrix (const math_Matrix &rclMat)
 Setzt die dritte Matrix der Glaettungsterme. More...
 
void SetUKnots (const std::vector< double > &afKnots)
 Setzen des Knotenvektors. More...
 
void SetVKnots (const std::vector< double > &afKnots)
 Setzen des Knotenvektors. More...
 
virtual ~BSplineParameterCorrection ()
 
- Public Member Functions inherited from Reen::ParameterCorrection
virtual Base::Vector3d GetGravityPoint () const
 
virtual void GetUVW (Base::Vector3d &clU, Base::Vector3d &clV, Base::Vector3d &clW) const
 Gibt die u/v/w-Richtungen zurueck. More...
 
virtual Handle (Geom_BSplineSurface) CreateSurface(const TColgp_Array1OfPnt &points
 Berechnet eine B-Spline-Flaeche.aus den geg. More...
 
 ParameterCorrection (unsigned usUOrder=4, unsigned usVOrder=4, unsigned usUCtrlpoints=6, unsigned usVCtrlpoints=6)
 
virtual void SetUV (const Base::Vector3d &clU, const Base::Vector3d &clV, bool bUseDir=true)
 Setzen der u/v-Richtungen Dritter Parameter gibt an, ob die Richtungen tatsaechlich verwendet werden sollen. More...
 
virtual ~ParameterCorrection ()
 

Protected Member Functions

virtual void CalcFirstSmoothMatrix (Base::SequencerLauncher &)
 Berechnet die Matrix zum ersten Glaettungsterm (siehe Diss. More...
 
virtual void CalcSecondSmoothMatrix (Base::SequencerLauncher &)
 Berechnet die Matrix zum zweiten Glaettunsterm (siehe Diss. More...
 
virtual void CalcSmoothingTerms (bool bRecalc, double fFirst, double fSecond, double fThird)
 Berechnet die Matrix zu den Glaettungstermen (siehe Dissertation U.Dietz) More...
 
virtual void CalcThirdSmoothMatrix (Base::SequencerLauncher &)
 Berechnet die Matrix zum dritten Glaettungsterm. More...
 
virtual void DoParameterCorrection (int iIter)
 Fuehrt eine Parameterkorrektur durch. More...
 
virtual void Init ()
 Initialisierung. More...
 
virtual bool SolveWithoutSmoothing ()
 Loest ein ueberbestimmtes LGS mit Hilfe der Householder-Transformation. More...
 
virtual bool SolveWithSmoothing (double fWeight)
 Loest ein regulaeres Gleichungssystem durch LU-Zerlegung. More...
 
- Protected Member Functions inherited from Reen::ParameterCorrection
virtual void CalcEigenvectors ()
 Berechnet die Eigenvektoren der Kovarianzmatrix. More...
 
virtual bool DoInitialParameterCorrection (double fSizeFactor=0.0f)
 Berechnet eine initiale Flaeche zu Beginn des Algorithmus. More...
 
virtual bool GetUVParameters (double fSizeFactor)
 Berechnet die u.v-Werte der Punkte. More...
 
void ProjectControlPointsOnPlane ()
 Projiziert die Kontrollpunkte auf die Fit-Ebene. More...
 

Additional Inherited Members

- Public Attributes inherited from Reen::ParameterCorrection
virtual int bool bParaCor
 
virtual int bool double fSizeFactor =0.0f)
 
virtual int iIter
 

Detailed Description

Diese Klasse berechnet auf einer beliebigen Punktwolke (auch scattered data) eine B-Spline-Flaeche.

Die Flaeche wird iterativ mit Hilfe einer Parameterkorrektur erzeugt. Siehe dazu Hoschek/Lasser 2. Auflage (1992). Erweitert wird die Approximation um Glaettungsterme, so dass glatte Flaechen erzeugt werden koennen.

Constructor & Destructor Documentation

◆ BSplineParameterCorrection()

BSplineParameterCorrection::BSplineParameterCorrection ( unsigned  usUOrder = 4,
unsigned  usVOrder = 4,
unsigned  usUCtrlpoints = 6,
unsigned  usVCtrlpoints = 6 
)

References Init().

◆ ~BSplineParameterCorrection()

virtual Reen::BSplineParameterCorrection::~BSplineParameterCorrection ( )
virtual

Member Function Documentation

◆ CalcFirstSmoothMatrix()

void BSplineParameterCorrection::CalcFirstSmoothMatrix ( Base::SequencerLauncher seq)
protectedvirtual

Berechnet die Matrix zum ersten Glaettungsterm (siehe Diss.

U.Dietz)

References Base::SequencerLauncher::next().

Referenced by CalcSmoothingTerms().

◆ CalcSecondSmoothMatrix()

void BSplineParameterCorrection::CalcSecondSmoothMatrix ( Base::SequencerLauncher seq)
protectedvirtual

Berechnet die Matrix zum zweiten Glaettunsterm (siehe Diss.

U.Dietz)

References Base::SequencerLauncher::next().

Referenced by CalcSmoothingTerms().

◆ CalcSmoothingTerms()

void BSplineParameterCorrection::CalcSmoothingTerms ( bool  bRecalc,
double  fFirst,
double  fSecond,
double  fThird 
)
protectedvirtual

Berechnet die Matrix zu den Glaettungstermen (siehe Dissertation U.Dietz)

References CalcFirstSmoothMatrix(), CalcSecondSmoothMatrix(), and CalcThirdSmoothMatrix().

Referenced by EnableSmoothing().

◆ CalcThirdSmoothMatrix()

void BSplineParameterCorrection::CalcThirdSmoothMatrix ( Base::SequencerLauncher seq)
protectedvirtual

Berechnet die Matrix zum dritten Glaettungsterm.

References Base::SequencerLauncher::next().

Referenced by CalcSmoothingTerms().

◆ DoParameterCorrection()

void BSplineParameterCorrection::DoParameterCorrection ( int  iIter)
protectedvirtual

◆ EnableSmoothing() [1/2]

void BSplineParameterCorrection::EnableSmoothing ( bool  bSmooth,
double  fSmoothInfl,
double  fFirst,
double  fSec,
double  fThird 
)
virtual

Verwende Glaettungsterme.

References CalcSmoothingTerms(), and Reen::ParameterCorrection::EnableSmoothing().

◆ EnableSmoothing() [2/2]

void BSplineParameterCorrection::EnableSmoothing ( bool  bSmooth = true,
double  fSmoothInfl = 1.0f 
)
virtual

Verwende Glaettungsterme.

Reimplemented from Reen::ParameterCorrection.

◆ GetFirstSmoothMatrix()

const math_Matrix & BSplineParameterCorrection::GetFirstSmoothMatrix ( ) const
virtual

Gibt die erste Matrix der Glaettungsterme zurueck, falls berechnet.

◆ GetSecondSmoothMatrix()

const math_Matrix & BSplineParameterCorrection::GetSecondSmoothMatrix ( ) const
virtual

Gibt die zweite Matrix der Glaettungsterme zurueck, falls berechnet.

◆ GetThirdSmoothMatrix()

const math_Matrix & BSplineParameterCorrection::GetThirdSmoothMatrix ( ) const
virtual

Gibt die dritte Matrix der Glaettungsterme zurueck, falls berechnet.

◆ Init()

void BSplineParameterCorrection::Init ( void  )
protectedvirtual

Initialisierung.

Referenced by BSplineParameterCorrection().

◆ SetFirstSmoothMatrix()

void BSplineParameterCorrection::SetFirstSmoothMatrix ( const math_Matrix &  rclMat)
virtual

Setzt die erste Matrix der Glaettungsterme.

◆ SetSecondSmoothMatrix()

void BSplineParameterCorrection::SetSecondSmoothMatrix ( const math_Matrix &  rclMat)
virtual

Setzt die zweite Matrix der Glaettungsterme.

◆ SetThirdSmoothMatrix()

void BSplineParameterCorrection::SetThirdSmoothMatrix ( const math_Matrix &  rclMat)
virtual

Setzt die dritte Matrix der Glaettungsterme.

◆ SetUKnots()

void BSplineParameterCorrection::SetUKnots ( const std::vector< double > &  afKnots)

Setzen des Knotenvektors.

◆ SetVKnots()

void BSplineParameterCorrection::SetVKnots ( const std::vector< double > &  afKnots)

Setzen des Knotenvektors.

◆ SolveWithoutSmoothing()

bool BSplineParameterCorrection::SolveWithoutSmoothing ( )
protectedvirtual

Loest ein ueberbestimmtes LGS mit Hilfe der Householder-Transformation.

Implements Reen::ParameterCorrection.

Referenced by DoParameterCorrection().

◆ SolveWithSmoothing()

bool BSplineParameterCorrection::SolveWithSmoothing ( double  fWeight)
protectedvirtual

Loest ein regulaeres Gleichungssystem durch LU-Zerlegung.

Es fliessen je nach Gewichtung Glaettungsterme mit ein

Implements Reen::ParameterCorrection.

References draftgeoutils.faces::bind(), and Reen::ScalarProduct::multiply().

Referenced by DoParameterCorrection().


The documentation for this class was generated from the following files:
  • Sources/FreeCAD/src/Mod/ReverseEngineering/App/ApproxSurface.h
  • Sources/FreeCAD/src/Mod/ReverseEngineering/App/ApproxSurface.cpp