HYDRODATA_EXPORT virtual void Update();
- HYDRODATA_EXPORT void CreateBankShapes( TopoDS_Edge& theLeft, TopoDS_Edge& theRight ) const;
-
public:
struct PointUZ
{
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;
- };
- class Bank
- {
- public:
- void reserve( int theNbPoints );
- void push_back( const gp_Pnt& thePnt, const gp_Dir& theTangent );
- void clear();
- TopoDS_Edge createEdge3d() const;
-
- public:
- std::vector<gp_Pnt> myPoints;
- std::vector<gp_Dir> myDirs;
+ gp_Vec2d myProfileDir;
};
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,
static void CurveTo3D( const Handle_Geom2d_BSplineCurve& theHydraulicAxis,
const CurveUZ& theMidCurve, const CurveUZ& theWidthCurve,
- AltitudePoints& thePoints,
- Bank* theLeftBank = 0,
- Bank* theRightBank = 0,
- double dz = 0 );
+ 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,
- Bank* theLeftBank = 0,
- Bank* theRightBank = 0 );
+ 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,
- Bank* theLeftBank = 0,
- Bank* theRightBank = 0 );
-
-private:
- Bank myLeft;
- Bank myRight;
+ AltitudePoints& theLeft,
+ AltitudePoints& theRight,
+ std::vector<AltitudePoints>& theMainProfiles );
};
#endif