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

7fd59977 | 1 | -- File: Approx_ComputeCLine.cdl |

2 | -- Created: Fri May 14 15:22:38 1993 | |

3 | -- Author: Laurent PAINNOT | |

4 | -- <lpa@phobox> | |

5 | ---Copyright: Matra Datavision 1993 | |

6 | ||

7 | ||

8 | ||

9 | generic class ComputeCLine from Approx | |

10 | (MultiLine as any; | |

11 | LineTool as any) --as TheLineTool from AppCont(MultiLine) | |

12 | ||

13 | ||

14 | uses ParametrizationType from Approx, | |

15 | SequenceOfReal from TColStd, | |

16 | HArray1OfReal from TColStd, | |

17 | SequenceOfMultiCurve from AppParCurves, | |

18 | MultiCurve from AppParCurves, | |

19 | Constraint from AppParCurves, | |

20 | Vector from math | |

21 | ||

22 | ||

23 | ||

24 | private class MyLeastSquare instantiates LeastSquare from AppCont | |

25 | (MultiLine, | |

26 | LineTool); | |

27 | ||

28 | is | |

29 | ||

30 | ||

31 | Create(Line: MultiLine; | |

32 | degreemin: Integer = 3; | |

33 | degreemax: Integer = 8; | |

34 | Tolerance3d: Real = 1.0e-5; | |

35 | Tolerance2d: Real = 1.0e-5; | |

36 | cutting: Boolean = Standard_False; | |

37 | FirstC: Constraint = AppParCurves_TangencyPoint; | |

38 | LastC: Constraint = AppParCurves_TangencyPoint) | |

39 | ||

40 | ---Purpose: The MultiLine <Line> will be approximated until tolerances | |

41 | -- will be reached. | |

42 | -- The approximation will be done from degreemin to degreemax | |

43 | -- with a cutting if the corresponding boolean is True. | |

44 | ||

45 | returns ComputeCLine; | |

46 | ||

47 | ||

48 | ||

49 | ||

50 | Create(degreemin: Integer = 3; | |

51 | degreemax: Integer = 8; | |

52 | Tolerance3d: Real = 1.0e-05; | |

53 | Tolerance2d: Real = 1.0e-05; | |

54 | cutting: Boolean = Standard_False; | |

55 | FirstC: Constraint = AppParCurves_TangencyPoint; | |

56 | LastC: Constraint = AppParCurves_TangencyPoint) | |

57 | ||

58 | ---Purpose: Initializes the fields of the algorithm. | |

59 | ||

60 | returns ComputeCLine; | |

61 | ||

62 | ||

63 | Perform(me: in out; Line: MultiLine) | |

64 | ---Purpose: runs the algorithm after having initialized the fields. | |

65 | ||

66 | is static; | |

67 | ||

68 | ||

69 | Compute(me: in out; Line: MultiLine; Ufirst, Ulast: Real; | |

70 | TheTol3d, TheTol2d: in out Real) | |

71 | ---Purpose: is internally used by the algorithms. | |

72 | ||

73 | returns Boolean | |

74 | is static private; | |

75 | ||

76 | ||

77 | SetDegrees(me: in out; degreemin, degreemax: Integer) | |

78 | ---Purpose: changes the degrees of the approximation. | |

79 | ||

80 | is static; | |

81 | ||

82 | ||

83 | SetTolerances(me: in out; Tolerance3d, Tolerance2d: Real) | |

84 | ---Purpose: Changes the tolerances of the approximation. | |

85 | ||

86 | is static; | |

87 | ||

88 | ||

89 | SetConstraints(me: in out; FirstC, LastC: Constraint) | |

90 | ---Purpose: Changes the constraints of the approximation. | |

91 | ||

92 | is static; | |

93 | ||

94 | ||

95 | IsAllApproximated(me) | |

96 | ---Purpose: returns False if at a moment of the approximation, | |

97 | -- the status NoApproximation has been sent by the user | |

98 | -- when more points were needed. | |

99 | ||

100 | returns Boolean | |

101 | is static; | |

102 | ||

103 | IsToleranceReached(me) | |

104 | ---Purpose: returns False if the status NoPointsAdded has been sent. | |

105 | ||

106 | returns Boolean | |

107 | is static; | |

108 | ||

109 | ||

110 | Error(me; Index: Integer; tol3d: in out Real; tol2d: in out Real) | |

111 | ---Purpose: returns the tolerances 2d and 3d of the <Index> MultiCurve. | |

112 | ||

113 | is static; | |

114 | ||

115 | ||

116 | NbMultiCurves(me) | |

117 | ---Purpose: Returns the number of MultiCurve doing the approximation | |

118 | -- of the MultiLine. | |

119 | returns Integer | |

120 | is static; | |

121 | ||

122 | ||

123 | Value(me; Index: Integer = 1) | |

124 | ---Purpose: returns the approximation MultiCurve of range <Index>. | |

125 | ||

126 | returns MultiCurve from AppParCurves; | |

127 | ||

128 | ||

129 | Parameters(me; Index: Integer; firstp, lastp: in out Real) | |

130 | ---purpose: returns the first and last parameters of the | |

131 | -- <Index> MultiCurve. | |

132 | is static; | |

133 | ||

134 | ||

135 | fields | |

136 | ||

137 | ||

138 | myMultiCurves: SequenceOfMultiCurve from AppParCurves; | |

139 | myfirstparam: SequenceOfReal from TColStd; | |

140 | mylastparam: SequenceOfReal from TColStd; | |

141 | TheMultiCurve: MultiCurve from AppParCurves; | |

142 | alldone: Boolean; | |

143 | tolreached: Boolean; | |

144 | Tolers3d: SequenceOfReal from TColStd; | |

145 | Tolers2d: SequenceOfReal from TColStd; | |

146 | mydegremin: Integer; | |

147 | mydegremax: Integer; | |

148 | mytol3d: Real; | |

149 | mytol2d: Real; | |

150 | currenttol3d: Real; | |

151 | currenttol2d: Real; | |

152 | mycut: Boolean; | |

153 | myfirstC: Constraint; | |

154 | mylastC: Constraint; | |

155 | ||

156 | ||

157 | end ComputeCLine; |