Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-06-25 08:29:31

0001 // Created on: 1992-06-04
0002 // Created by: Jacques GOUSSARD
0003 // Copyright (c) 1992-1999 Matra Datavision
0004 // Copyright (c) 1999-2014 OPEN CASCADE SAS
0005 //
0006 // This file is part of Open CASCADE Technology software library.
0007 //
0008 // This library is free software; you can redistribute it and/or modify it under
0009 // the terms of the GNU Lesser General Public License version 2.1 as published
0010 // by the Free Software Foundation, with special exception defined in the file
0011 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0012 // distribution for complete text of the license and disclaimer of any warranty.
0013 //
0014 // Alternatively, this file may be used under the terms of Open CASCADE
0015 // commercial license or contractual agreement.
0016 
0017 #ifndef _Geom2dInt_GInter_HeaderFile
0018 #define _Geom2dInt_GInter_HeaderFile
0019 
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022 
0023 #include <IntCurve_IntConicConic.hxx>
0024 #include <Geom2dInt_TheIntConicCurveOfGInter.hxx>
0025 #include <Geom2dInt_TheIntPCurvePCurveOfGInter.hxx>
0026 #include <IntRes2d_Intersection.hxx>
0027 #include <Standard_Integer.hxx>
0028 #include <TColStd_Array1OfReal.hxx>
0029 class Standard_ConstructionError;
0030 class Adaptor2d_Curve2d;
0031 class Geom2dInt_Geom2dCurveTool;
0032 class Geom2dInt_TheProjPCurOfGInter;
0033 class Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter;
0034 class Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter;
0035 class Geom2dInt_TheIntConicCurveOfGInter;
0036 class Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter;
0037 class Geom2dInt_IntConicCurveOfGInter;
0038 class Geom2dInt_TheIntPCurvePCurveOfGInter;
0039 class Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter;
0040 class Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter;
0041 class Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter;
0042 class IntRes2d_Domain;
0043 
0044 class Geom2dInt_GInter : public IntRes2d_Intersection
0045 {
0046 public:
0047   DEFINE_STANDARD_ALLOC
0048 
0049   //! Empty constructor.
0050   Geom2dInt_GInter();
0051 
0052   //! Self Intersection of a curve
0053   Geom2dInt_GInter(const Adaptor2d_Curve2d& C,
0054                    const Standard_Real      TolConf,
0055                    const Standard_Real      Tol);
0056 
0057   //! Self Intersection of a curve with a domain.
0058   Geom2dInt_GInter(const Adaptor2d_Curve2d& C,
0059                    const IntRes2d_Domain&   D,
0060                    const Standard_Real      TolConf,
0061                    const Standard_Real      Tol);
0062 
0063   //! Intersection between 2 curves.
0064   Geom2dInt_GInter(const Adaptor2d_Curve2d& C1,
0065                    const Adaptor2d_Curve2d& C2,
0066                    const Standard_Real      TolConf,
0067                    const Standard_Real      Tol);
0068 
0069   //! Intersection between 2 curves.
0070   Geom2dInt_GInter(const Adaptor2d_Curve2d& C1,
0071                    const IntRes2d_Domain&   D1,
0072                    const Adaptor2d_Curve2d& C2,
0073                    const Standard_Real      TolConf,
0074                    const Standard_Real      Tol);
0075 
0076   //! Intersection between 2 curves.
0077   Geom2dInt_GInter(const Adaptor2d_Curve2d& C1,
0078                    const Adaptor2d_Curve2d& C2,
0079                    const IntRes2d_Domain&   D2,
0080                    const Standard_Real      TolConf,
0081                    const Standard_Real      Tol);
0082 
0083   //! Intersection between 2 curves.
0084   Geom2dInt_GInter(const Adaptor2d_Curve2d& C1,
0085                    const IntRes2d_Domain&   D1,
0086                    const Adaptor2d_Curve2d& C2,
0087                    const IntRes2d_Domain&   D2,
0088                    const Standard_Real      TolConf,
0089                    const Standard_Real      Tol);
0090 
0091   //! Intersection between 2 curves.
0092   Standard_EXPORT void Perform(const Adaptor2d_Curve2d& C1,
0093                                const IntRes2d_Domain&   D1,
0094                                const Adaptor2d_Curve2d& C2,
0095                                const IntRes2d_Domain&   D2,
0096                                const Standard_Real      TolConf,
0097                                const Standard_Real      Tol);
0098 
0099   //! Intersection between 2 curves.
0100   void Perform(const Adaptor2d_Curve2d& C1,
0101                const Adaptor2d_Curve2d& C2,
0102                const Standard_Real      TolConf,
0103                const Standard_Real      Tol);
0104 
0105   //! Intersection between 2 curves.
0106   Standard_EXPORT void Perform(const Adaptor2d_Curve2d& C1,
0107                                const IntRes2d_Domain&   D1,
0108                                const Standard_Real      TolConf,
0109                                const Standard_Real      Tol);
0110 
0111   //! Intersection between 2 curves.
0112   Standard_EXPORT void Perform(const Adaptor2d_Curve2d& C1,
0113                                const Standard_Real      TolConf,
0114                                const Standard_Real      Tol);
0115 
0116   //! Intersection between 2 curves.
0117   void Perform(const Adaptor2d_Curve2d& C1,
0118                const IntRes2d_Domain&   D1,
0119                const Adaptor2d_Curve2d& C2,
0120                const Standard_Real      TolConf,
0121                const Standard_Real      Tol);
0122 
0123   //! Intersection between 2 curves.
0124   void Perform(const Adaptor2d_Curve2d& C1,
0125                const Adaptor2d_Curve2d& C2,
0126                const IntRes2d_Domain&   D2,
0127                const Standard_Real      TolConf,
0128                const Standard_Real      Tol);
0129 
0130   //! Create a domain from a curve
0131   Standard_EXPORT IntRes2d_Domain ComputeDomain(const Adaptor2d_Curve2d& C1,
0132                                                 const Standard_Real      TolDomain) const;
0133 
0134   //! Set / get minimum number of points in polygon intersection.
0135   Standard_EXPORT void             SetMinNbSamples(const Standard_Integer theMinNbSamples);
0136   Standard_EXPORT Standard_Integer GetMinNbSamples() const;
0137 
0138 protected:
0139 private:
0140   //! Intersection between 2 curves.
0141   Standard_EXPORT void InternalPerform(const Adaptor2d_Curve2d& C1,
0142                                        const IntRes2d_Domain&   D1,
0143                                        const Adaptor2d_Curve2d& C2,
0144                                        const IntRes2d_Domain&   D2,
0145                                        const Standard_Real      TolConf,
0146                                        const Standard_Real      Tol,
0147                                        const Standard_Boolean   Composite);
0148 
0149   //! Part of InternalCompositePerform function
0150   Standard_EXPORT void InternalCompositePerform_noRecurs(const Standard_Integer      NbInterC1,
0151                                                          const Adaptor2d_Curve2d&    C1,
0152                                                          const Standard_Integer      NumInterC1,
0153                                                          const TColStd_Array1OfReal& Tab1,
0154                                                          const IntRes2d_Domain&      D1,
0155                                                          const Standard_Integer      NbInterC2,
0156                                                          const Adaptor2d_Curve2d&    C2,
0157                                                          const Standard_Integer      NumInterC2,
0158                                                          const TColStd_Array1OfReal& Tab2,
0159                                                          const IntRes2d_Domain&      D2,
0160                                                          const Standard_Real         TolConf,
0161                                                          const Standard_Real         Tol);
0162 
0163   //! Intersection between 2 curves.
0164   Standard_EXPORT void InternalCompositePerform(const Adaptor2d_Curve2d&    C1,
0165                                                 const IntRes2d_Domain&      D1,
0166                                                 const Standard_Integer      N1,
0167                                                 const Standard_Integer      NB1,
0168                                                 const TColStd_Array1OfReal& Tab1,
0169                                                 const Adaptor2d_Curve2d&    C2,
0170                                                 const IntRes2d_Domain&      D2,
0171                                                 const Standard_Integer      N2,
0172                                                 const Standard_Integer      NB2,
0173                                                 const TColStd_Array1OfReal& Tab2,
0174                                                 const Standard_Real         TolConf,
0175                                                 const Standard_Real         Tol,
0176                                                 const Standard_Boolean      Composite);
0177 
0178   Standard_Real                        param1inf;
0179   Standard_Real                        param1sup;
0180   Standard_Real                        param2inf;
0181   Standard_Real                        param2sup;
0182   IntCurve_IntConicConic               intconiconi;
0183   Geom2dInt_TheIntConicCurveOfGInter   intconicurv;
0184   Geom2dInt_TheIntPCurvePCurveOfGInter intcurvcurv;
0185 };
0186 
0187 #define TheCurve Adaptor2d_Curve2d
0188 #define TheCurve_hxx <Adaptor2d_Curve2d.hxx>
0189 #define TheCurveTool Geom2dInt_Geom2dCurveTool
0190 #define TheCurveTool_hxx <Geom2dInt_Geom2dCurveTool.hxx>
0191 #define IntCurve_TheProjPCur Geom2dInt_TheProjPCurOfGInter
0192 #define IntCurve_TheProjPCur_hxx <Geom2dInt_TheProjPCurOfGInter.hxx>
0193 #define IntCurve_TheCurveLocatorOfTheProjPCur Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter
0194 #define IntCurve_TheCurveLocatorOfTheProjPCur_hxx                                                  \
0195   <Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter.hxx>
0196 #define IntCurve_TheLocateExtPCOfTheProjPCur Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter
0197 #define IntCurve_TheLocateExtPCOfTheProjPCur_hxx                                                   \
0198   <Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter.hxx>
0199 #define IntCurve_TheCurveLocatorOfTheProjPCur Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter
0200 #define IntCurve_TheCurveLocatorOfTheProjPCur_hxx                                                  \
0201   <Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter.hxx>
0202 #define IntCurve_TheLocateExtPCOfTheProjPCur Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter
0203 #define IntCurve_TheLocateExtPCOfTheProjPCur_hxx                                                   \
0204   <Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter.hxx>
0205 #define IntCurve_TheIntConicCurve Geom2dInt_TheIntConicCurveOfGInter
0206 #define IntCurve_TheIntConicCurve_hxx <Geom2dInt_TheIntConicCurveOfGInter.hxx>
0207 #define IntCurve_TheIntersectorOfTheIntConicCurve Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter
0208 #define IntCurve_TheIntersectorOfTheIntConicCurve_hxx                                              \
0209   <Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter.hxx>
0210 #define IntCurve_TheIntersectorOfTheIntConicCurve Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter
0211 #define IntCurve_TheIntersectorOfTheIntConicCurve_hxx                                              \
0212   <Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter.hxx>
0213 #define IntCurve_IntConicCurve Geom2dInt_IntConicCurveOfGInter
0214 #define IntCurve_IntConicCurve_hxx <Geom2dInt_IntConicCurveOfGInter.hxx>
0215 #define IntCurve_TheIntPCurvePCurve Geom2dInt_TheIntPCurvePCurveOfGInter
0216 #define IntCurve_TheIntPCurvePCurve_hxx <Geom2dInt_TheIntPCurvePCurveOfGInter.hxx>
0217 #define IntCurve_ThePolygon2dOfTheIntPCurvePCurve Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter
0218 #define IntCurve_ThePolygon2dOfTheIntPCurvePCurve_hxx                                              \
0219   <Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter.hxx>
0220 #define IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve                                         \
0221   Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter
0222 #define IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve_hxx                                     \
0223   <Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter.hxx>
0224 #define IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve                                        \
0225   Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter
0226 #define IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve_hxx                                    \
0227   <Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter.hxx>
0228 #define IntCurve_ThePolygon2dOfTheIntPCurvePCurve Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter
0229 #define IntCurve_ThePolygon2dOfTheIntPCurvePCurve_hxx                                              \
0230   <Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter.hxx>
0231 #define IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve                                         \
0232   Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter
0233 #define IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve_hxx                                     \
0234   <Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter.hxx>
0235 #define IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve                                        \
0236   Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter
0237 #define IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve_hxx                                    \
0238   <Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter.hxx>
0239 #define IntCurve_IntCurveCurveGen Geom2dInt_GInter
0240 #define IntCurve_IntCurveCurveGen_hxx <Geom2dInt_GInter.hxx>
0241 
0242 #include <IntCurve_IntCurveCurveGen.lxx>
0243 
0244 #undef TheCurve
0245 #undef TheCurve_hxx
0246 #undef TheCurveTool
0247 #undef TheCurveTool_hxx
0248 #undef IntCurve_TheProjPCur
0249 #undef IntCurve_TheProjPCur_hxx
0250 #undef IntCurve_TheCurveLocatorOfTheProjPCur
0251 #undef IntCurve_TheCurveLocatorOfTheProjPCur_hxx
0252 #undef IntCurve_TheLocateExtPCOfTheProjPCur
0253 #undef IntCurve_TheLocateExtPCOfTheProjPCur_hxx
0254 #undef IntCurve_TheCurveLocatorOfTheProjPCur
0255 #undef IntCurve_TheCurveLocatorOfTheProjPCur_hxx
0256 #undef IntCurve_TheLocateExtPCOfTheProjPCur
0257 #undef IntCurve_TheLocateExtPCOfTheProjPCur_hxx
0258 #undef IntCurve_TheIntConicCurve
0259 #undef IntCurve_TheIntConicCurve_hxx
0260 #undef IntCurve_TheIntersectorOfTheIntConicCurve
0261 #undef IntCurve_TheIntersectorOfTheIntConicCurve_hxx
0262 #undef IntCurve_TheIntersectorOfTheIntConicCurve
0263 #undef IntCurve_TheIntersectorOfTheIntConicCurve_hxx
0264 #undef IntCurve_IntConicCurve
0265 #undef IntCurve_IntConicCurve_hxx
0266 #undef IntCurve_TheIntPCurvePCurve
0267 #undef IntCurve_TheIntPCurvePCurve_hxx
0268 #undef IntCurve_ThePolygon2dOfTheIntPCurvePCurve
0269 #undef IntCurve_ThePolygon2dOfTheIntPCurvePCurve_hxx
0270 #undef IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve
0271 #undef IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve_hxx
0272 #undef IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve
0273 #undef IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve_hxx
0274 #undef IntCurve_ThePolygon2dOfTheIntPCurvePCurve
0275 #undef IntCurve_ThePolygon2dOfTheIntPCurvePCurve_hxx
0276 #undef IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve
0277 #undef IntCurve_TheDistBetweenPCurvesOfTheIntPCurvePCurve_hxx
0278 #undef IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve
0279 #undef IntCurve_ExactIntersectionPointOfTheIntPCurvePCurve_hxx
0280 #undef IntCurve_IntCurveCurveGen
0281 #undef IntCurve_IntCurveCurveGen_hxx
0282 
0283 #endif // _Geom2dInt_GInter_HeaderFile