Open CASCADE Technology 7.8.2.dev
|
Computes a 2D curve using an algorithm which minimizes tension, sagging, and jerk energy. As in FairCurve_Batten, two reference points are used. Unlike that class, FairCurve_MinimalVariation requires curvature settings at the first and second reference points. These are defined by the rays of curvature desired at each point. More...
#include <FairCurve_MinimalVariation.hxx>
Public Member Functions | |
FairCurve_MinimalVariation (const gp_Pnt2d &P1, const gp_Pnt2d &P2, const Standard_Real Heigth, const Standard_Real Slope=0, const Standard_Real PhysicalRatio=0) | |
Constructs the two contact points P1 and P2 and the geometrical characteristics of the batten (elastic beam) These include the real number values for height of deformation Height, slope value Slope, and kind of energy PhysicalRatio. The kinds of energy include: | |
void | SetCurvature1 (const Standard_Real Curvature) |
Allows you to set a new constraint on curvature at the first point. | |
void | SetCurvature2 (const Standard_Real Curvature) |
Allows you to set a new constraint on curvature at the second point. | |
void | SetPhysicalRatio (const Standard_Real Ratio) |
Allows you to set the physical ratio Ratio. The kinds of energy which you can specify include: 0 is only "Jerk" Energy 1 is only "Sagging" Energy like batten Warning: if Ratio is 1 it is impossible to impose curvature constraints. Raises DomainError if Ratio < 0 or Ratio > 1. | |
virtual Standard_Boolean | Compute (FairCurve_AnalysisCode &ACode, const Standard_Integer NbIterations=50, const Standard_Real Tolerance=1.0e-3) override |
Computes the curve with respect to the constraints, NbIterations and Tolerance. The tolerance setting allows you to control the precision of computation, and the maximum number of iterations allows you to set a limit on computation time. | |
Standard_Real | GetCurvature1 () const |
Returns the first established curvature. | |
Standard_Real | GetCurvature2 () const |
Returns the second established curvature. | |
Standard_Real | GetPhysicalRatio () const |
Returns the physical ratio, or kind of energy. | |
virtual void | Dump (Standard_OStream &o) const override |
Prints on the stream o information on the current state of the object. Is used to redefine the operator <<. | |
Public Member Functions inherited from FairCurve_Batten | |
FairCurve_Batten (const gp_Pnt2d &P1, const gp_Pnt2d &P2, const Standard_Real Height, const Standard_Real Slope=0) | |
Constructor with the two points and the geometrical characteristics of the batten (elastic beam) Height is the height of the deformation, and Slope is the slope value, initialized at 0. The user can then supply the desired slope value by the method, SetSlope. Other parameters are initialized as follow : | |
virtual | ~FairCurve_Batten () |
void | SetFreeSliding (const Standard_Boolean FreeSliding) |
Freesliding is initialized with the default setting false. When Freesliding is set to true and, as a result, sliding is free, the sliding factor is automatically computed to satisfy the equilibrium of the batten. | |
void | SetConstraintOrder1 (const Standard_Integer ConstraintOrder) |
Allows you to change the order of the constraint on the first point. ConstraintOrder has the default setting of 1. The following settings are available: | |
void | SetConstraintOrder2 (const Standard_Integer ConstraintOrder) |
Allows you to change the order of the constraint on the second point. ConstraintOrder is initialized with the default setting of 1. The following settings are available: | |
void | SetP1 (const gp_Pnt2d &P1) |
Allows you to change the location of the point, P1, and in doing so, modify the curve. Warning This method changes the angle as well as the point. Exceptions NullValue if the distance between P1 and P2 is less than or equal to the tolerance value for distance in Precision::Confusion: P1.IsEqual(P2,
Precision::Confusion()). The function gp_Pnt2d::IsEqual tests to see if this is the case. | |
void | SetP2 (const gp_Pnt2d &P2) |
Allows you to change the location of the point, P1, and in doing so, modify the curve. Warning This method changes the angle as well as the point. Exceptions NullValue if the distance between P1 and P2 is less than or equal to the tolerance value for distance in Precision::Confusion: P1.IsEqual(P2,
Precision::Confusion()). The function gp_Pnt2d::IsEqual tests to see if this is the case. | |
void | SetAngle1 (const Standard_Real Angle1) |
Allows you to change the angle Angle1 at the first point, P1. The default setting is 0. | |
void | SetAngle2 (const Standard_Real Angle2) |
Allows you to change the angle Angle2 at the second point, P2. The default setting is 0. | |
void | SetHeight (const Standard_Real Height) |
Allows you to change the height of the deformation. Raises NegativeValue; – if Height <= 0 if Height <= 0. | |
void | SetSlope (const Standard_Real Slope) |
Allows you to set the slope value, Slope. | |
void | SetSlidingFactor (const Standard_Real SlidingFactor) |
Allows you to change the ratio SlidingFactor. This compares the length of the batten and the reference length, which is, in turn, a function of the constraints. This modification has one of the following two effects: | |
Standard_Real | SlidingOfReference () const |
Computes the real number value for length Sliding of Reference for new constraints. If you want to give a specific length to a batten curve, use the following syntax: b.SetSlidingFactor(L / b.SlidingOfReference()) where b is the name of the batten curve object. | |
Standard_Boolean | GetFreeSliding () const |
Returns the initial free sliding value, false by default. Free sliding is generally more aesthetically pleasing than constrained sliding. However, the computation can fail with values such as angles greater than PI/2. This is because the resulting batten length is theoretically infinite. | |
Standard_Integer | GetConstraintOrder1 () const |
Returns the established first constraint order. | |
Standard_Integer | GetConstraintOrder2 () const |
Returns the established second constraint order. | |
const gp_Pnt2d & | GetP1 () const |
Returns the established location of the point P1. | |
const gp_Pnt2d & | GetP2 () const |
Returns the established location of the point P2. | |
Standard_Real | GetAngle1 () const |
Returns the established first angle. | |
Standard_Real | GetAngle2 () const |
Returns the established second angle. | |
Standard_Real | GetHeight () const |
Returns the thickness of the lathe. | |
Standard_Real | GetSlope () const |
Returns the established slope value. | |
Standard_Real | GetSlidingFactor () const |
Returns the initial sliding factor. | |
Handle< Geom2d_BSplineCurve > | Curve () const |
Returns the computed curve a 2d BSpline. | |
Computes a 2D curve using an algorithm which minimizes tension, sagging, and jerk energy. As in FairCurve_Batten, two reference points are used. Unlike that class, FairCurve_MinimalVariation requires curvature settings at the first and second reference points. These are defined by the rays of curvature desired at each point.
FairCurve_MinimalVariation::FairCurve_MinimalVariation | ( | const gp_Pnt2d & | P1, |
const gp_Pnt2d & | P2, | ||
const Standard_Real | Heigth, | ||
const Standard_Real | Slope = 0, | ||
const Standard_Real | PhysicalRatio = 0 ) |
Constructs the two contact points P1 and P2 and the geometrical characteristics of the batten (elastic beam) These include the real number values for height of deformation Height, slope value Slope, and kind of energy PhysicalRatio. The kinds of energy include:
|
overridevirtual |
Computes the curve with respect to the constraints, NbIterations and Tolerance. The tolerance setting allows you to control the precision of computation, and the maximum number of iterations allows you to set a limit on computation time.
Reimplemented from FairCurve_Batten.
|
overridevirtual |
Prints on the stream o information on the current state of the object. Is used to redefine the operator <<.
Reimplemented from FairCurve_Batten.
Standard_Real FairCurve_MinimalVariation::GetCurvature1 | ( | ) | const |
Returns the first established curvature.
Standard_Real FairCurve_MinimalVariation::GetCurvature2 | ( | ) | const |
Returns the second established curvature.
Standard_Real FairCurve_MinimalVariation::GetPhysicalRatio | ( | ) | const |
Returns the physical ratio, or kind of energy.
void FairCurve_MinimalVariation::SetCurvature1 | ( | const Standard_Real | Curvature | ) |
Allows you to set a new constraint on curvature at the first point.
void FairCurve_MinimalVariation::SetCurvature2 | ( | const Standard_Real | Curvature | ) |
Allows you to set a new constraint on curvature at the second point.
void FairCurve_MinimalVariation::SetPhysicalRatio | ( | const Standard_Real | Ratio | ) |
Allows you to set the physical ratio Ratio. The kinds of energy which you can specify include: 0 is only "Jerk" Energy 1 is only "Sagging" Energy like batten Warning: if Ratio is 1 it is impossible to impose curvature constraints. Raises DomainError if Ratio < 0 or Ratio > 1.