From de5fdc0ece97d3af13d6e84bfb37305a74e6f91b Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Sun, 15 Dec 2019 17:50:05 +0000 Subject: [PATCH] Include : - nei vettori aggiunti confronti basati su tolleranza passata come parametro - aggiornamento prototipi. --- EGkCurveAux.h | 4 ++++ EGkVector3d.h | 35 +++++++++++++++++++++++++++++++---- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/EGkCurveAux.h b/EGkCurveAux.h index ce56af3..dcf6b51 100644 --- a/EGkCurveAux.h +++ b/EGkCurveAux.h @@ -60,6 +60,10 @@ EGK_EXPORT bool NurbsCurveCanonicalize( CNurbsData& cnData) ; //! Trasforma una curva Nurbs standard in una nuova curva di Bezier semplice o composta EGK_EXPORT ICurve* NurbsToBezierCurve( const CNurbsData& cnData) ; +//---------------------------------------------------------------------------- +//! Appiattisce la curva sul suo piano medio se rientra nelle tolleranze +EGK_EXPORT ICurve* FlattenCurve( const ICurve& crCrv, double dToler, double dAngToler) ; + //---------------------------------------------------------------------------- //! Proietta la curva sul piano indicato EGK_EXPORT ICurve* ProjectCurveOnPlane( const ICurve& crCrv, const Plane3d& plPlane) ; diff --git a/EGkVector3d.h b/EGkVector3d.h index 776c555..5160ac1 100644 --- a/EGkVector3d.h +++ b/EGkVector3d.h @@ -1,13 +1,13 @@ //---------------------------------------------------------------------------- -// EgalTech 2013-2014 +// EgalTech 2013-2019 //---------------------------------------------------------------------------- -// File : EgkVector3d.h Data : 30.05.14 Versione : 1.5e10 +// File : EgkVector3d.h Data : 14.12.19 Versione : 2.1l4 // Contenuto : Dichiarazione della classe Vettore 3d. // // // -// Modifiche : 31.12.12 DS Creazione modulo. -// +// Modifiche : 31.12.13 DS Creazione modulo. +// 14.12.19 DS Aggiunti confronti con Epsilon. // //---------------------------------------------------------------------------- @@ -276,6 +276,15 @@ Media( const Vector3d& vtV1, const Vector3d& vtV2, double dCoeff) ( 1 - dCoeff) * vtV1.z + dCoeff * vtV2.z)) ; } +//---------------------------------------------------------------------------- +//! Verifica se due vettori sono quasi coincidenti (tolleranza come parametro) +//---------------------------------------------------------------------------- +inline bool +AreSameVectorEpsilon( const Vector3d& vtV1, const Vector3d& vtV2, double dToler) +{ + return ( ( vtV1 - vtV2).SqLen() < ( dToler * dToler)) ; +} + //---------------------------------------------------------------------------- //! Verifica se due vettori sono quasi coincidenti (Small error -> Approx) //---------------------------------------------------------------------------- @@ -294,6 +303,15 @@ AreSameVectorExact( const Vector3d& vtV1, const Vector3d& vtV2) return ( ( vtV1 - vtV2).IsZero()) ; } +//---------------------------------------------------------------------------- +//! Verifica se due vettori sono quasi opposti (tolleranza come parametro) +//---------------------------------------------------------------------------- +inline bool +AreOppositeVectorEpsilon( const Vector3d& vtV1, const Vector3d& vtV2, double dToler) +{ + return ( ( vtV1 + vtV2).SqLen() < ( dToler * dToler)) ; +} + //---------------------------------------------------------------------------- //! Verifica se due vettori sono quasi opposti (Small error -> Approx) //---------------------------------------------------------------------------- @@ -312,6 +330,15 @@ AreOppositeVectorExact( const Vector3d& vtV1, const Vector3d& vtV2) return ( ( vtV1 + vtV2).IsZero()) ; } +//---------------------------------------------------------------------------- +//! Verifica se due vettori sono quasi coincidenti o opposti (tolleranza come parametro) +//---------------------------------------------------------------------------- +inline bool +AreSameOrOppositeVectorEpsilon( const Vector3d& vtV1, const Vector3d& vtV2, double dToler) +{ + return ( ( vtV1 - vtV2).SqLen() < ( dToler * dToler) || ( vtV1 + vtV2).SqLen() < ( dToler * dToler)) ; +} + //---------------------------------------------------------------------------- //! Verifica se due vettori sono quasi coincidenti o opposti (Small error -> Approx) //----------------------------------------------------------------------------