Include :

- nuove funzioni di creazione Linee e Archi.
This commit is contained in:
Dario Sassi
2014-06-14 18:05:02 +00:00
parent 6f64c155c8
commit 9fb0756672
8 changed files with 146 additions and 7 deletions
+33
View File
@@ -0,0 +1,33 @@
//----------------------------------------------------------------------------
// EgalTech 2014-2014
//----------------------------------------------------------------------------
// File : EGkArcXxTgArc.h Data : 12.06.14 Versione : 1.5f4
// Contenuto : Dichiarazione funzioni per calcolo archi tangenti a arco.
//
//
//
// Modifiche : 12.06.14 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkCurveArc.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
EGK_EXPORT ICurveArc* GetCircleCenTgArc( const Point3d& ptCen, const ICurveArc& crvArc, const Point3d& ptNear) ;
EGK_EXPORT ICurveArc* GetArcCenTgArcPnt( const Point3d& ptCen, const ICurveArc& crvArc,
const Point3d& ptNearTg, const Point3d& ptNearEnd) ;
EGK_EXPORT ICurve* GetArc2PD( const Point3d& ptStart, const Point3d& ptEnd, double dDirStartDeg) ;
EGK_EXPORT ICurve* GetArcPntDirTgArc( const Point3d& ptP, double dDirStartDeg,
const ICurveArc& crvArc, const Point3d& ptNearTg) ;
+6
View File
@@ -28,6 +28,12 @@ typedef std::pair<double,Point3d> UPOINT ; // coppia parametro, punto
typedef std::vector<UPOINT> UPNTVECTOR ; // vettore di coppie parametro, punto
typedef std::list<UPOINT> UPNTLIST ; // lista di coppie parametro, punto
//----------------------------------------------------------------------------
// Raccolte di coppie Point3d,Point3d
typedef std::pair<Point3d,Point3d> BIPOINT ; // coppia punto1, punto2
typedef std::vector<BIPOINT> BIPNTVECTOR ; // vettore di coppie punto1, punto2
typedef std::list<BIPOINT> BIPNTLIST ; // lista di coppie punto1, punto2
//----------------------------------------------------------------------------
// Raccolte di Punti di curva con loro geometria differenziale
typedef std::vector<CrvPointDiffGeom> CPDGVECTOR ; // vettore di CrvPointDiffGeom
+7 -4
View File
@@ -1,13 +1,13 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2013
// EgalTech 2013-2014
//----------------------------------------------------------------------------
// File : EGkGeoVector3d.h Data : 22.11.13 Versione : 1.3a1
// File : EGkGeoVector3d.h Data : 11.06.14 Versione : 1.5f4
// Contenuto : Dichiarazione della interfaccia IGeoVector3d.
//
//
//
// Modifiche : 22.11.13 DS Creazione modulo.
//
// 11.06.14 DS Agg. punto Base.
//
//----------------------------------------------------------------------------
@@ -23,8 +23,11 @@ class __declspec( novtable) IGeoVector3d : public IGeoObj
public :
virtual bool Copy( const IGeoObj* pGObjSrc) = 0 ;
virtual bool Set( const Vector3d& vtV) = 0 ;
virtual bool Set( const Vector3d& vtV, const Point3d& ptBase) = 0 ;
virtual const Vector3d& GetVector( void) const = 0 ;
virtual bool GetDrawWithArrowHead( double dFrazLenAH, PolyLine& PL) const = 0 ;
virtual const Point3d& GetBase( void) const = 0 ;
virtual bool ChangeBase( const Point3d& ptBase) = 0 ;
virtual bool GetDrawWithArrowHead( double dFrazLenAH, double dMaxDimA, PolyLine& PL) const = 0 ;
} ;
//-----------------------------------------------------------------------------
+30
View File
@@ -0,0 +1,30 @@
//----------------------------------------------------------------------------
// EgalTech 2014-2014
//----------------------------------------------------------------------------
// File : EGkLinePntTgCurve.h Data : 10.06.14 Versione : 1.5f3
// Contenuto : Dichiarazione funzioni per calcolo rette tangenti a curve.
//
//
//
// Modifiche : 10.06.14 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkCurveLine.h"
#include "/EgtDev/Include/EGkCurveArc.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
EGK_EXPORT ICurveLine* GetLinePointTgCurve( const Point3d& ptP, const ICurve& cCrv, const Point3d& ptNear) ;
EGK_EXPORT ICurveLine* GetLinePointTgArc( const Point3d& ptP, const ICurveArc& crvArc, const Point3d& ptNear) ;
+30
View File
@@ -0,0 +1,30 @@
//----------------------------------------------------------------------------
// EgalTech 2014-2014
//----------------------------------------------------------------------------
// File : EGkLineTgCurve.h Data : 10.06.14 Versione : 1.5f3
// Contenuto : Dichiarazione funzioni per calcolo rette tangenti a curve.
//
//
//
// Modifiche : 10.06.14 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkCurveLine.h"
#include "/EgtDev/Include/EGkCurveArc.h"
//----------------------- Macro per import/export ----------------------------
#undef EGK_EXPORT
#if defined( I_AM_EGK) // da definirsi solo nella DLL
#define EGK_EXPORT __declspec( dllexport)
#else
#define EGK_EXPORT __declspec( dllimport)
#endif
//----------------------------------------------------------------------------
EGK_EXPORT ICurveLine* GetLineTgTwoArcs( const ICurveArc& crvArc1, const Point3d& ptNear1,
const ICurveArc& crvArc2, const Point3d& ptNear2) ;
+29
View File
@@ -179,6 +179,18 @@ SqDist( const Point3d& ptP1, const Point3d& ptP2)
return ( dX * dX + dY * dY + dZ * dZ) ;
}
//----------------------------------------------------------------------------
// Quadrato della distanza tra due punti nel piano XY
//----------------------------------------------------------------------------
inline double
SqDistXY( const Point3d& ptP1, const Point3d& ptP2)
{
double dX = ptP1.x - ptP2.x ;
double dY = ptP1.y - ptP2.y ;
return ( dX * dX + dY * dY) ;
}
//----------------------------------------------------------------------------
// Distanza tra due punti
//----------------------------------------------------------------------------
@@ -199,6 +211,23 @@ Dist( const Point3d& ptP1, const Point3d& ptP2)
return sqrt( dX * dX + dY * dY + dZ * dZ) ;
}
//----------------------------------------------------------------------------
// Distanza tra due punti nel piano XY
//----------------------------------------------------------------------------
inline double
DistXY( const Point3d& ptP1, const Point3d& ptP2)
{
double dX = ptP1.x - ptP2.x ;
double dY = ptP1.y - ptP2.y ;
if ( fabs( dY) < EPS_ZERO)
return fabs( dX) ;
if ( fabs( dX) < EPS_ZERO)
return fabs( dY) ;
return sqrt( dX * dX + dY * dY) ;
}
//----------------------------------------------------------------------------
// Direzione e distanza tra due punti
//----------------------------------------------------------------------------
+8 -2
View File
@@ -22,7 +22,11 @@ class __declspec( novtable) ICurve : public IGeoObj
public :
enum Side { FROM_MINUS = -1, // da valori inferiori del parametro
FROM_PLUS = 1} ; // da valori superiori del parametro
enum OffSide { OFF_RIGHT = -1, // offset a destra
OFF_LEFT = 1} ; // offset a sinistra
enum OffType { OFF_FILLET = 0, // si raccordano con arco gli spigoli esterni
OFF_CHAMFER = 1, // si raccordano con smusso gli spigoli esterni
OFF_EXTEND = 2} ; // si prolungano all'intersezione gli spigoli esterni
public :
virtual bool IsSimple( void) const = 0 ;
virtual bool IsClosed( void) const = 0 ;
@@ -39,8 +43,10 @@ class __declspec( novtable) ICurve : public IGeoObj
Vector3d* pvtDer1 = nullptr, Vector3d* pvtDer2 = nullptr) const = 0 ;
virtual bool GetPointTang( double dU, Side nS, Point3d& ptPos, Vector3d& vtTang) const = 0 ;
virtual bool GetPointDiffGeom( double dU, Side nS, CrvPointDiffGeom& oDiffG) const = 0 ;
virtual bool Invert( void) = 0 ;
virtual bool IsPointOn( const Point3d& ptP, double dTol = EPS_SMALL) const = 0 ;
virtual bool ApproxWithLines( double dLinTol, double dAngTolDeg, PolyLine& PL) const = 0 ;
virtual bool Invert( void) = 0 ;
virtual bool Offset( double dDist, int nSide, int nType = OFF_FILLET) = 0 ;
virtual bool TrimStartAtParam( double dUTrim) = 0 ;
virtual bool TrimEndAtParam( double dUTrim) = 0 ;
virtual bool TrimStartAtLen( double dLenTrim) = 0 ;
+3 -1
View File
@@ -20,7 +20,9 @@ class PtrOwner
{
public :
explicit PtrOwner( T* pT) : m_pT( pT) {}
~PtrOwner( void) { if ( m_pT != nullptr) delete m_pT ; m_pT = nullptr ; }
~PtrOwner( void) { Reset() ; }
void Set( T* pT) { Reset() ; m_pT = pT ; }
void Reset( void) { if ( m_pT != nullptr) delete m_pT ; m_pT = nullptr ; }
T& operator*() const { return *m_pT ; }
T* operator->() const { return m_pT ; }