Integration of OCCT 6.5.0 from SVN
[occt.git] / src / HLRAlgo / HLRAlgo.cxx
1 // File:        HLRAlgo.cxx
2 // Created:     Tue Sep 12 17:05:53 1995
3 // Author:      Christophe MARION
4 //              <cma@ecolox>
5
6 #include <HLRAlgo.ixx>
7
8 static Standard_Real cosu0 = cos(0*PI/14);
9 static Standard_Real sinu0 = sin(0*PI/14);
10 static Standard_Real cosu1 = cos(1*PI/14);
11 static Standard_Real sinu1 = sin(1*PI/14);
12 static Standard_Real cosu2 = cos(2*PI/14);
13 static Standard_Real sinu2 = sin(2*PI/14);
14 static Standard_Real cosu3 = cos(3*PI/14);
15 static Standard_Real sinu3 = sin(3*PI/14);
16 static Standard_Real cosu4 = cos(4*PI/14);
17 static Standard_Real sinu4 = sin(4*PI/14);
18 static Standard_Real cosu5 = cos(5*PI/14);
19 static Standard_Real sinu5 = sin(5*PI/14);
20 static Standard_Real cosu6 = cos(6*PI/14);
21 static Standard_Real sinu6 = sin(6*PI/14);
22
23 //=======================================================================
24 //function : UpdateMinMax
25 //purpose  : 
26 //=======================================================================
27
28 void HLRAlgo::UpdateMinMax (const Standard_Real x,
29                             const Standard_Real y,
30                             const Standard_Real z,
31                             const Standard_Address Min,
32                             const Standard_Address Max)
33 {
34   Standard_Real d00,d01,d02,d03,d04,d05,d06,d07;
35   Standard_Real d08,d09,d10,d11,d12,d13,d14,d15;
36   d00 = cosu0 * x + sinu0 * y;
37   d01 = sinu0 * x - cosu0 * y;
38   d02 = cosu1 * x + sinu1 * y;
39   d03 = sinu1 * x - cosu1 * y;
40   d04 = cosu2 * x + sinu2 * y;
41   d05 = sinu2 * x - cosu2 * y;
42   d06 = cosu3 * x + sinu3 * y;
43   d07 = sinu3 * x - cosu3 * y;
44   d08 = cosu4 * x + sinu4 * y;
45   d09 = sinu4 * x - cosu4 * y;
46   d10 = cosu5 * x + sinu5 * y;
47   d11 = sinu5 * x - cosu5 * y;
48   d12 = cosu6 * x + sinu6 * y;
49   d13 = sinu6 * x - cosu6 * y;
50   d14 = z;
51   d15 = z;
52   
53   if (((Standard_Real*)Min)[ 0] > d00) ((Standard_Real*)Min) [ 0] = d00;
54   if (((Standard_Real*)Max)[ 0] < d00) ((Standard_Real*)Max) [ 0] = d00;
55   if (((Standard_Real*)Min)[ 1] > d01) ((Standard_Real*)Min) [ 1] = d01;
56   if (((Standard_Real*)Max)[ 1] < d01) ((Standard_Real*)Max) [ 1] = d01;
57   if (((Standard_Real*)Min)[ 2] > d02) ((Standard_Real*)Min) [ 2] = d02;
58   if (((Standard_Real*)Max)[ 2] < d02) ((Standard_Real*)Max) [ 2] = d02;
59   if (((Standard_Real*)Min)[ 3] > d03) ((Standard_Real*)Min) [ 3] = d03;
60   if (((Standard_Real*)Max)[ 3] < d03) ((Standard_Real*)Max) [ 3] = d03;
61   if (((Standard_Real*)Min)[ 4] > d04) ((Standard_Real*)Min) [ 4] = d04;
62   if (((Standard_Real*)Max)[ 4] < d04) ((Standard_Real*)Max) [ 4] = d04;
63   if (((Standard_Real*)Min)[ 5] > d05) ((Standard_Real*)Min) [ 5] = d05;
64   if (((Standard_Real*)Max)[ 5] < d05) ((Standard_Real*)Max) [ 5] = d05;
65   if (((Standard_Real*)Min)[ 6] > d06) ((Standard_Real*)Min) [ 6] = d06;
66   if (((Standard_Real*)Max)[ 6] < d06) ((Standard_Real*)Max) [ 6] = d06;
67   if (((Standard_Real*)Min)[ 7] > d07) ((Standard_Real*)Min) [ 7] = d07;
68   if (((Standard_Real*)Max)[ 7] < d07) ((Standard_Real*)Max) [ 7] = d07;
69   if (((Standard_Real*)Min)[ 8] > d08) ((Standard_Real*)Min) [ 8] = d08;
70   if (((Standard_Real*)Max)[ 8] < d08) ((Standard_Real*)Max) [ 8] = d08;
71   if (((Standard_Real*)Min)[ 9] > d09) ((Standard_Real*)Min) [ 9] = d09;
72   if (((Standard_Real*)Max)[ 9] < d09) ((Standard_Real*)Max) [ 9] = d09;
73   if (((Standard_Real*)Min)[10] > d10) ((Standard_Real*)Min) [10] = d10;
74   if (((Standard_Real*)Max)[10] < d10) ((Standard_Real*)Max) [10] = d10;
75   if (((Standard_Real*)Min)[11] > d11) ((Standard_Real*)Min) [11] = d11;
76   if (((Standard_Real*)Max)[11] < d11) ((Standard_Real*)Max) [11] = d11;
77   if (((Standard_Real*)Min)[12] > d12) ((Standard_Real*)Min) [12] = d12;
78   if (((Standard_Real*)Max)[12] < d12) ((Standard_Real*)Max) [12] = d12;
79   if (((Standard_Real*)Min)[13] > d13) ((Standard_Real*)Min) [13] = d13;
80   if (((Standard_Real*)Max)[13] < d13) ((Standard_Real*)Max) [13] = d13;
81   if (((Standard_Real*)Min)[14] > d14) ((Standard_Real*)Min) [14] = d14;
82   if (((Standard_Real*)Max)[14] < d14) ((Standard_Real*)Max) [14] = d14;
83   if (((Standard_Real*)Min)[15] > d15) ((Standard_Real*)Min) [15] = d15;
84   if (((Standard_Real*)Max)[15] < d15) ((Standard_Real*)Max) [15] = d15;
85 }
86
87 //=======================================================================
88 //function : EnlargeMinMax
89 //purpose  : 
90 //=======================================================================
91
92 void HLRAlgo::EnlargeMinMax (const Standard_Real tol,
93                              const Standard_Address Min,
94                              const Standard_Address Max)
95 {
96   ((Standard_Real*)Min)[ 0] -= tol;
97   ((Standard_Real*)Max)[ 0] += tol;
98   ((Standard_Real*)Min)[ 1] -= tol;
99   ((Standard_Real*)Max)[ 1] += tol;
100   ((Standard_Real*)Min)[ 2] -= tol;
101   ((Standard_Real*)Max)[ 2] += tol;
102   ((Standard_Real*)Min)[ 3] -= tol;
103   ((Standard_Real*)Max)[ 3] += tol;
104   ((Standard_Real*)Min)[ 4] -= tol;
105   ((Standard_Real*)Max)[ 4] += tol;
106   ((Standard_Real*)Min)[ 5] -= tol;
107   ((Standard_Real*)Max)[ 5] += tol;
108   ((Standard_Real*)Min)[ 6] -= tol;
109   ((Standard_Real*)Max)[ 6] += tol;
110   ((Standard_Real*)Min)[ 7] -= tol;
111   ((Standard_Real*)Max)[ 7] += tol;
112   ((Standard_Real*)Min)[ 8] -= tol;
113   ((Standard_Real*)Max)[ 8] += tol;
114   ((Standard_Real*)Min)[ 9] -= tol;
115   ((Standard_Real*)Max)[ 9] += tol;
116   ((Standard_Real*)Min)[10] -= tol;
117   ((Standard_Real*)Max)[10] += tol;
118   ((Standard_Real*)Min)[11] -= tol;
119   ((Standard_Real*)Max)[11] += tol;
120   ((Standard_Real*)Min)[12] -= tol;
121   ((Standard_Real*)Max)[12] += tol;
122   ((Standard_Real*)Min)[13] -= tol;
123   ((Standard_Real*)Max)[13] += tol;
124   ((Standard_Real*)Min)[14] -= tol;
125   ((Standard_Real*)Max)[14] += tol;
126   ((Standard_Real*)Min)[15] -= tol;
127   ((Standard_Real*)Max)[15] += tol;
128 }
129
130 //=======================================================================
131 //function :InitMinMax
132 //purpose  : 
133 //=======================================================================
134
135 void HLRAlgo::InitMinMax (const Standard_Real Big,
136                           const Standard_Address Min,
137                           const Standard_Address Max)
138 {
139   ((Standard_Real*)Min)[ 0] =  
140   ((Standard_Real*)Min)[ 1] =  
141   ((Standard_Real*)Min)[ 2] =  
142   ((Standard_Real*)Min)[ 3] =  
143   ((Standard_Real*)Min)[ 4] =  
144   ((Standard_Real*)Min)[ 5] =  
145   ((Standard_Real*)Min)[ 6] =  
146   ((Standard_Real*)Min)[ 7] =  
147   ((Standard_Real*)Min)[ 8] =  
148   ((Standard_Real*)Min)[ 9] =  
149   ((Standard_Real*)Min)[10] =  
150   ((Standard_Real*)Min)[11] =  
151   ((Standard_Real*)Min)[12] =  
152   ((Standard_Real*)Min)[13] =  
153   ((Standard_Real*)Min)[14] =  
154   ((Standard_Real*)Min)[15] =  Big;
155   ((Standard_Real*)Max)[ 0] = 
156   ((Standard_Real*)Max)[ 1] = 
157   ((Standard_Real*)Max)[ 2] = 
158   ((Standard_Real*)Max)[ 3] = 
159   ((Standard_Real*)Max)[ 4] = 
160   ((Standard_Real*)Max)[ 5] = 
161   ((Standard_Real*)Max)[ 6] = 
162   ((Standard_Real*)Max)[ 7] = 
163   ((Standard_Real*)Max)[ 8] = 
164   ((Standard_Real*)Max)[ 9] = 
165   ((Standard_Real*)Max)[10] = 
166   ((Standard_Real*)Max)[11] = 
167   ((Standard_Real*)Max)[12] = 
168   ((Standard_Real*)Max)[13] = 
169   ((Standard_Real*)Max)[14] = 
170   ((Standard_Real*)Max)[15] = -Big;
171 }
172
173 //=======================================================================
174 //function : EncodeMinMax
175 //purpose  : 
176 //=======================================================================
177
178 void HLRAlgo::EncodeMinMax (const Standard_Address Min,
179                             const Standard_Address Max,
180                             const Standard_Address MM)
181 {
182   ((Standard_Integer*)MM)[ 0] = ((Standard_Integer*)Min)[ 1]&0x00007fff;
183   ((Standard_Integer*)MM)[ 8] = ((Standard_Integer*)Max)[ 1]&0x00007fff;
184   ((Standard_Integer*)MM)[ 0]+=(((Standard_Integer*)Min)[ 0]&0x00007fff)<<16;
185   ((Standard_Integer*)MM)[ 8]+=(((Standard_Integer*)Max)[ 0]&0x00007fff)<<16;
186   ((Standard_Integer*)MM)[ 1] = ((Standard_Integer*)Min)[ 3]&0x00007fff;
187   ((Standard_Integer*)MM)[ 9] = ((Standard_Integer*)Max)[ 3]&0x00007fff;
188   ((Standard_Integer*)MM)[ 1]+=(((Standard_Integer*)Min)[ 2]&0x00007fff)<<16;
189   ((Standard_Integer*)MM)[ 9]+=(((Standard_Integer*)Max)[ 2]&0x00007fff)<<16;
190   ((Standard_Integer*)MM)[ 2] = ((Standard_Integer*)Min)[ 5]&0x00007fff;
191   ((Standard_Integer*)MM)[10] = ((Standard_Integer*)Max)[ 5]&0x00007fff;
192   ((Standard_Integer*)MM)[ 2]+=(((Standard_Integer*)Min)[ 4]&0x00007fff)<<16;
193   ((Standard_Integer*)MM)[10]+=(((Standard_Integer*)Max)[ 4]&0x00007fff)<<16;
194   ((Standard_Integer*)MM)[ 3] = ((Standard_Integer*)Min)[ 7]&0x00007fff;
195   ((Standard_Integer*)MM)[11] = ((Standard_Integer*)Max)[ 7]&0x00007fff;
196   ((Standard_Integer*)MM)[ 3]+=(((Standard_Integer*)Min)[ 6]&0x00007fff)<<16;
197   ((Standard_Integer*)MM)[11]+=(((Standard_Integer*)Max)[ 6]&0x00007fff)<<16;
198   ((Standard_Integer*)MM)[ 4] = ((Standard_Integer*)Min)[ 9]&0x00007fff;
199   ((Standard_Integer*)MM)[12] = ((Standard_Integer*)Max)[ 9]&0x00007fff;
200   ((Standard_Integer*)MM)[ 4]+=(((Standard_Integer*)Min)[ 8]&0x00007fff)<<16;
201   ((Standard_Integer*)MM)[12]+=(((Standard_Integer*)Max)[ 8]&0x00007fff)<<16;
202   ((Standard_Integer*)MM)[ 5] = ((Standard_Integer*)Min)[11]&0x00007fff;
203   ((Standard_Integer*)MM)[13] = ((Standard_Integer*)Max)[11]&0x00007fff;
204   ((Standard_Integer*)MM)[ 5]+=(((Standard_Integer*)Min)[10]&0x00007fff)<<16;
205   ((Standard_Integer*)MM)[13]+=(((Standard_Integer*)Max)[10]&0x00007fff)<<16;
206   ((Standard_Integer*)MM)[ 6] = ((Standard_Integer*)Min)[13]&0x00007fff;
207   ((Standard_Integer*)MM)[14] = ((Standard_Integer*)Max)[13]&0x00007fff;
208   ((Standard_Integer*)MM)[ 6]+=(((Standard_Integer*)Min)[12]&0x00007fff)<<16;
209   ((Standard_Integer*)MM)[14]+=(((Standard_Integer*)Max)[12]&0x00007fff)<<16;
210   ((Standard_Integer*)MM)[ 7] = ((Standard_Integer*)Min)[15]&0x00007fff;
211   ((Standard_Integer*)MM)[15] = ((Standard_Integer*)Max)[15]&0x00007fff;
212   ((Standard_Integer*)MM)[ 7]+=(((Standard_Integer*)Min)[14]&0x00007fff)<<16;
213   ((Standard_Integer*)MM)[15]+=(((Standard_Integer*)Max)[14]&0x00007fff)<<16;
214 }
215
216 //=======================================================================
217 //function : SizeBox
218 //purpose  : 
219 //=======================================================================
220
221 Standard_Real  HLRAlgo::SizeBox(const Standard_Address Min,
222                                 const Standard_Address Max) 
223 {
224   Standard_Real s;
225   s  = ((Standard_Integer *)Max)[ 0] - ((Standard_Integer *)Min)[ 0];
226   s *= ((Standard_Integer *)Max)[ 1] - ((Standard_Integer *)Min)[ 1];
227   s *= ((Standard_Integer *)Max)[ 2] - ((Standard_Integer *)Min)[ 2];
228   s *= ((Standard_Integer *)Max)[ 3] - ((Standard_Integer *)Min)[ 3];
229   s *= ((Standard_Integer *)Max)[ 4] - ((Standard_Integer *)Min)[ 4];
230   s *= ((Standard_Integer *)Max)[ 5] - ((Standard_Integer *)Min)[ 5];
231   s *= ((Standard_Integer *)Max)[ 6] - ((Standard_Integer *)Min)[ 6];
232   s *= ((Standard_Integer *)Max)[ 7] - ((Standard_Integer *)Min)[ 7];
233   s *= ((Standard_Integer *)Max)[ 8] - ((Standard_Integer *)Min)[ 8];
234   s *= ((Standard_Integer *)Max)[ 9] - ((Standard_Integer *)Min)[ 9];
235   s *= ((Standard_Integer *)Max)[10] - ((Standard_Integer *)Min)[10];
236   s *= ((Standard_Integer *)Max)[11] - ((Standard_Integer *)Min)[11];
237   s *= ((Standard_Integer *)Max)[12] - ((Standard_Integer *)Min)[12];
238   s *= ((Standard_Integer *)Max)[13] - ((Standard_Integer *)Min)[13];
239   return s;
240 }
241
242 //=======================================================================
243 //function : DecodeMinMax
244 //purpose  : 
245 //=======================================================================
246
247 void HLRAlgo::DecodeMinMax (const Standard_Address MM,
248                             const Standard_Address Min,
249                             const Standard_Address Max)
250 {
251   ((Standard_Integer*)Min)[ 0]=(((Standard_Integer*)MM)[ 0]&0x7fff0000)>>16;
252   ((Standard_Integer*)Max)[ 0]=(((Standard_Integer*)MM)[ 8]&0x7fff0000)>>16;
253   ((Standard_Integer*)Min)[ 1]= ((Standard_Integer*)MM)[ 0]&0x00007fff;
254   ((Standard_Integer*)Max)[ 1]= ((Standard_Integer*)MM)[ 8]&0x00007fff;
255   ((Standard_Integer*)Min)[ 2]=(((Standard_Integer*)MM)[ 1]&0x7fff0000)>>16;
256   ((Standard_Integer*)Max)[ 2]=(((Standard_Integer*)MM)[ 9]&0x7fff0000)>>16;
257   ((Standard_Integer*)Min)[ 3]= ((Standard_Integer*)MM)[ 1]&0x00007fff;
258   ((Standard_Integer*)Max)[ 3]= ((Standard_Integer*)MM)[ 9]&0x00007fff;
259   ((Standard_Integer*)Min)[ 4]=(((Standard_Integer*)MM)[ 2]&0x7fff0000)>>16;
260   ((Standard_Integer*)Max)[ 4]=(((Standard_Integer*)MM)[10]&0x7fff0000)>>16;
261   ((Standard_Integer*)Min)[ 5]= ((Standard_Integer*)MM)[ 2]&0x00007fff;
262   ((Standard_Integer*)Max)[ 5]= ((Standard_Integer*)MM)[10]&0x00007fff;
263   ((Standard_Integer*)Min)[ 6]=(((Standard_Integer*)MM)[ 3]&0x7fff0000)>>16;
264   ((Standard_Integer*)Max)[ 6]=(((Standard_Integer*)MM)[11]&0x7fff0000)>>16;
265   ((Standard_Integer*)Min)[ 7]= ((Standard_Integer*)MM)[ 3]&0x00007fff;
266   ((Standard_Integer*)Max)[ 7]= ((Standard_Integer*)MM)[11]&0x00007fff;
267   ((Standard_Integer*)Min)[ 8]=(((Standard_Integer*)MM)[ 4]&0x7fff0000)>>16;
268   ((Standard_Integer*)Max)[ 8]=(((Standard_Integer*)MM)[12]&0x7fff0000)>>16;
269   ((Standard_Integer*)Min)[ 9]= ((Standard_Integer*)MM)[ 4]&0x00007fff;
270   ((Standard_Integer*)Max)[ 9]= ((Standard_Integer*)MM)[12]&0x00007fff;
271   ((Standard_Integer*)Min)[10]=(((Standard_Integer*)MM)[ 5]&0x7fff0000)>>16;
272   ((Standard_Integer*)Max)[10]=(((Standard_Integer*)MM)[13]&0x7fff0000)>>16;
273   ((Standard_Integer*)Min)[11]= ((Standard_Integer*)MM)[ 5]&0x00007fff;
274   ((Standard_Integer*)Max)[11]= ((Standard_Integer*)MM)[13]&0x00007fff;
275   ((Standard_Integer*)Min)[12]=(((Standard_Integer*)MM)[ 6]&0x7fff0000)>>16;
276   ((Standard_Integer*)Max)[12]=(((Standard_Integer*)MM)[14]&0x7fff0000)>>16;
277   ((Standard_Integer*)Min)[13]= ((Standard_Integer*)MM)[ 6]&0x00007fff;
278   ((Standard_Integer*)Max)[13]= ((Standard_Integer*)MM)[14]&0x00007fff;
279   ((Standard_Integer*)Min)[14]=(((Standard_Integer*)MM)[ 7]&0x7fff0000)>>16;
280   ((Standard_Integer*)Max)[14]=(((Standard_Integer*)MM)[15]&0x7fff0000)>>16;
281   ((Standard_Integer*)Min)[15]= ((Standard_Integer*)MM)[ 7]&0x00007fff;
282   ((Standard_Integer*)Max)[15]= ((Standard_Integer*)MM)[15]&0x00007fff;
283 }
284
285 //=======================================================================
286 //function :CopyMinMax
287 //purpose  : 
288 //=======================================================================
289
290 void HLRAlgo::CopyMinMax (const Standard_Address IMin,
291                           const Standard_Address IMax,
292                           const Standard_Address OMin,
293                           const Standard_Address OMax)
294 {
295   ((Standard_Integer*)OMin)[ 0]=((Standard_Integer*)IMin)[ 0];
296   ((Standard_Integer*)OMax)[ 0]=((Standard_Integer*)IMax)[ 0];
297   ((Standard_Integer*)OMin)[ 1]=((Standard_Integer*)IMin)[ 1];
298   ((Standard_Integer*)OMax)[ 1]=((Standard_Integer*)IMax)[ 1];
299   ((Standard_Integer*)OMin)[ 2]=((Standard_Integer*)IMin)[ 2];
300   ((Standard_Integer*)OMax)[ 2]=((Standard_Integer*)IMax)[ 2];
301   ((Standard_Integer*)OMin)[ 3]=((Standard_Integer*)IMin)[ 3];
302   ((Standard_Integer*)OMax)[ 3]=((Standard_Integer*)IMax)[ 3];
303   ((Standard_Integer*)OMin)[ 4]=((Standard_Integer*)IMin)[ 4];
304   ((Standard_Integer*)OMax)[ 4]=((Standard_Integer*)IMax)[ 4];
305   ((Standard_Integer*)OMin)[ 5]=((Standard_Integer*)IMin)[ 5];
306   ((Standard_Integer*)OMax)[ 5]=((Standard_Integer*)IMax)[ 5];
307   ((Standard_Integer*)OMin)[ 6]=((Standard_Integer*)IMin)[ 6];
308   ((Standard_Integer*)OMax)[ 6]=((Standard_Integer*)IMax)[ 6];
309   ((Standard_Integer*)OMin)[ 7]=((Standard_Integer*)IMin)[ 7];
310   ((Standard_Integer*)OMax)[ 7]=((Standard_Integer*)IMax)[ 7];
311   ((Standard_Integer*)OMin)[ 8]=((Standard_Integer*)IMin)[ 8];
312   ((Standard_Integer*)OMax)[ 8]=((Standard_Integer*)IMax)[ 8];
313   ((Standard_Integer*)OMin)[ 9]=((Standard_Integer*)IMin)[ 9];
314   ((Standard_Integer*)OMax)[ 9]=((Standard_Integer*)IMax)[ 9];
315   ((Standard_Integer*)OMin)[10]=((Standard_Integer*)IMin)[10];
316   ((Standard_Integer*)OMax)[10]=((Standard_Integer*)IMax)[10];
317   ((Standard_Integer*)OMin)[11]=((Standard_Integer*)IMin)[11];
318   ((Standard_Integer*)OMax)[11]=((Standard_Integer*)IMax)[11];
319   ((Standard_Integer*)OMin)[12]=((Standard_Integer*)IMin)[12];
320   ((Standard_Integer*)OMax)[12]=((Standard_Integer*)IMax)[12];
321   ((Standard_Integer*)OMin)[13]=((Standard_Integer*)IMin)[13];
322   ((Standard_Integer*)OMax)[13]=((Standard_Integer*)IMax)[13];
323   ((Standard_Integer*)OMin)[14]=((Standard_Integer*)IMin)[14];
324   ((Standard_Integer*)OMax)[14]=((Standard_Integer*)IMax)[14];
325   ((Standard_Integer*)OMin)[15]=((Standard_Integer*)IMin)[15];
326   ((Standard_Integer*)OMax)[15]=((Standard_Integer*)IMax)[15];
327 }
328
329 //=======================================================================
330 //function :AddMinMax
331 //purpose  : 
332 //=======================================================================
333
334 void HLRAlgo::AddMinMax (const Standard_Address IMin,
335                          const Standard_Address IMax,
336                          const Standard_Address OMin,
337                          const Standard_Address OMax)
338 {
339   if (((Standard_Integer*)OMin)[ 0] > ((Standard_Integer*)IMin)[ 0])
340     ((Standard_Integer*)OMin)[ 0]=((Standard_Integer*)IMin)[ 0];
341   if (((Standard_Integer*)OMax)[ 0] < ((Standard_Integer*)IMax)[ 0])
342     ((Standard_Integer*)OMax)[ 0]=((Standard_Integer*)IMax)[ 0];
343   if (((Standard_Integer*)OMin)[ 1] > ((Standard_Integer*)IMin)[ 1])
344     ((Standard_Integer*)OMin)[ 1]=((Standard_Integer*)IMin)[ 1];
345   if (((Standard_Integer*)OMax)[ 1] < ((Standard_Integer*)IMax)[ 1])
346     ((Standard_Integer*)OMax)[ 1]=((Standard_Integer*)IMax)[ 1];
347   if (((Standard_Integer*)OMin)[ 2] > ((Standard_Integer*)IMin)[ 2])
348     ((Standard_Integer*)OMin)[ 2]=((Standard_Integer*)IMin)[ 2];
349   if (((Standard_Integer*)OMax)[ 2] < ((Standard_Integer*)IMax)[ 2])
350     ((Standard_Integer*)OMax)[ 2]=((Standard_Integer*)IMax)[ 2];
351   if (((Standard_Integer*)OMin)[ 3] > ((Standard_Integer*)IMin)[ 3])
352     ((Standard_Integer*)OMin)[ 3]=((Standard_Integer*)IMin)[ 3];
353   if (((Standard_Integer*)OMax)[ 3] < ((Standard_Integer*)IMax)[ 3])
354     ((Standard_Integer*)OMax)[ 3]=((Standard_Integer*)IMax)[ 3];
355   if (((Standard_Integer*)OMin)[ 4] > ((Standard_Integer*)IMin)[ 4])
356     ((Standard_Integer*)OMin)[ 4]=((Standard_Integer*)IMin)[ 4];
357   if (((Standard_Integer*)OMax)[ 4] < ((Standard_Integer*)IMax)[ 4])
358     ((Standard_Integer*)OMax)[ 4]=((Standard_Integer*)IMax)[ 4];
359   if (((Standard_Integer*)OMin)[ 5] > ((Standard_Integer*)IMin)[ 5])
360     ((Standard_Integer*)OMin)[ 5]=((Standard_Integer*)IMin)[ 5];
361   if (((Standard_Integer*)OMax)[ 5] < ((Standard_Integer*)IMax)[ 5])
362     ((Standard_Integer*)OMax)[ 5]=((Standard_Integer*)IMax)[ 5];
363   if (((Standard_Integer*)OMin)[ 6] > ((Standard_Integer*)IMin)[ 6])
364     ((Standard_Integer*)OMin)[ 6]=((Standard_Integer*)IMin)[ 6];
365   if (((Standard_Integer*)OMax)[ 6] < ((Standard_Integer*)IMax)[ 6])
366     ((Standard_Integer*)OMax)[ 6]=((Standard_Integer*)IMax)[ 6];
367   if (((Standard_Integer*)OMin)[ 7] > ((Standard_Integer*)IMin)[ 7])
368     ((Standard_Integer*)OMin)[ 7]=((Standard_Integer*)IMin)[ 7];
369   if (((Standard_Integer*)OMax)[ 7] < ((Standard_Integer*)IMax)[ 7])
370     ((Standard_Integer*)OMax)[ 7]=((Standard_Integer*)IMax)[ 7];
371   if (((Standard_Integer*)OMin)[ 8] > ((Standard_Integer*)IMin)[ 8])
372     ((Standard_Integer*)OMin)[ 8]=((Standard_Integer*)IMin)[ 8];
373   if (((Standard_Integer*)OMax)[ 8] < ((Standard_Integer*)IMax)[ 8])
374     ((Standard_Integer*)OMax)[ 8]=((Standard_Integer*)IMax)[ 8];
375   if (((Standard_Integer*)OMin)[ 9] > ((Standard_Integer*)IMin)[ 9])
376     ((Standard_Integer*)OMin)[ 9]=((Standard_Integer*)IMin)[ 9];
377   if (((Standard_Integer*)OMax)[ 9] < ((Standard_Integer*)IMax)[ 9])
378     ((Standard_Integer*)OMax)[ 9]=((Standard_Integer*)IMax)[ 9];
379   if (((Standard_Integer*)OMin)[10] > ((Standard_Integer*)IMin)[10])
380     ((Standard_Integer*)OMin)[10]=((Standard_Integer*)IMin)[10];
381   if (((Standard_Integer*)OMax)[10] < ((Standard_Integer*)IMax)[10])
382     ((Standard_Integer*)OMax)[10]=((Standard_Integer*)IMax)[10];
383   if (((Standard_Integer*)OMin)[11] > ((Standard_Integer*)IMin)[11])
384     ((Standard_Integer*)OMin)[11]=((Standard_Integer*)IMin)[11];
385   if (((Standard_Integer*)OMax)[11] < ((Standard_Integer*)IMax)[11])
386     ((Standard_Integer*)OMax)[11]=((Standard_Integer*)IMax)[11];
387   if (((Standard_Integer*)OMin)[12] > ((Standard_Integer*)IMin)[12])
388     ((Standard_Integer*)OMin)[12]=((Standard_Integer*)IMin)[12];
389   if (((Standard_Integer*)OMax)[12] < ((Standard_Integer*)IMax)[12])
390     ((Standard_Integer*)OMax)[12]=((Standard_Integer*)IMax)[12];
391   if (((Standard_Integer*)OMin)[13] > ((Standard_Integer*)IMin)[13])
392     ((Standard_Integer*)OMin)[13]=((Standard_Integer*)IMin)[13];
393   if (((Standard_Integer*)OMax)[13] < ((Standard_Integer*)IMax)[13])
394     ((Standard_Integer*)OMax)[13]=((Standard_Integer*)IMax)[13];
395   if (((Standard_Integer*)OMin)[14] > ((Standard_Integer*)IMin)[14])
396     ((Standard_Integer*)OMin)[14]=((Standard_Integer*)IMin)[14];
397   if (((Standard_Integer*)OMax)[14] < ((Standard_Integer*)IMax)[14])
398     ((Standard_Integer*)OMax)[14]=((Standard_Integer*)IMax)[14];
399   if (((Standard_Integer*)OMin)[15] > ((Standard_Integer*)IMin)[15])
400     ((Standard_Integer*)OMin)[15]=((Standard_Integer*)IMin)[15];
401   if (((Standard_Integer*)OMax)[15] < ((Standard_Integer*)IMax)[15])
402     ((Standard_Integer*)OMax)[15]=((Standard_Integer*)IMax)[15];
403 }
404