]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
container for altitude points is replaced to vector
authorasl <asl@opencascade.com>
Wed, 7 Sep 2016 08:59:11 +0000 (11:59 +0300)
committerasl <asl@opencascade.com>
Wed, 7 Sep 2016 08:59:11 +0000 (11:59 +0300)
src/HYDROData/HYDROData_Bathymetry.cxx
src/HYDROData/HYDROData_Bathymetry.h
src/HYDROData/HYDROData_DTM.h
src/HYDROData/HYDROData_Document.cxx
src/HYDROData/HYDROData_Document.h
src/HYDROData/HYDROData_ShapeFile.cxx
src/HYDROData/HYDROData_SinusX.cxx
src/HYDROGUI/HYDROGUI_ShapeBathymetry.cxx
src/HYDROGUI/HYDROGUI_VTKPrsBathymetry.cxx
src/HYDRO_tests/test_HYDROData_Bathymetry.cxx

index 22b007881fef20d4642d656a9e322d08d02f42aa..19a11e70133c1da5a62a2a1675fc3b7a6b2475fb 100644 (file)
@@ -56,6 +56,8 @@
 #define _DEVDEBUG_
 #include "HYDRO_trace.hxx"
 
+const int BLOCK_SIZE = 1000;
+
 IMPLEMENT_STANDARD_HANDLE(HYDROData_Bathymetry, HYDROData_IAltitudeObject)
 IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Bathymetry, HYDROData_IAltitudeObject)
 
@@ -97,25 +99,25 @@ QStringList HYDROData_Bathymetry::DumpToPython( const QString& thePyScriptPath,
   return aResList;
 }
 
