EgtGeomKernel :

- sistemazioni varie legate a scalature per aumentare la precisione.
This commit is contained in:
Dario Sassi
2025-11-24 10:05:39 +01:00
parent 739c17b4b6
commit 61a5e53351
6 changed files with 14 additions and 18 deletions
+1 -1
View File
@@ -142,7 +142,7 @@ IntersLineSurfBz( const Point3d& ptL, const Vector3d& vtL, double dLen, const IS
pSurfTm->GetTriangle( InfoTm.nT, nVert) ;
double dU0, dV0 ;
pSurfTm->GetVertexParam( nVert[0], dU0, dV0) ;
ptSP = ptSP + Point3d(dU0, dV0, 0) ;
ptSP = ptSP + Point3d( dU0, dV0, 0) ;
if ( ! RefineIntersNewton( ptL,vtL, dLen, bFinite, pSurfBz, ptSP, ptIBz))
return false ;
}
+6 -3
View File
@@ -3021,9 +3021,12 @@ SurfBezier::UnprojectPointFromStm( int nT, const Point3d& ptI, Point3d& ptSP, in
int nVert[3] ;
pSurfTm->GetTriangle( nTriaIndex, nVert) ;
PNTVECTOR vPtPa(3) ;
pSurfTm->GetVertexParam( nVert[0], vPtPa[0].x,vPtPa[0].y, false) ;
pSurfTm->GetVertexParam( nVert[1], vPtPa[1].x,vPtPa[1].y, false) ;
pSurfTm->GetVertexParam( nVert[2], vPtPa[2].x,vPtPa[2].y, false) ;
pSurfTm->GetVertexParam( nVert[0], vPtPa[0].x, vPtPa[0].y) ;
vPtPa[0] *= SBZ_TREG_COEFF ;
pSurfTm->GetVertexParam( nVert[1], vPtPa[1].x, vPtPa[1].y) ;
vPtPa[1] *= SBZ_TREG_COEFF ;
pSurfTm->GetVertexParam( nVert[2], vPtPa[2].x, vPtPa[2].y) ;
vPtPa[2] *= SBZ_TREG_COEFF ;
PNTVECTOR vPT(3) ;
pSurfTm->GetVertex( nVert[0], vPT[0]) ;
pSurfTm->GetVertex( nVert[1], vPT[1]) ;
+4 -11
View File
@@ -512,21 +512,14 @@ SurfTriMesh::GetVertex( int nId, Point3d& ptP) const
//----------------------------------------------------------------------------
bool
SurfTriMesh::GetVertexParam( int nId, double& dU, double& dV, bool bDownScaled) const
SurfTriMesh::GetVertexParam( int nId, double& dU, double& dV) const
{
// verifico esistenza del vertice
if ( nId < 0 || nId >= GetVertexSize() || m_vVert[nId].nIdTria == SVT_DEL)
return false ;
// recupero i dati
int SBZ_COEFF = 1024 ;
if( bDownScaled) {
dU = m_vVert[nId].dU / SBZ_COEFF ;
dV = m_vVert[nId].dV / SBZ_COEFF ;
}
else {
dU = m_vVert[nId].dU ;
dV = m_vVert[nId].dV ;
}
// recupero i dati (verso l'esterno sempre in 0..1..2..3..)
dU = m_vVert[nId].dU / PREC_SCALE_COEFF ;
dV = m_vVert[nId].dV / PREC_SCALE_COEFF ;
return true ;
}
+1 -1
View File
@@ -277,7 +277,7 @@ class SurfTriMesh : public ISurfTriMesh, public IGeoObjRW
bool GetShowEdges( void) const override
{ return m_bShowEdges ; }
bool GetVertex( int nId, Point3d& ptP) const override ;
bool GetVertexParam( int nId, double& dU, double& dV, bool bDownScaled = true) const override ;
bool GetVertexParam( int nId, double& dU, double& dV) const override ;
int GetFirstVertex( Point3d& ptP) const override ;
int GetNextVertex( int nId, Point3d& ptP) const override ;
bool GetTriangle( int nId, int nIdVert[3]) const override ;
+1 -1
View File
@@ -41,7 +41,7 @@
using namespace std ;
//----------------------------------------------------------------------------
const double BOOLEAN_SCALE = 1024 ;
const double BOOLEAN_SCALE = PREC_SCALE_COEFF ;
//----------------------------------------------------------------------------
bool
+1 -1
View File
@@ -26,7 +26,7 @@
using namespace std ;
//----------------------------------------------------------------------------
const double CUT_SCALE = 1024 ;
const double CUT_SCALE = PREC_SCALE_COEFF ;
//----------------------------------------------------------------------------
bool