#include "HYDROData_Bathymetry.h"
#include <vector>
+#include <set>
#include <gp_Pnt2d.hxx>
class Handle_HYDROData_Profile;
class TopoDS_Compound;
class Handle_Geom_Plane;
class TopTools_IndexedMapOfOrientedShape;
+class TopTools_DataMapOfShapeListOfShape;
+class TopTools_SequenceOfShape;
DEFINE_STANDARD_HANDLE( HYDROData_DTM, HYDROData_Bathymetry )
class CurveUZ : public std::vector<PointUZ>
{
public:
- CurveUZ( double theXcurv, const gp_Vec2d& theProfileDir = gp_Vec2d() );
+ CurveUZ( double theXcurv, const gp_Vec2d& theProfileDir, double theDeltaZ );
~CurveUZ();
double Xcurv() const;
- gp_Vec2d ProfileDir() const;
+ gp_Vec2d ProfileDir() const;
+ double DeltaZ() const;
CurveUZ operator + ( const CurveUZ& ) const;
CurveUZ operator * ( double ) const;
private:
double myXcurv;
gp_Vec2d myProfileDir;
+ double myDeltaZ;
};
protected:
double theXCurv, double theMinZ, double theMaxZ, double theDDZ,
CurveUZ& theMidPointCurve,
CurveUZ& theWidthCurve,
+ int& intersection_nb,
double theTolerance = 1E-6 );
static void CurveTo3D( const Handle_Geom2d_BSplineCurve& theHydraulicAxis,
const CurveUZ& theMidCurve, const CurveUZ& theWidthCurve,
- AltitudePoints& thePoints, double dz );
+ AltitudePoints& thePoints );
static void Interpolate( const CurveUZ& theCurveA, const CurveUZ& theCurveB,
int theNbSteps, std::vector<CurveUZ>& theInterpolation,
double theXCurvA,
const Handle_HYDROData_Profile& theProfileB,
double theXCurvB,
- double theDDZ, int theNbSteps, bool isAddSecond );
+ double theDDZ, int theNbSteps, bool isAddSecond,
+ int& inter_nb_1, int& inter_nb_2 );
static AltitudePoints Interpolate( const std::vector<Handle_HYDROData_Profile>& theProfiles,
double theDDZ, double theSpatialStep,
AltitudePoints& theLeft,
AltitudePoints& theRight,
- std::vector<AltitudePoints>& theMainProfiles );
+ std::vector<AltitudePoints>& theMainProfiles,
+ std::set<int>& invalInd );
static void PointToWire(const AltitudePoints& pnts, TopoDS_Wire& W );
- static void ProjWireOnPlane(const TopoDS_Wire& inpWire, const Handle_Geom_Plane& RefPlane, TopoDS_Wire& outWire);
+ static void ProjWireOnPlane(const TopoDS_Shape& inpWire, const Handle_Geom_Plane& RefPlane,
+ TopTools_DataMapOfShapeListOfShape* E2PE);
static TopTools_IndexedMapOfOrientedShape Create3DShape(const AltitudePoints& left,
const AltitudePoints& right,
TopoDS_Shape& OutInlet,
TopoDS_Shape& OutOutlet,
bool Create3dPres,
- bool Create2dPres );
+ bool Create2dPres,
+ std::set<int>& InvInd,
+ bool& WireIntersections);
+
+ static bool Get2dFaceFrom3dPres(const TopoDS_Compound& cmp, TopoDS_Face& outF,
+ TopTools_SequenceOfShape* Boundr = NULL, std::set<int> ind = std::set<int>() );
+
+ static int EstimateNbPoints( const std::vector<Handle_HYDROData_Profile>& theProfiles,
+ double theDDZ, double theSpatialStep );
- static void Get2dFaceFrom3dPres(const TopoDS_Compound& cmp, TopoDS_Face& outF );
-
void GetPresentationShapes( TopoDS_Shape& Out3dPres,
TopoDS_Shape& Out2dPres,
TopoDS_Shape& OutLeftB,
public:
HYDRODATA_EXPORT static void CreateProfilesFromDTM ( const HYDROData_SequenceOfObjects& InpProfiles,
- double ddz,
- double step,
- AltitudePoints& points,
- TopoDS_Shape& Out3dPres,
- TopoDS_Shape& Out2dPres,
- TopoDS_Shape& OutLeftB,
- TopoDS_Shape& OutRightB,
- TopoDS_Shape& OutInlet,
- TopoDS_Shape& OutOutlet,
- bool Create3dPres,
- bool Create2dPres );
+ double ddz,
+ double step,
+ AltitudePoints& points,
+ TopoDS_Shape& Out3dPres,
+ TopoDS_Shape& Out2dPres,
+ TopoDS_Shape& OutLeftB,
+ TopoDS_Shape& OutRightB,
+ TopoDS_Shape& OutInlet,
+ TopoDS_Shape& OutOutlet,
+ bool Create3dPres,
+ bool Create2dPres,
+ std::set<int>& InvInd,
+ int thePntsLimit,
+ bool& WireIntersections);
};