X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Profile.cxx;h=9832cadb3a4a47fa95a35795a1d2ec5da90c2af5;hb=deed826b2d6c39ba2ed410108cdf54d64cded321;hp=4374e043bdb59cfe61ceb3ad407242bebe7a3fd3;hpb=7e825ec456c9331ef0df1cb59865cc55f0d8516a;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Profile.cxx b/src/HYDROData/HYDROData_Profile.cxx index 4374e043..9832cadb 100755 --- a/src/HYDROData/HYDROData_Profile.cxx +++ b/src/HYDROData/HYDROData_Profile.cxx @@ -196,40 +196,32 @@ Handle(HYDROData_ProfileUZ) HYDROData_Profile::GetProfileUZ( const bool theIsCre int HYDROData_Profile::NbPoints() const { Handle(HYDROData_ProfileUZ) aProfileUZ = GetProfileUZ( false ); - return aProfileUZ.IsNull() ? 0 : aProfileUZ->getNbPoints(); + return aProfileUZ.IsNull() ? 0 : aProfileUZ->NbPoints(); } void HYDROData_Profile::RemovePoints() { Handle(HYDROData_ProfileUZ) aProfileUZ = GetProfileUZ( false ); if ( !aProfileUZ.IsNull() ) - aProfileUZ->clear(); + aProfileUZ->RemoveSections(); } -void HYDROData_Profile::SetParametricPoints( const CurveCreator::Coordinates& theCoords ) +void HYDROData_Profile::SetParametricPoints( const HYDROData_ProfileUZ::PointsList& thePoints ) { RemovePoints(); Handle(HYDROData_ProfileUZ) aProfileUZ = GetProfileUZ(); - - CurveCreator::Coordinates::const_iterator aBegIter = theCoords.begin(); - CurveCreator::Coordinates::const_iterator anEndIter = theCoords.end(); - while ( aBegIter != anEndIter ) + for ( int i = 1, n = thePoints.Length(); i <= n ; ++i ) { - const CurveCreator::TypeCoord& aCoordX = *aBegIter++; - if ( aBegIter == anEndIter ) - break; - - const CurveCreator::TypeCoord& aCoordY = *aBegIter++; - - aProfileUZ->addPoint( aCoordX, aCoordY, 0 ); + const HYDROData_ProfileUZ::Point& aPoint = thePoints.Value( i ); + aProfileUZ->AddPoint( 0, aPoint ); } } -CurveCreator::Coordinates HYDROData_Profile::GetParametricPoints() const +HYDROData_ProfileUZ::PointsList HYDROData_Profile::GetParametricPoints() const { Handle(HYDROData_ProfileUZ) aProfileUZ = GetProfileUZ( false ); - return aProfileUZ.IsNull() ? CurveCreator::Coordinates() : aProfileUZ->getPoints(); + return aProfileUZ.IsNull() ? HYDROData_ProfileUZ::PointsList() : aProfileUZ->GetPoints(); } void HYDROData_Profile::SetProfilePoints( const ProfilePoints& thePoints ) @@ -253,7 +245,8 @@ void HYDROData_Profile::SetProfilePoints( const ProfilePoints& thePoints ) double aDistance = gp_Pnt2d( aFirstPoint ).Distance( aPointXY ); - aProfileUZ->addPoint( 0, aDistance, aPoint.Z() ); + HYDROData_ProfileUZ::Point aParPoint( aDistance, aPoint.Z() ); + aProfileUZ->AddPoint( 0, aParPoint ); } SetFirstPoint( aFirstPoint ); @@ -268,15 +261,12 @@ HYDROData_Profile::ProfilePoints HYDROData_Profile::GetProfilePoints() const if ( !GetFirstPoint( aFirstPoint ) || !GetLastPoint( aLastPoint ) ) return aResPoints; - CurveCreator::Coordinates aParametricPoints = GetParametricPoints(); - if ( aParametricPoints.size() < 4 ) + HYDROData_ProfileUZ::PointsList aParametricPoints = GetParametricPoints(); + if ( aParametricPoints.Length() < 2 ) return aResPoints; - CurveCreator::Coordinates::const_iterator aBegIter = aParametricPoints.begin(); - CurveCreator::Coordinates::const_iterator anEndIter = aParametricPoints.end()--; - - gp_Pnt2d aFirstParPoint( *aBegIter++, *aBegIter++ ); - gp_Pnt2d aLastParPoint( *anEndIter--, *anEndIter ); + const HYDROData_ProfileUZ::Point& aFirstParPoint = aParametricPoints.First(); + const HYDROData_ProfileUZ::Point& aLastParPoint = aParametricPoints.Last(); double aGeoDistance = gp_Pnt2d( aFirstPoint ).Distance( aLastPoint ); double aParCommonDist = gp_Pnt2d( aFirstParPoint.X(), 0 ).Distance( gp_Pnt2d( aLastParPoint.X(), 0 ) ); @@ -285,13 +275,11 @@ HYDROData_Profile::ProfilePoints HYDROData_Profile::GetProfilePoints() const aResPoints.Append( ProfilePoint( aFirstPoint.X(), aFirstPoint.Y(), aFirstParPoint.Y() ) ); // Compute all other points - while ( aBegIter != anEndIter ) + for ( int i = 2, n = aParametricPoints.Length(); i < n ; ++i ) { - const CurveCreator::TypeCoord& aCoordU = *aBegIter++; - if ( aBegIter == anEndIter ) - break; + const HYDROData_ProfileUZ::Point& aParPoint = aParametricPoints.Value( i ); - double aParPointDist = gp_Pnt2d( aFirstParPoint.X(), 0 ).Distance( gp_Pnt2d( aCoordU, 0 ) ); + double aParPointDist = gp_Pnt2d( aFirstParPoint.X(), 0 ).Distance( gp_Pnt2d( aParPoint.X(), 0 ) ); double aParLen = ( aParPointDist / aParCommonDist ) * aGeoDistance; @@ -300,10 +288,7 @@ HYDROData_Profile::ProfilePoints HYDROData_Profile::GetProfilePoints() const double aParX = ( aFirstPoint.X() + aRatio * aLastPoint.X() ) / ( 1 + aRatio ); double aParY = ( aFirstPoint.Y() + aRatio * aLastPoint.Y() ) / ( 1 + aRatio ); - - const CurveCreator::TypeCoord& aCoordZ = *aBegIter++; - - ProfilePoint aCompPoint( aParX, aParY, aCoordZ ); + ProfilePoint aCompPoint( aParX, aParY, aParPoint.Y() ); aResPoints.Append( aCompPoint ); } @@ -414,8 +399,8 @@ bool HYDROData_Profile::ImportFromFile( OSD_File& theFile ) bool anIsParametric = false; bool anIsGeoref = false; - CurveCreator::Coordinates aPointsUZ; - ProfilePoints aPointsXYZ; + HYDROData_ProfileUZ::PointsList aPointsUZ; + ProfilePoints aPointsXYZ; double aPrevVal = -DBL_MAX; while ( !theFile.IsAtEnd() ) @@ -457,8 +442,8 @@ bool HYDROData_Profile::ImportFromFile( OSD_File& theFile ) break; } - aPointsUZ.push_back( aCoordX ); - aPointsUZ.push_back( aCoordY ); + HYDROData_ProfileUZ::Point aPoint( aCoordX, aCoordY ); + aPointsUZ.Append( aPoint ); aPrevVal = aCoordX; } @@ -477,7 +462,7 @@ bool HYDROData_Profile::ImportFromFile( OSD_File& theFile ) } } - aRes = aRes && ( anIsParametric && !aPointsUZ.empty() || + aRes = aRes && ( anIsParametric && !aPointsUZ.IsEmpty() || anIsGeoref && !aPointsXYZ.IsEmpty() ); if ( aRes ) {