1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
-- File: AppCont_SurfLeastSquare.cdl
-- Created: Wed May 19 11:14:01 1993
-- Author: Laurent PAINNOT
-- <lpa@phobox>
---Copyright: Matra Datavision 1993
generic class SurfLeastSquare from AppCont(Surface as any;
SurfTool as any)
---as TheSurfTool(Surface)
---Purpose:
uses Matrix from math,
Vector from math,
Constraint from AppParCurves,
MultiCurve from AppParCurves,
BezierSurface from Geom
raises NotDone from StdFail,
OutOfRange from Standard,
DimensionError from Standard
is
Create(Surf: Surface; U0, U1, V0, V1: Real;
FirstCons, LastUCons, LastVCons, LastCons: Constraint;
DegU, DegV: Integer; NbPoints: Integer = 12)
---Purpose: given a MultiLine, this algorithm computes the
-- approximation of a continous Surface into a bezier
-- Surface.
-- The algorithm minimizes the volume between the
-- Surface Surf and the Bezier Surface doing the
-- aproximation.
-- NbPoints * NbPoints are taken on the Surface Surf.
-- The Constraints are affected to the following points:
--
-- U0, V0 |--|---|---|---|---|---|-----| U1, V0
-- FirstCons | | | | | | | LastUCons
-- |--|---|---|---|---|---|-----|
-- |--|---|---|---|---|---|-----|
-- | | | | | | | |
-- U0, V1 |--|---|---|---|---|---|-----| U1, V1
-- LastVCons LastCons
returns SurfLeastSquare from AppCont
raises DimensionError from Standard;
IsDone(me)
---Purpose: returns True if all has been correctly done.
returns Boolean
is static;
Value(me: in out)
---Purpose: returns the result of the approximation.
-- An exception is raised if NotDone.
---C++: return const &
returns BezierSurface from Geom
raises NotDone from StdFail
is static;
Error(me; F: in out Real; MaxE3d: in out Real)
---Purpose: F is the sum of the square errors at each of the
-- NbPoints*NbPoints and MaxE3d is the maximum value
-- of these errors.
-- An exception is raised if NotDone.
raises NotDone from StdFail
is static;
fields
Done: Boolean;
SCU: BezierSurface from Geom;
DegreU: Integer;
DegreV: Integer;
Nbdiscret: Integer;
nbP: Integer;
PointsX: Matrix;
PointsY: Matrix;
PointsZ: Matrix;
PolesX: Vector;
PolesY: Vector;
PolesZ: Vector;
myUParam: Vector;
myVParam: Vector;
VBU: Matrix;
VBV: Matrix;
end SurfLeastSquare from AppCont;
|