|
|
|||
File indexing completed on 2026-09-18 09:20:57
0001 // Created on: 1992-05-06 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 _IntPatch_Line_HeaderFile 0018 #define _IntPatch_Line_HeaderFile 0019 0020 #include <Standard.hxx> 0021 #include <Standard_Type.hxx> 0022 0023 #include <IntPatch_IType.hxx> 0024 #include <IntSurf_TypeTrans.hxx> 0025 #include <IntSurf_Situation.hxx> 0026 #include <Standard_Transient.hxx> 0027 0028 //! Definition of an intersection line between two 0029 //! surfaces. 0030 //! A line may be either geometric : line, circle, ellipse, 0031 //! parabola, hyperbola, as defined in the class GLine, 0032 //! or analytic, as defined in the class ALine, or defined 0033 //! by a set of points (coming from a walking algorithm) as 0034 //! defined in the class WLine. 0035 class IntPatch_Line : public Standard_Transient 0036 { 0037 0038 public: 0039 //! To set the values returned by IsUIsoS1,.... 0040 //! The default values are False. 0041 void SetValue(const bool Uiso1, const bool Viso1, const bool Uiso2, const bool Viso2); 0042 0043 //! Returns the type of geometry 3d (Line, Circle, Parabola, 0044 //! Hyperbola, Ellipse, Analytic, Walking, Restriction) 0045 IntPatch_IType ArcType() const; 0046 0047 //! Returns TRUE if the intersection is a line of tangency 0048 //! between the 2 patches. 0049 bool IsTangent() const; 0050 0051 //! Returns the type of the transition of the line 0052 //! for the first surface. The transition is "constant" 0053 //! along the line. 0054 //! The transition is IN if the line is oriented in such 0055 //! a way that the system of vector (N1,N2,T) is right-handed, 0056 //! where N1 is the normal to the first surface at a point P, 0057 //! N2 is the normal to the second surface at a point P, 0058 //! T is the tangent to the intersection line at P. 0059 //! If the system of vector is left-handed, the transition 0060 //! is OUT. 0061 //! When N1 and N2 are colinear all along the intersection 0062 //! line, the transition will be 0063 //! - TOUCH, if it is possible to use the 2nd derivatives 0064 //! to determine the position of one surafce compared 0065 //! to the other (see Situation) 0066 //! - UNDECIDED otherwise. 0067 //! 0068 //! If one of the transition is TOUCH or UNDECIDED, the other 0069 //! one has got the same value. 0070 IntSurf_TypeTrans TransitionOnS1() const; 0071 0072 //! Returns the type of the transition of the line 0073 //! for the second surface. The transition is "constant" 0074 //! along the line. 0075 IntSurf_TypeTrans TransitionOnS2() const; 0076 0077 //! Returns the situation (INSIDE/OUTSIDE/UNKNOWN) of 0078 //! the first patch compared to the second one, when 0079 //! TransitionOnS1 or TransitionOnS2 returns TOUCH. 0080 //! Otherwise, an exception is raised. 0081 IntSurf_Situation SituationS1() const; 0082 0083 //! Returns the situation (INSIDE/OUTSIDE/UNKNOWN) of 0084 //! the second patch compared to the first one, when 0085 //! TransitionOnS1 or TransitionOnS2 returns TOUCH. 0086 //! Otherwise, an exception is raised. 0087 IntSurf_Situation SituationS2() const; 0088 0089 //! Returns TRUE if the intersection is a U isoparametric curve 0090 //! on the first patch. 0091 bool IsUIsoOnS1() const; 0092 0093 //! Returns TRUE if the intersection is a V isoparametric curve 0094 //! on the first patch. 0095 bool IsVIsoOnS1() const; 0096 0097 //! Returns TRUE if the intersection is a U isoparametric curve 0098 //! on the second patch. 0099 bool IsUIsoOnS2() const; 0100 0101 //! Returns TRUE if the intersection is a V isoparametric curve 0102 //! on the second patch. 0103 bool IsVIsoOnS2() const; 0104 0105 DEFINE_STANDARD_RTTIEXT(IntPatch_Line, Standard_Transient) 0106 0107 protected: 0108 //! To initialize the fields, when the transitions 0109 //! are In or Out. 0110 Standard_EXPORT IntPatch_Line(const bool Tang, 0111 const IntSurf_TypeTrans Trans1, 0112 const IntSurf_TypeTrans Trans2); 0113 0114 //! To initialize the fields, when the transitions 0115 //! are Touch. 0116 Standard_EXPORT IntPatch_Line(const bool Tang, 0117 const IntSurf_Situation Situ1, 0118 const IntSurf_Situation Situ2); 0119 0120 //! To initialize the fields, when the transitions 0121 //! are Undecided. 0122 Standard_EXPORT IntPatch_Line(const bool Tang); 0123 0124 IntPatch_IType typ; 0125 0126 private: 0127 bool tg; 0128 IntSurf_TypeTrans tS1; 0129 IntSurf_TypeTrans tS2; 0130 IntSurf_Situation sit1; 0131 IntSurf_Situation sit2; 0132 bool uS1; 0133 bool vS1; 0134 bool uS2; 0135 bool vS2; 0136 }; 0137 0138 #include <IntPatch_Line.lxx> 0139 0140 #endif // _IntPatch_Line_HeaderFile
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|