EgtGeomKernel 1.5e3 :

- correzioni a Trimesh
- modifiche varie per gestione punti notevoli
- creazione linee con DirLen e con VersLen
- crezione curve composite da vettori di punti anche con bulge.
This commit is contained in:
Dario Sassi
2014-05-12 08:58:11 +00:00
parent ebd6b8b4a5
commit ef75e1d83a
19 changed files with 1283 additions and 192 deletions
+71 -4
View File
@@ -1,13 +1,13 @@
//----------------------------------------------------------------------------
// EgalTech 2013-2013
// EgalTech 2014-2014
//----------------------------------------------------------------------------
// File : CurveLine.cpp Data : 16.04.13 Versione : 1.1d1
// File : CurveLine.cpp Data : 06.05.14 Versione : 1.5e3
// Contenuto : Implementazione della classe Segmento di Linea.
//
//
//
// Modifiche : 16.04.13 DS Creazione modulo.
//
// 06.05.14 DS Aggiunta Set per Pini, vtDir, Len e per Pini, AngDir, Len.
//
//----------------------------------------------------------------------------
@@ -51,6 +51,42 @@ CurveLine::Set( const Point3d& ptStart, const Point3d& ptEnd)
return Validate() ;
}
//----------------------------------------------------------------------------
bool
CurveLine::Set( const Point3d& ptStart, const Vector3d& vtDir, double dLen)
{
// assegno i dati
m_PtStart = ptStart ;
Vector3d vtDelta = vtDir ;
if ( ! vtDelta.Normalize())
return false ;
vtDelta *= dLen ;
m_PtEnd = ptStart + vtDelta ;
m_nStatus = TO_VERIFY ;
// imposto ricalcolo della grafica
m_OGrMgr.Reset() ;
return Validate() ;
}
//----------------------------------------------------------------------------
bool
CurveLine::Set( const Point3d& ptStart, double dDirAngDeg, double dLen)
{
// assegno i dati
m_PtStart = ptStart ;
Vector3d vtDelta ;
vtDelta.FromPolar( dLen, dDirAngDeg) ;
m_PtEnd = ptStart + vtDelta ;
m_nStatus = TO_VERIFY ;
// imposto ricalcolo della grafica
m_OGrMgr.Reset() ;
return Validate() ;
}
//----------------------------------------------------------------------------
CurveLine*
CurveLine::Clone( void) const
@@ -108,7 +144,11 @@ CurveLine::Dump( string& sOut, const char* szNewLine) const
// parametri : punti iniziale e finale
sOut += "P1(" + ToString( m_PtStart, 3) + ")" + szNewLine ;
sOut += "P2(" + ToString( m_PtEnd, 3) + ")" + szNewLine ;
// altri dati : angolo vert, angolo orizz, lunghezza
double dLen, dAngVertDeg, dAngOrizzDeg ;
( m_PtEnd - m_PtStart).ToSpherical( &dLen, &dAngVertDeg, &dAngOrizzDeg) ;
sOut += "Av=" + ToString( dAngVertDeg, 3) + " Ao=" + ToString( dAngOrizzDeg, 3) +
" L=" + ToString( dLen, 3) + szNewLine ;
return true ;
}
@@ -216,6 +256,33 @@ CurveLine::GetEndPoint( Point3d& ptEnd) const
return true ;
}
//----------------------------------------------------------------------------
bool
CurveLine::GetMidPoint( Point3d& ptMid) const
{
// verifico lo stato
if ( m_nStatus != OK)
return false ;
// assegno il punto
ptMid = Media( m_PtStart, m_PtEnd, 0.5) ;
return true ;
}
//----------------------------------------------------------------------------
bool
CurveLine::GetStartDir( Vector3d& vtDir) const
{
// verifico lo stato
if ( m_nStatus != OK)
return false ;
// calcolo la direzione
vtDir = m_PtEnd - m_PtStart ;
return vtDir.Normalize() ;
}
//----------------------------------------------------------------------------
bool
CurveLine::GetPointD1D2( double dU, Side nS, Point3d& ptPos, Vector3d* pvtDer1, Vector3d* pvtDer2) const