-void HYDROData_Bathymetry::SetAltitudePoints( const AltitudePoints& thePoints )
+void HYDROData_Bathymetry::SetAltitudePoints( const HYDROData_Bathymetry::AltitudePoints& thePoints )
 {
   RemoveAltitudePoints();
 
-  if ( thePoints.IsEmpty() )
+  if ( thePoints.empty() )
     return;
 
   // Save coordinates
   Handle(TDataStd_RealArray) aCoordsArray = 
-    TDataStd_RealArray::Set( myLab.FindChild( DataTag_AltitudePoints ), 0, thePoints.Length() * 3 - 1 );
+    TDataStd_RealArray::Set( myLab.FindChild( DataTag_AltitudePoints ), 0, thePoints.size() * 3 - 1 );
 
-  AltitudePoints::Iterator anIter( thePoints );
-  for ( int i = 0 ; anIter.More(); ++i, anIter.Next() )
+  HYDROData_Bathymetry::AltitudePoints::const_iterator anIter = thePoints.begin(), aLast = thePoints.end();
+  for ( int i = 0 ; anIter!=aLast; ++i, ++anIter )
   {
-    const AltitudePoint& aPoint = anIter.Value();
+    const HYDROData_Bathymetry::AltitudePoint& aPoint = *anIter;
 
-    aCoordsArray->SetValue( i * 3, aPoint.X() );
-    aCoordsArray->SetValue( i * 3 + 1, aPoint.Y() );
-    aCoordsArray->SetValue( i * 3 + 2, aPoint.Z() );
+    aCoordsArray->SetValue( i * 3, aPoint.X );
+    aCoordsArray->SetValue( i * 3 + 1, aPoint.Y );
+    aCoordsArray->SetValue( i * 3 + 2, aPoint.Z );
   }
 
   Changed( Geom_Z );
@@ -123,7 +125,7 @@ void HYDROData_Bathymetry::SetAltitudePoints( const AltitudePoints& thePoints )
 
 HYDROData_Bathymetry::AltitudePoints HYDROData_Bathymetry::GetAltitudePoints(bool IsConvertToGlobal) const
 {
-  AltitudePoints aPoints;
+  HYDROData_Bathymetry::AltitudePoints aPoints;
 
   TDF_Label aLabel = myLab.FindChild( DataTag_AltitudePoints, false );
   if ( aLabel.IsNull() )
@@ -134,19 +136,21 @@ HYDROData_Bathymetry::AltitudePoints HYDROData_Bathymetry::GetAltitudePoints(boo
     return aPoints;
 
   Handle(HYDROData_Document) aDoc = HYDROData_Document::Document( myLab );
+  int q = ( aCoordsArray->Upper() - aCoordsArray->Lower() + 1 ) / 3;
+  aPoints.reserve( q );
   for ( int i = aCoordsArray->Lower(), n = aCoordsArray->Upper(); i <= n; )
   {
     if ( i + 3 > n + 1 )
       break;
 
-    AltitudePoint aPoint;
-    aPoint.SetX( aCoordsArray->Value( i++ ) );
-    aPoint.SetY( aCoordsArray->Value( i++ ) );
-    aPoint.SetZ( aCoordsArray->Value( i++ ) );
+    HYDROData_Bathymetry::AltitudePoint aPoint;
+    aPoint.X = aCoordsArray->Value( i++ );
+    aPoint.Y = aCoordsArray->Value( i++ );
+    aPoint.Z = aCoordsArray->Value( i++ );
 
     if( IsConvertToGlobal )
-      aDoc->Transform( aPoint, false );
-    aPoints.Append( aPoint );
+      aDoc->Transform( aPoint.X, aPoint.Y, aPoint.Z, false );
+    aPoints.push_back( aPoint );
   }
 
   return aPoints;
@@ -256,57 +260,57 @@ void HYDROData_Bathymetry::RemoveAltitudePoints()
   }
 }
 
-void interpolateAltitudeForPoints( const gp_XY&                               thePoint,
+void interpolateAltitudeForPoints( const gp_XY&                   thePoint,
                                    const HYDROData_Bathymetry::AltitudePoint& theFirstPoint,
                                    const HYDROData_Bathymetry::AltitudePoint& theSecPoint,
                                    HYDROData_Bathymetry::AltitudePoint&       theResPoint,
-                                   const bool&                                theIsVertical )
+                                   const bool&                    theIsVertical )
 {
   double aCoordX = thePoint.X();
   double aCoordY = thePoint.Y();
 
   if ( theIsVertical )
   {
-    aCoordX = theFirstPoint.X();
+    aCoordX = theFirstPoint.X;
 
-    if ( !ValuesEquals( theFirstPoint.X(), theSecPoint.X() ) )
+    if ( !ValuesEquals( theFirstPoint.X, theSecPoint.X ) )
     {
       // Recalculate X coordinate by equation of line from two points
-      aCoordX = ( ( ( thePoint.Y() - theFirstPoint.Y() ) * ( theSecPoint.X() - theFirstPoint.X() ) ) /
-                  ( theSecPoint.Y() - theFirstPoint.Y() ) ) + theFirstPoint.X();
+      aCoordX = ( ( ( thePoint.Y() - theFirstPoint.Y ) * ( theSecPoint.X - theFirstPoint.X ) ) /
+                  ( theSecPoint.Y - theFirstPoint.Y ) ) + theFirstPoint.X;
     }
   }
   else
   {
-    aCoordY = theFirstPoint.Y();
+    aCoordY = theFirstPoint.Y;
 
-    if ( !ValuesEquals( theFirstPoint.Y(), theSecPoint.Y() ) )
+    if ( !ValuesEquals( theFirstPoint.Y, theSecPoint.Y ) )
     {
       // Recalculate y by equation of line from two points
-      aCoordY = ( ( ( thePoint.X() - theFirstPoint.X() ) * ( theSecPoint.Y() - theFirstPoint.Y() ) ) /
-                  ( theSecPoint.X() - theFirstPoint.X() ) ) + theFirstPoint.Y();
+      aCoordY = ( ( ( thePoint.X() - theFirstPoint.X ) * ( theSecPoint.Y - theFirstPoint.Y ) ) /
+                  ( theSecPoint.X - theFirstPoint.X ) ) + theFirstPoint.Y;
     }
   }
 
-  theResPoint.SetX( aCoordX );
-  theResPoint.SetY( aCoordY );
+  theResPoint.X = aCoordX;
+  theResPoint.Y = aCoordY;
 
   // Calculate coefficient for interpolation
-  double aLength = Sqrt( Pow( theSecPoint.Y() - theFirstPoint.Y(), 2 ) +
-                         Pow( theSecPoint.X() - theFirstPoint.X(), 2 ) );
+  double aLength = Sqrt( Pow( theSecPoint.Y - theFirstPoint.Y, 2 ) +
+                         Pow( theSecPoint.X - theFirstPoint.X, 2 ) );
 
   double aInterCoeff = 0;
   if ( aLength != 0 )
-   aInterCoeff = ( theSecPoint.Z() - theFirstPoint.Z() ) / aLength;
+   aInterCoeff = ( theSecPoint.Z - theFirstPoint.Z ) / aLength;
 
 
-  double aNewLength = Sqrt( Pow( theResPoint.Y() - theFirstPoint.Y(), 2 ) +
-                            Pow( theResPoint.X() - theFirstPoint.X(), 2 ) );
+  double aNewLength = Sqrt( Pow( theResPoint.Y - theFirstPoint.Y, 2 ) +
+                            Pow( theResPoint.X - theFirstPoint.X, 2 ) );
 
   // Calculate interpolated value
-  double aResVal = theFirstPoint.Z() + aInterCoeff * aNewLength;
+  double aResVal = theFirstPoint.Z + aInterCoeff * aNewLength;
 
-  theResPoint.SetZ( aResVal );
+  theResPoint.Z = aResVal;
 }
 #ifndef LIGHT_MODE
 bool interpolZtriangle(const gp_XY& point, vtkPolyData* delaunay2D, vtkIdList* triangle, double& z)
@@ -462,15 +466,15 @@ void HYDROData_Bathymetry::SetAltitudesInverted( const bool theIsInverted,
     return;
 
   // Update altitude points
-  AltitudePoints anAltitudePoints = GetAltitudePoints();
-  if ( anAltitudePoints.IsEmpty() )
+  HYDROData_Bathymetry::AltitudePoints anAltitudePoints = GetAltitudePoints();
+  if ( anAltitudePoints.empty() )
     return;
 
-  AltitudePoints::Iterator anIter( anAltitudePoints );
-  for ( ; anIter.More(); anIter.Next() )
+  HYDROData_Bathymetry::AltitudePoints::iterator anIter = anAltitudePoints.begin(), aLast = anAltitudePoints.end();
+  for ( ; anIter!=aLast; ++anIter )
   {
-    AltitudePoint& aPoint = anIter.ChangeValue();
-    aPoint.SetZ( aPoint.Z() * -1 );
+    HYDROData_Bathymetry::AltitudePoint& aPoint = *anIter;
+    aPoint.Z *= -1;
   }
 
   SetAltitudePoints( anAltitudePoints );
@@ -502,7 +506,7 @@ bool HYDROData_Bathymetry::ImportFromFile( const TCollection_AsciiString& theFil
 
   QString aFileSuf = QFileInfo( aFile ).suffix().toLower();
 
-  AltitudePoints aPoints;
+  HYDROData_Bathymetry::AltitudePoints aPoints;
 
   // Try to import the file
   if ( aFileSuf == "xyz" )
@@ -516,11 +520,11 @@ bool HYDROData_Bathymetry::ImportFromFile( const TCollection_AsciiString& theFil
 
   // Convert from global to local CS
   Handle_HYDROData_Document aDoc = HYDROData_Document::Document( myLab );
-  AltitudePoints::Iterator anIter( aPoints );
-  for ( ; anIter.More(); anIter.Next() )
+  HYDROData_Bathymetry::AltitudePoints::iterator anIter = aPoints.begin(), aLast = aPoints.end();
+  for ( ; anIter!=aLast; ++anIter )
   {
-    AltitudePoint& aPoint = anIter.ChangeValue();
-    aDoc->Transform( aPoint, true );
+    HYDROData_Bathymetry::AltitudePoint& aPoint = *anIter;
+    aDoc->Transform( aPoint.X, aPoint.Y, aPoint.Z, true );
   }
 
   if ( aRes )
@@ -530,11 +534,11 @@ bool HYDROData_Bathymetry::ImportFromFile( const TCollection_AsciiString& theFil
     SetAltitudePoints( aPoints );
   }
 
-  return aRes && !aPoints.IsEmpty();
+  return aRes && !aPoints.empty();
 }
 
 bool HYDROData_Bathymetry::importFromXYZFile( QFile&          theFile,
-                                              AltitudePoints& thePoints ) const
+                                              HYDROData_Bathymetry::AltitudePoints& thePoints ) const
 {
   if ( !theFile.isOpen() )
     return false;
@@ -560,7 +564,7 @@ bool HYDROData_Bathymetry::importFromXYZFile( QFile&          theFile,
     if ( aValues.length() < 3 )
       return false;
 
-    AltitudePoint aPoint;
+    HYDROData_Bathymetry::AltitudePoint aPoint;
     
     QString anX = aValues.value( 0 );
     QString anY = aValues.value( 1 );
@@ -568,23 +572,26 @@ bool HYDROData_Bathymetry::importFromXYZFile( QFile&          theFile,
 
     bool isXOk = false, isYOk = false, isZOk = false;
 
-    aPoint.SetX( anX.toDouble( &isXOk ) );
-    aPoint.SetY( anY.toDouble( &isYOk ) );
-    aPoint.SetZ( aZ.toDouble( &isZOk ) );
+    aPoint.X = anX.toDouble( &isXOk );
+    aPoint.Y = anY.toDouble( &isYOk );
+    aPoint.Z = aZ.toDouble( &isZOk );
 
     if ( !isXOk || !isYOk || !isZOk )
       return false;
 
-    if ( HYDROData_Tool::IsNan( aPoint.X() ) || HYDROData_Tool::IsInf( aPoint.X() ) ||
-         HYDROData_Tool::IsNan( aPoint.Y() ) || HYDROData_Tool::IsInf( aPoint.Y() ) ||
-         HYDROData_Tool::IsNan( aPoint.Z() ) || HYDROData_Tool::IsInf( aPoint.Z() ) )
+    if ( HYDROData_Tool::IsNan( aPoint.X ) || HYDROData_Tool::IsInf( aPoint.X ) ||
+         HYDROData_Tool::IsNan( aPoint.Y ) || HYDROData_Tool::IsInf( aPoint.Y ) ||
+         HYDROData_Tool::IsNan( aPoint.Z ) || HYDROData_Tool::IsInf( aPoint.Z ) )
       return false;
 
     // Invert the z value if requested
     if ( anIsAltitudesInverted )
-      aPoint.SetZ( -aPoint.Z() );
+      aPoint.Z = -aPoint.Z;
+
+    if( thePoints.size()>=thePoints.capacity() )
+      thePoints.reserve( thePoints.size()+BLOCK_SIZE );
 
-    thePoints.Append( aPoint );
+    thePoints.push_back( aPoint );
   }
 
 #ifdef _TIMER
@@ -597,7 +604,7 @@ bool HYDROData_Bathymetry::importFromXYZFile( QFile&          theFile,
 }
 
 bool HYDROData_Bathymetry::importFromASCFile( QFile&          theFile,
-                                              AltitudePoints& thePoints ) const
+                                              HYDROData_Bathymetry::AltitudePoints& thePoints ) const
 {
   if ( !theFile.isOpen() )
     return false;
@@ -668,23 +675,23 @@ bool HYDROData_Bathymetry::importFromASCFile( QFile&          theFile,
     {
       if (aStrList[j].toDouble() != aNoDataValue)
       {
-        AltitudePoint aPoint;
-        aPoint.SetX(anXllCorner + aCellSize*(j + 0.5));
-        aPoint.SetY(anYllCorner + aCellSize*(aNRows - i + 0.5));
-        aPoint.SetZ(aStrList[j].toDouble());
+        HYDROData_Bathymetry::AltitudePoint aPoint;
+        aPoint.X = anXllCorner + aCellSize*(j + 0.5);
+        aPoint.Y = anYllCorner + aCellSize*(aNRows - i + 0.5);
+        aPoint.Z = aStrList[j].toDouble();
 
         if ( anIsAltitudesInverted )
-         aPoint.SetZ( -aPoint.Z() );
+         aPoint.Z = -aPoint.Z;
 
-        thePoints.Append(aPoint);
+        if( thePoints.size()>=thePoints.capacity() )
+          thePoints.reserve( thePoints.size()+BLOCK_SIZE );
+        thePoints.push_back(aPoint);
       }
     }
     i++;
-
   }
 
   return true;
-
 }
 
 
@@ -704,14 +711,14 @@ Handle_HYDROData_PolylineXY HYDROData_Bathymetry::CreateBoundaryPolyline() const
 
   double Xmin = 0.0, Xmax = 0.0, Ymin = 0.0, Ymax = 0.0;
   bool isFirst = true;
-  AltitudePoints aPoints = GetAltitudePoints();
+  HYDROData_Bathymetry::AltitudePoints aPoints = GetAltitudePoints();
 
-  AltitudePoints::Iterator anIter( aPoints );
-  for ( ; anIter.More(); anIter.Next() )
+  HYDROData_Bathymetry::AltitudePoints::const_iterator anIter = aPoints.begin(), aLast = aPoints.end();
+  for ( ; anIter!=aLast; ++anIter )
   {
-    const AltitudePoint& aPoint = anIter.Value();
+    const HYDROData_Bathymetry::AltitudePoint& aPoint = *anIter;
 
-    double x = aPoint.X(), y = aPoint.Y();
+    double x = aPoint.X, y = aPoint.Y;
     if( isFirst || x<Xmin )
       Xmin = x;
     if( isFirst || x>Xmax )
@@ -739,12 +746,14 @@ Handle_HYDROData_PolylineXY HYDROData_Bathymetry::CreateBoundaryPolyline() const
 void HYDROData_Bathymetry::UpdateLocalCS( double theDx, double theDy )
 {
   gp_XYZ aDelta( theDx, theDy, 0 );
-  AltitudePoints aPoints = GetAltitudePoints();
-  AltitudePoints::Iterator anIter( aPoints );
-  for ( int i = 0 ; anIter.More(); ++i, anIter.Next() )
+  HYDROData_Bathymetry::AltitudePoints aPoints = GetAltitudePoints();
+  HYDROData_Bathymetry::AltitudePoints::iterator anIter = aPoints.begin(), aLast = aPoints.end();
+  for ( int i = 0; anIter!=aLast; ++i, ++anIter )
   {
-    AltitudePoint& aPoint = anIter.ChangeValue();
-    aPoint += aDelta;
+    HYDROData_Bathymetry::AltitudePoint& aPoint = *anIter;
+    aPoint.X += aDelta.X();
+    aPoint.Y += aDelta.Y();
+    aPoint.Z += aDelta.Z();
   }
   SetAltitudePoints( aPoints );
 }
index 1cffaaf27919a943c65b36ef19fee097b2d83cb2..79d5581dc33605175ebb5487217239b4e9ac46a4 100644 (file)
@@ -20,6 +20,7 @@
 #define HYDROData_Bathymetry_HeaderFile
 
 #include "HYDROData_IAltitudeObject.h"
+#include <vector>
 
 class QFile;
 class gp_XYZ;
@@ -40,9 +41,13 @@ DEFINE_STANDARD_HANDLE(HYDROData_Bathymetry, HYDROData_IAltitudeObject)
 class HYDROData_Bathymetry : public HYDROData_IAltitudeObject
 {
 public:
-
-  typedef gp_XYZ                              AltitudePoint;
-  typedef NCollection_Sequence<AltitudePoint> AltitudePoints;
+  struct AltitudePoint
+  {
+    double X;
+    double Y;
+    double Z;
+  };
+  typedef std::vector<AltitudePoint> AltitudePoints;
 
 protected:
 
index 49303b2a1a850529e9e7cb78f666865ee7be35b4..2194c861b2658c39e40a54f758237e10a2b9b1ad 100644 (file)
@@ -85,7 +85,8 @@ protected:
                                      CurveUZ& theWidthCurve,
                                      double theTolerance = 1E-6 );
 
-  static void CurveTo3d( const CurveUZ& theMidCurve, const CurveUZ& theWidthCurve, AltitudePoints& thePoints );
+  static void CurveTo3d( const CurveUZ& theMidCurve, const CurveUZ& theWidthCurve,
+                         AltitudePoints& thePoints );
   
   static void Interpolate( const CurveUZ& theCurveA, const CurveUZ& theCurveB, 
                            int theNbSteps, std::vector<CurveUZ>& theInterpolation,
index fd129087ff61a135e07bfbd8e4adad5d4af02fc6..3f3942a6ebb538ed2259642fcf15587ae576c8c2 100644 (file)
@@ -831,6 +831,11 @@ void HYDROData_Document::Transform( gp_XYZ& thePnt, bool IsToLocalCS ) const
   thePnt = gp_XYZ( X, Y, Z ); 
 }
 
+void HYDROData_Document::Transform( double& X, double& Y, double& Z, bool IsToLocalCS ) const
+{
+  Transform( X, Y, IsToLocalCS );
+}
+
 void HYDROData_Document::Transform( gp_XY& thePnt, bool IsToLocalCS ) const
 {
   double X = thePnt.X();
index e3c7b1c81821d9ebeff01bffad29c1ec17fbda3e..6e164226183d804685bf44b6ff61ce2ceea3de71 100644 (file)
@@ -159,6 +159,7 @@ public:
   HYDRODATA_EXPORT void Transform( gp_Pnt& thePnt, bool IsToLocalCS ) const;
   HYDRODATA_EXPORT void Transform( gp_XYZ& thePnt, bool IsToLocalCS ) const;
   HYDRODATA_EXPORT void Transform( gp_XY& thePnt, bool IsToLocalCS ) const;
+  HYDRODATA_EXPORT void Transform( double& X, double& Y, double& Z, bool IsToLocalCS ) const;
 
 public:
 
index 21076836fe65c289e1bcfbe90d141456fe62de97..a66bc81b960090322510265ec18a2ce52ad394d8 100644 (file)
@@ -657,7 +657,11 @@ void HYDROData_ShapeFile::ReadSHPPoly3D(Handle(HYDROData_Document) theDocument,
       HYDROData_PolylineXY::Point aSectPoint = gp_XY(anObj->padfX[k], anObj->padfY[k]);
       theDocument->Transform(aSectPoint, true);
       aPolylineXY->AddPoint( i, aSectPoint );
-      aAPoints.Append(gp_XYZ (aSectPoint.X(), aSectPoint.Y(), anObj->padfZ[k]));
+      HYDROData_Bathymetry::AltitudePoint p;
+      p.X = aSectPoint.X();
+      p.Y = aSectPoint.Y();
+      p.Z = anObj->padfZ[k];
+      aAPoints.push_back(p);
     }
   }
 
index 4b9dc6f4fc78bf464fd3c088133812c04964ea16..9fcbef117ca52015ba3832dbf3ba374bef8dbcaa 100644 (file)
@@ -123,11 +123,17 @@ void HYDROData_SinusX::SXToHydro(Handle(HYDROData_Document) theDocument, NCollec
     {
       Handle(HYDROData_Bathymetry) aBath = Handle(HYDROData_Bathymetry)::DownCast( theDocument->CreateObject( KIND_BATHYMETRY ) );
       HYDROData_Bathymetry::AltitudePoints aAPoints;
-      for (size_t j = 0; j < myCurveBlocks[i].myXYZPoints.size(); j++)
+      size_t n = myCurveBlocks[i].myXYZPoints.size();
+      aAPoints.reserve( n );
+      for (size_t j = 0; j < n; j++)
       {
         gp_XYZ aLocalPoint = gp_XYZ (myCurveBlocks[i].myXYZPoints[j]);
         theDocument->Transform(aLocalPoint, true);
-        aAPoints.Append(aLocalPoint);
+        HYDROData_Bathymetry::AltitudePoint p;
+        p.X = aLocalPoint.X();
+        p.Y = aLocalPoint.Y();
+        p.Z = aLocalPoint.Z();
+        aAPoints.push_back(p);
       }
 
       aBath->SetAltitudePoints(aAPoints);
@@ -366,10 +372,10 @@ void HYDROData_SinusX::HydroToSX(QFile& theFile, const NCollection_Sequence<Hand
       aTextStream << "CN " << aBathy->GetName() << "\n";
       aTextStream << "CP 0 0\n";
       aTextStream << "CP 0\n";
-      for (int j = anXYZPoints.Lower(); j <= anXYZPoints.Upper(); j++)
-        aTextStream << " " << QString::number(anXYZPoints(j).X(), 'f', 3)  
-                    << " " << QString::number(anXYZPoints(j).Y(), 'f', 3)  
-                    << " " << QString::number(anXYZPoints(j).Z(), 'f', 3) << "\n"; 
+      for (size_t j = 0, m = anXYZPoints.size(); j < m; j++)
+        aTextStream << " " << QString::number(anXYZPoints[j].X, 'f', 3)  
+                    << " " << QString::number(anXYZPoints[j].Y, 'f', 3)  
+                    << " " << QString::number(anXYZPoints[j].Z, 'f', 3) << "\n"; 
     }
     else if (anEnt->IsKind( STANDARD_TYPE(HYDROData_PolylineXY) ))
     {
index fd8158e539b1f4d8bc143b1ce0b7000bb0b1dda1..9835e1aa37db2db37ac5f565050cd25723a05bf6 100644 (file)
@@ -68,14 +68,14 @@ Handle_AIS_InteractiveObject HYDROGUI_ShapeBathymetry::createShape() const
     aPntCloud->Attributes()->SetPointAspect (new Prs3d_PointAspect (Aspect_TOM_POINT, Quantity_NOC_WHITE, 2.0));
 
     const HYDROData_Bathymetry::AltitudePoints& aBathPoints = aBath->GetAltitudePoints();
-    int aLower = aBathPoints.Lower();
-    int anUpper = aBathPoints.Upper();
+    int aLower = 0;
+    int anUpper = (int)aBathPoints.size()-1;
 
     HYDROGUI_ShapeBathymetry* aThat = const_cast<HYDROGUI_ShapeBathymetry*>( this );
     aThat->myCoords = new TColgp_HArray1OfPnt( aLower, anUpper );
     aThat->myColors = new Quantity_HArray1OfColor( aLower, anUpper );
     for( int i=aLower; i<=anUpper; i++ )
-      aThat->myCoords->SetValue( i, aBathPoints.Value( i ) );
+      aThat->myCoords->SetValue( i, gp_Pnt( aBathPoints[i].X, aBathPoints[i].Y, aBathPoints[i].Z ) );
 
     return aPntCloud;
   }
index 8b6103c561ca598f8647eedb0b3982c7483eeb98..08f6ef08da0b5d0361a22bf73065a16c41944848 100644 (file)
@@ -71,7 +71,7 @@ void HYDROGUI_VTKPrsBathymetry::compute()
     if ( !aBathymetry.IsNull() )
     {
       HYDROData_Bathymetry::AltitudePoints anAltPoints = aBathymetry->GetAltitudePoints();
-      int aNbPoints = anAltPoints.Length();
+      int aNbPoints = anAltPoints.size();
 
       HYDROData_Bathymetry::AltitudePoint anAltPnt;
       vtkPoints* aPoints = vtkPoints::New();
@@ -89,13 +89,13 @@ void HYDROGUI_VTKPrsBathymetry::compute()
       int anInvalidZ = InvalidZValue();
       for (int i = 1; i <= aNbPoints; i++ )
       {
-        anAltPnt = anAltPoints.Value( i );
-        aZ = anAltPnt.Z();
+        anAltPnt = anAltPoints[i];
+        aZ = anAltPnt.Z;
         if ( ValuesLessEquals( aZ, anInvalidZ ) )
         {
           aZ = Z_MAX; // If Z value is invalid then use Z_MAX
         }
-        aPoints->InsertPoint( i - 1, anAltPnt.X(), anAltPnt.Y(), aZ );
+        aPoints->InsertPoint( i - 1, anAltPnt.X, anAltPnt.Y, aZ );
         aVertex->GetPointIds()->SetId( 0, i - 1 );
         aVertexGrid->InsertNextCell( aVertex->GetCellType(), aVertex->GetPointIds());
         aZValues->InsertNextValue( aZ );
index 4a25258fde76f1a87e9b76a2141ff9fade3a9af5..27ab51a422baef58c3983b547bc36d9e96865116 100644 (file)
@@ -128,7 +128,7 @@ void test_HYDROData_Bathymetry::testFileImport()
   CPPUNIT_ASSERT( aBathymetry->ImportFromFile( aFileName.toStdString().c_str() ) );
 
   HYDROData_Bathymetry::AltitudePoints anAltitudePoints = aBathymetry->GetAltitudePoints();
-  CPPUNIT_ASSERT_EQUAL( 2300, anAltitudePoints.Length() );
+  CPPUNIT_ASSERT_EQUAL( 2300, (int)anAltitudePoints.size() );
 
   gp_XY aTestPoint( 1, 1 );
   double anAltitude = aBathymetry->GetAltitudeForPoint( aTestPoint, 1 );
@@ -174,7 +174,7 @@ void test_HYDROData_Bathymetry::testCopy()
     CPPUNIT_ASSERT( aBathymetry1->ImportFromFile( aFileName.toStdString().c_str() ) );
 
     HYDROData_Bathymetry::AltitudePoints anAltitudePoints = aBathymetry1->GetAltitudePoints();
-    CPPUNIT_ASSERT_EQUAL( 2300, anAltitudePoints.Length() );
+    CPPUNIT_ASSERT_EQUAL( 2300, (int)anAltitudePoints.size() );
   }
 
   Handle(HYDROData_Bathymetry) aBathymetry2 = 
@@ -185,7 +185,7 @@ void test_HYDROData_Bathymetry::testCopy()
   if ( anIsFileCreated )
   {
     HYDROData_Bathymetry::AltitudePoints anAltitudePoints = aBathymetry2->GetAltitudePoints();
-    CPPUNIT_ASSERT_EQUAL( 2300, anAltitudePoints.Length() );
+    CPPUNIT_ASSERT_EQUAL( 2300, (int)anAltitudePoints.size() );
   }
 
   aDoc->Close();