| 1 | -- Created on: 1997-02-06 |
| 2 | -- Created by: Laurent BOURESCHE |
| 3 | -- Copyright (c) 1997-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 | |
| 21 | |
| 22 | class RstRstEvolRad from BRepBlend |
| 23 | inherits RstRstFunction from Blend |
| 24 | |
| 25 | |
| 26 | uses Vector from math, |
| 27 | Matrix from math, |
| 28 | Ax1 from gp, |
| 29 | Vec from gp, |
| 30 | Vec2d from gp, |
| 31 | Pnt from gp, |
| 32 | Pnt2d from gp, |
| 33 | Circ from gp, |
| 34 | Array1OfPnt from TColgp, |
| 35 | Array1OfVec from TColgp, |
| 36 | Array1OfPnt2d from TColgp, |
| 37 | Array1OfVec2d from TColgp, |
| 38 | Array1OfReal from TColStd, |
| 39 | Array1OfInteger from TColStd, |
| 40 | Shape from GeomAbs, |
| 41 | Point from Blend, |
| 42 | SectionShape from BlendFunc, |
| 43 | HSurface from Adaptor3d, |
| 44 | HCurve from Adaptor3d, |
| 45 | HCurve2d from Adaptor2d, |
| 46 | CurveOnSurface from Adaptor3d, |
| 47 | ParameterisationType from Convert, |
| 48 | DecrochStatus from Blend, |
| 49 | Function from Law |
| 50 | |
| 51 | is |
| 52 | |
| 53 | Create(Surf1 : HSurface from Adaptor3d; |
| 54 | Rst1 : HCurve2d from Adaptor2d; |
| 55 | Surf2 : HSurface from Adaptor3d; |
| 56 | Rst2 : HCurve2d from Adaptor2d; |
| 57 | CGuide : HCurve from Adaptor3d; |
| 58 | Evol : Function from Law) |
| 59 | returns RstRstEvolRad from BRepBlend; |
| 60 | |
| 61 | NbVariables(me) |
| 62 | ---Purpose: Returns 2. |
| 63 | returns Integer from Standard; |
| 64 | |
| 65 | NbEquations(me) |
| 66 | ---Purpose: Returns 2. |
| 67 | returns Integer from Standard; |
| 68 | |
| 69 | Value(me: in out; X: Vector; F: out Vector) |
| 70 | ---Purpose: computes the values <F> of the Functions for the |
| 71 | -- variable <X>. |
| 72 | -- Returns True if the computation was done successfully, |
| 73 | -- False otherwise. |
| 74 | returns Boolean from Standard; |
| 75 | |
| 76 | Derivatives(me: in out; X: Vector; D: out Matrix) |
| 77 | ---Purpose: returns the values <D> of the derivatives for the |
| 78 | -- variable <X>. |
| 79 | -- Returns True if the computation was done successfully, |
| 80 | -- False otherwise. |
| 81 | returns Boolean from Standard; |
| 82 | |
| 83 | Values(me: in out; X: Vector; F: out Vector; D: out Matrix) |
| 84 | ---Purpose: returns the values <F> of the functions and the derivatives |
| 85 | -- <D> for the variable <X>. |
| 86 | -- Returns True if the computation was done successfully, |
| 87 | -- False otherwise. |
| 88 | returns Boolean from Standard; |
| 89 | |
| 90 | Set(me : in out; |
| 91 | SurfRef1 : HSurface from Adaptor3d; |
| 92 | RstRef1 : HCurve2d from Adaptor2d; |
| 93 | SurfRef2 : HSurface from Adaptor3d; |
| 94 | RstRef2 : HCurve2d from Adaptor2d); |
| 95 | |
| 96 | Set(me: in out; Param: Real from Standard); |
| 97 | |
| 98 | Set(me: in out; First, Last: Real from Standard); |
| 99 | ---Purpose: Sets the bounds of the parametric interval on |
| 100 | -- the guide line. |
| 101 | -- This determines the derivatives in these values if the |
| 102 | -- function is not Cn. |
| 103 | |
| 104 | GetTolerance(me; Tolerance: out Vector from math; Tol: Real from Standard); |
| 105 | |
| 106 | GetBounds(me; InfBound,SupBound: out Vector from math); |
| 107 | |
| 108 | IsSolution(me: in out; Sol: Vector from math; Tol: Real from Standard) |
| 109 | returns Boolean from Standard; |
| 110 | |
| 111 | GetMinimalDistance(me) |
| 112 | ---Purpose: Returns the minimal Distance beetween two |
| 113 | -- extremitys of calculed sections. |
| 114 | returns Real from Standard |
| 115 | is redefined; |
| 116 | |
| 117 | --- TheFollowing methods are called only when |
| 118 | -- IsSolution returns Standard_True. |
| 119 | |
| 120 | PointOnRst1(me) |
| 121 | ---C++: return const& |
| 122 | returns Pnt from gp; |
| 123 | |
| 124 | PointOnRst2(me) |
| 125 | ---C++: return const& |
| 126 | returns Pnt from gp; |
| 127 | |
| 128 | Pnt2dOnRst1(me) |
| 129 | ---Purpose: Returns U,V coordinates of the point on the surface. |
| 130 | ---C++: return const& |
| 131 | returns Pnt2d from gp; |
| 132 | |
| 133 | Pnt2dOnRst2(me) |
| 134 | ---Purpose: Returns U,V coordinates of the point on the curve on |
| 135 | -- surface. |
| 136 | ---C++: return const& |
| 137 | returns Pnt2d from gp; |
| 138 | |
| 139 | ParameterOnRst1(me) |
| 140 | ---Purpose: Returns parameter of the point on the curve. |
| 141 | returns Real from Standard; |
| 142 | |
| 143 | ParameterOnRst2(me) |
| 144 | ---Purpose: Returns parameter of the point on the curve. |
| 145 | returns Real from Standard; |
| 146 | |
| 147 | IsTangencyPoint(me) |
| 148 | returns Boolean from Standard; |
| 149 | |
| 150 | TangentOnRst1(me) |
| 151 | ---C++: return const& |
| 152 | returns Vec from gp; |
| 153 | |
| 154 | Tangent2dOnRst1(me) |
| 155 | ---C++: return const& |
| 156 | returns Vec2d from gp; |
| 157 | |
| 158 | TangentOnRst2(me) |
| 159 | ---C++: return const& |
| 160 | returns Vec from gp; |
| 161 | |
| 162 | Tangent2dOnRst2(me) |
| 163 | ---C++: return const& |
| 164 | returns Vec2d from gp; |
| 165 | |
| 166 | Decroch(me; |
| 167 | Sol : Vector from math; |
| 168 | NRst1, TgRst1 : out Vec from gp; |
| 169 | NRst2, TgRst2 : out Vec from gp) |
| 170 | |
| 171 | ---Purpose: Enables implementation of a criterion of decrochage |
| 172 | -- specific to the function. |
| 173 | ---Warning: Can be called without previous call of issolution |
| 174 | -- but the calculated values risquent de ne pas avoir |
| 175 | -- grand sens. |
| 176 | returns DecrochStatus from Blend |
| 177 | is static; |
| 178 | |
| 179 | -- methodes hors template (en plus du create) |
| 180 | |
| 181 | Set(me : in out; |
| 182 | Choix : Integer from Standard) |
| 183 | is static; |
| 184 | |
| 185 | Set(me: in out; TypeSection: SectionShape from BlendFunc) |
| 186 | ---Purpose: Sets the type of section generation for the |
| 187 | -- approximations. |
| 188 | is static; |
| 189 | |
| 190 | CenterCircleRst1Rst2(me; |
| 191 | PtRst1 : Pnt from gp; |
| 192 | PtRst2 : Pnt from gp; |
| 193 | np : Vec from gp; |
| 194 | Center : out Pnt from gp; |
| 195 | VdMed : out Vec from gp) |
| 196 | ---Purpose: Gives the center of circle defined by PtRst1, PtRst2 and |
| 197 | -- radius ray. |
| 198 | returns Boolean from Standard |
| 199 | is static; |
| 200 | |
| 201 | Section(me : in out; |
| 202 | Param : Real from Standard; |
| 203 | U,V : Real from Standard; |
| 204 | Pdeb,Pfin : out Real from Standard; |
| 205 | C : out Circ from gp) |
| 206 | is static; |
| 207 | |
| 208 | -- Methods for the approximation |
| 209 | -- |
| 210 | IsRational(me) returns Boolean |
| 211 | ---Purpose: Returns if the section is rationnal |
| 212 | is static; |
| 213 | |
| 214 | GetSectionSize(me) returns Real |
| 215 | ---Purpose: Returns the length of the maximum section |
| 216 | is static; |
| 217 | |
| 218 | GetMinimalWeight(me; Weigths : out Array1OfReal from TColStd) |
| 219 | ---Purpose: Compute the minimal value of weight for each poles |
| 220 | -- of all sections. |
| 221 | is static; |
| 222 | |
| 223 | NbIntervals(me; S : Shape from GeomAbs) returns Integer |
| 224 | ---Purpose: Returns the number of intervals for continuity |
| 225 | -- <S>. May be one if Continuity(me) >= <S> |
| 226 | is static; |
| 227 | |
| 228 | Intervals(me; T : in out Array1OfReal from TColStd; |
| 229 | S : Shape from GeomAbs) |
| 230 | ---Purpose: Stores in <T> the parameters bounding the intervals |
| 231 | -- of continuity <S>. |
| 232 | -- The array must provide enough room to accomodate |
| 233 | -- for the parameters. i.e. T.Length() > NbIntervals() |
| 234 | is static; |
| 235 | |
| 236 | GetShape(me : in out; |
| 237 | NbPoles : out Integer from Standard; |
| 238 | NbKnots : out Integer from Standard; |
| 239 | Degree : out Integer from Standard; |
| 240 | NbPoles2d : out Integer from Standard) |
| 241 | is static; |
| 242 | |
| 243 | GetTolerance(me; |
| 244 | BoundTol, SurfTol, AngleTol : Real; |
| 245 | Tol3d : out Vector; |
| 246 | Tol1D : out Vector ) |
| 247 | ---Purpose: Returns the tolerance to reach in approximation |
| 248 | -- to respecte |
| 249 | -- BoundTol error at the Boundary |
| 250 | -- AngleTol tangent error at the Boundary |
| 251 | -- SurfTol error inside the surface. |
| 252 | is static; |
| 253 | |
| 254 | Knots(me: in out; TKnots: out Array1OfReal from TColStd) |
| 255 | is static; |
| 256 | |
| 257 | Mults(me: in out; TMults: out Array1OfInteger from TColStd) |
| 258 | is static; |
| 259 | |
| 260 | Section(me : in out ; |
| 261 | P : Point from Blend; |
| 262 | Poles : out Array1OfPnt from TColgp; |
| 263 | DPoles : out Array1OfVec from TColgp; |
| 264 | Poles2d : out Array1OfPnt2d from TColgp; |
| 265 | DPoles2d : out Array1OfVec2d from TColgp; |
| 266 | Weigths : out Array1OfReal from TColStd; |
| 267 | DWeigths : out Array1OfReal from TColStd) |
| 268 | ---Purpose: Used for the first and last section |
| 269 | returns Boolean from Standard |
| 270 | is static; |
| 271 | |
| 272 | Section(me : in out ; |
| 273 | P : Point from Blend; |
| 274 | Poles : out Array1OfPnt from TColgp; |
| 275 | Poles2d : out Array1OfPnt2d from TColgp; |
| 276 | Weigths : out Array1OfReal from TColStd) |
| 277 | is static; |
| 278 | |
| 279 | |
| 280 | Section(me: in out; P: Point from Blend; |
| 281 | Poles : out Array1OfPnt from TColgp; |
| 282 | DPoles : out Array1OfVec from TColgp; |
| 283 | D2Poles : out Array1OfVec from TColgp; |
| 284 | Poles2d : out Array1OfPnt2d from TColgp; |
| 285 | DPoles2d : out Array1OfVec2d from TColgp; |
| 286 | D2Poles2d : out Array1OfVec2d from TColgp; |
| 287 | Weigths : out Array1OfReal from TColStd; |
| 288 | DWeigths : out Array1OfReal from TColStd; |
| 289 | D2Weigths : out Array1OfReal from TColStd) |
| 290 | ---Purpose: Used for the first and last section |
| 291 | -- The method returns Standard_True if the derivatives |
| 292 | -- are computed, otherwise it returns Standard_False. |
| 293 | returns Boolean from Standard |
| 294 | is static; |
| 295 | |
| 296 | Resolution(me; |
| 297 | IC2d : Integer from Standard; |
| 298 | Tol : Real from Standard; |
| 299 | TolU, TolV : out Real from Standard); |
| 300 | |
| 301 | fields |
| 302 | |
| 303 | surf1 : HSurface from Adaptor3d; |
| 304 | surf2 : HSurface from Adaptor3d; |
| 305 | rst1 : HCurve2d from Adaptor2d; |
| 306 | rst2 : HCurve2d from Adaptor2d; |
| 307 | cons1 : CurveOnSurface from Adaptor3d; |
| 308 | cons2 : CurveOnSurface from Adaptor3d; |
| 309 | guide : HCurve from Adaptor3d; |
| 310 | tguide : HCurve from Adaptor3d; |
| 311 | ptrst1 : Pnt from gp; |
| 312 | ptrst2 : Pnt from gp; |
| 313 | pt2drst1 : Pnt2d from gp; |
| 314 | pt2drst2 : Pnt2d from gp; |
| 315 | prmrst1 : Real from Standard; |
| 316 | prmrst2 : Real from Standard; |
| 317 | istangent: Boolean from Standard; |
| 318 | tgrst1 : Vec from gp; |
| 319 | tg2drst1 : Vec2d from gp; |
| 320 | tgrst2 : Vec from gp; |
| 321 | tg2drst2 : Vec2d from gp; |
| 322 | |
| 323 | ray : Real from Standard; |
| 324 | dray : Real from Standard; |
| 325 | choix : Integer from Standard; |
| 326 | ptgui : Pnt from gp; |
| 327 | d1gui : Vec from gp; |
| 328 | d2gui : Vec from gp; |
| 329 | nplan : Vec from gp; |
| 330 | normtg : Real from Standard; |
| 331 | theD : Real from Standard; |
| 332 | |
| 333 | surfref1 : HSurface from Adaptor3d; |
| 334 | rstref1 : HCurve2d from Adaptor2d; |
| 335 | surfref2 : HSurface from Adaptor3d; |
| 336 | rstref2 : HCurve2d from Adaptor2d; |
| 337 | maxang : Real from Standard; |
| 338 | minang : Real from Standard; |
| 339 | distmin : Real from Standard; |
| 340 | mySShape : SectionShape from BlendFunc; |
| 341 | myTConv : ParameterisationType from Convert; |
| 342 | tevol : Function from Law ; |
| 343 | fevol : Function from Law ; |
| 344 | |
| 345 | end RstRstEvolRad; |
| 346 | |
| 347 | |
| 348 | |
| 349 | |
| 350 | |
| 351 | |
| 352 | |
| 353 | |
| 354 | |