EgtGeomKernel 1.5a6 : prima versione di scalatura non uniforme,
aggiunto comando COUNTER in tsc.
This commit is contained in:
+6
-11
@@ -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() ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user