EgtGeomKernel :

- in Polyline aggiunte TempProp e funzioni di Set e  Get relative
- in ProjectCurveOnSurfTm migliorato calcolo normale nei punti proiettati in
- altre piccole migliorie nelle inizializzazioni di oggetti geometrici.
This commit is contained in:
Dario Sassi
2023-11-22 20:15:56 +01:00
parent 91dca91153
commit 296b274190
7 changed files with 18 additions and 19 deletions
+2 -3
View File
@@ -2684,7 +2684,7 @@ AddZigZag( const ISurfFlatRegion* pSrfPock, double dRad, double dStep, double dA
// Offset della regione per curva ZigZag
double dOffs = dRad ;
double dExtra = min( 0.1 * ( 2.0 * dRad), 2.0) ;
double dExtra = 0 ;
// ciclo su tutti i chunks della superificie originale
for ( int c = 0 ; c < pSrfPock->GetChunkCount() ; ++ c) {
@@ -2815,7 +2815,7 @@ AddOneWay( const ISurfFlatRegion* pSrfPock, double dRad, double dStep, double dA
{
double dOffs = dRad ;
double dExtra = min( 0.1 * ( 2. * dRad), 1.0) ;
double dExtra = 0 ;
// copio la regione da svuotare
PtrOwner<ISurfFlatRegion> pSrfToPock( pSrfPock->Clone()) ;
@@ -2921,7 +2921,6 @@ CalcPocketing( const ISurfFlatRegion *pSfr, double dRad, double dStep, double dA
{
// controllo dei parametri
if ( pSfr == nullptr || ! pSfr->IsValid() ||
dRad < EPS_SMALL ||
dStep < EPS_SMALL ||
( nType != POCKET_SUB_ZIGZAG && nType != POCKET_SUB_ONEWAY && nType != POCKET_SUB_SPIRALIN && nType != POCKET_SUB_SPIRALOUT))
return false ;
+1 -3
View File
@@ -61,10 +61,8 @@ class ArcApproxer
//----------------------------------------------------------------------------
CurveArc::CurveArc( void)
: m_nStatus( TO_VERIFY), m_PtCen(), m_VtN(), m_VtS(), m_dRad(),
m_dAngCenDeg(), m_dDeltaN(), m_VtExtr(), m_dThick()
m_dAngCenDeg(), m_dDeltaN(), m_VtExtr(), m_dThick(), m_nTempProp{0,0}
{
m_nTempProp[0] = 0 ;
m_nTempProp[1] = 0 ;
}
//----------------------------------------------------------------------------
+1 -3
View File
@@ -45,10 +45,8 @@ GEOOBJ_REGISTER( CRV_BEZIER, NGE_C_BEZ, CurveBezier) ;
//----------------------------------------------------------------------------
CurveBezier::CurveBezier( void)
: m_nStatus( TO_VERIFY), m_nDeg(), m_bRat( false), m_dParSing( -2),
m_VtExtr(), m_dThick()
m_VtExtr(), m_dThick(), m_nTempProp{0,0}
{
m_nTempProp[0] = 0 ;
m_nTempProp[1] = 0 ;
}
//----------------------------------------------------------------------------
+1 -3
View File
@@ -42,10 +42,8 @@ GEOOBJ_REGISTER( CRV_COMPO, NGE_C_CMP, CurveComposite) ;
//----------------------------------------------------------------------------
CurveComposite::CurveComposite( void)
: m_nStatus( TO_VERIFY), m_VtExtr(), m_dThick(), m_ptStart(), m_Iter( m_CrvSmplS.end())
: m_nStatus( TO_VERIFY), m_VtExtr(), m_dThick(), m_ptStart(), m_Iter( m_CrvSmplS.end()), m_nTempProp{0,0}
{
m_nTempProp[0] = 0 ;
m_nTempProp[1] = 0 ;
}
//----------------------------------------------------------------------------
+1 -3
View File
@@ -30,10 +30,8 @@ GEOOBJ_REGISTER( CRV_LINE, NGE_C_LIN, CurveLine) ;
//----------------------------------------------------------------------------
CurveLine::CurveLine( void)
: m_nStatus( TO_VERIFY), m_PtStart(), m_PtEnd(), m_VtExtr(), m_dThick()
: m_nStatus( TO_VERIFY), m_PtStart(), m_PtEnd(), m_VtExtr(), m_dThick(), m_nTempProp{0,0}
{
m_nTempProp[0] = 0 ;
m_nTempProp[1] = 0 ;
}
//----------------------------------------------------------------------------
+1 -2
View File
@@ -28,9 +28,8 @@ using namespace std ;
//----------------------------------------------------------------------------
PolyLine::PolyLine( void)
: m_nRejected( 0), m_iter( m_lUPoints.end()), m_nTempProp{0,0}
{
m_nRejected = 0 ;
m_iter = m_lUPoints.end() ;
}
//----------------------------------------------------------------------------
+11 -2
View File
@@ -62,16 +62,25 @@ ProjectCurveOnSurfTm( const ICurve& crCrv, const ISurfTriMesh& tmSurf, const Vec
ILSIVECTOR vIntRes ;
intPLSTM.GetInters( ptL, 1, vIntRes, false) ;
if ( vIntRes.size() > 0) {
// calcolo il punto
int nI = int( vIntRes.size()) - 1 ;
Point3d ptInt ;
if ( vIntRes[nI].nILTT == ILTT_SEGM || vIntRes[nI].nILTT == ILTT_SEGM_ON_EDGE)
ptInt = vIntRes[nI].ptI2 ;
else
ptInt = vIntRes[nI].ptI ;
Triangle3d trTria ;
// calcolo la normale (si calcola smooth, in caso di errore si prende quella del triangolo)
Triangle3dEx trTria ;
if ( ! tmSurf.GetTriangle( vIntRes[nI].nT, trTria))
return false ;
vMyPt5ax.emplace_back( ptInt, trTria.GetN(), dU, 1) ;
Vector3d vtN ;
double dU, dV, dW ;
if ( BarycentricCoord( ptInt, trTria, dU, dV, dW))
vtN = dU * trTria.GetVertexNorm( 0) + dV * trTria.GetVertexNorm( 1) + dW * trTria.GetVertexNorm( 2) ;
if ( ! vtN.Normalize())
vtN = trTria.GetN() ;
// aggiungo al vettore dei proiettati
vMyPt5ax.emplace_back( ptInt, vtN, dU, 1) ;
}
bFound = PL.GetNextUPoint( &dU, &ptP) ;
}