blob: a8b9669db1ae3061151cf575b7cc4a0132e6bfee (
plain)
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
-- File: InterferencePolygon3d.cdl
-- Created: Tue Sep 29 11:57:14 1992
-- Author: Didier PIFFAULT
-- <dpf@phylox>
---Copyright: Matra Datavision 1992
generic class InterferencePolygon3d from Intf
(Polygon3d1 as any;
ToolPolygon3d1 as any; -- as ToolPolygon(Pnt,Polygon3d1,Box)
Polygon3d2 as any;
ToolPolygon3d2 as any) -- as ToolPolygon(Pnt,Polygon3d2,Box)
inherits Interference from Intf
---Purpose: Computes the interference between two polygons or the
-- self interference of a polygon in 3 dimensions . In 3
-- dimensions the result can be a common perpendicular ,
-- an orthogonal projection or a real intersections.
-- There are two different instantiation arguments to
-- authorize an interference between two polygons from
-- differents origin. Ex : to intersect a curve polygon
-- with an algorithmic curve from numerical walking
-- between two surfaces.
uses Pnt from gp,
SectionPoint from Intf,
SeqOfSectionPoint from Intf,
SectionLine from Intf,
SeqOfSectionLine from Intf
raises OutOfRange from Standard
is
-- Interface :
Create returns InterferencePolygon3d from Intf;
---Purpose: Constructs an empty interference of 3d Polygon.
Create (Obje1 : in Polygon3d1 ;Obje2 : in Polygon3d2)
returns InterferencePolygon3d from Intf;
---Purpose: Constructs and computes an interference between two Polygons.
Create (Obje : in Polygon3d1)
returns InterferencePolygon3d from Intf;
---Purpose: Constructs and computes the self interference of a Polygon.
Perform (me : in out;
Obje1 : in Polygon3d1 ;Obje2 : in Polygon3d2);
---Purpose: Computes an interference between two Polygons.
Perform (me : in out;
Obje : in Polygon3d1);
---Purpose: Computes the auto interference of a Polygon.
NbResults (me)
returns Integer is static;
---Purpose: Gives the number of common Perpendiculars or orthogonal
-- projections between the two polygons.
ResultLine (me;
Index : in Integer)
returns SectionLine from Intf
raises OutOfRange from Standard
is static;
---Purpose: Gives the segment of address <Index> in the interference
-- representing the perpendicular or the orthogonal
-- projection .
--
---C++: return const &
ResultValue (me;
Index : in Integer)
returns Real from Standard
raises OutOfRange from Standard
is static;
---Purpose: Gives the distance between the two polygons
MinimalDistance(me)
returns Real from Standard
is static;
---Purpose: Gives the distance between the two polygon3d at the
-- perpendicular or projection of minimal length.
MinimalResult (me)
returns Integer from Standard
is static;
---Purpose: Give the perpendicular or projection of minimal length.
-- WARNING : if there are points of intersection the minimal
-- result is one of them and this function is unusuable.
-- Implementation :
Interference (me : in out;
Obje1 : in Polygon3d1;
Obje2 : in Polygon3d2)
is private;
Interference (me : in out;
Obje : in Polygon3d1)
is private;
CommonPerpen (me : in out;
BegO : in Pnt from gp;
EndO : in Pnt from gp;
BegT : in Pnt from gp;
EndT : in Pnt from gp)
is private;
---Purpose: Computes the common perpendicular between the two
-- segments <BegO><EndO> and <BegT><EndT>.
Projections (me : in out;
BegO : in Pnt from gp;
EndO : in Pnt from gp;
BegT : in Pnt from gp;
EndT : in Pnt from gp)
is private;
---Purpose: Computes the different orthogonal projections between
-- segment <BegO><EndO> and points <BegT>,<EndT> and segment
-- <BegT><EndT> and points <BegO>,<EndO>.
fields IndexMin : Integer from Standard;
MinimalDist : Real from Standard;
end InterferencePolygon3d;
|