diff --git a/EGkCDeBoxTria.h b/EGkCDeBoxTria.h deleted file mode 100644 index 77e024a..0000000 --- a/EGkCDeBoxTria.h +++ /dev/null @@ -1,27 +0,0 @@ -//---------------------------------------------------------------------------- -// EgalTech 2016-2020 -//---------------------------------------------------------------------------- -// File : EGkCDeBoxTria.h Data : 09.01.20 Versione : 2.2a2 -// Contenuto : Dichiarazione funzione verifica collisione tra -// BoundingBox e Triangle3d. -// -// Modifiche : 05.10.16 DS Creazione modulo. -// 09.01.20 DS Cambiati parametri. -// -//---------------------------------------------------------------------------- - -#pragma once - -#include "/EgtDev/Include/EGkBBox3d.h" -#include "/EgtDev/Include/EGkTriangle3d.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 bool CDeBoxTria( const Frame3d& frBox, const Vector3d& vtDiag, double dSafeDist, const Triangle3d& trTria) ; diff --git a/EGkCDeClosedSurfTmClosedSurfTm.h b/EGkCDeClosedSurfTmClosedSurfTm.h new file mode 100644 index 0000000..011d3f6 --- /dev/null +++ b/EGkCDeClosedSurfTmClosedSurfTm.h @@ -0,0 +1,30 @@ +//---------------------------------------------------------------------------- +// EgalTech 2020-2020 +//---------------------------------------------------------------------------- +// File : EGkCDeSurfTmSurfTm.h Data : 13.11.20 Versione : +// Contenuto : Dichiarazione funzione verifica collisione tra +// SurfTm e SurfTm. +// +// Modifiche : 13.11.20 LM Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "EgtDev/Include/EGkSurfTriMesh.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 + +//---------------------------------------------------------------------------- +// La funzione restituisce true in caso di collisone, false in caso di assenza +// di collisione o inconsistenza dei parametri di input. +// Le due superfici devono essere espresse nel medesimo sistema di riferimento. +// La distanza di sicurezza ha effetto solo se maggiore di EPS_SMALL. +EGK_EXPORT bool CDeClosedSurfTmClosedSurfTm( const SurfTriMesh& SurfA, const SurfTriMesh& SurfB, double dSafeDist) ; \ No newline at end of file diff --git a/EGkCDeConeTria.h b/EGkCDeConeFrustumClosedSurfTm.h similarity index 53% rename from EGkCDeConeTria.h rename to EGkCDeConeFrustumClosedSurfTm.h index 348e407..c74e185 100644 --- a/EGkCDeConeTria.h +++ b/EGkCDeConeFrustumClosedSurfTm.h @@ -1,30 +1,30 @@ //---------------------------------------------------------------------------- // EgalTech 2020-2020 //---------------------------------------------------------------------------- -// File : CDeConTria.cpp Data : 28.10.20 Versione : 2.2k1 -// Contenuto : Dichiarazione della verifica di collisione tra -// Cone e Triangle3d. +// File : EGkCDeConeClosedSurfTm.h Data : 09.11.20 Versione : +// Contenuto : Dichiarazione funzione verifica collisione tra +// Cone e Closed SurfTriMesh. // -// -// Modifiche : 28.10.20 LM Creazione modulo. +// Modifiche : 09.11.20 LM Creazione modulo. // // //---------------------------------------------------------------------------- #pragma once -#include "EgtDev/Include/EGkFrame3d.h" -#include "EgtDev/Include/EGkTriangle3d.h" +#include "/EgtDev/Include/EGkSurfTriMesh.h" //----------------------- Macro per import/export ---------------------------- #undef EGK_EXPORT #if defined( I_AM_EGK) // da definirsi solo nella DLL - #define EGK_EXPORT __declspec( dllexport) +#define EGK_EXPORT __declspec( dllexport) #else - #define EGK_EXPORT __declspec( dllimport) +#define EGK_EXPORT __declspec( dllimport) #endif //---------------------------------------------------------------------------- // Il sisitema di riferimento deve avere l'asse di simmetria del cono come asse Z e origine nel centro della base. // La distanza di sicurezza ha effetto solo se maggiore di epsilon, altrimenti è ignorata ed è ininfluente. -EGK_EXPORT bool CDeConeTria( const Frame3d& frCone, double dBaseRad, double dTopRad, double dHeight, double dSafeDist, const Triangle3d& trTria) ; +// Il sistema di riferimento del cono deve essere immerso in quello della superficie. +EGK_EXPORT bool CDeConeFrustumClosedSurfTm( const Frame3d& frCone, double dBaseRad, double dTopRad, double dHeight, + double dSafeDist, const ISurfTriMesh& Stm) ; \ No newline at end of file diff --git a/EGkCDeConvexTorusClosedSurfTm.h b/EGkCDeConvexTorusClosedSurfTm.h new file mode 100644 index 0000000..f414a50 --- /dev/null +++ b/EGkCDeConvexTorusClosedSurfTm.h @@ -0,0 +1,32 @@ +//---------------------------------------------------------------------------- +// EgalTech 2020-2020 +//---------------------------------------------------------------------------- +// File : EGkCDeConvexTorusTria.h Data : 18.11.20 Versione : +// Contenuto : Dichiarazione funzione verifica collisione tra +// toro convesso e SurfTriMesh. +// +// Modifiche : 18.11.20 LM Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "EgtDev/Include/EGkFrame3d.h" +#include "EgtDev/Include/EGkSurfTriMesh.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 + +//---------------------------------------------------------------------------- +// Il toro convesso è il disco limitato dalla sola parte esterna del toro. +// Raggio principale R1, raggio secondario R2. +// Il toro è posto nel piano XY del suo riferimento, centrato sull'origine. +// La funzione restituisce true in caso di collisione. +EGK_EXPORT bool CDeConvexTorusClosedSurfTm( const Frame3d& frTorusFrame, double dRad1, double dRad2, + double dSafeDist, const ISurfTriMesh& tmSurf) ; diff --git a/EGkCDeCylTria.h b/EGkCDeCylTria.h deleted file mode 100644 index be7e305..0000000 --- a/EGkCDeCylTria.h +++ /dev/null @@ -1,26 +0,0 @@ -//---------------------------------------------------------------------------- -// EgalTech 2020-2020 -//---------------------------------------------------------------------------- -// File : EGkCDeCylTria.h Data : 09.01.20 Versione : 2.2a2 -// Contenuto : Dichiarazione funzione verifica collisione tra -// Cylinder e Triangle3d. -// -// Modifiche : 09.01.20 DS Creazione modulo. -// -// -//---------------------------------------------------------------------------- - -#pragma once - -#include "/EgtDev/Include/EGkTriangle3d.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 bool CDeCylTria( const Frame3d& frCyl, double dH, double dR, double dSafeDist, const Triangle3d& trTria) ; diff --git a/EGkCDeGenPyramidClosedSurfTm.h b/EGkCDeGenPyramidClosedSurfTm.h new file mode 100644 index 0000000..49daebd --- /dev/null +++ b/EGkCDeGenPyramidClosedSurfTm.h @@ -0,0 +1,31 @@ +//---------------------------------------------------------------------------- +// EgalTech 2020-2020 +//---------------------------------------------------------------------------- +// File : EGkCDePyramidClosedSurfTm.h Data : 09.11.20 Versione : +// Contenuto : Dichiarazione funzione verifica collisione tra +// piramide e Closed SurfTriMesh. +// +// Modifiche : 09.11.20 LM Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "/EgtDev/Include/EGkSurfTriMesh.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 + +//---------------------------------------------------------------------------- +// Il sisitema di riferimento deve avere l'origine nel centro della base Base, asse X lungo +// un segmento della stessa e asse Z ortogonale alle basi e diretta verso la base Top. +// Il sistema di riferimento della piramide deve essere immerso in quello della superficie. +EGK_EXPORT bool CDeGenPyramidTria( const Frame3d& frPyrFrame, double dLenghtBaseX, double dLenghtBaseY, + double dLenghtTopX, double dLenghtTopY, double dHeight, + double dSafeDist, const ISurfTriMesh& Stm) ; \ No newline at end of file diff --git a/EGkCDePyramidTria.h b/EGkCDePyramidTria.h deleted file mode 100644 index ba53602..0000000 --- a/EGkCDePyramidTria.h +++ /dev/null @@ -1,31 +0,0 @@ -// ---------------------------------------------------------------------------- -// EgalTech 2020-2020 -//---------------------------------------------------------------------------- -// File : CDePyramidTria.cpp Data : 29.10.20 Versione : -// Contenuto : Dichiarazion della verifica di collisione tra -// Pyramid e Triangle3d. -// -// -// Modifiche :29.10.20 LM Creazione modulo. -// -// -//---------------------------------------------------------------------------- - -#pragma once - -#include "EgtDev/Include/EGkFrame3d.h" -#include "EgtDev/Include/EGkTriangle3d.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 - -//---------------------------------------------------------------------------- -// Il sisitema di riferimento deve avere l'origine nel centro della base Base, asse X lungo -// un segmento della stessa e asse Z ortogonale alle basi e diretta verso la base Top. -EGK_EXPORT bool CDePyramidTria( const Frame3d& frPyrFrame, double dLenghtBaseX, double dLenghtBaseY, double dLenghtTopX, double dLenghtTopY, - double dHeight, double dSafeDist, const Triangle3d& trTria) ; diff --git a/EGkCDeSpheTria.h b/EGkCDeSpheTria.h deleted file mode 100644 index f4b650e..0000000 --- a/EGkCDeSpheTria.h +++ /dev/null @@ -1,26 +0,0 @@ -//---------------------------------------------------------------------------- -// EgalTech 2020-2020 -//---------------------------------------------------------------------------- -// File : EGkCDeSpheTria.h Data : 09.01.20 Versione : 2.2a2 -// Contenuto : Dichiarazione funzione verifica collisione tra -// Sphere e Triangle3d. -// -// Modifiche : 09.01.20 DS Creazione modulo. -// -// -//---------------------------------------------------------------------------- - -#pragma once - -#include "/EgtDev/Include/EGkTriangle3d.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 bool CDeSpheTria( const Point3d& ptCen, double dR, double dSafeDist, const Triangle3d& trTria) ; diff --git a/EGkCDeTriaTria.h b/EGkCDeTriaTria.h deleted file mode 100644 index 90ef768..0000000 --- a/EGkCDeTriaTria.h +++ /dev/null @@ -1,27 +0,0 @@ -//---------------------------------------------------------------------------- -// EgalTech 2020-2020 -//---------------------------------------------------------------------------- -// File : CDeTriaTria.cpp Data : 05.11.20 Versione : 2.2k1 -// Contenuto : Dichiarazione della verifica di collisione tra due Triangle3d. -// -// -// -// Modifiche : 05.11.20 LM Creazione modulo. -// -// -//---------------------------------------------------------------------------- - -#pragma once - -#include "EgtDev/Include/EGkTriangle3d.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 bool CDeTriaTria( const Triangle3d& trTriaA, const Triangle3d& trTriaB) ; diff --git a/EGkDistPointSurfTm.h b/EGkDistPointSurfTm.h index 072a497..f9112e1 100644 --- a/EGkDistPointSurfTm.h +++ b/EGkDistPointSurfTm.h @@ -39,6 +39,8 @@ class DistPointSurfTm { return IsEpsilon( EPS_ZERO) ; } EGK_EXPORT bool GetMinDistPoint( Point3d& ptMinDistPoint) ; EGK_EXPORT bool GetMinDistTriaIndex( int& nMinDistTriaIndex) ; + EGK_EXPORT bool IsPointInside( void) + { return m_bIsInside ; } private : void Calculate( const Point3d& ptP, const ISurfTriMesh& tmSurf) ; @@ -47,4 +49,5 @@ class DistPointSurfTm double m_dDist ; Point3d m_ptMinDistPoint ; int m_nMinDistTriaIndex ; + bool m_bIsInside ; } ; diff --git a/EGkVolZmap.h b/EGkVolZmap.h index f50cf44..c30cff8 100644 --- a/EGkVolZmap.h +++ b/EGkVolZmap.h @@ -83,10 +83,14 @@ class __declspec( novtable) IVolZmap : public IGeoObj virtual bool AvoidBox( const Frame3d& frBox, const Vector3d& vtDiag, double dSafeDist, bool bPrecise = false) const = 0 ; virtual bool AvoidSphere( const Point3d& ptCenter, double dRad, double dSafeDist, bool bPrecise = false) const = 0 ; virtual bool AvoidCylinder( const Frame3d& frCyl, double dH, double dR, double dSafeDist, bool bPrecise = false) const = 0 ; - virtual bool AvoidTruncatedCone( const Point3d& ptBase, const Vector3d vtSymmetyAx, - double dRadTop, double dRadBot, double dHeight, double dSafeDist, bool bPrecise = false) const = 0 ; - virtual bool AvoidTruncatedPyramid( const Point3d& ptBase, const Vector3d& vtAxZ, const Vector3d& vtAxX, - double dSegTop, double dSegBot, double dHeight, double dSafeDist, bool bPrecise = false) const = 0 ; + virtual bool AvoidTruncatedCone( const Frame3d& frConeFrame, double dRadTop, double dRadBot, double dHeight, + double dSafeDist, bool bPrecise = false) const = 0 ; + virtual bool AvoidTruncatedPyramid( const Frame3d& frGenPyrFrame, double dLenghtBaseX, double dLenghtBaseY, + double dLenghtTopX, double dLenghtTopY, double dHeight, + double dSafeDist, bool bPrecise = false) const = 0 ; + virtual bool AvoidTorus( const Frame3d& frTorusFrame, double dRadMax, double dRadMin, + double dSafeDist, bool bPrecise = false) const = 0 ; + virtual bool AvoidSurfTm( const ISurfTriMesh& tmSurf, double dSafeDist, bool bPrecise = false) const = 0 ; virtual bool Cut( const Plane3d& plPlane) = 0 ; virtual bool Compact( void) = 0 ; virtual int GetPartCount( void) const = 0 ;