0022048: Visualization, AIS_InteractiveContext - single object selection should alway...
[occt.git] / src / BlendFunc / BlendFunc.hxx
CommitLineData
42cf5bc1 1// Created on: 1993-12-03
2// Created by: Jacques GOUSSARD
3// Copyright (c) 1993-1999 Matra Datavision
4// Copyright (c) 1999-2014 OPEN CASCADE SAS
5//
6// This file is part of Open CASCADE Technology software library.
7//
8// This library is free software; you can redistribute it and/or modify it under
9// the terms of the GNU Lesser General Public License version 2.1 as published
10// by the Free Software Foundation, with special exception defined in the file
11// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12// distribution for complete text of the license and disclaimer of any warranty.
13//
14// Alternatively, this file may be used under the terms of Open CASCADE
15// commercial license or contractual agreement.
16
17#ifndef _BlendFunc_HeaderFile
18#define _BlendFunc_HeaderFile
19
20#include <Standard.hxx>
21#include <Standard_DefineAlloc.hxx>
22#include <Standard_Handle.hxx>
23
24#include <BlendFunc_SectionShape.hxx>
25#include <Standard_Real.hxx>
26#include <Standard_Integer.hxx>
27#include <Convert_ParameterisationType.hxx>
28#include <TColStd_Array1OfReal.hxx>
29#include <TColStd_Array1OfInteger.hxx>
30#include <GeomAbs_Shape.hxx>
31#include <Standard_Boolean.hxx>
32class Adaptor3d_HSurface;
33class gp_Pnt2d;
34class gp_Vec;
35class BlendFunc_ConstRad;
36class BlendFunc_ConstRadInv;
37class BlendFunc_Ruled;
38class BlendFunc_RuledInv;
39class BlendFunc_EvolRad;
40class BlendFunc_EvolRadInv;
41class BlendFunc_CSConstRad;
42class BlendFunc_CSCircular;
43class BlendFunc_Corde;
44class BlendFunc_Chamfer;
45class BlendFunc_ChamfInv;
46class BlendFunc_ChAsym;
47class BlendFunc_ChAsymInv;
48class BlendFunc_Tensor;
49
50
51//! This package provides a set of generic functions, that can
52//! instantiated to compute blendings between two surfaces
53//! (Constant radius, Evolutive radius, Ruled surface).
54class BlendFunc
55{
56public:
57
58 DEFINE_STANDARD_ALLOC
59
60
61 Standard_EXPORT static void GetShape (const BlendFunc_SectionShape SectShape, const Standard_Real MaxAng, Standard_Integer& NbPoles, Standard_Integer& NbKnots, Standard_Integer& Degree, Convert_ParameterisationType& TypeConv);
62
63 Standard_EXPORT static void Knots (const BlendFunc_SectionShape SectShape, TColStd_Array1OfReal& TKnots);
64
65 Standard_EXPORT static void Mults (const BlendFunc_SectionShape SectShape, TColStd_Array1OfInteger& TMults);
66
67 Standard_EXPORT static void GetMinimalWeights (const BlendFunc_SectionShape SectShape, const Convert_ParameterisationType TConv, const Standard_Real AngleMin, const Standard_Real AngleMax, TColStd_Array1OfReal& Weigths);
68
69 //! Used to obtain the next level of continuity.
70 Standard_EXPORT static GeomAbs_Shape NextShape (const GeomAbs_Shape S);
71
72 Standard_EXPORT static Standard_Boolean ComputeNormal (const Handle(Adaptor3d_HSurface)& Surf, const gp_Pnt2d& p2d, gp_Vec& Normal);
73
74 Standard_EXPORT static Standard_Boolean ComputeDNormal (const Handle(Adaptor3d_HSurface)& Surf, const gp_Pnt2d& p2d, gp_Vec& Normal, gp_Vec& DNu, gp_Vec& DNv);
75
76
77
78
79protected:
80
81
82
83
84
85private:
86
87
88
89
90friend class BlendFunc_ConstRad;
91friend class BlendFunc_ConstRadInv;
92friend class BlendFunc_Ruled;
93friend class BlendFunc_RuledInv;
94friend class BlendFunc_EvolRad;
95friend class BlendFunc_EvolRadInv;
96friend class BlendFunc_CSConstRad;
97friend class BlendFunc_CSCircular;
98friend class BlendFunc_Corde;
99friend class BlendFunc_Chamfer;
100friend class BlendFunc_ChamfInv;
101friend class BlendFunc_ChAsym;
102friend class BlendFunc_ChAsymInv;
103friend class BlendFunc_Tensor;
104
105};
106
107
108
109
110
111
112
113#endif // _BlendFunc_HeaderFile