EgtGeomKernel 1.5g3 :
- aggiunto concatenamento di Curve - aggiunta modifica di punto iniziale e finale di Curve - aggiunta Add a curva composita con tolleranza - aggiunto calcolo distanza approssimativa tra due punti (senza radice quadrata) - riordinate funzioni per modifica e copia curve.
This commit is contained in:
+80
-2
@@ -251,9 +251,9 @@ PolyLine::GetLastUPoint( double* pdPar, Point3d* pptP) const
|
||||
return false ;
|
||||
|
||||
if ( pdPar != nullptr)
|
||||
*pdPar = m_lUPoints.back().first ;
|
||||
*pdPar = m_iter->first ;
|
||||
if ( pptP != nullptr)
|
||||
*pptP = m_lUPoints.back().second ;
|
||||
*pptP = m_iter->second ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
@@ -325,6 +325,58 @@ PolyLine::GetNextULine( double* pdIni, Point3d* pptIni, double* pdFin, Point3d*
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
PolyLine::GetLastULine( double* pdIni, Point3d* pptIni, double* pdFin, Point3d* pptFin) const
|
||||
{
|
||||
// parametro e punto finali
|
||||
m_iter = m_lUPoints.end() ;
|
||||
if ( m_iter == m_lUPoints.begin())
|
||||
return false ;
|
||||
-- m_iter ;
|
||||
if ( m_iter == m_lUPoints.end())
|
||||
return false ;
|
||||
if ( pdFin != nullptr)
|
||||
*pdFin = m_iter->first ;
|
||||
if ( pptFin != nullptr)
|
||||
*pptFin = m_iter->second ;
|
||||
|
||||
// parametro e punto iniziali
|
||||
if ( m_iter == m_lUPoints.begin())
|
||||
return false ;
|
||||
-- m_iter ;
|
||||
if ( pdIni != nullptr)
|
||||
*pdIni = m_iter->first ;
|
||||
if ( pptIni != nullptr)
|
||||
*pptIni = m_iter->second ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
PolyLine::GetPrevULine( double* pdIni, Point3d* pptIni, double* pdFin, Point3d* pptFin) const
|
||||
{
|
||||
// parametro e punto finali
|
||||
if ( m_iter == m_lUPoints.end())
|
||||
return false ;
|
||||
if ( pdFin != nullptr)
|
||||
*pdFin = m_iter->first ;
|
||||
if ( pptFin != nullptr)
|
||||
*pptFin = m_iter->second ;
|
||||
|
||||
// parametro e punto iniziali
|
||||
if ( m_iter == m_lUPoints.begin())
|
||||
return false ;
|
||||
-- m_iter ;
|
||||
if ( pdIni != nullptr)
|
||||
*pdIni = m_iter->first ;
|
||||
if ( pptIni != nullptr)
|
||||
*pptIni = m_iter->second ;
|
||||
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
PolyLine::NewellPlane( Plane3d& plPlane, double& dArea) const
|
||||
@@ -387,6 +439,32 @@ PolyLine::IsPlanar( Plane3d& plPlane, double& dArea, double dToler) const
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
PolyLine::GetApproxLength( double& dLen) const
|
||||
{
|
||||
// calcolo la lunghezza approssimata come somma di ogni singolo tratto lineare
|
||||
dLen = 0 ;
|
||||
Point3d ptIni, ptFin ;
|
||||
for ( bool bFound = GetFirstLine( ptIni, ptFin) ; bFound ; bFound = GetNextLine( ptIni, ptFin)) {
|
||||
dLen += ApproxDist( ptIni, ptFin) ;
|
||||
}
|
||||
return ( dLen > EPS_ZERO) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
PolyLine::GetLength( double& dLen) const
|
||||
{
|
||||
// calcolo la lunghezza come somma di ogni singolo tratto lineare
|
||||
dLen = 0 ;
|
||||
Point3d ptIni, ptFin ;
|
||||
for ( bool bFound = GetFirstLine( ptIni, ptFin) ; bFound ; bFound = GetNextLine( ptIni, ptFin)) {
|
||||
dLen += Dist( ptIni, ptFin) ;
|
||||
}
|
||||
return ( dLen > EPS_ZERO) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
PolyLine::GetAreaXY( double& dArea) const
|
||||
|
||||
Reference in New Issue
Block a user