Commit | Line | Data |
---|---|---|

b311480e | 1 | -- Created on: 1992-05-22 |

2 | -- Created by: Jacques GOUSSARD | |

3 | -- Copyright (c) 1992-1999 Matra Datavision | |

4 | -- Copyright (c) 1999-2012 OPEN CASCADE SAS | |

5 | -- | |

6 | -- The content of this file is subject to the Open CASCADE Technology Public | |

7 | -- License Version 6.5 (the "License"). You may not use the content of this file | |

8 | -- except in compliance with the License. Please obtain a copy of the License | |

9 | -- at http://www.opencascade.org and read it completely before using this file. | |

10 | -- | |

11 | -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its | |

12 | -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France. | |

13 | -- | |

14 | -- The Original Code and all software distributed under the License is | |

15 | -- distributed on an "AS IS" basis, without warranty of any kind, and the | |

16 | -- Initial Developer hereby disclaims all such warranties, including without | |

17 | -- limitation, any warranties of merchantability, fitness for a particular | |

18 | -- purpose or non-infringement. Please see the License for the specific terms | |

19 | -- and conditions governing the rights and limitations under the License. | |

20 | ||

7fd59977 | 21 | |

22 | ||

23 | generic class IntCurveCurveGen from IntCurve ( | |

24 | TheCurve as any; | |

25 | TheCurveTool as any) -- as CurveTool from IntCurve(TheCurve) | |

26 | ||

27 | ---Purpose: Provides the algorithm to intersect two 2D-curves. | |

28 | -- The curves may be parametric curves or Conic (see | |

29 | -- the template class CurveTool). | |

30 | -- | |

31 | -- Note: The exception ConstructionError is raised in | |

32 | -- constructors or in Perform methods when a domain | |

33 | -- (Domain from IntRes2d) is not correct, i-e when | |

34 | -- the method TheType returns GeomAbs_Circle or | |

35 | -- GeomAbs_Ellipsei and the corresponding domain is | |

36 | -- not closed (use the SetEquivalentParameters for a | |

37 | -- domain on a circle or an ellipse) or when the | |

38 | -- method TheType returns GeomAbs_Other and the | |

39 | -- domain of the curve is not bounded | |

40 | -- (HasFirstPoint() && HasLastPoint() return True). | |

41 | ---Level: Advanced | |

42 | ||

43 | inherits Intersection from IntRes2d | |

44 | ||

45 | uses Domain from IntRes2d, | |

46 | IntConicConic from IntCurve, | |

47 | IConicTool from IntCurve, | |

48 | Array1OfReal from TColStd | |

49 | ||

50 | raises ConstructionError from Standard | |

51 | ||

52 | ||

53 | class TheProjPCur instantiates ProjPCurGen from IntCurve( | |

54 | TheCurve, | |

55 | TheCurveTool); | |

56 | ||

57 | class TheIntConicCurve instantiates IntConicCurveGen from IntCurve | |

58 | (IConicTool from IntCurve, | |

59 | TheCurve, | |

60 | TheCurveTool, | |

61 | TheProjPCur); | |

62 | ||

63 | class IntConicCurve instantiates UserIntConicCurveGen from IntCurve | |

64 | (IConicTool from IntCurve, | |

65 | TheCurve, | |

66 | TheCurveTool, | |

67 | TheIntConicCurve); | |

68 | ||

69 | class TheIntPCurvePCurve instantiates IntPolyPolyGen from IntCurve | |

70 | (TheCurve, | |

71 | TheCurveTool, | |

72 | TheProjPCur); | |

73 | is | |

74 | ||

75 | Create | |

76 | ||

77 | ---Purpose: Empty constructor. | |

78 | returns IntCurveCurveGen from IntCurve; | |

79 | ---C++: inline | |

80 | ||

81 | ||

82 | Create (C: TheCurve; TolConf,Tol: Real from Standard) | |

83 | ||

84 | ---Purpose: Self Intersection of a curve | |

85 | ---C++: inline | |

86 | returns IntCurveCurveGen from IntCurve | |

87 | raises ConstructionError from Standard; | |

88 | ||

89 | ||

90 | Create (C: TheCurve; D: Domain from IntRes2d; | |

91 | TolConf,Tol: Real from Standard) | |

92 | ||

93 | ---Purpose: Self Intersection of a curve with a domain. | |

94 | ---C++: inline | |

95 | returns IntCurveCurveGen from IntCurve | |

96 | raises ConstructionError from Standard; | |

97 | ||

98 | ||

99 | Create (C1: TheCurve; C2: TheCurve; | |

100 | TolConf,Tol: Real from Standard) | |

101 | ||

102 | ---Purpose: Intersection between 2 curves. | |

103 | ---C++: inline | |

104 | returns IntCurveCurveGen from IntCurve | |

105 | raises ConstructionError from Standard; | |

106 | ||

107 | ||

108 | Create (C1: TheCurve; D1: Domain from IntRes2d; | |

109 | C2: TheCurve; | |

110 | TolConf,Tol: Real from Standard) | |

111 | ||

112 | ---Purpose: Intersection between 2 curves. | |

113 | ---C++: inline | |

114 | returns IntCurveCurveGen from IntCurve | |

115 | raises ConstructionError from Standard; | |

116 | ||

117 | ||

118 | Create (C1: TheCurve; | |

119 | C2: TheCurve; D2: Domain from IntRes2d; | |

120 | TolConf,Tol: Real from Standard) | |

121 | ||

122 | ---Purpose: Intersection between 2 curves. | |

123 | ---C++: inline | |

124 | returns IntCurveCurveGen from IntCurve | |

