Salome HOME
debug of DTM/Stream presentations
[modules/hydro.git] / src / HYDROData / HYDROData_DTM.h
index 87bb10affd899d042820ad12d51cb983d316a0e8..18280a394c5f8ff51eadcecf310eaaab3b20e7b5 100644 (file)
 
 #include "HYDROData_Bathymetry.h"
 #include <vector>
+#include <gp_Pnt2d.hxx>
 
 class Handle_HYDROData_Profile;
 class Handle_Geom2d_BSplineCurve;
 class Handle_Geom2d_Curve;
 class gp_Pnt;
 class gp_Vec2d;
+class TopoDS_Edge;
 
 DEFINE_STANDARD_HANDLE( HYDROData_DTM, HYDROData_Bathymetry )
 
@@ -71,16 +73,18 @@ public:
   class CurveUZ : public std::vector<PointUZ>
   {
   public:
-    CurveUZ( double theXcurv );
+    CurveUZ( double theXcurv, const gp_Vec2d& theProfileDir = gp_Vec2d() );
     ~CurveUZ();
 
     double Xcurv() const;
+    gp_Vec2d ProfileDir() const; 
 
     CurveUZ operator + ( const CurveUZ& ) const;
     CurveUZ operator * ( double ) const;
 
   private:
     double myXcurv;
+    gp_Vec2d myProfileDir;
   };
 
 protected:
@@ -95,7 +99,8 @@ protected:
     std::vector<double>& theDistances );
 
   static std::vector<Handle_Geom2d_Curve> ProfileToParametric( const Handle_HYDROData_Profile& theProfile,
-                                                               double& theUMin, double& theUMax );
+                                                               double& theUMin, double& theUMax,
+                                                               gp_Vec2d& theDir );
 
   static void GetProperties( const Handle_HYDROData_Profile& theProfile,
                              gp_Pnt& theLowestPoint, gp_Vec2d& theDir,
@@ -110,21 +115,25 @@ protected:
 
   static void CurveTo3D( const Handle_Geom2d_BSplineCurve& theHydraulicAxis,
                          const CurveUZ& theMidCurve, const CurveUZ& theWidthCurve,
-                         AltitudePoints& thePoints );
+                         AltitudePoints& thePoints, double dz );
   
   static void Interpolate( const CurveUZ& theCurveA, const CurveUZ& theCurveB, 
                            int theNbSteps, std::vector<CurveUZ>& theInterpolation,
                            bool isAddSecond );
 
-  static AltitudePoints Interpolate( const Handle_Geom2d_BSplineCurve& theHydraulicAxis,
-                                     const Handle_HYDROData_Profile& theProfileA,
-                                     double theXCurvA,
-                                     const Handle_HYDROData_Profile& theProfileB,
-                                     double theXCurvB,
-                                     double theDDZ, int theNbSteps, bool isAddSecond );
+  static std::vector<AltitudePoints> Interpolate
+    ( const Handle_Geom2d_BSplineCurve& theHydraulicAxis,
+      const Handle_HYDROData_Profile& theProfileA,
+      double theXCurvA,
+      const Handle_HYDROData_Profile& theProfileB,
+      double theXCurvB,
+      double theDDZ, int theNbSteps, bool isAddSecond );
 
   static AltitudePoints Interpolate( const std::vector<Handle_HYDROData_Profile>& theProfiles,
-                                     double theDDZ, double theSpatialStep );
+                                     double theDDZ, double theSpatialStep,
+                                     AltitudePoints& theLeft,
+                                     AltitudePoints& theRight,
+                                     std::vector<AltitudePoints>& theMainProfiles );
 };
 
 #endif