EgtGeomKernel 1.5a6 : prima versione di scalatura non uniforme,

aggiunto comando COUNTER in tsc.
This commit is contained in:
Dario Sassi
2014-01-19 11:19:56 +00:00
parent adfa66cbb0
commit 4ebb43bf1e
27 changed files with 124 additions and 64 deletions
+6 -11
View File
@@ -197,11 +197,11 @@ GdbGroup::Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dCosAng, dou
//----------------------------------------------------------------------------
bool
GdbGroup::Scale( const Point3d& ptCen, double dCoeffX, double dCoeffY, double dCoeffZ)
GdbGroup::Scale( const Frame3d& frRef, double dCoeffX, double dCoeffY, double dCoeffZ)
{
bool bOk ;
bool bUniform ;
Point3d ptCenLoc ;
Frame3d frRefLoc ;
GdbNode* pGdbNode ;
@@ -210,20 +210,15 @@ GdbGroup::Scale( const Point3d& ptCen, double dCoeffX, double dCoeffY, double dC
// determino se la scalatura è uniforme
bUniform = fabs( dCoeffX - dCoeffY) < EPS_SMALL && fabs( dCoeffX - dCoeffZ) < EPS_SMALL ;
// se la scalatura è uniforme, basta portare il centro nel riferimento del gruppo
//if ( bUniform) {
ptCenLoc = ptCen ;
ptCenLoc.ToLoc( m_gfrFrame.m_frF) ;
// }
//// altrimenti si deve propagare il riferimento rispetto al centro
// else
// return false ; // !!!!! TODO !!!!!
// basta portare il riferimento di scalatura nel riferimento del gruppo
frRefLoc = frRef ;
frRefLoc.ToLoc( m_gfrFrame.m_frF) ;
// ciclo sui nodi
bOk = true ;
pGdbNode = GetFirstNode() ;
while ( pGdbNode != nullptr) {
if ( ! pGdbNode->Scale( ptCenLoc, dCoeffX, dCoeffY, dCoeffZ))
if ( ! pGdbNode->Scale( frRefLoc, dCoeffX, dCoeffY, dCoeffZ))
bOk = false ;
pGdbNode = pGdbNode->GetNext() ;
}