File indexing completed on 2026-07-30 09:14:08
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _IntPolyh_Intersection_HeaderFile
0018 #define _IntPolyh_Intersection_HeaderFile
0019
0020 #include <Adaptor3d_Surface.hxx>
0021 #include <IntPolyh_ArrayOfPointNormal.hxx>
0022 #include <IntPolyh_ArrayOfSectionLines.hxx>
0023 #include <IntPolyh_ArrayOfTangentZones.hxx>
0024 #include <IntPolyh_ListOfCouples.hxx>
0025 #include <IntPolyh_PMaillageAffinage.hxx>
0026 #include <TColStd_Array1OfReal.hxx>
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043 class IntPolyh_Intersection
0044 {
0045 public:
0046 DEFINE_STANDARD_ALLOC
0047
0048 public:
0049
0050
0051 Standard_EXPORT IntPolyh_Intersection(const Handle(Adaptor3d_Surface)& theS1,
0052 const Handle(Adaptor3d_Surface)& theS2);
0053
0054
0055
0056
0057
0058
0059 Standard_EXPORT IntPolyh_Intersection(const Handle(Adaptor3d_Surface)& theS1,
0060 const Standard_Integer theNbSU1,
0061 const Standard_Integer theNbSV1,
0062 const Handle(Adaptor3d_Surface)& theS2,
0063 const Standard_Integer theNbSU2,
0064 const Standard_Integer theNbSV2);
0065
0066
0067
0068 Standard_EXPORT IntPolyh_Intersection(const Handle(Adaptor3d_Surface)& theS1,
0069 const TColStd_Array1OfReal& theUPars1,
0070 const TColStd_Array1OfReal& theVPars1,
0071 const Handle(Adaptor3d_Surface)& theS2,
0072 const TColStd_Array1OfReal& theUPars2,
0073 const TColStd_Array1OfReal& theVPars2);
0074
0075 public:
0076
0077 Standard_Boolean IsDone() const { return myIsDone; }
0078
0079
0080 Standard_Boolean IsParallel() const { return myIsParallel; }
0081
0082
0083 Standard_Integer NbSectionLines() const { return mySectionLines.NbItems(); }
0084
0085
0086 Standard_Integer NbPointsInLine(const Standard_Integer IndexLine) const
0087 {
0088 return mySectionLines[IndexLine - 1].NbStartPoints();
0089 }
0090
0091
0092 Standard_Integer NbTangentZones() const { return myTangentZones.NbItems(); }
0093
0094
0095 Standard_Integer NbPointsInTangentZone(const Standard_Integer) const { return 1; }
0096
0097
0098 Standard_EXPORT void GetLinePoint(const Standard_Integer IndexLine,
0099 const Standard_Integer IndexPoint,
0100 Standard_Real& x,
0101 Standard_Real& y,
0102 Standard_Real& z,
0103 Standard_Real& u1,
0104 Standard_Real& v1,
0105 Standard_Real& u2,
0106 Standard_Real& v2,
0107 Standard_Real& incidence) const;
0108
0109
0110 Standard_EXPORT void GetTangentZonePoint(const Standard_Integer IndexLine,
0111 const Standard_Integer IndexPoint,
0112 Standard_Real& x,
0113 Standard_Real& y,
0114 Standard_Real& z,
0115 Standard_Real& u1,
0116 Standard_Real& v1,
0117 Standard_Real& u2,
0118 Standard_Real& v2) const;
0119
0120 private:
0121
0122 Standard_EXPORT void Perform();
0123
0124
0125 Standard_EXPORT void Perform(const TColStd_Array1OfReal& theUPars1,
0126 const TColStd_Array1OfReal& theVPars1,
0127 const TColStd_Array1OfReal& theUPars2,
0128 const TColStd_Array1OfReal& theVPars2);
0129
0130
0131 Standard_EXPORT Standard_Boolean PerformStd(const TColStd_Array1OfReal& theUPars1,
0132 const TColStd_Array1OfReal& theVPars1,
0133 const TColStd_Array1OfReal& theUPars2,
0134 const TColStd_Array1OfReal& theVPars2,
0135 const Standard_Real theDeflTol1,
0136 const Standard_Real theDeflTol2,
0137 IntPolyh_PMaillageAffinage& theMaillageS,
0138 Standard_Integer& theNbCouples);
0139
0140
0141
0142 Standard_EXPORT Standard_Boolean PerformAdv(const TColStd_Array1OfReal& theUPars1,
0143 const TColStd_Array1OfReal& theVPars1,
0144 const TColStd_Array1OfReal& theUPars2,
0145 const TColStd_Array1OfReal& theVPars2,
0146 const Standard_Real theDeflTol1,
0147 const Standard_Real theDeflTol2,
0148 IntPolyh_PMaillageAffinage& theMaillageFF,
0149 IntPolyh_PMaillageAffinage& theMaillageFR,
0150 IntPolyh_PMaillageAffinage& theMaillageRF,
0151 IntPolyh_PMaillageAffinage& theMaillageRR,
0152 Standard_Integer& theNbCouples);
0153
0154
0155 Standard_EXPORT Standard_Boolean PerformMaillage(const TColStd_Array1OfReal& theUPars1,
0156 const TColStd_Array1OfReal& theVPars1,
0157 const TColStd_Array1OfReal& theUPars2,
0158 const TColStd_Array1OfReal& theVPars2,
0159 const Standard_Real theDeflTol1,
0160 const Standard_Real theDeflTol2,
0161 IntPolyh_PMaillageAffinage& theMaillage);
0162
0163
0164 Standard_EXPORT Standard_Boolean PerformMaillage(const TColStd_Array1OfReal& theUPars1,
0165 const TColStd_Array1OfReal& theVPars1,
0166 const TColStd_Array1OfReal& theUPars2,
0167 const TColStd_Array1OfReal& theVPars2,
0168 const Standard_Real theDeflTol1,
0169 const Standard_Real theDeflTol2,
0170 const IntPolyh_ArrayOfPointNormal& thePoints1,
0171 const IntPolyh_ArrayOfPointNormal& thePoints2,
0172 const Standard_Boolean theIsFirstFwd,
0173 const Standard_Boolean theIsSecondFwd,
0174 IntPolyh_PMaillageAffinage& theMaillage);
0175
0176
0177 Standard_EXPORT void MergeCouples(IntPolyh_ListOfCouples& theArrayFF,
0178 IntPolyh_ListOfCouples& theArrayFR,
0179 IntPolyh_ListOfCouples& theArrayRF,
0180 IntPolyh_ListOfCouples& theArrayRR) const;
0181
0182 Standard_Boolean AnalyzeIntersection(IntPolyh_PMaillageAffinage& theMaillage);
0183 Standard_Boolean IsAdvRequired(IntPolyh_PMaillageAffinage& theMaillage);
0184
0185 private:
0186
0187 Handle(Adaptor3d_Surface) mySurf1;
0188 Handle(Adaptor3d_Surface) mySurf2;
0189
0190 Standard_Integer myNbSU1;
0191 Standard_Integer myNbSV1;
0192 Standard_Integer myNbSU2;
0193 Standard_Integer myNbSV2;
0194
0195
0196 Standard_Boolean myIsDone;
0197 IntPolyh_ArrayOfSectionLines mySectionLines;
0198 IntPolyh_ArrayOfTangentZones myTangentZones;
0199 Standard_Boolean myIsParallel;
0200 };
0201
0202 #endif