Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:03:01

0001 // Created on: 1992-10-19
0002 // Created by: Remi GILET
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 _Bisector_Bisec_HeaderFile
0018 #define _Bisector_Bisec_HeaderFile
0019 
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022 #include <Standard_Handle.hxx>
0023 
0024 #include <GeomAbs_JoinType.hxx>
0025 class Geom2d_TrimmedCurve;
0026 class Geom2d_Curve;
0027 class gp_Pnt2d;
0028 class gp_Vec2d;
0029 class Geom2d_Point;
0030 
0031 
0032 //! Bisec provides the bisecting line between two elements
0033 //! This line is trimmed by a point <P> and it's contained in the domain
0034 //! defined by the two vectors <V1>, <V2> and <Sense>.
0035 //!
0036 //! Definition of the domain:
0037 //! if <Sense>  is  true the bisecting line is contained in the sector
0038 //! defined by <-V1> and <-V2> in the sense indirect.
0039 //! if <Sense>  is  false the bisecting line is contained in the sector
0040 //! defined by <-V1> and <-V2> in the sense direct.
0041 //!
0042 //! <Tolerance> is used to define degenerate bisector.
0043 //! if the bisector is an hyperbola and one of this radius is smaller
0044 //! than <Tolerance>, the bisector is replaced by a line or semi_line
0045 //! corresponding to one of hyperbola's axes.
0046 //! if the bisector is a parabola on the focal length is smaller than
0047 //! <Tolerance>, the bisector is replaced by a semi_line corresponding
0048 //! to the axe of symmetry of the parabola.
0049 //! if the bisector is an ellipse  and the minor radius is smaller than
0050 //! <Tolerance>, the bisector is replaced by a segment corresponding
0051 //! to the great axe of the ellipse.
0052 class Bisector_Bisec 
0053 {
0054 public:
0055 
0056   DEFINE_STANDARD_ALLOC
0057 
0058   
0059   Standard_EXPORT Bisector_Bisec();
0060   
0061   //! Performs  the bisecting line  between the  curves
0062   //! <Cu1> and <Cu2>.
0063   //! <oncurve> is True if the point <P> is common to <Cu1>
0064   //! and <Cu2>.
0065   Standard_EXPORT void Perform (const Handle(Geom2d_Curve)& Cu1, const Handle(Geom2d_Curve)& Cu2, const gp_Pnt2d& P, const gp_Vec2d& V1, const gp_Vec2d& V2, const Standard_Real Sense, const GeomAbs_JoinType ajointype, const Standard_Real Tolerance, const Standard_Boolean oncurve = Standard_True);
0066   
0067   //! Performs  the bisecting line  between the  curve
0068   //! <Cu1> and the point <Pnt>.
0069   //! <oncurve> is True if the point <P> is the point <Pnt>.
0070   Standard_EXPORT void Perform (const Handle(Geom2d_Curve)& Cu, const Handle(Geom2d_Point)& Pnt, const gp_Pnt2d& P, const gp_Vec2d& V1, const gp_Vec2d& V2, const Standard_Real Sense, const Standard_Real Tolerance, const Standard_Boolean oncurve = Standard_True);
0071   
0072   //! Performs  the bisecting line  between the  curve
0073   //! <Cu> and the point <Pnt>.
0074   //! <oncurve> is True if the point <P> is the point <Pnt>.
0075   Standard_EXPORT void Perform (const Handle(Geom2d_Point)& Pnt, const Handle(Geom2d_Curve)& Cu, const gp_Pnt2d& P, const gp_Vec2d& V1, const gp_Vec2d& V2, const Standard_Real Sense, const Standard_Real Tolerance, const Standard_Boolean oncurve = Standard_True);
0076   
0077   //! Performs  the bisecting line  between the two points
0078   //! <Pnt1>  and <Pnt2>.
0079   Standard_EXPORT void Perform (const Handle(Geom2d_Point)& Pnt1, const Handle(Geom2d_Point)& Pnt2, const gp_Pnt2d& P, const gp_Vec2d& V1, const gp_Vec2d& V2, const Standard_Real Sense, const Standard_Real Tolerance = 0.0, const Standard_Boolean oncurve = Standard_True);
0080   
0081   //! Returns the Curve of <me>.
0082   Standard_EXPORT const Handle(Geom2d_TrimmedCurve)& Value() const;
0083   
0084   //! Returns the Curve of <me>.
0085   Standard_EXPORT const Handle(Geom2d_TrimmedCurve)& ChangeValue();
0086 
0087 
0088 
0089 
0090 protected:
0091 
0092 
0093 
0094 
0095 
0096 private:
0097 
0098 
0099 
0100   Handle(Geom2d_TrimmedCurve) thebisector;
0101 
0102 
0103 };
0104 
0105 
0106 
0107 
0108 
0109 
0110 
0111 #endif // _Bisector_Bisec_HeaderFile