1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
|
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to
// this header file considered to be the "object code" form of the original source.
#ifndef _GeomFill_CorrectedFrenet_HeaderFile
#define _GeomFill_CorrectedFrenet_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineHandle.hxx>
#include <Handle_GeomFill_CorrectedFrenet.hxx>
#include <Handle_GeomFill_Frenet.hxx>
#include <Handle_Law_Function.hxx>
#include <gp_Vec.hxx>
#include <Standard_Boolean.hxx>
#include <Handle_TColStd_HArray1OfReal.hxx>
#include <Handle_TColgp_HArray1OfVec.hxx>
#include <GeomFill_TrihedronLaw.hxx>
#include <Handle_GeomFill_TrihedronLaw.hxx>
#include <Standard_Real.hxx>
#include <Handle_Adaptor3d_HCurve.hxx>
#include <Standard_Integer.hxx>
#include <GeomAbs_Shape.hxx>
#include <GeomFill_Trihedron.hxx>
class GeomFill_Frenet;
class Law_Function;
class TColStd_HArray1OfReal;
class TColgp_HArray1OfVec;
class Standard_OutOfRange;
class Standard_ConstructionError;
class GeomFill_TrihedronLaw;
class gp_Vec;
class TColStd_SequenceOfReal;
class TColgp_SequenceOfVec;
class Adaptor3d_HCurve;
class TColStd_Array1OfReal;
//! Defined an Corrected Frenet Trihedron Law It is
//! like Frenet with an Torsion's minimization
class GeomFill_CorrectedFrenet : public GeomFill_TrihedronLaw
{
public:
Standard_EXPORT GeomFill_CorrectedFrenet();
Standard_EXPORT GeomFill_CorrectedFrenet(const Standard_Boolean ForEvaluation);
Standard_EXPORT virtual Handle(GeomFill_TrihedronLaw) Copy() const;
Standard_EXPORT virtual void SetCurve (const Handle(Adaptor3d_HCurve)& C) ;
Standard_EXPORT virtual void SetInterval (const Standard_Real First, const Standard_Real Last) ;
//! compute Triedrhon on curve at parameter <Param>
Standard_EXPORT virtual Standard_Boolean D0 (const Standard_Real Param, gp_Vec& Tangent, gp_Vec& Normal, gp_Vec& BiNormal) ;
//! compute Triedrhon and derivative Trihedron on curve
//! at parameter <Param>
//! Warning : It used only for C1 or C2 aproximation
Standard_EXPORT virtual Standard_Boolean D1 (const Standard_Real Param, gp_Vec& Tangent, gp_Vec& DTangent, gp_Vec& Normal, gp_Vec& DNormal, gp_Vec& BiNormal, gp_Vec& DBiNormal) ;
//! compute Trihedron on curve
//! first and seconde derivatives.
//! Warning : It used only for C2 aproximation
Standard_EXPORT virtual Standard_Boolean D2 (const Standard_Real Param, gp_Vec& Tangent, gp_Vec& DTangent, gp_Vec& D2Tangent, gp_Vec& Normal, gp_Vec& DNormal, gp_Vec& D2Normal, gp_Vec& BiNormal, gp_Vec& DBiNormal, gp_Vec& D2BiNormal) ;
//! Returns the number of intervals for continuity
//! <S>.
//! May be one if Continuity(me) >= <S>
Standard_EXPORT virtual Standard_Integer NbIntervals (const GeomAbs_Shape S) const;
//! Stores in <T> the parameters bounding the intervals
//! of continuity <S>.
//!
//! The array must provide enough room to accomodate
//! for the parameters. i.e. T.Length() > NbIntervals()
Standard_EXPORT virtual void Intervals (TColStd_Array1OfReal& T, const GeomAbs_Shape S) const;
//! Tries to define the best trihedron mode
//! for the curve. It can be:
//! - Frenet
//! - CorrectedFrenet
//! - DiscreteTrihedron
//! Warning: the CorrectedFrenet must be constructed
//! with option ForEvaluation = True,
//! the curve must be set by method SetCurve.
Standard_EXPORT GeomFill_Trihedron EvaluateBestMode() ;
//! Get average value of Tangent(t) and Normal(t) it is usfull to
//! make fast approximation of rational surfaces.
Standard_EXPORT virtual void GetAverageLaw (gp_Vec& ATangent, gp_Vec& ANormal, gp_Vec& ABiNormal) ;
//! Say if the law is Constant.
Standard_EXPORT virtual Standard_Boolean IsConstant() const;
//! Return True.
Standard_EXPORT virtual Standard_Boolean IsOnlyBy3dCurve() const;
DEFINE_STANDARD_RTTI(GeomFill_CorrectedFrenet)
protected:
private:
Standard_EXPORT void Init() ;
//! Computes BSpline representation of Normal evolution at one
//! interval of continuity of Frenet. Returns True if FuncInt = 0
Standard_EXPORT Standard_Boolean InitInterval (const Standard_Real First, const Standard_Real Last, const Standard_Real Step, Standard_Real& startAng, gp_Vec& prevTangent, gp_Vec& prevNormal, gp_Vec& aT, gp_Vec& aN, Handle(Law_Function)& FuncInt, TColStd_SequenceOfReal& SeqPoles, TColStd_SequenceOfReal& SeqAngle, TColgp_SequenceOfVec& SeqTangent, TColgp_SequenceOfVec& SeqNormal) const;
//! Computes angle of Normal evolution of Frenet between any two points on the curve.
Standard_EXPORT Standard_Real CalcAngleAT (const gp_Vec& Tangent, const gp_Vec& Normal, const gp_Vec& prevTangent, const gp_Vec& prevNormal) const;
//! Get corrected value of angle of Normal evolution of Frenet
Standard_EXPORT Standard_Real GetAngleAT (const Standard_Real P) const;
Handle(GeomFill_Frenet) frenet;
Handle(Law_Function) EvolAroundT;
Handle(Law_Function) TLaw;
gp_Vec AT;
gp_Vec AN;
Standard_Boolean isFrenet;
Standard_Boolean myForEvaluation;
Handle(TColStd_HArray1OfReal) HArrPoles;
Handle(TColStd_HArray1OfReal) HArrAngle;
Handle(TColgp_HArray1OfVec) HArrTangent;
Handle(TColgp_HArray1OfVec) HArrNormal;
};
#endif // _GeomFill_CorrectedFrenet_HeaderFile
|