mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0026254: Inject GeomAbs_OffsetCurve into GeomAbs_CurveType enumeration
This commit is contained in:
@@ -117,6 +117,12 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1,
|
||||
case GeomAbs_Circle: {
|
||||
|
||||
switch(type2) {
|
||||
case GeomAbs_Line: {
|
||||
inverse = Standard_True;
|
||||
Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(*((Adaptor2d_Curve2d*)myC)), Extrema_Curve2dTool::Circle(C1), Tol);
|
||||
Results(Xtrem, U11, U12, U21, U22, 2*M_PI, 0.);
|
||||
}
|
||||
break;
|
||||
case GeomAbs_Circle: {
|
||||
Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(C1), Extrema_Curve2dTool::Circle(*((Adaptor2d_Curve2d*)myC)));
|
||||
Results(Xtrem, U11, U12, U21, U22, 2*M_PI, 2*M_PI);
|
||||
@@ -137,9 +143,7 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1,
|
||||
Results(Xtrem, U11, U12, U21, U22, 2*M_PI, 0. );
|
||||
}
|
||||
break;
|
||||
case GeomAbs_BezierCurve:
|
||||
case GeomAbs_OtherCurve:
|
||||
case GeomAbs_BSplineCurve: {
|
||||
default: {
|
||||
Extrema_ECC2d aParamSolver(C1, *((Adaptor2d_Curve2d*)myC));
|
||||
aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag());
|
||||
aParamSolver.Perform();
|
||||
@@ -148,12 +152,6 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1,
|
||||
Results(aParamSolver, U11, U12, U21, U22, 2*M_PI,Period2);
|
||||
}
|
||||
break;
|
||||
case GeomAbs_Line: {
|
||||
inverse = Standard_True;
|
||||
Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(*((Adaptor2d_Curve2d*)myC)), Extrema_Curve2dTool::Circle(C1), Tol);
|
||||
Results(Xtrem, U11, U12, U21, U22, 2*M_PI, 0.);
|
||||
}
|
||||
break;
|
||||
}; // switch(type2)
|
||||
}
|
||||
break;
|
||||
@@ -164,6 +162,12 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1,
|
||||
case GeomAbs_Ellipse: {
|
||||
|
||||
switch(type2) {
|
||||
case GeomAbs_Line: {
|
||||
inverse = Standard_True;
|
||||
Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(*((Adaptor2d_Curve2d*)myC)), Extrema_Curve2dTool::Ellipse(C1));
|
||||
Results(Xtrem, U11, U12, U21, U22, 2*M_PI, 0.);
|
||||
}
|
||||
break;
|
||||
case GeomAbs_Circle: {
|
||||
inverse = Standard_True;
|
||||
Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(*((Adaptor2d_Curve2d*)myC)), Extrema_Curve2dTool::Ellipse(C1));
|
||||
@@ -194,9 +198,7 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1,
|
||||
Results(aParamSolver, U11, U12, U21, U22, 2*M_PI, 0.);
|
||||
}
|
||||
break;
|
||||
case GeomAbs_BezierCurve:
|
||||
case GeomAbs_OtherCurve:
|
||||
case GeomAbs_BSplineCurve: {
|
||||
default: {
|
||||
Extrema_ECC2d aParamSolver(C1, *((Adaptor2d_Curve2d*)myC));
|
||||
aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag());
|
||||
aParamSolver.Perform();
|
||||
@@ -205,12 +207,6 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1,
|
||||
Results(aParamSolver, U11, U12, U21, U22, 2*M_PI,Period2);
|
||||
}
|
||||
break;
|
||||
case GeomAbs_Line: {
|
||||
inverse = Standard_True;
|
||||
Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(*((Adaptor2d_Curve2d*)myC)), Extrema_Curve2dTool::Ellipse(C1));
|
||||
Results(Xtrem, U11, U12, U21, U22, 2*M_PI, 0.);
|
||||
}
|
||||
break;
|
||||
}; // switch(type2)
|
||||
}
|
||||
break;
|
||||
@@ -221,6 +217,12 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1,
|
||||
case GeomAbs_Parabola: {
|
||||
|
||||
switch(type2) {
|
||||
case GeomAbs_Line: {
|
||||
inverse = Standard_True;
|
||||
Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(*((Adaptor2d_Curve2d*)myC)), Extrema_Curve2dTool::Parabola(C1));
|
||||
Results(Xtrem, U11, U12, U21, U22, 0., 0.);
|
||||
}
|
||||
break;
|
||||
case GeomAbs_Circle: {
|
||||
inverse = Standard_True;
|
||||
Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(*((Adaptor2d_Curve2d*)myC)), Extrema_Curve2dTool::Parabola(C1));
|
||||
@@ -253,9 +255,7 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1,
|
||||
Results(aParamSolver, U11, U12, U21, U22, 0., 0.);
|
||||
}
|
||||
break;
|
||||
case GeomAbs_BezierCurve:
|
||||
case GeomAbs_OtherCurve:
|
||||
case GeomAbs_BSplineCurve: {
|
||||
default: {
|
||||
Extrema_ECC2d aParamSolver(C1, *((Adaptor2d_Curve2d*)myC));
|
||||
aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag());
|
||||
aParamSolver.Perform();
|
||||
@@ -264,12 +264,6 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1,
|
||||
Results(aParamSolver, U11, U12, U21, U22, 0., Period2);
|
||||
}
|
||||
break;
|
||||
case GeomAbs_Line: {
|
||||
inverse = Standard_True;
|
||||
Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(*((Adaptor2d_Curve2d*)myC)), Extrema_Curve2dTool::Parabola(C1));
|
||||
Results(Xtrem, U11, U12, U21, U22, 0., 0.);
|
||||
}
|
||||
break;
|
||||
}; // switch(type2)
|
||||
}
|
||||
break;
|
||||
@@ -280,6 +274,12 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1,
|
||||
case GeomAbs_Hyperbola: {
|
||||
|
||||
switch(type2) {
|
||||
case GeomAbs_Line: {
|
||||
inverse = Standard_True;
|
||||
Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(*((Adaptor2d_Curve2d*)myC)), Extrema_Curve2dTool::Hyperbola(C1));
|
||||
Results(Xtrem, U11, U12, U21, U22, 0., 0.);
|
||||
}
|
||||
break;
|
||||
case GeomAbs_Circle: {
|
||||
inverse = Standard_True;
|
||||
Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(*((Adaptor2d_Curve2d*)myC)), Extrema_Curve2dTool::Hyperbola(C1));
|
||||
@@ -311,9 +311,7 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1,
|
||||
Results(aParamSolver, U11, U12, U21, U22, 0., 0.);
|
||||
}
|
||||
break;
|
||||
case GeomAbs_OtherCurve:
|
||||
case GeomAbs_BezierCurve:
|
||||
case GeomAbs_BSplineCurve: {
|
||||
default: {
|
||||
Extrema_ECC2d aParamSolver(C1, *((Adaptor2d_Curve2d*)myC));
|
||||
aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag());
|
||||
aParamSolver.Perform();
|
||||
@@ -322,39 +320,21 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1,
|
||||
Results(aParamSolver, U11, U12, U21, U22, 0., Period2);
|
||||
}
|
||||
break;
|
||||
case GeomAbs_Line: {
|
||||
inverse = Standard_True;
|
||||
Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(*((Adaptor2d_Curve2d*)myC)), Extrema_Curve2dTool::Hyperbola(C1));
|
||||
Results(Xtrem, U11, U12, U21, U22, 0., 0.);
|
||||
}
|
||||
break;
|
||||
}; // switch(type2)
|
||||
}
|
||||
break;
|
||||
|
||||
//
|
||||
// La premiere courbe est une BezierCurve ou une BSplineCurve:
|
||||
//
|
||||
case GeomAbs_BezierCurve:
|
||||
case GeomAbs_OtherCurve:
|
||||
case GeomAbs_BSplineCurve: {
|
||||
Extrema_ECC2d aParamSolver(C1, *((Adaptor2d_Curve2d*)myC));
|
||||
aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag());
|
||||
aParamSolver.Perform();
|
||||
Standard_Real Period1 = 0.;
|
||||
if (Extrema_Curve2dTool::IsPeriodic(C1)) Period1 = Extrema_Curve2dTool::Period(C1);
|
||||
Standard_Real Period2 = 0.;
|
||||
if (Extrema_Curve2dTool::IsPeriodic(*((Adaptor2d_Curve2d*)myC))) Period2 = Extrema_Curve2dTool::Period(*((Adaptor2d_Curve2d*)myC));
|
||||
Results(aParamSolver, U11, U12, U21, U22, Period1, Period2);
|
||||
}
|
||||
break;
|
||||
|
||||
//
|
||||
// La premiere courbe est une Line:
|
||||
//
|
||||
case GeomAbs_Line: {
|
||||
|
||||
switch(type2) {
|
||||
case GeomAbs_Line: {
|
||||
Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(C1), Extrema_Curve2dTool::Line(*((Adaptor2d_Curve2d*)myC)), Tol);
|
||||
Results(Xtrem, U11, U12, U21, U22, 0., 0.);
|
||||
}
|
||||
break;
|
||||
case GeomAbs_Circle: {
|
||||
Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(C1), Extrema_Curve2dTool::Circle(*((Adaptor2d_Curve2d*)myC)), Tol);
|
||||
Results(Xtrem, U11, U12, U21, U22, 0., 2*M_PI);
|
||||
@@ -375,9 +355,7 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1,
|
||||
Results(Xtrem, U11, U12, U21, U22, 0., 0.);
|
||||
}
|
||||
break;
|
||||
case GeomAbs_BezierCurve:
|
||||
case GeomAbs_OtherCurve:
|
||||
case GeomAbs_BSplineCurve: {
|
||||
default: {
|
||||
Extrema_ECC2d aParamSolver(C1, *((Adaptor2d_Curve2d*)myC));
|
||||
aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag());
|
||||
aParamSolver.Perform();
|
||||
@@ -386,15 +364,25 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1,
|
||||
Results(aParamSolver, U11, U12, U21, U22, 0., Period2);
|
||||
}
|
||||
break;
|
||||
case GeomAbs_Line: {
|
||||
Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(C1), Extrema_Curve2dTool::Line(*((Adaptor2d_Curve2d*)myC)), Tol);
|
||||
Results(Xtrem, U11, U12, U21, U22, 0., 0.);
|
||||
}
|
||||
break;
|
||||
}; // switch(type2)
|
||||
}
|
||||
break;
|
||||
|
||||
//
|
||||
// La premiere courbe est une BezierCurve ou une BSplineCurve:
|
||||
//
|
||||
default: {
|
||||
Extrema_ECC2d aParamSolver(C1, *((Adaptor2d_Curve2d*)myC));
|
||||
aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag());
|
||||
aParamSolver.Perform();
|
||||
Standard_Real Period1 = 0.;
|
||||
if (Extrema_Curve2dTool::IsPeriodic(C1)) Period1 = Extrema_Curve2dTool::Period(C1);
|
||||
Standard_Real Period2 = 0.;
|
||||
if (Extrema_Curve2dTool::IsPeriodic(*((Adaptor2d_Curve2d*)myC))) Period2 = Extrema_Curve2dTool::Period(*((Adaptor2d_Curve2d*)myC));
|
||||
Results(aParamSolver, U11, U12, U21, U22, Period1, Period2);
|
||||
}
|
||||
break;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
@@ -125,6 +125,7 @@ myTol (thetol)
|
||||
{
|
||||
case GeomAbs_BezierCurve:
|
||||
case GeomAbs_BSplineCurve:
|
||||
case GeomAbs_OffsetCurve:
|
||||
case GeomAbs_OtherCurve:
|
||||
myMaxDerivOrderC1 = MaxOrder;
|
||||
myTolC1 = SearchOfTolerance((Standard_Address)&C1);
|
||||
@@ -139,6 +140,7 @@ myTol (thetol)
|
||||
{
|
||||
case GeomAbs_BezierCurve:
|
||||
case GeomAbs_BSplineCurve:
|
||||
case GeomAbs_OffsetCurve:
|
||||
case GeomAbs_OtherCurve:
|
||||
myMaxDerivOrderC2 = MaxOrder;
|
||||
myTolC2 = SearchOfTolerance((Standard_Address)&C2);
|
||||
@@ -162,6 +164,7 @@ void Extrema_FuncExtCC::SetCurve (const Standard_Integer theRank, const Curve1&
|
||||
{
|
||||
case GeomAbs_BezierCurve:
|
||||
case GeomAbs_BSplineCurve:
|
||||
case GeomAbs_OffsetCurve:
|
||||
case GeomAbs_OtherCurve:
|
||||
myMaxDerivOrderC1 = MaxOrder;
|
||||
myTolC1 = SearchOfTolerance((Standard_Address)&C);
|
||||
@@ -179,6 +182,7 @@ void Extrema_FuncExtCC::SetCurve (const Standard_Integer theRank, const Curve1&
|
||||
{
|
||||
case GeomAbs_BezierCurve:
|
||||
case GeomAbs_BSplineCurve:
|
||||
case GeomAbs_OffsetCurve:
|
||||
case GeomAbs_OtherCurve:
|
||||
myMaxDerivOrderC2 = MaxOrder;
|
||||
myTolC2 = SearchOfTolerance((Standard_Address)&C);
|
||||
|
@@ -98,6 +98,7 @@ Extrema_FuncExtPC::Extrema_FuncExtPC (const Pnt& P,
|
||||
{
|
||||
case GeomAbs_BezierCurve:
|
||||
case GeomAbs_BSplineCurve:
|
||||
case GeomAbs_OffsetCurve:
|
||||
case GeomAbs_OtherCurve:
|
||||
myMaxDerivOrder = MaxOrder;
|
||||
myTol = SearchOfTolerance();
|
||||
@@ -125,6 +126,7 @@ void Extrema_FuncExtPC::Initialize(const Curve& C)
|
||||
{
|
||||
case GeomAbs_BezierCurve:
|
||||
case GeomAbs_BSplineCurve:
|
||||
case GeomAbs_OffsetCurve:
|
||||
case GeomAbs_OtherCurve:
|
||||
myMaxDerivOrder = MaxOrder;
|
||||
myTol = SearchOfTolerance();
|
||||
|
@@ -249,7 +249,7 @@ void Extrema_GExtPC::Perform(const ThePoint& P)
|
||||
mydone = Standard_True;
|
||||
break;
|
||||
}
|
||||
case GeomAbs_OtherCurve:
|
||||
default:
|
||||
{
|
||||
Standard_Boolean IntExtIsDone = Standard_False;
|
||||
Standard_Boolean IntIsNotValid;
|
||||
@@ -310,6 +310,7 @@ void Extrema_GExtPC::Perform(const ThePoint& P)
|
||||
|
||||
// Postprocessing.
|
||||
if (type == GeomAbs_BSplineCurve ||
|
||||
type == GeomAbs_OffsetCurve ||
|
||||
type == GeomAbs_OtherCurve)
|
||||
{
|
||||
// Additional checking if the point is on the first or last point of the curve
|
||||
|
@@ -88,8 +88,10 @@ void Extrema_GLocateExtPC::Initialize(const TheCurve& C,
|
||||
type = TheCurveTool::GetType(C);
|
||||
Standard_Real tolu = TheCurveTool::Resolution(C, Precision::Confusion());
|
||||
if ((type == GeomAbs_BSplineCurve) ||
|
||||
(type == GeomAbs_BezierCurve) ||
|
||||
(type == GeomAbs_OtherCurve)) {
|
||||
(type == GeomAbs_BezierCurve) ||
|
||||
(type == GeomAbs_OffsetCurve) ||
|
||||
(type == GeomAbs_OtherCurve))
|
||||
{
|
||||
myLocExtPC.Initialize(C, Umin, Usup, tolu);
|
||||
}
|
||||
else {
|
||||
@@ -116,6 +118,7 @@ void Extrema_GLocateExtPC::Perform(const ThePoint& P,
|
||||
switch(type)
|
||||
{
|
||||
case GeomAbs_OtherCurve:
|
||||
case GeomAbs_OffsetCurve:
|
||||
case GeomAbs_BSplineCurve:
|
||||
{
|
||||
// La recherche de l extremum est faite intervalle continu C2 par
|
||||
@@ -311,7 +314,9 @@ Standard_Real Extrema_GLocateExtPC::SquareDistance () const
|
||||
if ((type == GeomAbs_BezierCurve)) {
|
||||
d = myLocExtPC.SquareDistance();
|
||||
}
|
||||
else if(type == GeomAbs_BSplineCurve || type == GeomAbs_OtherCurve) {
|
||||
else if(type == GeomAbs_BSplineCurve ||
|
||||
type == GeomAbs_OffsetCurve ||
|
||||
type == GeomAbs_OtherCurve) {
|
||||
d = mydist2;
|
||||
}
|
||||
else {
|
||||
@@ -335,7 +340,9 @@ Standard_Boolean Extrema_GLocateExtPC::IsMin () const
|
||||
if ((type == GeomAbs_BezierCurve)) {
|
||||
b = myLocExtPC.IsMin();
|
||||
}
|
||||
else if(type == GeomAbs_BSplineCurve || type == GeomAbs_OtherCurve) {
|
||||
else if(type == GeomAbs_BSplineCurve ||
|
||||
type == GeomAbs_OffsetCurve ||
|
||||
type == GeomAbs_OtherCurve) {
|
||||
b = myismin;
|
||||
}
|
||||
else {
|
||||
@@ -358,7 +365,9 @@ const ThePOnC & Extrema_GLocateExtPC::Point () const
|
||||
if (type == GeomAbs_BezierCurve) {
|
||||
return myLocExtPC.Point();
|
||||
}
|
||||
else if(type == GeomAbs_BSplineCurve || type == GeomAbs_OtherCurve) {
|
||||
else if(type == GeomAbs_BSplineCurve ||
|
||||
type == GeomAbs_OffsetCurve ||
|
||||
type == GeomAbs_OtherCurve) {
|
||||
return mypp;
|
||||
}
|
||||
return myExtremPC.Point(numberext);
|
||||
|
Reference in New Issue
Block a user