125 | raises ConstructionError from Standard; | |

126 | ||

127 | ||

128 | ||

129 | Create (C1: TheCurve; D1: Domain from IntRes2d; | |

130 | C2: TheCurve; D2: Domain from IntRes2d; | |

131 | TolConf,Tol: Real from Standard) | |

132 | ||

133 | ---Purpose: Intersection between 2 curves. | |

134 | ---C++: inline | |

135 | returns IntCurveCurveGen from IntCurve | |

136 | raises ConstructionError from Standard; | |

137 | ||

138 | ||

139 | ||

140 | Perform (me: in out; | |

141 | C1: TheCurve; D1: Domain from IntRes2d; | |

142 | C2: TheCurve; D2: Domain from IntRes2d; | |

143 | TolConf,Tol: Real from Standard) | |

144 | ---Purpose: Intersection between 2 curves. | |

145 | ||

146 | raises ConstructionError from Standard | |

147 | is static; | |

148 | ||

149 | Perform (me: in out; | |

150 | C1: TheCurve; | |

151 | C2: TheCurve; | |

152 | TolConf,Tol: Real from Standard) | |

153 | ||

154 | ---Purpose: Intersection between 2 curves. | |

155 | ---C++: inline | |

156 | raises ConstructionError from Standard | |

157 | is static; | |

158 | ||

159 | Perform (me: in out; | |

160 | C1: TheCurve; D1: Domain from IntRes2d; | |

161 | TolConf,Tol: Real from Standard) | |

162 | ||

163 | ---Purpose: Intersection between 2 curves. | |

164 | raises ConstructionError from Standard | |

165 | is static; | |

166 | ||

167 | Perform (me: in out; | |

168 | C1: TheCurve; | |

169 | TolConf,Tol: Real from Standard) | |

170 | ||

171 | ---Purpose: Intersection between 2 curves. | |

172 | ||

173 | raises ConstructionError from Standard | |

174 | is static; | |

175 | ||

176 | Perform (me: in out; | |

177 | C1: TheCurve; D1: Domain from IntRes2d; | |

178 | C2: TheCurve; | |

179 | TolConf,Tol: Real from Standard) | |

180 | ---C++: inline | |

181 | ---Purpose: Intersection between 2 curves. | |

182 | ||

183 | raises ConstructionError from Standard | |

184 | is static; | |

185 | ||

186 | Perform (me: in out; | |

187 | C1: TheCurve; | |

188 | C2: TheCurve; D2: Domain from IntRes2d; | |

189 | TolConf,Tol: Real from Standard) | |

190 | ---C++: inline | |

191 | ---Purpose: Intersection between 2 curves. | |

192 | ||

193 | raises ConstructionError from Standard | |

194 | is static; | |

195 | ||

196 | ||

197 | ComputeDomain(me; C1: TheCurve; TolDomain: Real from Standard) | |

198 | ||

199 | ---Purpose: Create a domain from a curve | |

200 | returns Domain from IntRes2d | |

201 | is static; | |

202 | ||

203 | ||

204 | ||

205 | InternalPerform(me: in out; | |

206 | C1: TheCurve; D1: Domain from IntRes2d; | |

207 | C2: TheCurve; D2: Domain from IntRes2d; | |

208 | TolConf,Tol: Real from Standard; | |

209 | Composite: Boolean from Standard) | |

210 | ||

211 | ---Purpose: Intersection between 2 curves. | |

212 | ||

213 | raises ConstructionError from Standard | |

214 | is static private; | |

de8791ee | 215 | |

216 | ||

217 | ||

218 | InternalCompositePerform_noRecurs(me: in out; | |

219 | NbInterC1: Integer from Standard; | |

220 | C1: TheCurve; | |

221 | NumInterC1: Integer from Standard; | |

222 | Tab1: Array1OfReal from TColStd; | |

223 | D1: Domain from IntRes2d; | |

224 | NbInterC2: Integer from Standard; | |

225 | C2: TheCurve; | |

226 | NumInterC2: Integer from Standard; | |

227 | Tab2: Array1OfReal from TColStd; | |

228 | D2: Domain from IntRes2d; | |

229 | TolConf,Tol: Real from Standard) | |

230 | ||

231 | ---Purpose: Part of InternalCompositePerform function | |

232 | ||

233 | raises ConstructionError from Standard | |

234 | is static private; | |

235 | ||

236 | ||

7fd59977 | 237 | |

238 | InternalCompositePerform(me: in out; | |

239 | C1: TheCurve; D1: Domain from IntRes2d; | |

240 | N1,NB1: Integer from Standard; | |

241 | Tab1: Array1OfReal from TColStd; | |

242 | C2: TheCurve; D2: Domain from IntRes2d; | |

243 | N2,NB2: Integer from Standard; | |

244 | Tab2: Array1OfReal from TColStd; | |

245 | TolConf,Tol: Real from Standard; | |

246 | Composite: Boolean from Standard) | |

247 | ||

248 | ---Purpose: Intersection between 2 curves. | |

249 | ||

250 | raises ConstructionError from Standard | |

251 | is static private; | |

252 | ||

253 | ||

254 | fields | |

255 | ||

256 | param1inf : Real from Standard; | |

257 | param1sup : Real from Standard; | |

258 | param2inf : Real from Standard; | |

259 | param2sup : Real from Standard; | |

260 | intconiconi : IntConicConic from IntCurve; | |

261 | intconicurv : TheIntConicCurve; | |

262 | intcurvcurv : TheIntPCurvePCurve; | |

263 | ||

264 | end IntCurveCurveGen; | |

265 | ||

266 | ||

267 | ||

268 | ||

269 |