// 8-Aug-95 : xab : interpolation uses BSplCLib::Interpolate
-#include <Geom2dAPI_Interpolate.ixx>
-#include <Standard_ConstructionError.hxx>
-#include <PLib.hxx>
#include <BSplCLib.hxx>
+#include <Geom2d_BSplineCurve.hxx>
+#include <Geom2dAPI_Interpolate.hxx>
#include <gp_Vec2d.hxx>
+#include <PLib.hxx>
+#include <Standard_ConstructionError.hxx>
+#include <StdFail_NotDone.hxx>
#include <TColgp_Array1OfPnt2d.hxx>
-#include <TColStd_HArray1OfReal.hxx>
#include <TColStd_Array1OfBoolean.hxx>
#include <TColStd_Array1OfInteger.hxx>
#include <TColStd_HArray1OfBoolean.hxx>
+#include <TColStd_HArray1OfReal.hxx>
//=======================================================================
//function : CheckPoints
//purpose :
//=======================================================================
-
static Standard_Boolean CheckPoints(const TColgp_Array1OfPnt2d& PointArray,
const Standard_Real Tolerance)
{
gp_Vec2d a_vector ;
if (PointsArray.Length() < 3) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
if (!TangentFlags.Value(1)) {
degree = 3 ;
if ( PointsArray.Length() < 3) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
if (PointsArray.Length() == 3) {
degree = 2 ;
myPoints->Upper()) ;
if (!result) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
BuildParameters(PeriodicFlag,
PointsPtr->Array1(),
if (PeriodicFlag) {
if ((PointsPtr->Length()) + 1 != ParametersPtr->Length()) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
}
myTangents =
myPoints->Upper()) ;
if (!result) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
result =
CheckParameters(ParametersPtr->Array1()) ;
if (!result) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
for (ii = myPoints->Lower() ; ii <= myPoints->Upper() ; ii++) {
void Geom2dAPI_Interpolate::Load(
const TColgp_Array1OfVec2d& Tangents,
- const Handle(TColStd_HArray1OfBoolean)& TangentFlagsPtr)
+ const Handle(TColStd_HArray1OfBoolean)& TangentFlagsPtr,
+ const Standard_Boolean Scale)
{
Standard_Boolean result ;
myTangentFlags = TangentFlagsPtr ;
if (Tangents.Length() != myPoints->Length() ||
TangentFlagsPtr->Length() != myPoints->Length()) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
result =
CheckTangents(Tangents,
for (ii = Tangents.Lower() ; ii <= Tangents.Upper() ; ii++ ) {
myTangents->SetValue(ii,Tangents.Value(ii)) ;
}
- ScaleTangents(myPoints->Array1(),
- myTangents->ChangeArray1(),
- TangentFlagsPtr->Array1(),
- myParameters->Array1()) ;
+ if (Scale) {
+ ScaleTangents(myPoints->Array1(),
+ myTangents->ChangeArray1(),
+ TangentFlagsPtr->Array1(),
+ myParameters->Array1()) ;
+ }
}
else {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
//=======================================================================
void Geom2dAPI_Interpolate::Load(const gp_Vec2d& InitialTangent,
- const gp_Vec2d& FinalTangent)
+ const gp_Vec2d& FinalTangent,
+ const Standard_Boolean Scale)
{
Standard_Boolean result ;
myTangentRequest = Standard_True ;
myTangentFlags->Array1(),
myTolerance) ;
if (!result) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
- ScaleTangents(myPoints->Array1(),
- myTangents->ChangeArray1(),
- myTangentFlags->Array1(),
- myParameters->Array1()) ;
+ if (Scale) {
+ ScaleTangents(myPoints->Array1(),
+ myTangents->ChangeArray1(),
+ myTangentFlags->Array1(),
+ myParameters->Array1()) ;
+ }
}
//=======================================================================
const Handle(Geom2d_BSplineCurve)& Geom2dAPI_Interpolate::Curve() const
{
if ( !myIsDone)
- StdFail_NotDone::Raise(" ");
+ throw StdFail_NotDone(" ");
return myCurve;
}