0023863: Wrong distance value between circle and cylinder
[occt.git] / src / Extrema / Extrema_GExtPC.cdl
CommitLineData
b311480e 1-- Created on: 1992-10-19
2-- Created by: Laurent PAINNOT
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
22generic class GExtPC from Extrema(
23 TheCurve as any;
24 TheCurveTool as any;
25 TheExtPElC as any;
26 ThePoint as any;
27 TheVector as any;
28 ThePOnC as any;
29 TheSequenceOfPOnC as any)
30 ---Purpose: It calculates all the distances between a point and a
31 -- curve. The Algorithm finds the C2 intervals on the
32 -- curve.
33
34uses
35 SequenceOfBoolean from TColStd,
36 SequenceOfReal from TColStd,
37 CurveType from GeomAbs
38
39raises
40 NotDone from StdFail,
41 OutOfRange from Standard,
42 TypeMismatch from Standard
43
44
45 class EPC instantiates GenExtPC from Extrema
46 (TheCurve,
47 TheCurveTool,
48 ThePOnC,
49 ThePoint,
50 TheVector);
51
52is
53 Create returns GExtPC;
54
55 Create(P : ThePoint;
56 C : TheCurve;
57 Uinf, Usup : Real from Standard;
58 TolF : Real from Standard = 1.0e-10)
59 ---Purpose: It calculates all the distances.
60 -- The function F(u)=distance(P,C(u)) has an extremum
61 -- when g(u)=dF/du=0. The algorithm searchs all the
62 -- zeros inside the definition range of the curve.
63 -- Zeros are searched between uinf and usup.
64 -- Tol is used to decide to stop the
65 -- iterations according to the following condition:
66 -- if n is the number of iterations,
67 -- the algorithm stops when abs(F(Un)-F(Un-1)) < Tol.
68 returns GExtPC;
69
70 Create(P : ThePoint;
71 C : TheCurve;
72 TolF : Real from Standard = 1.0e-10)
73 ---Purpose: It calculates all the distances.
74 -- The function F(u)=distance(P,C(u)) has an extremum
75 -- when g(u)=dF/du=0. The algorithm searchs all the
76 -- zeros inside the definition range of the curve.
77 -- Tol is used to decide to stop the
78 -- iterations according to the following condition:
79 -- if n is the number of iterations,
80 -- the algorithm stops when abs(F(Un)-F(Un-1)) < Tol.
81 returns GExtPC;
82
83 Initialize(me : in out; C : TheCurve;
84 Uinf, Usup : Real from Standard;
85 TolF : Real from Standard = 1.0e-10)
86 ---Purpose: initializes the fields of the algorithm.
87 is static;
88
89 Perform(me: in out; P: ThePoint)
90 ---Purpose: An exception is raised if the fields have not been
91 -- initialized.
92 raises TypeMismatch from Standard
93 is static;
94
95 IntervalPerform(me: in out; P: ThePoint)
96 is static protected;
97
98 IsDone(me) returns Boolean from Standard
99 ---Purpose: True if the distances are found.
100 is static;
101
102 SquareDistance(me; N: Integer from Standard) returns Real from Standard
103 ---Purpose: Returns the value of the <N>th extremum square distance.
104 raises NotDone from StdFail,
105 OutOfRange from Standard
106 is static;
107
108 NbExt(me) returns Integer from Standard
109 ---Purpose: Returns the number of extremum distances.
110 raises NotDone from StdFail
111 is static;
112
113 IsMin(me; N: Integer from Standard) returns Boolean from Standard
114 ---Purpose: Returns True if the <N>th extremum distance is a
115 -- minimum.
116 raises NotDone from StdFail,
117 OutOfRange from Standard
118 is static;
119
120 Point(me; N: Integer from Standard) returns ThePOnC
5d99f2c8 121 ---C++: return const &
7fd59977 122 ---Purpose: Returns the point of the <N>th extremum distance.
123 raises NotDone from StdFail,
124 OutOfRange from Standard
125 is static;
126
127 TrimmedSquareDistances(me; dist1: out Real from Standard;
128 dist2: out Real from Standard;
129 P1: out ThePoint;
130 P2: out ThePoint)
131 ---Purpose: if the curve is a trimmed curve,
132 -- dist1 is a square distance between <P> and the point
133 -- of parameter FirstParameter <P1> and
134 -- dist2 is a square distance between <P> and the point
135 -- of parameter LastParameter <P2>.
136 is static;
137
138
139
140fields
141 myC: Address from Standard;
142 Pf: ThePoint;
143 Pl: ThePoint;
144 myExtPElC: TheExtPElC;
145 mypoint: TheSequenceOfPOnC;
146 mydone: Boolean from Standard;
147 mydist1: Real from Standard;
148 mydist2: Real from Standard;
149 myExtPC: EPC from Extrema;
150 mytolu: Real from Standard;
151 mytolf: Real from Standard;
152 mysample: Integer from Standard;
153 myintuinf: Real from Standard;
154 myintusup: Real from Standard;
155 myuinf: Real from Standard;
156 myusup: Real from Standard;
157 type: CurveType from GeomAbs;
158 myismin: SequenceOfBoolean from TColStd;
159 mySqDist: SequenceOfReal from TColStd;
160
161end GExtPC;