Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-10-31 09:35:40

0001 // Created on: 1991-03-29
0002 // Created by: Remi GILET
0003 // Copyright (c) 1991-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 _Geom2dGcc_Circ2d2TanOnGeo_HeaderFile
0018 #define _Geom2dGcc_Circ2d2TanOnGeo_HeaderFile
0019 
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022 
0023 #include <Standard_Integer.hxx>
0024 #include <gp_Circ2d.hxx>
0025 #include <NCollection_Array1.hxx>
0026 #include <GccEnt_Position.hxx>
0027 #include <gp_Pnt2d.hxx>
0028 class GccEnt_QualifiedCirc;
0029 class Geom2dAdaptor_Curve;
0030 class GccEnt_QualifiedLin;
0031 class gp_Pnt2d;
0032 class gp_Circ2d;
0033 
0034 //! This class implements the algorithms used to
0035 //! create 2d circles TANgent to 2 entities and
0036 //! having the center ON a curve.
0037 //! The order of the tangency argument is always
0038 //! QualifiedCirc, QualifiedLin, QualifiedCurv, Pnt2d.
0039 //! the arguments are :
0040 //! - The two tangency arguments (lines, circles or points).
0041 //! - The center line (a curve).
0042 //! - The parameter for each tangency argument which
0043 //! is a curve.
0044 //! - The tolerance.
0045 class Geom2dGcc_Circ2d2TanOnGeo
0046 {
0047 public:
0048   DEFINE_STANDARD_ALLOC
0049 
0050   //! This method implements the algorithms used to
0051   //! create 2d circles TANgent to two 2d circles and
0052   //! having the center ON a curve.
0053   Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const GccEnt_QualifiedCirc& Qualified1,
0054                                             const GccEnt_QualifiedCirc& Qualified2,
0055                                             const Geom2dAdaptor_Curve&  OnCurv,
0056                                             const double                Tolerance);
0057 
0058   //! This method implements the algorithms used to
0059   //! create 2d circles TANgent to a 2d circle and a 2d line
0060   //! having the center ON a curve.
0061   Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const GccEnt_QualifiedCirc& Qualified1,
0062                                             const GccEnt_QualifiedLin&  Qualified2,
0063                                             const Geom2dAdaptor_Curve&  OnCurv,
0064                                             const double                Tolerance);
0065 
0066   //! This method implements the algorithms used to
0067   //! create 2d circles TANgent to a 2d circle and a point
0068   //! having the center ON a curve.
0069   Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const GccEnt_QualifiedCirc& Qualified1,
0070                                             const gp_Pnt2d&             Point2,
0071                                             const Geom2dAdaptor_Curve&  OnCurv,
0072                                             const double                Tolerance);
0073 
0074   //! This method implements the algorithms used to
0075   //! create 2d circles TANgent to two 2d lines
0076   //! having the center ON a curve.
0077   Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const GccEnt_QualifiedLin& Qualified1,
0078                                             const GccEnt_QualifiedLin& Qualified2,
0079                                             const Geom2dAdaptor_Curve& OnCurv,
0080                                             const double               Tolerance);
0081 
0082   //! This method implements the algorithms used to
0083   //! create 2d circles TANgent to a 2d line and a point
0084   //! having the center ON a 2d line.
0085   Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const GccEnt_QualifiedLin& Qualified1,
0086                                             const gp_Pnt2d&            Qualified2,
0087                                             const Geom2dAdaptor_Curve& OnCurv,
0088                                             const double               Tolerance);
0089 
0090   //! This method implements the algorithms used to
0091   //! create 2d circles TANgent to two points
0092   //! having the center ON a 2d line.
0093   Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const gp_Pnt2d&            Point1,
0094                                             const gp_Pnt2d&            Point2,
0095                                             const Geom2dAdaptor_Curve& OnCurv,
0096                                             const double               Tolerance);
0097 
0098   //! This method returns True if the construction
0099   //! algorithm succeeded.
0100   Standard_EXPORT bool IsDone() const;
0101 
0102   //! This method returns the number of solutions.
0103   //! It raises NotDone if the construction algorithm
0104   //! didn't succeed.
0105   Standard_EXPORT int NbSolutions() const;
0106 
0107   //! Returns the solution number Index and raises OutOfRange
0108   //! exception if Index is greater than the number of solutions.
0109   //! Be careful: the Index is only a way to get all the
0110   //! solutions, but is not associated to those outside the
0111   //! context of the algorithm-object.
0112   //! It raises NotDone if the construction algorithm
0113   //! didn't succeed.
0114   //! It raises OutOfRange if Index is greater than the
0115   //! number of solutions.
0116   Standard_EXPORT gp_Circ2d ThisSolution(const int Index) const;
0117 
0118   //! It returns the information about the qualifiers of
0119   //! the tangency
0120   //! arguments concerning the solution number Index.
0121   //! It returns the real qualifiers (the qualifiers given to the
0122   //! constructor method in case of enclosed, enclosing and outside
0123   //! and the qualifiers computedin case of unqualified).
0124   Standard_EXPORT void WhichQualifier(const int        Index,
0125                                       GccEnt_Position& Qualif1,
0126                                       GccEnt_Position& Qualif2) const;
0127 
0128   //! Returns information about the tangency point between the
0129   //! result number Index and the first argument.
0130   //! ParSol is the intrinsic parameter of the point on the
0131   //! solution curv.
0132   //! ParArg is the intrinsic parameter of the point on the
0133   //! argument curv.
0134   //! PntSol is the tangency point on the solution curv.
0135   //! PntArg is the tangency point on the argument curv.
0136   //! It raises NotDone if the construction algorithm
0137   //! didn't succeed.
0138   //! It raises OutOfRange if Index is greater than the
0139   //! number of solutions.
0140   Standard_EXPORT void Tangency1(const int Index,
0141                                  double&   ParSol,
0142                                  double&   ParArg,
0143                                  gp_Pnt2d& PntSol) const;
0144 
0145   //! Returns information about the tangency point between the
0146   //! result number Index and the second argument.
0147   //! ParSol is the intrinsic parameter of the point on the
0148   //! solution curv.
0149   //! ParArg is the intrinsic parameter of the point on the
0150   //! argument curv.
0151   //! PntSol is the tangency point on the solution curv.
0152   //! PntArg is the tangency point on the argument curv.
0153   //! It raises NotDone if the construction algorithm
0154   //! didn't succeed.
0155   //! It raises OutOfRange if Index is greater than the
0156   //! number of solutions.
0157   Standard_EXPORT void Tangency2(const int Index,
0158                                  double&   ParSol,
0159                                  double&   ParArg,
0160                                  gp_Pnt2d& PntSol) const;
0161 
0162   //! Returns information about the center (on the curv)
0163   //! of the result.
0164   //! ParArg is the intrinsic parameter of the point on
0165   //! the argument curv.
0166   //! PntSol is the center point of the solution curv.
0167   //! It raises NotDone if the construction algorithm
0168   //! didn't succeed.
0169   //! It raises OutOfRange if Index is greater than the
0170   //! number of solutions.
0171   Standard_EXPORT void CenterOn3(const int Index, double& ParArg, gp_Pnt2d& PntSol) const;
0172 
0173   //! Returns True if the solution number Index is equal to
0174   //! the first argument and False in the other cases.
0175   //! It raises NotDone if the construction algorithm
0176   //! didn't succeed.
0177   //! It raises OutOfRange if Index is greater than the
0178   //! number of solutions.
0179   Standard_EXPORT bool IsTheSame1(const int Index) const;
0180 
0181   //! Returns True if the solution number Index is equal to
0182   //! the second argument and False in the other cases.
0183   //! It raises NotDone if the construction algorithm
0184   //! didn't succeed.
0185   //! It raises OutOfRange if Index is greater than the
0186   //! number of solutions.
0187   Standard_EXPORT bool IsTheSame2(const int Index) const;
0188 
0189 private:
0190   bool                                WellDone;
0191   int                                 NbrSol;
0192   NCollection_Array1<gp_Circ2d>       cirsol;
0193   NCollection_Array1<GccEnt_Position> qualifier1;
0194   NCollection_Array1<GccEnt_Position> qualifier2;
0195   NCollection_Array1<int>             TheSame1;
0196   NCollection_Array1<int>             TheSame2;
0197   NCollection_Array1<gp_Pnt2d>        pnttg1sol;
0198   NCollection_Array1<gp_Pnt2d>        pnttg2sol;
0199   NCollection_Array1<gp_Pnt2d>        pntcen;
0200   NCollection_Array1<double>          par1sol;
0201   NCollection_Array1<double>          par2sol;
0202   NCollection_Array1<double>          pararg1;
0203   NCollection_Array1<double>          pararg2;
0204   NCollection_Array1<double>          parcen3;
0205 };
0206 
0207 #endif // _Geom2dGcc_Circ2d2TanOnGeo_HeaderFile