| 1 | -- File: Approx_CurvlinFunc.cdl |
| 2 | -- Created: Tue May 12 12:17:17 1998 |
| 3 | -- Author: Roman BORISOV |
| 4 | -- <rbv@sgi38> |
| 5 | ---Copyright: Matra Datavision 1998 |
| 6 | |
| 7 | |
| 8 | class CurvlinFunc from Approx inherits TShared from MMgt |
| 9 | |
| 10 | ---Purpose: defines an abstract curve with |
| 11 | -- curvilinear parametrization |
| 12 | -- |
| 13 | -- |
| 14 | -- |
| 15 | -- |
| 16 | |
| 17 | uses |
| 18 | HCurve from Adaptor3d, |
| 19 | Curve from Adaptor3d, |
| 20 | HCurve2d from Adaptor2d, |
| 21 | HSurface from Adaptor3d, |
| 22 | Shape from GeomAbs, |
| 23 | Array1OfReal from TColStd, |
| 24 | HArray1OfReal from TColStd, |
| 25 | Pnt from gp, |
| 26 | Vec from gp |
| 27 | |
| 28 | raises |
| 29 | OutOfRange from Standard, |
| 30 | DomainError from Standard, |
| 31 | ConstructionError from Standard |
| 32 | |
| 33 | is |
| 34 | Create(C: HCurve from Adaptor3d; Tol: Real) |
| 35 | returns mutable CurvlinFunc; |
| 36 | |
| 37 | Create(C2D: HCurve2d from Adaptor2d; S: HSurface from Adaptor3d; Tol: Real) |
| 38 | returns mutable CurvlinFunc; |
| 39 | |
| 40 | Create(C2D1, C2D2: HCurve2d from Adaptor2d; S1, S2: HSurface from Adaptor3d; Tol: Real) |
| 41 | returns mutable CurvlinFunc; |
| 42 | |
| 43 | SetTol(me: mutable; Tol: Real) |
| 44 | ---Purpose Update the tolerance to used |
| 45 | is static; |
| 46 | |
| 47 | Init(me: mutable) |
| 48 | is private; |
| 49 | |
| 50 | Init(me; C: in out Curve from Adaptor3d; |
| 51 | Si: out HArray1OfReal from TColStd; |
| 52 | Ui: out HArray1OfReal from TColStd) |
| 53 | is private; |
| 54 | |
| 55 | FirstParameter(me) returns Real; |
| 56 | |
| 57 | LastParameter(me) returns Real; |
| 58 | |
| 59 | NbIntervals(me; S : Shape from GeomAbs) returns Integer; |
| 60 | ---Purpose: Returns the number of intervals for continuity |
| 61 | -- <S>. May be one if Continuity(me) >= <S> |
| 62 | |
| 63 | Intervals(me; T : in out Array1OfReal from TColStd; |
| 64 | S : Shape from GeomAbs); |
| 65 | ---Purpose: Stores in <T> the parameters bounding the intervals |
| 66 | -- of continuity <S>. |
| 67 | -- |
| 68 | -- The array must provide enough room to accomodate |
| 69 | -- for the parameters. i.e. T.Length() > NbIntervals() |
| 70 | |
| 71 | Trim(me: mutable; First, Last, Tol: Real from Standard) |
| 72 | raises OutOfRange from Standard; |
| 73 | --- Purpose : if First < 0 or Last > 1 |
| 74 | |
| 75 | Length(me: mutable) |
| 76 | --- Purpose : Computes length of the curve. |
| 77 | is static; |
| 78 | |
| 79 | Length(me; C: in out Curve from Adaptor3d; |
| 80 | FirstU, LasrU: Real) returns Real |
| 81 | --- Purpose : Computes length of the curve segment. |
| 82 | |
| 83 | is static; |
| 84 | GetLength(me) returns Real; |
| 85 | |
| 86 | GetUParameter(me; C: in out Curve from Adaptor3d; S: Real; NumberOfCurve: Integer) returns Real; |
| 87 | --- Purpose : returns original parameter correponding S. if |
| 88 | -- Case == 1 computation is performed on myC2D1 and mySurf1, |
| 89 | -- otherwise it is done on myC2D2 and mySurf2. |
| 90 | |
| 91 | GetSParameter(me; U: Real) returns Real; |
| 92 | --- Purpose : returns original parameter correponding S. |
| 93 | |
| 94 | GetSParameter(me; C: in out Curve from Adaptor3d; U, Length: Real) returns Real |
| 95 | --- Purpose : returns curvilinear parameter correponding U. |
| 96 | is private; |
| 97 | |
| 98 | EvalCase1(me; S: Real; Order: Integer; |
| 99 | Result: out Array1OfReal from TColStd) -- dim(Result) = 3 |
| 100 | returns Boolean from Standard |
| 101 | |
| 102 | raises |
| 103 | ConstructionError from Standard; |
| 104 | --- Purpose : if myCase != 1 |
| 105 | |
| 106 | EvalCase2(me; S: Real; Order: Integer; |
| 107 | Result: out Array1OfReal from TColStd) -- dim(Result) = 5 |
| 108 | returns Boolean from Standard |
| 109 | raises |
| 110 | ConstructionError from Standard; |
| 111 | --- Purpose : if myCase != 2 |
| 112 | |
| 113 | EvalCase3(me: mutable; S: Real; Order: Integer; |
| 114 | Result: out Array1OfReal from TColStd) -- dim(Result) = 7 |
| 115 | returns Boolean from Standard |
| 116 | raises |
| 117 | ConstructionError from Standard; |
| 118 | --- Purpose : if myCase != 3 |
| 119 | |
| 120 | EvalCurOnSur(me; S: Real; Order: Integer; |
| 121 | Result: out Array1OfReal from TColStd; |
| 122 | NumberOfCurve: Integer) |
| 123 | returns Boolean from Standard |
| 124 | is private; |
| 125 | |
| 126 | fields |
| 127 | |
| 128 | myC3D : HCurve from Adaptor3d; |
| 129 | myC2D1 : HCurve2d from Adaptor2d; |
| 130 | myC2D2 : HCurve2d from Adaptor2d; |
| 131 | mySurf1 : HSurface from Adaptor3d; |
| 132 | mySurf2 : HSurface from Adaptor3d; |
| 133 | myCase : Integer from Standard; -- [1..3] |
| 134 | myFirstS : Real from Standard; |
| 135 | myLastS : Real from Standard; |
| 136 | myFirstU1: Real from Standard; |
| 137 | myLastU1 : Real from Standard; |
| 138 | myFirstU2: Real from Standard; |
| 139 | myLastU2 : Real from Standard; |
| 140 | myLength : Real from Standard; |
| 141 | myLength1: Real from Standard; |
| 142 | myLength2: Real from Standard; |
| 143 | myTolLen : Real from Standard; |
| 144 | myPrevS : Real from Standard; -- should be mutable |
| 145 | myPrevU : Real from Standard; -- should be mutable |
| 146 | |
| 147 | myUi_1 : HArray1OfReal from TColStd; |
| 148 | mySi_1 : HArray1OfReal from TColStd; |
| 149 | myUi_2 : HArray1OfReal from TColStd; |
| 150 | mySi_2 : HArray1OfReal from TColStd; |
| 151 | end CurvlinFunc; |