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:
+71
-4
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user