0026212: There are some problems with location of text and images on pages
[occt.git] / dox / user_guides / brep_wp / brep_wp.md
1  BRep Format {#occt_user_guides__brep_wp}
2 ========================
3
4 @tableofcontents 
5
6 @section occt_brep_format_1 Introduction
7
8   BREP format is used to store 3D models and allows to store a model which consists 
9   of vertices, edges, wires, faces, shells, solids,  compsolids, compounds, edge triangulations, 
10   face triangulations, polylines on  triangulations, space location and orientation. 
11   Any set of such models may be  stored as a single model which is a compound of the models.  
12    
13   The format is described in an order which is convenient for understanding 
14   rather than in the order the format parts follow each other. 
15   BNF-like definitions are used in this document. 
16   Most of the chapters contain BREP format descriptions in the following order:  
17   
18   * format file fragment to illustrate the part;  
19   * BNF-like definition of the part;  
20   * detailed description of the part.  
21   
22 **Note** that the format is a part of Open CASCADE Technology (OCCT).
23
24 Some data fields of the format have additional values, which are used in OCCT. 
25
26 Some data fields of the format are specific for OCCT. 
27  
28 @section occt_brep_format_2 Format Common Structure
29  
30   ASCII encoding is used to read/write BREP format from/to  file. The format data are stored in a file as text data.  
31    
32   BREP format uses the following BNF terms:
33
34   * \<\\n\>: It is the operating-system-dependent ASCII  character sequence which separates ASCII text strings in the operating system used;
35   * \<_\\n\>: = " "*\<\\n\>;
36   * \<_\>: = " "+; It is a not empty sequence of space characters  with ASCII code 21h;
37   * \<flag\>: = "0" | "1";
38   * \<int\>: It is an integer number from -2<sup>31</sup> to 2<sup>31</sup>-1 which is written in  denary system;  
39   * \<real\>: It is a real from -1.7976931348623158 @f$\cdot@f$ 10<sup>308</sup> to 1.7976931348623158 @f$\cdot@f$ 10<sup>308</sup> which is written in decimal or E form with base 10.The point is used as a delimiter of the integer and  fractional parts;
40   * \<2D point\>: = \<real\>\<_\>\<real\>;  
41   * \<3D point\>: = \<real\>(\<_\>\<real)\><sup>2</sup>;  
42   * \<2D direction\>: It is a \<2D point\> *x y* so that *x<sup>2</sup> + y<sup>2</sup>* = 1;  
43   * \<3D direction\>: It is a \<3D point\> *x y z* so that *x<sup>2</sup> + y<sup>2</sup> + z<sup>2</sup>* = 1;  
44   * \<+\>: It is an arithmetic operation of addition.
45   
46   The format consists of the following sections:  
47
48   * \<content type\>;  
49   * \<version\>;  
50   * \<locations\>;  
51   * \<geometry\>;  
52   * \<shapes\>.  
53  
54   \<content type\> = "DBRep_DrawableShape" \<_\\n\>\<_\\n\>;  
55   \<content type\> have other values [1].  
56  
57   \<version\> = ("CASCADE Topology V1, (c)  Matra-Datavision" | "CASCADE Topology V2, (c) Matra-Datavision")\<_\\n\>;  
58   The difference of the versions is described in the  document.  
59  
60   Sections \<locations\>, \<geometry\> and \<shapes\> are described below in separate chapters of the document.  
61  
62 @section occt_brep_format_3 Locations
63  
64 **Example**  
65
66 @verbatim 
67     Locations  3  
68     1  
69                    0               0               1               0   
70                    1               0               0               0   
71                    0               1               0               0   
72     1  
73                    1               0               0               4   
74                    0               1               0               5   
75                    0               0               1               6   
76     2   1 1 2 1 0  
77 @endverbatim
78  
79 **BNF-like Definition**
80
81 @verbatim
82     <locations> = <location header> <_\n> <location records>;  
83     <location header> = "Locations" <_> <location record count>;  
84     <location record count> = <int>;  
85     <location records> = <location record> ^ <location record count>;  
86     <location record> = <location record 1> | <location record 2>;  
87     <location record 1> = "1" <_\n> <location  data 1>;  
88     <location record 2> = "2" <_> <location  data 2>;  
89     <location data 1> = ((<_> <real>) ^ 4 <_\n>) ^ 3;  
90     <location data 2> = (<int> <_> <int> <_>)* "0" <_\n>;  
91 @endverbatim
92
93 **Description**
94
95 \<location data 1\> is interpreted as a 3 x 4 matrix
96 @f$Q =
97 \begin{pmatrix}
98 {q}_{1,1} &{q}_{1,2} &{q}_{1,3} &{q}_{1,4}\\
99 {q}_{2,1} &{q}_{2,2} &{q}_{2,3} &{q}_{2,4}\\
100 {q}_{3,1} &{q}_{3,2} &{q}_{3,3} &{q}_{3,4}
101 \end{pmatrix}@f$ 
102 which describes transformation of 3 dimensional space and satisfies the following constraints:  
103   * @f$ d \neq 0@f$ where @f$d = |Q_{2}|@f$ where
104     @f$ Q_{2} = \begin{pmatrix}
105     {q}_{1,1} &{q}_{1,2} &{q}_{1,3} &{q}_{1,4}\\
106     {q}_{2,1} &{q}_{2,2} &{q}_{2,3} &{q}_{2,4}\\
107     {q}_{3,1} &{q}_{3,2} &{q}_{3,3} &{q}_{3,4}
108     \end{pmatrix}; @f$  
109   * @f$ Q_{3}^{T} = Q_{3}^{-1}@f$ where @f$Q_{3} = Q_{2}/d^{1/3}. @f$  
110  
111 The transformation transforms a point (x, y, z) to another point (u, v, w) by the rule:
112 @f[ \begin{pmatrix}
113 u \\ v \\ w
114 \end{pmatrix} = 
115 Q\cdot(x\;y\;z\;1)^{T} =
116 \begin{pmatrix}
117 {q}_{1,1}\cdot x +{q}_{1,2}\cdot y +{q}_{1,3}\cdot z +{q}_{1,4}\\
118 {q}_{2,1}\cdot x +{q}_{2,2}\cdot y +{q}_{2,3}\cdot z +{q}_{2,4}\\
119 {q}_{3,1}\cdot x +{q}_{3,2}\cdot y +{q}_{3,3}\cdot z +{q}_{3,4}
120 \end{pmatrix} . @f]
121
122 *Q* may be a composition of matrices for the following elementary transformations:  
123  
124   *  parallel translation –
125      @f$ \begin{pmatrix}
126      1 &0 &0 &{q}_{1,4}\\ 
127          0 &1 &0 &{q}_{2,4}\\ 
128          0 &0 &1 &{q}_{3,4}
129          \end{pmatrix}; @f$  
130   *  rotation around an axis with a direction *D(D<sub>x</sub>, D<sub>y</sub>, D<sub>z</sub>)* by an angle @f$ \varphi @f$ –  
131
132         @f[ \begin{pmatrix}
133         D_{x}^{2} \cdot (1-cos(\varphi)) + cos(\varphi) &D_{x} \cdot D_{y} \cdot (1-cos(\varphi)) - D_{z} \cdot sin(\varphi) &D_{x} \cdot D_{z} \cdot (1-cos(\varphi)) + D_{y} \cdot sin(\varphi) &0\\
134         D_{x} \cdot D_{y} \cdot (1-cos(\varphi)) + D_{z} \cdot sin(\varphi) &D_{y}^{2} \cdot (1-cos(\varphi)) + cos(\varphi) &D_{y} \cdot D_{z} \cdot (1-cos(\varphi)) - D_{x} \cdot sin(\varphi) &0\\
135         D_{x} \cdot D_{z} \cdot (1-cos(\varphi)) - D_{y} \cdot sin(\varphi) &D_{y} \cdot D_{z} \cdot (1-cos(\varphi)) + D_{x} \cdot sin(\varphi) &D_{z}^{2} \cdot (1-cos(\varphi)) + cos(\varphi) &0
136         \end{pmatrix}; @f]  
137  
138   *  scaling – @f$ \begin{pmatrix} s &0 &0 &0\\ 0 &s &0 &0\\ 0 &0 &s &0 \end{pmatrix} @f$ where @f$ S \in (-\infty,\; \infty)/\left \{ 0 \right \}; @f$ 
139   *  central symmetry – @f$ \begin{pmatrix} -1 &0 &0 &0\\ 0 &-1 &0 &0\\ 0 &0 &-1 &0 \end{pmatrix}; @f$  
140   *  axis symmetry – @f$ \begin{pmatrix} -1 &0 &0 &0\\ 0 &-1 &0 &0\\ 0 &0 &1 &0 \end{pmatrix}; @f$  
141   *  plane symmetry – @f$ \begin{pmatrix} 1 &0 &0 &0\\ 0 &1 &0 &0\\ 0 &0 &-1 &0 \end{pmatrix}. @f$ 
142  
143 \<location data 2\> is interpreted as a composition of locations raised to a power and placed above this \<location data 2\> in  the section \<locations\>. \<location data 2\> is a sequence @f$l_{1}p_{1} ... l_{n}p_{n}@f$ of @f$ n \geq 0 @f$ integer pairs @f$ l_{i}p_{i} \; (1 \leq i \leq n) @f$. \<flag\> 0 is the indicator  of the sequence end. The sequence is interpreted as a composition @f$ L_{l_{1}}^{p_{1}} \cdot ... \cdot L_{l_{n}}^{p_{n}} @f$ where @f$ L_{l_{i}} @f$ is a location from @f$ l_{i} @f$-th \<location  record\> in the section locations. \<location record\> numbering  starts from 1.  
144  
145  
146 @section occt_brep_format_4  Geometry
147
148 @verbatim
149     <geometry> =  
150     <2D curves>  
151     <3D curves>  
152     <3D polygons> 
153     <polygons on triangulations>  
154     <surfaces>  
155     <triangulations>;  
156 @endverbatim 
157  
158 @subsection occt_brep_format_4_1  3D curves
159  
160 **Example**
161
162 @verbatim
163     Curves 13  
164     1 0 0 0 0 0 1   
165     1 0 0 3 -0 1 0   
166     1 0 2 0 0 0 1   
167     1 0 0 0 -0 1 0   
168     1 1 0 0 0 0 1   
169     1 1 0 3 0 1 0   
170     1 1 2 0 0 0 1   
171     1 1 0 0 -0 1 0   
172     1 0 0 0 1 0 -0   
173     1 0 0 3 1 0 -0   
174     1 0 2 0 1 0 -0   
175     1 0 2 3 1 0 -0   
176     1 1 0 0 1 0 0   
177 @endverbatim 
178  
179 **BNF-like Definition**
180
181 @verbatim
182     <3D curves> = <3D curve header> <_\n> <3D curve records>;  
183      
184     <3D curve header> = "Curves" <_> <3D curve count>;  
185      
186     <3D curve count> = <int>;  
187      
188     <3D curve records> = <3D curve record> ^ <3D curve count>;  
189      
190     <3D curve record> =  
191     <3D curve record 1> |  
192     <3D curve record 2> |  
193     <3D curve record 3> |  
194     <3D curve record 4> |  
195     <3D curve record 5> |  
196     <3D curve record 6> |  
197     <3D curve record 7> |  
198     <3D curve record 8> |  
199     <3D curve record 9>;  
200  @endverbatim
201  
202 @subsubsection occt_brep_format_4_1_1  Line - \<3D curve record 1\>
203  
204 **Example**  
205
206 @verbatim
207     1 1 0 3 0 1 0   
208 @endverbatim
209  
210 **BNF-like Definition**
211
212 @verbatim
213     <3D curve record 1> = "1" <_> <3D point> <_> <3D direction> <_\n>;  
214 @endverbatim
215  
216 **Description**  
217  
218 \<3D curve record 1\> describes a line. The line data consist of a 3D point *P* and a 3D direction *D*. The line passes through the  point *P*, has  the direction *D* and  is defined by the following parametric equation:  
219  
220 @f[ C(u)=P+u \cdot D, \; u \in (-\infty,\; \infty). @f]
221  
222 The example record is interpreted as a line which  passes through a point *P*=(1, 0, 3), has a direction *D*=(0, 1, 0) and is defined by the  following parametric equation: @f$ C(u)=(1,0,3)+u \cdot (0,1,0) @f$.  
223  
224  
225 @subsubsection occt_brep_format_4_1_2 Circle - \<3D curve record 2\> 
226  
227 **Example**  
228
229 @verbatim 
230     2 1 2 3 0 0 1 1 0 -0 -0 1 0 4  
231 @endverbatim 
232  
233 **BNF-like Definition**
234  
235 ~~~~
236     <3D curve record 2> = "2" <_> <3D circle center> <_> <3D circle N> <_> <3D circle Dx> <_> <3D circle Dy> <_> <3D circle radius> <_\n>;  
237      
238     <3D circle center> = <3D point>;  
239      
240     <3D circle N> = <3D direction>;  
241      
242     <3D circle Dx> = <3D direction>;  
243      
244     <3D circle Dy> = <3D direction>;  
245      
246     <3D circle radius> = <real>;  
247 ~~~~
248  
249 **Description**  
250  
251 \<3D curve record 2\> describes a circle. The  circle data consist of a 3D point *P*, pairwise orthogonal 3D directions *N*, *D<sub>x</sub>* and *D<sub>y</sub>* and a non-negative real *r*. The circle has a center *P* and is located in a plane with a normal *N*. The circle has a radius *r* and is defined by the following parametric equation:  
252  
253 @f[ C(u)=P+r \cdot (cos(u) \cdot D_{x} + sin(u) \cdot D_{y}), \; u \in [o,\;2 \cdot \pi). @f]  
254  
255 The  example record is interpreted as a circle which has its center *P*=(1, 2, 3), is located in plane  with a normal *N*=(0, 0 ,1).  Directions for the circle are *D<sub>x</sub>*=(1, 0 ,0) and *D<sub>y</sub>*=(0, 1 ,0). The circle has a radius *r*=4 and is defined by  the following parametric equation: @f$ C(u) = (1,2,3) + 4 \cdot ( cos(u) \cdot(1,0,0) + sin(u) \cdot (0,1,0) ) @f$.  
256  
257  
258 @subsubsection occt_brep_format_4_1_3 Ellipse - \<3D curve record 3\> 
259  
260 **Example**  
261
262 @verbatim
263     3 1 2 3 0 0 1 1 0 -0 -0 1 0 5  4  
264 @endverbatim
265  
266 **BNF-like Definition**
267
268 ~~~~
269     <3D curve record 3> = "3" <_> <3D ellipse center> <_> <3D ellipse N> <_> <3D ellipse Dmaj> <_> <3D ellipse Dmin> <_> <3D ellipse Rmaj> <_> <3D ellipse Rmin> <_\n>;  
270      
271     <3D ellipse center> = <3D point>;  
272      
273     <3D ellipse N> = <3D direction>;  
274      
275     <3D ellipse Dmaj> = <3D direction>;  
276      
277     <3D ellipse Dmin> = <3D direction>;  
278      
279     <3D ellipse Rmaj> = <real>;  
280      
281     <3D ellipse Rmin> = <real>;  
282 ~~~~
283  
284 **Description**  
285  
286 \<3D curve record 3\> describes an ellipse. The  ellipse data consist of a 3D point *P*, pairwise orthogonal 3D directions *N*, *D<sub>maj</sub>* and *D<sub>min</sub>* and non-negative reals *r<sub>maj</sub>* and *r<sub>min</sub>* so that *r<sub>min</sub>* @f$ \leq @f$ *r<sub>maj</sub>*. The ellipse has its  center *P*, is  located in plane with the normal *N*, has major and minor axis directions *D<sub>maj</sub>* and *D<sub>min</sub>*, major and minor radii *r<sub>maj</sub>* and *r<sub>min</sub>* and is defined by the following parametric equation:  
287  
288 @f[ C(u)=P+r_{maj} \cdot cos(u) \cdot D_{maj} + r_{min} \cdot sin(u) \cdot D_{min}, u \in [0, 2 \cdot \pi). @f]
289  
290 The  example record is interpreted as an ellipse which has its center *P*=(1, 2, 3), is located in plane with a normal *N*=(0, 0, 1), has major and minor axis directions *D<sub>maj</sub>*=(1, 0, 0) and *D<sub>min</sub>*=(0, 1, 0), major and minor radii *r<sub>maj</sub>*=5 and *r<sub>min</sub>*=4 and is defined by  the following parametric equation: @f$ C(u) = (1,2,3) + 5 \cdot cos(u) \cdot(1,0,0) + 4 \cdot sin(u) \cdot (0,1,0) @f$.  
291  
292  
293 @subsubsection occt_brep_format_4_1_4 Parabola - \<3D curve record 4\> 
294  
295 **Example**  
296
297 @verbatim 
298     4 1 2 3 0 0 1 1 0 -0 -0 1 0  16  
299 @endverbatim 
300  
301 **BNF-like Definition**  
302
303 ~~~~
304     <3D curve record 4> = "4" <_> <3D parabola origin> <_> <3D parabola N> <_> <3D parabola Dx> <_> <3D parabola Dy> <_> <3D parabola focal length> <_\n>;  
305      
306     <3D parabola origin> = <3D point>;  
307      
308     <3D parabola N> = <3D direction>;  
309      
310     <3D parabola Dx> = <3D direction>;  
311      
312     <3D parabola Dy> = <3D direction>;  
313      
314     <3D parabola focal length> = <real>;  
315 ~~~~
316  
317 **Description**  
318  
319 \<3D curve record 4\> describes a parabola. The  parabola data consist of a 3D point *P*, pairwise orthogonal 3D directions *N*, *D<sub>x</sub>* and *D<sub>y</sub>* and a non-negative real *f*. The parabola is located in plane which passes through the point *P* and has the normal *N*. The parabola has a focus length *f* and is defined by the following parametric equation:  
320  
321 @f[ C(u)=P+\frac{u^{2}}{4 \cdot f} \cdot D_{x} + u \cdot D_{y}, u \in (-\infty,\; \infty) \Leftarrow f \neq 0; @f]
322 @f[ C(u)=P+u \cdot D_{x}, u \in (-\infty,\; \infty) \Leftarrow f = 0\;(degenerated\;case). @f] 
323  
324 The  example record is interpreted as a parabola in plane which passes through a point *P*=(1, 2, 3) and has a normal *N*=(0, 0, 1). Directions for the parabola are *D<sub>x</sub>*=(1, 0, 0) and *D<sub>y</sub>*=(0, 1, 0). The parabola has a focus length *f*=16 and is defined by the following parametric equation: @f$ C(u) = (1,2,3) + \frac{u^{2}}{64} \cdot (1,0,0) + u \cdot (0,1,0) @f$.  
325  
326  
327 @subsubsection occt_brep_format_4_1_5 Hyperbola - \<3D curve record 5\> 
328  
329 **Example**  
330
331 @verbatim
332     5 1 2 3 0 0 1 1 0 -0 -0 1 0 5  4  
333 @endverbatim
334  
335 **BNF-like Definition**  
336
337 ~~~~
338     <3D curve record 5> = "5" <_> <3D hyperbola origin> <_> <3D hyperbola N> <_> <3D hyperbola Dx> <_> <3D hyperbola Dy> <_> <3D hyperbola Kx> <_> <3D hyperbola Ky> <_\n>;  
339      
340     <3D hyperbola origin> = <3D point>;  
341      
342     <3D hyperbola N> = <3D direction>;  
343      
344     <3D hyperbola Dx> = <3D direction>;  
345      
346     <3D hyperbola Dy> = <3D direction>;  
347      
348     <3D hyperbola Kx> = <real>;  
349      
350     <3D hyperbola Ky> = <real>;  
351 ~~~~
352  
353 **Descripton**  
354  
355 \<3D curve record 5\> describes a hyperbola. The  hyperbola data consist of a 3D point *P*, pairwise orthogonal 3D directions *N*, *D<sub>x</sub>* and *D<sub>y</sub>* and non-negative reals *k<sub>x</sub>* and *k<sub>y</sub>*. The hyperbola is  located in plane which passes through the point *P* and has the normal *N*. The hyperbola is defined by  the following parametric equation:  
356  
357 @f[ C(u)=P+k_{x} \cdot cosh(u) \cdot D_{x}+k_{y} \cdot sinh(u) \cdot D_{y} , u \in (-\infty,\; \infty). @f]  
358  
359 The  example record is interpreted as a hyperbola in plane which passes through a point *P*=(1, 2, 3) and has a normal *N*=(0, 0, 1). Other hyperbola data are *D<sub>x</sub>*=(1, 0, 0), *D<sub>y</sub>*=(0, 1, 0), *k<sub>x</sub>*=5 and *k<sub>y</sub>*=4. The hyperbola is defined by the following parametric equation: @f$ C(u) = (1,2,3) + 5 \cdot cosh(u) \cdot (1,0,0) +4 \cdot sinh(u) \cdot (0,1,0) @f$.  
360  
361  
362 @subsubsection occt_brep_format_4_1_6 Bezier Curve - \<3D curve record 6\> 
363  
364 **Example**  
365
366 @verbatim
367     6 1 2 0 1 0  4 1 -2 0  5 2 3  0  6   
368 @endverbatim
369  
370 **BNF-like Definition**
371
372 @verbatim
373         <3D curve record 6> = "6" <_> <3D Bezier rational flag> <_> <3D Bezier degree> 
374         <3D Bezier weight poles> <_\n>;
375                 
376         <3D Bezier rational flag> = <flag>;
377                 
378         <3D Bezier degree> = <int>;
379
380         3D Bezier weight poles> = (<_> <3D Bezier weight pole>) ^ (<3D Bezier degree> <+> "1");
381
382         <3D Bezier weight pole> = <3D point> [<_> <real>];
383 @endverbatim
384  
385 **Description**  
386  
387 \<3D curve record 6\> describes a Bezier curve. The curve data consist of a rational *r*, a degree @f$ m \leq 25 @f$ and weight poles.  
388  
389 The weight poles are *m*+1 3D points *B<sub>0</sub> ... B<sub>m</sub>* if the flag *r* is 0. The weight poles are *m*+1 pairs *B<sub>0</sub>h<sub>0</sub> ... B<sub>m</sub>h<sub>m</sub>* if flag *r* is 1. Here *B<sub>i</sub>* is a 3D point and *h<sub>i</sub>* is a positive real @f$ (0 \leq i \leq m) @f$. @f$ h_{i}=1\; (0 \leq i \leq m) @f$ if the flag *r* is 0.  
390  
391 The Bezier curve is defined by the following  parametric equation:  
392  
393 @f[ C(u) = \frac{\sum_{i=0}^{m}B_{i} \cdot h_{i} \cdot C_{m}^{i} \cdot u^{i} \cdot (1-u)^{m-i}}{\sum_{i=0}^{m}h_{i} \cdot C_{m}^{i} \cdot u^{i} \cdot (1-u)^{m-i}},\;u \in [0,\; 1] @f]
394  
395 where @f$ 0^{0} \equiv 1 @f$.  
396  
397 The example record is interpreted as a Bezier curve with a rational flag *r*=1, degree *m*=2 and weight poles *B<sub>0</sub>*=(0, 1, 0), *h<sub>0</sub>*=4, *B<sub>1</sub>*=(1, -2, 0), *h<sub>1</sub>*=5 and *B<sub>2</sub>*=(2, 3, 0), *h<sub>2</sub>*=6. The Bezier curve is defined  by the following parametric equation:  
398  
399 @f[ C(u)=\frac{(0,1,0) \cdot 4 \cdot (1-u)^{2}+(1,-2,0) \cdot 5 \cdot 2 \cdot u \cdot (1-u) + (2,3,0) \cdot 6 \cdot u^{2} )}{4 \cdot (1-u)^{2}+5 \cdot 2 \cdot u \cdot (1-u)+6 \cdot u^{2}}. @f]  
400  
401  
402 @subsubsection occt_brep_format_4_1_7 B-spline Curve - \<3D curve record 7\>
403  
404 **Example**  
405
406 @verbatim
407     7 1 0  1 3 5  0 1 0  4 1 -2  0  5 2 3 0  6  
408      0 1 0.25 1 0.5 1 0.75 1 1 1  
409 @endverbatim
410  
411 **BNF-like Definition**
412
413 ~~~~
414         <3D curve record 7> = "7" <_> <3D B-spline rational flag> <_> "0" <_> <3D B-spline degree> <_> 
415         <3D B-spline pole count> <_> <3D B-spline multiplicity knot count> <3D B-spline weight poles> 
416         <_\n> <3D B-spline multiplicity knots> <_\n>;
417
418         <3D B-spline rational flag> = <flag>;
419
420         <3D B-spline degree> = <int>;
421
422         <3D B-spline pole count> = <int>;
423
424         <3D B-spline multiplicity knot count> = <int>;
425
426         <3D B-spline weight poles> = (<_> <3D B-spline weight pole>) ^ <3D B-spline pole count>;
427
428         <3D B-spline weight pole> = <3D point> [<_> <real>];
429
430         <3D B-spline multiplicity knots> = (<_> <3D B-spline multiplicity knot>) ^ <3D B-spline multiplicity knot count>;
431
432         <3D B-spline multiplicity knot> = <real> <_> <int>;  
433 ~~~~
434  
435 **Description**  
436  
437 \<3D curve record 7\> describes a B-spline curve.  The curve data consist of a rational flag *r*, a degree @f$ m \leq 25 @f$, pole count @f$ n \geq 2 @f$, multiplicity knot count *k*, weight poles and  multiplicity knots.  
438  
439 The weight poles are *n* 3D points *B<sub>1</sub> ... B<sub>n</sub>* if the flag *r* is 0. The weight poles are *n* pairs *B<sub>1</sub>h<sub>1</sub> ... B<sub>n</sub>h<sub>n</sub>* if the flag *r* is 1. Here *B<sub>i</sub>* is a 3D point and *h<sub>i</sub>* is a positive real @f$ (1 \leq i \leq n) @f$.  @f$ h_{i}=1\; (1 \leq i \leq n) @f$ if the flag *r* is 0.  
440  
441 The multiplicity knots are *k* pairs *u<sub>1</sub>q<sub>1</sub> ... u<sub>k</sub>q<sub>k</sub>*. Here *u<sub>i</sub>* is a knot with a multiplicity @f$ q_{i} \geq 1 \; (1 \leq i \leq k) @f$ so that  
442  
443 @f[ u_{i} < u_{i+1} (1 \leq i \leq k-1),@f]
444 @f[ q_{1} \leq m+1,\; q_{k} \leq m+1,\; q_{i} \leq m\; (2 \leq i \leq k-1), \sum_{i=1}^{k}q_{i}=m+n+1. @f]  
445  
446 The B-spline curve is defined by the following  parametric equation:  
447  
448 @f[ C(u) = \frac{\sum_{i=1}^{n}B_{i} \cdot h_{i} \cdot N_{i,m+1}(u)}{\sum_{i=1}^{n}h_{i} \cdot N_{i,m+1}(u)},\;u \in [u_{1},\; u_{k}] @f] 
449  
450 where functions @f$ N_{i,j} @f$ have the following recursion definition  by *j*:  
451
452 @f[ N_{i,1}(u)=\left\{\begin{matrix}
453 1\Leftarrow \bar{u}_{i} \leq u \leq \bar{u}_{i+1}\\ 
454 0\Leftarrow u < \bar{u}_{i} \vee  \bar{u}_{i+1} \leq u \end{matrix} \right.,\;
455 N_{i,j}(u)=\frac{(u-\bar{u}_{i}) \cdot N_{i,j-1}(u) }{\bar{u}_{i+j-1}-\bar{u}_{i}}+ \frac{(\bar{u}_{i+j}-u) \cdot N_{i+1,j-1}(u)}{\bar{u}_{i+j}-\bar{u}_{i+1}},\;(2 \leq j \leq m+1) @f] 
456  
457 where 
458  
459 @f[ \bar{u}_{i} = u_{j},\; (1 \leq j \leq k,\; \sum_{l=1}^{j-1}q_{l}+1 \leq i \leq \sum_{l=1}^{j}q_{l} ). @f]  
460  
461 The example record is interpreted as a B-spline curve  with a rational flag *r*=1, a degree *m*=1, pole count *n*=3, multiplicity knot count *k*=5, weight poles *B<sub>1</sub>*=(0,1,0), *h<sub>1</sub>*=4, *B<sub>2</sub>*=(1,-2,0), *h<sub>2</sub>*=5 and *B<sub>3</sub>*=(2,3,0), *h<sub>3</sub>*=6, multiplicity knots *u<sub>1</sub>*=0, *q<sub>1</sub>*=1, *u<sub>2</sub>*=0.25, *q<sub>2</sub>*=1, *u<sub>3</sub>*=0.5, *q<sub>3</sub>*=1, *u<sub>4</sub>*=0.75, *q<sub>4</sub>*=1 and *u<sub>5</sub>*=1, *q<sub>5</sub>*=1. The B-spline curve is defined  by the following parametric equation:  
462  
463 @f[ C(u)=\frac{(0,1,0) \cdot 4 \cdot N_{1,2}(u) + (1,-2,0) \cdot 5 \cdot N_{2,2}(u)+(2,3,0) \cdot 6 \cdot N_{3,2}(u)}{4 \cdot N_{1,2}(u)+5 \cdot N_{2,2}(u)+6 \cdot N_{3,2}(u)}. @f]  
464  
465  
466 @subsubsection occt_brep_format_4_1_8 Trimmed Curve - \<3D curve record 8\>
467  
468 **Example**  
469
470 @verbatim
471     8  -4 5  
472     1 1 2 3 1 0 0   
473 @endverbatim
474  
475 **BNF-like Definition**  
476
477 ~~~~
478         <3D curve record 8> = "8" <_> <3D trimmed curve u min> <_> <3D trimmed curve u max> <_\n> <3D curve record>;
479
480         <3D trimmed curve u min> = <real>;
481
482         <3D trimmed curve u max> = <real>;  
483 ~~~~
484  
485 **Description**  
486  
487 \<3D curve record 8\> describes a trimmed curve.  The trimmed curve data consist of reals *u<sub>min</sub>* and *u<sub>max</sub>* and \<3D curve record\> so that *u<sub>min</sub>* < *u<sub>max</sub>*. The trimmed curve is a restriction of the base curve *B* described in the record to the segment @f$ [u_{min},\;u_{max}]\subseteq domain(B) @f$. The trimmed curve is  defined by the following parametric equation:  
488  
489 @f[ C(u)=B(u),\; u \in [u_{min},\;u_{max}]. @f]  
490  
491 The  example record is interpreted as a trimmed curve with *u<sub>min</sub>*=-4 and *u<sub>max</sub>*=5 for the base curve @f$ B(u)=(1,2,3)+u \cdot (1,0,0) @f$. The trimmed curve is  defined by the following parametric equation: @f$ C(u)=(1,2,3)+u \cdot (1,0,0),\; u \in [-4,\; 5] @f$.  
492  
493  
494 @subsubsection occt_brep_format_4_1_9 Offset Curve - \<3D curve record 9\> 
495  
496 **Example**  
497
498 @verbatim
499     9 2  
500     0 1 0   
501     1 1 2 3 1 0 0   
502 @endverbatim
503  
504 **BNF-like Definition**  
505
506 @verbatim
507         <3D curve record 9> = "9" <_> <3D offset curve distance> <_\n>;
508         <3D offset curve direction> <_\n>;
509         <3D curve record>;
510
511         <3D offset curve distance> = <real>;
512
513         <3D offset curve direction> = <3D direction>;  
514 @endverbatim
515  
516 **Description**  
517  
518 \<3D curve record 9\> describes an offset curve. The offset curve data consist of a distance *d*, a 3D direction *D* and a \<3D curve record\>. The offset curve is the result of offsetting the base curve *B* described in the record to the distance *d* along the vector @f$ [B'(u),\; D] \neq \vec{0} @f$. The offset curve is defined  by the following parametric equation:  
519  
520 @f[ C(u)=B(u)+d \cdot \frac{[B'(u),\; D]}{|[B'(u),\; D]|},\; u \in domain(B) . @f]   
521  
522 The example record is interpreted as an offset curve with a distance *d*=2, direction *D*=(0, 1, 0), base curve @f$ B(u)=(1,2,3)+u \cdot (1,0,0) @f$ and defined by the  following parametric equation: @f$ C(u)=(1,2,3)+u \cdot (1,0,0)+2 \cdot (0,0,1) @f$.  
523  
524 @subsection occt_brep_format_4_2  Surfaces
525  
526 **Example**  
527
528 @verbatim
529     Surfaces 6  
530     1 0 0 0 1 0 -0 0 0 1 0 -1 0   
531     1 0 0 0 -0 1 0 0 0 1 1 0 -0   
532     1 0 0 3 0 0 1 1 0 -0 -0 1 0   
533     1 0 2 0 -0 1 0 0 0 1 1 0 -0   
534     1 0 0 0 0 0 1 1 0 -0 -0 1 0   
535     1 1 0 0 1 0 -0 0 0 1 0 -1 0   
536 @endverbatim
537  
538 **BNF-like Definition**  
539
540 @verbatim
541         <surfaces> = <surface header> <_\n> <surface records>;
542
543         <surface header> = “Surfaces” <_> <surface count>;
544
545         <surface records> = <surface record> ^ <surface count>;
546
547         <surface record> =
548         <surface record 1> |
549         <surface record 2> |
550         <surface record 3> |
551         <surface record 4> |
552         <surface record 5> |
553         <surface record 6> |
554         <surface record 7> |
555         <surface record 8> |
556         <surface record 9> |
557         <surface record 10> |
558         <surface record 11>;  
559 @endverbatim
560  
561 @subsubsection occt_brep_format_4_2_1 Plane - \< surface record 1 \> 
562
563 **Example**  
564
565 @verbatim
566     1 0 0 3 0 0 1 1 0 -0 -0 1 0   
567 @endverbatim
568  
569 **BNF-like Definition**
570
571 @verbatim
572         <surface record 1> = "1" <_> <3D point> (<_> <3D direction>) ^ 3 <_\n>;
573 @endverbatim
574  
575 **Description**  
576  
577 \<surface record 1\> describes a plane. The plane  data consist of a 3D point *P* and pairwise orthogonal 3D directions *N*, *D<sub>u</sub>* and *D<sub>v</sub>*. The plane passes through the  point *P*, has  the normal *N* and  is defined by the following parametric equation:  
578  
579 @f[ S(u,v)=P+u \cdot D_{u}+v \cdot D_{v},\; (u,\;v) \in (-\infty,\; \infty) \times (-\infty,\; \infty). @f]  
580  
581 The example record is interpreted as a plane which  passes through a point *P*=(0, 0, 3), has a normal *N*=(0, 0, 1) and is defined by the  following parametric equation: @f$ S(u,v)=(0,0,3)+u \cdot (1,0,0) + v \cdot (0,1,0) @f$.  
582  
583  
584 @subsubsection occt_brep_format_4_2_2 Cylinder - \< surface record 2 \> 
585  
586 **Example**  
587
588 @verbatim
589     2 1 2 3 0 0 1 1 0 -0 -0 1 0 4  
590 @endverbatim
591  
592 **BNF-like Definition**  
593
594 @verbatim
595     <surface record 2> = "2" <_> <3D point> (<_> <3D direction>) ^ 3 <_> <real> <_\n>;
596 @endverbatim
597  
598 **Description**  
599  
600 \<surface record 2\> describes a cylinder. The  cylinder data consist of a 3D point *P*, pairwise orthogonal 3D directions *D<sub>v</sub>*, *D<sub>X</sub>* and *D<sub>Y</sub>* and a non-negative real *r*. The cylinder axis  passes through the point *P* and has the direction *D<sub>v</sub>*. The cylinder has  the radius *r* and  is defined by the following parametric equation:  
601  
602 @f[ S(u,v)=P+r \cdot (cos(u) \cdot D_{x}+sin(u) \cdot D_{y} )+v \cdot D_{v},\; (u,v) \in [0,\; 2 \cdot \pi) \times (-\infty,\; \infty) . @f]  
603  
604 The  example record is interpreted as a cylinder which axis passes through a point *P*=(1, 2, 3) and has a direction *D<sub>v</sub>*=(0, 0, 1). Directions for the  cylinder are *D<sub>X</sub>*=(1,0,0) and *D<sub>Y</sub>*=(0,1,0). The cylinder has a radius *r*=4 and is defined by the following  parametric equation: @f$ S(u,v)=(1,2,3)+4 \cdot ( cos(u) \cdot D_{X} + sin(u) \cdot D_{Y} ) + v \cdot D_{v}. @f$  
605  
606  
607 @subsubsection occt_brep_format_4_2_3 Cone - \< surface record 3 \> 
608  
609 **Example**  
610
611 @verbatim
612     3 1 2 3 0 0 1 1 0 -0 -0 1 0 4  
613     0.75
614 @endverbatim
615  
616  
617 **BNF-like Definition**
618
619 @verbatim
620     <surface record 3> = "3" <_> <3D point> (<_> <3D direction>) ^ 3 (<_> <real>) ^ 2 <_\n>;  
621 @endverbatim
622  
623 **Description**  
624  
625 \<surface record 3\> describes a cone. The cone  data consist of a 3D point *P*, pairwise orthogonal 3D directions *D<sub>Z</sub>*, *D<sub>X</sub>* and *D<sub>Y</sub>*, a non-negative real *r* and a real @f$ \varphi \in (-\pi /2,\; \pi/2)/\left \{ 0 \right \} @f$. The cone axis passes  through the point *P* and  has the direction *D<sub>Z</sub>*. The plane which passes through the point *P* and is parallel to directions *D<sub>X</sub>* and *D<sub>Y</sub>* is the cone referenced  plane. The cone section by the plane is a circle with the radius *r*. The direction from  the point *P* to  the cone apex is @f$ -sgn(\varphi) \cdot D_{Z} @f$.  The cone has a half-angle @f$| \varphi | @f$ and is defined by the following  parametric equation:  
626  
627 @f[ S(u,v)=P+(r+v \cdot sin(\varphi)) \cdot (cos(u) \cdot D_{X}+sin(u) \cdot D_{Y})+v \cdot cos(\varphi) \cdot D_{Z}, (u,v) \in [0,\; 2 \cdot \pi) \times (-\infty,\; \infty) . @f]  
628  
629 The example record is interpreted as a cone with an axis  which passes through a point *P*=(1, 2, 3) and has a direction *D<sub>Z</sub>*=(0, 0, 1). Other cone data are *D<sub>X</sub>*=(1, 0, 0), *D<sub>Y</sub>*=(0, 1, 0), *r*=4 and @f$ \varphi = 0.75 @f$. The cone is defined by the  following parametric equation:  
630 @f[ S(u,v)=(1,2,3)+( 4 + v \cdot sin(0.75)) \cdot ( cos(u) \cdot (1,0,0) + sin(u) \cdot (0,1,0) ) + v \cdot cos(0.75) \cdot (0,0,1) . @f]  
631  
632  
633 @subsubsection occt_brep_format_4_2_4 Sphere - \< surface record 4 \> 
634  
635 **Example**  
636
637 @verbatim
638     4 1 2 3 0 0 1 1 0 -0 -0 1 0 4  
639 @endverbatim
640  
641 **BNF-like Definition**
642
643 @verbatim
644     <surface record 4> = "4" <_> <3D point> (<_> <3D direction>) ^ 3 <_> <real> <_\n>;  
645 @endverbatim
646  
647 **Description**  
648  
649 \<surface record 4\> describes a sphere. The  sphere data consist of a 3D point *P*, pairwise orthogonal 3D directions *D<sub>Z</sub>*, *D<sub>X</sub>* and *D<sub>Y</sub>* and a non-negative real *r*. The sphere has the center *P*, radius *r* and  is defined by the following parametric equation:  
650  
651 @f[ S(u,v)=P+r \cdot cos(v) \cdot (cos(u) \cdot D_{x}+sin(u) \cdot D_{y} ) +r \cdot sin(v) \cdot D_{Z},\; (u,v) \in [0,\;2 \cdot \pi) \times [-\pi /2,\; \pi /2] . @f]  
652  
653 The  example record is interpreted as a sphere with its center *P*=(1, 2, 3). Directions for the sphere are  *D<sub>Z</sub>*=(0, 0, 1), *D<sub>X</sub>*=(1, 0, 0) and *D<sub>Y</sub>*=(0, 1, 0). The sphere has a radius  *r*=4 and is  defined by the following parametric equation:  
654 @f[ S(u,v)=(1,2,3)+ 4 \cdot cos(v) \cdot ( cos(u) \cdot (1,0,0) + sin(u) \cdot (0,1,0) ) + 4 \cdot sin(v) \cdot (0,0,1) . @f]   
655  
656  
657 @subsubsection occt_brep_format_4_2_5 Torus - \< surface record 5 \> 
658  
659 **Example**  
660
661 @verbatim
662     5 1 2 3 0 0 1 1 0 -0 -0 1 0 8  4  
663 @endverbatim
664  
665 **BNF-like Definition**
666
667 @verbatim
668     <surface record 5> = "5" <_> <3D point> (<_> <3D direction>) ^ 3 (<_> <real>) ^ 2 <_\n>;  
669 @endverbatim
670  
671 **Description**  
672  
673 \<surface record 5\> describes a torus. The torus  data consist of a 3D point *P*, pairwise orthogonal 3D directions *D<sub>Z</sub>*, *D<sub>X</sub>* and *D<sub>Y</sub>* and non-negative reals *r<sub>1</sub>* and *r<sub>2</sub>*. The torus axis  passes through the point *P* and has the direction *D<sub>Z</sub>*. *r<sub>1</sub>* is the distance from the  torus circle center to the axis. The torus circle has the radius *r<sub>2</sub>*. The torus is defined  by the following parametric equation:  
674  
675 @f[ S(u,v)=P+(r_{1}+r_{2} \cdot cos(v)) \cdot (cos(u) \cdot D_{x}+sin(u) \cdot D_{y} ) +r_{2} \cdot sin(v) \cdot D_{Z},\; (u,v) \in [0,\;2 \cdot \pi) \times [0,\; 2 \cdot \pi) . @f]    
676  
677 The example record is interpreted as a torus with an axis which passes through a point *P*=(1, 2, 3) and has a direction *D<sub>Z</sub>*=(0, 0, 1). *D<sub>X</sub>*=(1, 0, 0), *D<sub>Y</sub>*=(0, 1, 0), *r<sub>1</sub>*=8 and *r<sub>2</sub>*=4 for the torus. The torus is defined  by the following parametric equation:  
678 @f[ S(u,v)=(1,2,3)+ (8+4 \cdot cos(v)) \cdot ( cos(u) \cdot (1,0,0) + sin(u) \cdot (0,1,0) ) + 4 \cdot sin(v) \cdot (0,0,1) . @f]   
679  
680  
681 @subsubsection occt_brep_format_4_2_6 Linear Extrusion - \< surface record 6 \> 
682  
683 **Example**  
684
685 @verbatim
686     6 0 0.6 0.8   
687     2 1 2 3 0 0 1 1 0 -0 -0 1 0 4  
688 @endverbatim
689  
690 **BNF-like Definition**
691
692 @verbatim
693     <surface record 6> = "6" <_> <3D direction> <_\n> <3D curve record>;  
694 @endverbatim
695  
696 **Description**  
697  
698 \<surface record 6\> describes a linear extrusion  surface. The surface data consist of a 3D direction *D<sub>v</sub>* and a \<3D curve  record\>. The linear extrusion surface has the direction *D<sub>v</sub>*, the base curve *C* described in the  record and is defined by the following parametric equation:  
699  
700 @f[ S(u,v)=C(u)+v \cdot D_{v},\; (u,v) \in domain(C) \times (-\infty,\; \infty) . @f]     
701  
702 The example record is interpreted as a linear  extrusion surface with a direction *D<sub>v</sub>*=(0, 0.6, 0.8). The base curve is a circle for the  surface. The surface is defined by the following parametric equation:
703
704 @f[ S(u,v)=(1,2,3)+4 \cdot (cos(u) \cdot (1,0,0)+sin(u) \cdot (0,1,0))+v \cdot (0, 0.6, 0.8),\; (u,v) \in [0,\; 2 \cdot \pi) \times (-\infty,\; \infty). @f]  
705  
706  
707 @subsubsection occt_brep_format_4_2_7 Revolution Surface - \< surface record 7 \> 
708  
709 **Example**  
710
711 @verbatim
712     7 -4 0 3 0 1 0   
713     2 1 2 3 0 0 1 1 0 -0 -0 1 0 4  
714 @endverbatim
715  
716 **BNF-like Definition**
717
718 @verbatim
719     <surface record 7> = "7" <_> <3D point> <_> <3D direction> <_\n> <3D curve record>;  
720 @endverbatim
721  
722 **Description**  
723  
724 \<surface record 7\> describes a revolution  surface. The surface data consist of a 3D point *P*, a 3D direction *D* and a \<3D curve  record\>. The surface axis passes through the point *P* and has the direction *D*. The base curve *C* described by the  record and the axis are coplanar. The surface is defined by the following  parametric equation:  
725  
726 @f[ S(u,v)= P+V_{D}(v)+cos(u) \cdot (V(v)-V_{D}(v))+sin(u) \cdot [D,V(v)],\;(u,v) \in [0,\; 2 \cdot \pi)\times domain(C) @f] 
727  
728 where @f$ V(v)=C(v)-P, V_{D}(v)=(D,V(v)) \cdot D @f$.  
729  
730 The example record is interpreted as a revolution surface with an axis which passes through a point *P*=(-4, 0, 3) and has a direction *D*=(0, 1, 0). The base curve is a circle  for the surface. The surface is defined by the following parametric equation:  
731
732 @f[ S(u,v)= (-4,0,3)+V_{D}(v)+cos(u) \cdot (V(v)-V_{D}(v))+sin(u) \cdot [(0,1,0),V(v)],\;(u,v) \in [0,\; 2 \cdot \pi)\times [0,\; 2 \cdot \pi) @f] 
733  
734 where @f$ V(v)=(5,2,0)+4 \cdot (cos(v) \cdot (1,0,0)+sin(v) \cdot (0,1,0)), V_{D}(v)=((0,1,0),V(v)) \cdot (0,1,0) @f$.  
735  
736  
737 @subsubsection occt_brep_format_4_2_8 Bezier Surface - \< surface record 8 \> 
738  
739 **Example**  
740
741 @verbatim
742     8 1 1 2 1 0 0 1  7 1 0 -4  10    
743     0 1 -2  8 1 1 5  11   
744     0 2 3  9 1 2 6  12   
745 @endverbatim
746  
747 **BNF-like Definition**
748
749 ~~~~
750         <surface record 8> = "8" <_> <Bezier surface u rational flag> <_> <Bezier surface v rational flag> <_> <Bezier surface u degree> <_> <Bezier surface v degree> <_> 
751         <Bezier surface weight poles>;
752
753         <Bezier surface u rational flag> = <flag>;
754
755         <Bezier surface v rational flag> = <flag>;
756
757         <Bezier surface u degree> = <int>;
758
759         <Bezier surface v degree> = <int>;
760
761         <Bezier surface weight poles> =
762         (<Bezier surface weight pole group> <_\n>) ^ (<Bezier surface u degree> <+> "1");
763
764         <Bezier surface weight pole group> = <Bezier surface weight pole>
765         (<_> <Bezier surface weight pole>) ^ <Bezier surface v degree>;
766
767         <Bezier surface weight pole> = <3D point> [<_> <real>];  
768 ~~~~
769  
770 **Description**  
771  
772 \<surface record 8\> describes a Bezier surface.  The surface data consist of a u rational flag *r<sub>u</sub>*, v rational flag *r<sub>v</sub>*, u degree @f$ m_{u} \leq 25 @f$, v degree @f$ m_{v} \leq 25 @f$ and weight poles.  
773  
774 The weight poles are @f$ (m_{u}+1) \cdot (m_{v}+1) @f$ 3D points @f$ B_{i,j}\; ((i,j) \in \left \{ 0,...,m_{u} \right \} \times \left \{ 0,...,m_{v} \right \}) @f$ if @f$ r_{u}+r_{v}=0 @f$. The weight poles are @f$ (m_{u}+1) \cdot (m_{v}+1) @f$ pairs @f$ B_{i,j}h_{i,j}\; ((i,j) \in \left \{ 0,...,m_{u} \right \} \times \left \{ 0,...,m_{v} \right \}) @f$ if @f$ r_{u}+r_{v} \neq 0 @f$. Here @f$ B_{i,j} @f$ is a 3D point and @f$ h_{i,j} @f$ is a positive real @f$ ((i,j) \in \left \{ 0,...,m_{u} \right \} \times \left \{ 0,...,m_{v} \right \}) @f$. @f$ h_{i,j}=1\; ((i,j) \in \left \{ 0,...,m_{u} \right \} \times \left \{ 0,...,m_{v} \right \}) @f$ if @f$ r_{u}+r_{v} = 0 @f$.  
775  
776 The Bezier surface is defined by the following  parametric equation:  
777  
778 @f[ S(u,v)=\frac{\sum_{i=0}^{m_{u}} \sum_{j=0}^{m_{v}} B_{i,j} \cdot h_{i,j} \cdot C_{m_{u}}^{i} \cdot u^{i} \cdot (1-u)^{m_{u}-i} \cdot C_{m_{v}}^{j} \cdot v^{j} \cdot (1-v)^{m_{v}-j}}{\sum_{i=0}^{m_{u}} \sum_{j=0}^{m_{v}} h_{i,j} \cdot C_{m_{u}}^{i} \cdot u^{i} \cdot (1-u)^{m_{u}-i} \cdot C_{m_{v}}^{j} \cdot v^{j} \cdot (1-v)^{m_{v}-j}}, (u,v) \in [0,1] \times [0,1] @f]   
779  
780 where @f$ 0^{0} \equiv 1 @f$.  
781  
782 The example record is interpreted as a Bezier surface  with a u rational flag *r<sub>u</sub>*=1, v rational flag *r<sub>v</sub>*=1, u degree *m<sub>u</sub>*=2, v degree *m<sub>v</sub>*=1, weight poles *B<sub>0,0</sub>*=(0, 0, 1), *h<sub>0,0</sub>*=7, *B<sub>0,1</sub>*=(1, 0, -4), *h<sub>0,1</sub>*=10, *B<sub>1,0</sub>*=(0, 1, -2), *h<sub>1,0</sub>*=8, *B<sub>1,1</sub>*=(1, 1, 5), *h<sub>1,1</sub>*=11, *B<sub>2,0</sub>*=(0, 2, 3), *h<sub>2,0</sub>*=9 and *B<sub>2,1</sub>*=(1, 2, 6), *h<sub>2,1</sub>*=12. The surface is defined by  the following parametric equation:  
783  
784 @f[
785 \begin{align}
786 S(u,v)= [ (0,0,1) \cdot 7 \cdot (1-u)^{2} \cdot (1-v)+(1,0,-4) \cdot 10 \cdot (1-u)^{2} \cdot v+ (0,1,-2) \cdot 8 \cdot 2 \cdot u \cdot (1-u) \cdot (1-v) + \\
787 (1,1,5) \cdot 11 \cdot 2 \cdot u \cdot (1-u)  \cdot v+ (0,2,3) \cdot 9 \cdot u^{2} \cdot (1-v)+(1,2,6) \cdot 12 \cdot u^{2} \cdot v] \div [7 \cdot (1-u)^{2} \cdot (1-v)+ \\
788 10 \cdot (1-u)^{2} \cdot v+ 8 \cdot 2 \cdot u \cdot (1-u) \cdot (1-v)+ 11 \cdot 2 \cdot u \cdot (1-u) \cdot v+ 9 \cdot u^{2} \cdot (1-v)+12 \cdot u^{2} \cdot v ]
789 \end{align}
790 @f]
791  
792  
793 @subsubsection occt_brep_format_4_2_9 B-spline Surface - \< surface record 9 \> 
794  
795 **Example**  
796
797 @verbatim
798     9  1 1 0 0 1 1 3 2 5 4 0 0 1  7 1 0 -4  10   
799     0  1 -2  8 1 1 5  11   
800     0  2 3  9 1 2 6  12   
801      
802     0  1  
803     0.25  1  
804     0.5  1  
805     0.75  1  
806     1  1  
807      
808     0  1  
809     0.3  1  
810     0.7  1  
811     1 1  
812 @endverbatim
813  
814 **BNF-like Definition**
815
816 @verbatim
817         <surface record 9> = "9" <_> <B-spline surface u rational flag> <_> 
818         <B-spline surface v rational flag> <_> "0" <_> "0" <_> <B-spline surface u degree> <_> 
819         <B-spline surface v degree> <_> <B-spline surface u pole count> <_> 
820         <B-spline surface v pole count> <_> <B-spline surface u multiplicity knot count> <_> 
821         <B-spline surface v multiplicity knot count> <_> <B-spline surface weight poles> <_\n> 
822         <B-spline surface u multiplicity knots> <_\n> <B-spline surface v multiplicity knots>;
823
824         <B-spline surface u rational flag> = <flag>;
825
826         <B-spline surface v rational flag> = <flag>;
827
828         <B-spline surface u degree> = <int>;
829
830         <B-spline surface v degree> = <int>;
831
832         <B-spline surface u pole count> = <int>;
833
834         <B-spline surface v pole count> = <int>;
835
836         <B-spline surface u multiplicity knot count> = <int>;
837
838         <B-spline surface v multiplicity knot count> = <int>;
839
840         <B-spline surface weight poles> =
841         (<B-spline surface weight pole group> <_\n>) ^ <B-spline surface u pole count>;
842
843         <B-spline surface weight pole group> =
844         (<B-spline surface weight pole> <_>) ^ <B-spline surface v pole count>;
845
846         <B-spline surface weight pole> = <3D point> [<_> <real>];
847
848         <B-spline surface u multiplicity knots> =
849         (<B-spline surface u multiplicity knot> <_\n>) ^ <B-spline surface u multiplicity knot count>;
850
851         <B-spline surface u multiplicity knot> = <real> <_> <int>;
852
853         <B-spline surface v multiplicity knots> =
854         (<B-spline surface v multiplicity knot> <_\n>) ^ <B-spline surface v multiplicity knot count>;
855
856         <B-spline surface v multiplicity knot> = <real> <_> <int>;
857 @endverbatim
858  
859 **Description**  
860  
861 \<surface record 9\> describes a B-spline surface.  The surface data consist of a u rational flag *r<sub>u</sub>*, v rational flag *r<sub>v</sub>*, u degree @f$ m_{u} \leq 25 @f$, v degree @f$ m_{v} \leq 25 @f$, u pole count @f$ n_{u} \geq 2 @f$, v pole count @f$ n_{v} \geq 2 @f$, u multiplicity knot count *k<sub>u</sub>*, v multiplicity knot count *k<sub>v</sub>*, weight poles, u multiplicity  knots, v multiplicity knots.  
862  
863 The weight poles are @f$ n_{u} \cdot n_{v} @f$ 3D points @f$ B_{i,j}\; ((i,j) \in \left \{ 1,...,n_{u} \right \} \times \left \{ 1,...,n_{v} \right \}) @f$ if @f$ r_{u}+r_{v}=0 @f$. The weight poles are @f$ n_{u} \cdot n_{v} @f$ pairs @f$ B_{i,j}h_{i,j}\; ((i,j) \in \left \{ 1,...,n_{u} \right \} \times \left \{ 1,...,n_{v} \right \}) @f$ if @f$ r_{u}+r_{v} \neq 0 @f$. Here @f$ B_{i,j} @f$ is a 3D point and @f$ h_{i,j} @f$ is a positive real @f$ ((i,j) \in \left \{ 1,...,n_{u} \right \} \times \left \{ 1,...,n_{v} \right \}) @f$. @f$ h_{i,j}=1\; ((i,j) \in \left \{ 1,...,n_{u} \right \} \times \left \{ 1,...,n_{v} \right \}) @f$ if @f$ r_{u}+r_{v} = 0 @f$.  
864  
865 The u multiplicity knots are *k<sub>u</sub>* pairs @f$ u_{1}q_{1} ... u_{k_{u}}q_{k_{u}} @f$. Here @f$ u_{i} @f$ is a knot with multiplicity @f$ q_{i} \geq 1 \;(1\leq i\leq k_{u}) @f$ so that  
866  
867 @f[ u_{i} < u_{i+1} \; (1\leq i\leq k_{u}-1), \\
868 q_{1} \leq m_{u}+1,\; q_{k_{u}} \leq m_{u}+1,\; q_{i} \leq m_{u}\; (2\leq i\leq k_{u}-1),\; \sum_{i=1}^{k_{u}}q_{i}=m_{u}+n_{u}+1. @f]  
869  
870 The v multiplicity knots are *k<sub>v</sub>* pairs @f$ v_{1}t_{1} ... v_{k_{v}}t_{k_{v}} @f$. Here @f$ v_{j} @f$ is a knot with multiplicity @f$ t_{i} \geq  1\;(1\leq i\leq k_{v}) @f$ so that  
871  
872 @f[ v_{j} < v_{j+1} \; (1\leq j\leq k_{v}-1), \\
873 t_{1} \leq m_{v}+1,\; t_{k_{v}} \leq m_{v}+1,\; t_{j} \leq m_{v}\; (2\leq j\leq k_{v}-1),\; \sum_{j=1}^{k_{v}}t_{j}=m_{v}+n_{v}+1. @f] 
874  
875 The B-spline surface is defined by the following  parametric equation:  
876  
877 @f[ S(u,v)=\frac{\sum_{i=1}^{n_{u}} \sum_{j=1}^{n_{v}} B_{i,j} \cdot h_{i,j} \cdot N_{i,m_{u}+1}(u) \cdot M_{j,m_{v}+1}(v)}{\sum_{i=1}^{n_{u}} \sum_{j=1}^{n_{v}} h_{i,j} \cdot N_{i,m_{u}+1}(u) \cdot M_{j,m_{v}+1}(v)}, (u,v) \in [u_{1},u_{k_{u}}] \times [v_{1},v_{k_{v}}] @f]     
878  
879 where functions *N<sub>i,j</sub>* and *M<sub>i,j</sub>* have the following recursion definition by *j*:  
880  
881 @f[
882 \begin{align}
883 N_{i,1}(u)= \left\{\begin{matrix}
884 1\Leftarrow \bar{u}_{i} \leq u \leq \bar{u}_{i+1}
885 0\Leftarrow u < \bar{u}_{i} \vee  \bar{u}_{i+1} \leq u \end{matrix}  \right.,\; \\
886 N_{i,j}(u)=\frac{(u-\bar{u}_{i}) \cdot N_{i,j-1}(u) }{\bar{u}_{i+j-1}-\bar{u}_{i}}+  
887 \frac{(\bar{u}_{i+j}-u) \cdot N_{i+1,j-1}(u)}{\bar{u}_{i+j}-\bar{u}_{i+1}},\;(2 \leq j \leq m_{u}+1), \; \\
888 M_{i,1}(v)=\left\{\begin{matrix}
889 1\Leftarrow \bar{v}_{i} \leq v \leq \bar{v}_{i+1}\\ 
890 0\Leftarrow v < \bar{v}_{i} \vee  \bar{v}_{i+1} \leq v \end{matrix} \right.,\; \\
891 M_{i,j}(v)=\frac{(v-\bar{v}_{i}) \cdot M_{i,j-1}(v) }{\bar{v}_{i+j-1}-\bar{v}_{i}}+ \frac{(\bar{v}_{i+j}-v) \cdot M_{i+1,j-1}(v)}{\bar{v}_{i+j}-\bar{v}_{i+1}},\;(2 \leq j \leq m_{v}+1); 
892 \end{align}
893 @f]  
894
895 where   
896 @f[ \bar{u}_{i}=u_{j}\; (1 \leq j \leq k_{u},\; \sum_{l=1}^{j-1}q_{l} \leq i \leq \sum_{l=1}^{j}q_{l}), \\
897  \bar{v}_{i}=v_{j}\; (1 \leq j \leq k_{v},\; \sum_{l=1}^{j-1}t_{l} \leq i \leq \sum_{l=1}^{j}t_{l}); @f]  
898  
899 The example record is interpreted as a B-spline  surface with a u rational flag *r<sub>u</sub>*=1, v rational flag *r<sub>v</sub>*=1, u degree *m<sub>u</sub>*=1, v degree *m<sub>v</sub>*=1, u pole count *n<sub>u</sub>*=3, v pole count *n<sub>v</sub>*=2, u multiplicity knot count *k<sub>u</sub>*=5, v multiplicity knot count *k<sub>v</sub>*=4, weight poles *B<sub>1,1</sub>*=(0, 0, 1), *h<sub>1,1</sub>*=7, *B<sub>1,2</sub>*=(1, 0, -4), *h<sub>1,2</sub>*=10, *B<sub>2,1</sub>*=(0, 1, -2), *h<sub>2,1</sub>*=8, *B<sub>2,2</sub>*=(1, 1, 5), *h<sub>2,2</sub>*=11, *B<sub>3,1</sub>*=(0, 2, 3), *h<sub>3,1</sub>*=9 and *B<sub>3,2</sub>*=(1, 2, 6), *h<sub>3,2</sub>*=12, u multiplicity knots *u<sub>1</sub>*=0, *q<sub>1</sub>*=1, *u<sub>2</sub>*=0.25, *q<sub>2</sub>*=1, *u<sub>3</sub>*=0.5, *q<sub>3</sub>*=1, *u<sub>4</sub>*=0.75, *q<sub>4</sub>*=1 and *u<sub>5</sub>*=1, *q<sub>5</sub>*=1, v multiplicity  knots *v<sub>1</sub>*=0, *r<sub>1</sub>*=1, *v<sub>2</sub>*=0.3, *r<sub>2</sub>*=1, *v<sub>3</sub>*=0.7, *r<sub>3</sub>*=1 and *v<sub>4</sub>*=1, *r<sub>4</sub>*=1. The B-spline surface is defined  by the following parametric equation:  
900  
901 @f[ 
902 \begin{align} 
903 S(u,v)= [ (0,0,1) \cdot 7 \cdot N_{1,2}(u) \cdot M_{1,2}(v)+(1,0,-4) \cdot 10 \cdot N_{1,2}(u) \cdot M_{2,2}(v)+ \\
904 (0,1,-2) \cdot 8 \cdot N_{2,2}(u) \cdot M_{1,2}(v)+(1,1,5) \cdot 11 \cdot N_{2,2}(u) \cdot M_{2,2}(v)+ \\
905 (0,2,3) \cdot 9 \cdot N_{3,2}(u) \cdot M_{1,2}(v)+(1,2,6) \cdot 12 \cdot N_{3,2}(u) \cdot M_{2,2}(v)] \div \\
906 [7 \cdot N_{1,2}(u) \cdot M_{1,2}(v)+10 \cdot N_{1,2}(u) \cdot M_{2,2}(v)+ 8 \cdot N_{2,2}(u) \cdot M_{1,2}(v)+ \\ 
907 11 \cdot N_{2,2}(u) \cdot M_{2,2}(v)+ 9 \cdot N_{3,2}(u) \cdot M_{1,2}(v)+12 \cdot N_{3,2}(u) \cdot M_{2,2}(v) ] 
908 \end{align} 
909 @f]
910  
911 @subsubsection occt_brep_format_4_2_10  Rectangular Trim Surface - \< surface  record 10 \>
912  
913 **Example**  
914
915 @verbatim
916     10 -1 2 -3 4  
917     1 1 2 3 0 0 1 1 0 -0 -0 1 0   
918 @endverbatim
919  
920 **BNF-like Definition**
921
922 @verbatim
923         <surface record 10> = "10" <_> <trim surface u min> <_> <trim surface u max> <_> 
924         <trim surface v min> <_> <trim surface v max> <_\n> <surface record>;
925
926         <trim surface u min> = <real>;
927
928         <trim surface u max> = <real>;
929
930         <trim surface v min> = <real>;
931
932         <trim surface v max> = <real>;  
933 @endverbatim
934  
935 **Description**  
936  
937 \<surface  record 10\> describes a rectangular trim  surface. The surface data consist of reals *u<sub>min</sub>*, *u<sub>max</sub>*, *v<sub>min</sub>* and *v<sub>max</sub>* and a \<surface record\> so that *u<sub>min</sub>* < *u<sub>max</sub>* and *v<sub>min</sub>* < *v<sub>max</sub>*. The rectangular  trim surface is a restriction of the base surface *B* described in the record to the set @f$ [u_{min},u_{max}] \times [v_{min},v_{max}] \subseteq domain(B) @f$. The rectangular  trim surface is defined by the following parametric equation:  
938  
939 @f[ S(u,v)=B(u,v),\; (u,v) \in [u_{min},u_{max}] \times [v_{min},v_{max}] . @f]  
940  
941 The example record is interpreted as a rectangular  trim surface to the set [-1, 2]x[-3, 4] for the base surface @f$ B(u,v)=(1,2,3)+u \cdot (1,0,0)+v \cdot (0,1,0) @f$. The rectangular  trim surface is defined by the following parametric equation: @f$ B(u,v)=(1,2,3)+u \cdot (1,0,0)+ v \cdot (0,1,0),\; (u,v) \in [-1,2] \times [-3,4] @f$. 
942  
943  
944 @subsubsection occt_brep_format_4_2_11 Offset Surface - \< surface record 11 \> 
945  
946 **Example**  
947  
948 @verbatim
949     11 -2  
950     1 1 2 3 0 0 1 1 0 -0 -0 1 0   
951 @endverbatim
952  
953 **BNF-like Definition**
954
955 @verbatim
956         <surface record 11> = "11" <_> <surface record distance> <_\n> <surface record>;
957
958         <surface record distance> = <real>;  
959 @endverbatim
960  
961 **Description**  
962  
963 \<surface record 11\> describes an offset surface.  
964 The offset surface data consist of a distance *d* and a \<surface record\>. The  offset surface is the result of offsetting the base surface *B* described in the record to the distance *d* along the normal *N* of  surface *B*.  The offset surface is defined by the following parametric equation:  
965  
966 @f[ S(u,v)=B(u,v)+d \cdot N(u,v),\; (u,v) \in domain(B) . \\
967 N(u,v) = [S'_{u}(u,v),S'_{v}(u,v)] @f]  
968 if @f$ [S'_{u}(u,v),S'_{v}(u,v)] \neq \vec{0} @f$.  
969  
970 The example record is interpreted as an offset surface  with a distance *d*=-2 and  base surface @f$ B(u,v)=(1,2,3)+u \cdot (1,0,0)+v \cdot (0,1,0)  @f$.  The offset surface is defined by the following parametric equation: @f$ S(u,v)=(1,2,3)+u \cdot (1,0,0)+v \cdot (0,1,0)-2 \cdot (0,0,1) @f$.  
971  
972  
973 @subsection occt_brep_format_4_3  2D curves
974  
975 **Example**  
976
977 @verbatim
978     Curve2ds 24  
979     1 0 0 1 0   
980     1 0 0 1 0   
981     1 3 0 0 -1   
982     1 0 0 0 1   
983     1 0 -2 1 0   
984     1 0 0 1 0   
985     1 0 0 0 -1   
986     1 0 0 0 1   
987     1 0 0 1 0   
988     1 0 1 1 0   
989     1 3 0 0 -1   
990     1 1 0 0 1   
991     1 0 -2 1 0   
992     1 0 1 1 0   
993     1 0 0 0 -1   
994     1 1 0 0 1   
995     1 0 0 0 1   
996     1 0 0 1 0   
997     1 3 0 0 1   
998     1 0 0 1 0   
999     1 0 0 0 1   
1000     1 0 2 1 0   
1001     1 3 0 0 1   
1002     1 0 2 1 0   
1003 @endverbatim
1004  
1005 **BNF-like Definition**
1006
1007 @verbatim
1008         <2D curves> = <2D curve header> <_\n> <2D curve records>;
1009
1010         <2D curve header> = "Curve2ds" <_> <2D curve count>;
1011
1012         <2D curve count> = <int>;
1013
1014         <2D curve records> = <2D curve record> ^ <2D curve count>;
1015
1016         <2D curve record> =
1017         <2D curve record 1> |
1018         <2D curve record 2> |
1019         <2D curve record 3> |
1020         <2D curve record 4> |
1021         <2D curve record 5> |
1022         <2D curve record 6> |
1023         <2D curve record 7> |
1024         <2D curve record 8> |
1025         <2D curve record 9>;  
1026 @endverbatim
1027  
1028 @subsubsection occt_brep_format_4_3_1 Line - \<2D curve record 1\> 
1029  
1030 **Example**  
1031
1032 @verbatim
1033     1 3 0 0 -1   
1034 @endverbatim
1035  
1036 **BNF-like Definition**
1037
1038 @verbatim
1039     <2D curve record 1> = "1" <_> <2D point> <_> <2D direction> <_\n>;  
1040 @endverbatim
1041  
1042 **Description**  
1043  
1044 \<2D curve record 1\> describes a line. The line  data consist of a 2D point *P* and a 2D direction *D*. The line passes through the point  *P*, has the  direction *D* and  is defined by the following parametric equation:  
1045  
1046 @f[ C(u)=P+u \cdot D, \; u \in (-\infty,\; \infty). @f]  
1047  
1048 The example record is interpreted as a line which  passes through a point *P*=(3,0), has a direction *D*=(0,-1) and is defined by the  following parametric equation: @f$ C(u)=(3,0)+ u \cdot (0,-1) @f$.  
1049  
1050  
1051 @subsubsection occt_brep_format_4_3_2 Circle - \<2D curve record 2\> 
1052  
1053 **Example**  
1054
1055 @verbatim
1056     2 1 2 1 0 -0 1 3  
1057 @endverbatim
1058  
1059 **BNF-like Definition**
1060
1061 ~~~~
1062         <2D curve record 2> = "2" <_> <2D circle center> <_> <2D circle Dx> <_> <2D circle Dy> <_> <2D circle radius> <_\n>;
1063
1064         <2D circle center> = <2D point>;
1065
1066         <2D circle Dx> = <2D direction>;
1067
1068         <2D circle Dy> = <2D direction>;
1069
1070         <2D circle radius> = <real>;  
1071 ~~~~
1072  
1073 **Description**  
1074  
1075 \<2D curve record 2\> describes a circle. The  circle data consist of a 2D point *P*, orthogonal 2D directions *D<sub>x</sub>* and *D<sub>y</sub>* and a non-negative  real *r*. The circle has a center *P*. The circle plane is parallel to directions *D<sub>x</sub>* and *D<sub>y</sub>*. The  circle has a radius *r* and is defined by the following  parametric equation:  
1076  
1077 @f[ C(u)=P+r \cdot (cos(u) \cdot D_{x} + sin(u) \cdot D_{y}),\; u \in [0,\; 2 \cdot \pi) . @f] 
1078  
1079 The example record is interpreted as a circle which  has a center *P*=(1,2).  The circle plane is parallel to directions *D<sub>x</sub>*=(1,0) and *D<sub>y</sub>*=(0,1). The circle has a radius *r*=3 and is defined by  the following parametric equation: @f$ C(u)=(1,2)+3 \cdot (cos(u) \cdot (1,0) + sin(u) \cdot (0,1)) @f$.  
1080  
1081  
1082 @subsubsection occt_brep_format_4_3_3 Ellipse - \<2D curve record 3\> 
1083  
1084 **Example**  
1085
1086 @verbatim
1087     3 1 2 1 0 -0 1 4 3  
1088 @endverbatim
1089  
1090 **BNF-like Definition**
1091
1092 @verbatim
1093         <2D curve record 3> = "3" <_> <2D ellipse center> <_> <2D ellipse Dmaj> <_> 
1094         <2D ellipse Dmin> <_> <2D ellipse Rmaj> <_> <2D ellipse Rmin> <_\n>;
1095
1096         <2D ellipse center> = <2D point>;
1097
1098         <2D ellipse Dmaj> = <2D direction>;
1099
1100         <2D ellipse Dmin> = <2D direction>;
1101
1102         <2D ellipse Rmaj> = <real>;
1103
1104         <2D ellipse Rmin> = <real>; 
1105 @endverbatim
1106  
1107 **Description**  
1108  
1109 \<2D curve record 3\> describes an ellipse. The  ellipse data are 2D point *P*, orthogonal 2D directions *D<sub>maj</sub>* and *D<sub>min</sub>* and non-negative reals *r<sub>maj</sub>* and *r<sub>min</sub>* that *r<sub>maj</sub>* @f$ \leq @f$ *r<sub>min</sub>*. The ellipse has a center *P*, major and  minor axis directions *D<sub>maj</sub>* and *D<sub>min</sub>*, major and minor radii *r<sub>maj</sub>* and *r<sub>min</sub>* and is defined by  the following parametric equation:  
1110  
1111 @f[ C(u)=P+r_{maj} \cdot cos(u) \cdot D_{maj}+r_{min} \cdot sin(u) \cdot D_{min},\; u \in [0,\; 2 \cdot \pi) . @f]  
1112  
1113 The example record is interpreted as an ellipse which  has a center *P*=(1,2),  major and minor axis directions *D<sub>maj</sub>*=(1,0) and *D<sub>min</sub>*=(0,1), major and minor radii *r<sub>maj</sub>*=4 and *r<sub>min</sub>*=3 and is defined by  the following parametric equation: @f$ C(u)=(1,2)+4 \cdot cos(u) \cdot (1,0)+3 \cdot sin(u) \cdot (0,1) @f$.  
1114  
1115  
1116 @subsubsection occt_brep_format_4_3_4 Parabola - \<2D curve record 4\> 
1117  
1118 **Example**  
1119
1120 @verbatim
1121     4 1 2 1 0 -0 1 16  
1122 @endverbatim
1123  
1124 **BNF-like Definition**
1125
1126 @verbatim
1127         <2D curve record 4> = "4" <_> <2D parabola origin> <_> <2D parabola Dx> <_> 
1128         <2D parabola Dy> <_> <2D parabola focal length> <_\n>;
1129
1130         <2D parabola origin> = <2D point>;
1131
1132         <2D parabola Dx> = <2D direction>;
1133
1134         <2D parabola Dy> = <2D direction>;
1135
1136         <2D parabola focal length> = <real>;  
1137 @endverbatim
1138  
1139 **Description**  
1140  
1141 \<2D curve record 4\> describes a parabola. The  parabola data consist of a 2D point *P*, orthogonal 2D directions *D<sub>x</sub>* and *D<sub>y</sub>* and a non-negative  real *f*. The parabola coordinate system has its origin *P* and axis directions *D<sub>x</sub>* and *D<sub>y</sub>*. The parabola has a focus  length *f* and  is defined by the following parametric equation:  
1142  
1143 @f[ C(u)=P+\frac{u^{2}}{4 \cdot f} \cdot D_{x}+u \cdot D_{y},\; u \in (-\infty,\; \infty) \Leftarrow f \neq 0;\\
1144 C(u)=P+u \cdot D_{x},\; u \in (-\infty,\; \infty) \Leftarrow f = 0\; (degenerated\;case). @f] 
1145  
1146 The example record is interpreted as a parabola in plane which passes through a point *P*=(1,2) and is parallel to directions *D<sub>x</sub>*=(1,0) and *D<sub>y</sub>*=(0,1). The parabola has a focus length *f*=16 and  is defined by the following parametric equation: @f$ C(u)=(1,2)+ \frac{u^{2}}{64} \cdot (1,0)+u \cdot (0,1) @f$.  
1147  
1148  
1149 @subsubsection occt_brep_format_4_3_5 Hyperbola - \<2D curve record 5\> 
1150 **Example**  
1151  
1152 5 1 2 1 0 -0 1 3 4  
1153  
1154
1155 **BNF-like Definition**
1156
1157 @verbatim
1158         <2D curve record 5> = "5" <_> <2D hyperbola origin> <_> <2D hyperbola Dx> <_> 
1159         <2D hyperbola Dy> <_> <2D hyperbola Kx> <_> <2D hyperbola Ky> <_\n>;
1160
1161         <2D hyperbola origin> = <2D point>;
1162
1163         <2D hyperbola Dx> = <2D direction>;
1164
1165         <2D hyperbola Dy> = <2D direction>;
1166
1167         <2D hyperbola Kx> = <real>;
1168
1169         <2D hyperbola Ky> = <real>;  
1170 @endverbatim
1171  
1172 **Description**  
1173  
1174 \<2D curve record 5\> describes a hyperbola. The  hyperbola data consist of a 2D point *P*, orthogonal 2D directions *D<sub>x</sub>* and *D<sub>y</sub>* and non-negative reals *k<sub>x</sub>* and *k<sub>y</sub>*. The hyperbola coordinate system has origin *P* and axis directions *D<sub>x</sub>* and *D<sub>y</sub>*. The hyperbola is defined by  the following parametric equation:  
1175  
1176 @f[ C(u)=P+k_{x} \cdot cosh(u) D_{x}+k_{y} \cdot sinh(u) \cdot D_{y},\; u \in (-\infty,\; \infty). @f]  
1177  
1178 The example record is interpreted as a hyperbola with  coordinate system which has origin *P*=(1,2) and axis directions *D<sub>x</sub>*=(1,0) and *D<sub>y</sub>*=(0,1). Other data for the hyperbola are *k<sub>x</sub>*=5 and *k<sub>y</sub>*=4. The hyperbola is defined  by the following parametric equation: @f$ C(u)=(1,2)+3 \cdot cosh(u) \cdot (1,0)+4 \cdot sinh(u) \cdot (0,1) @f$.  
1179  
1180  
1181 @subsubsection occt_brep_format_4_3_6 Bezier Curve - \<2D curve record 6\>
1182  
1183 **Example**  
1184
1185 @verbatim
1186 6 1 2 0 1  4 1 -2  5 2 3  6   
1187 @endverbatim
1188  
1189 **BNF-like Definition**
1190
1191 @verbatim
1192         <2D curve record 6> = "6" <_> <2D Bezier rational flag> <_> <2D Bezier degree> 
1193         <2D Bezier weight poles> <_\n>;
1194
1195         <2D Bezier rational flag> = <flag>;
1196
1197         <2D Bezier degree> = <int>;
1198
1199         <2D Bezier weight poles> = (<_> <2D Bezier weight pole>) ^ (<2D Bezier degree> <+> “1”);
1200
1201         <2D Bezier weight pole> = <2D point> [<_> <real>];
1202 @endverbatim
1203  
1204 **Description**  
1205  
1206 \<2D curve record 6\> describes a Bezier curve.  The curve data consist of a rational flag *r*, a degree @f$ m \leq 25 @f$ and weight poles.  
1207  
1208 The weight poles are *m*+1 2D points *B<sub>0</sub> ... B<sub>m</sub>* if the flag *r* is 0. The weight poles are *m*+1 pairs *B<sub>0</sub>h<sub>0</sub> ... B<sub>m</sub>h<sub>m</sub>* if the flag *r* is 1. Here *B<sub>i</sub>* is a 2D point and *h<sub>i</sub>* is a positive real @f$ (0\leq i\leq m) @f$. *h<sub>i</sub>*=1 @f$(0\leq i\leq m) @f$ if the flag *r* is 0.  
1209  
1210 The Bezier curve is defined by the following  parametric equation:  
1211  
1212 @f[ C(u)= \frac{\sum_{i=0}^{m} B_{i} \cdot h_{i} \cdot C_{m}^{i} \cdot u^{i} \cdot (1-u)^{m-i}}{\sum_{i=0}^{m} h_{i} \cdot C_{m}^{i} \cdot u^{i} \cdot (1-u)^{m-i}},\; u \in [0,1] @f]  
1213  
1214 where @f$ 0^{0} \equiv 1 @f$.  
1215  
1216 The example record is interpreted as a Bezier curve  with a rational flag *r*=1, a degree *m*=2 and weight poles *B<sub>0</sub>*=(0,1), *h<sub>0</sub>*=4, *B<sub>1</sub>*=(1,-2), *h<sub>1</sub>*=5 and *B<sub>2</sub>*=(2,3), *h<sub>2</sub>*=6. The Bezier curve is defined  by the following parametric equation:  
1217  
1218 @f[ C(u)= \frac{(0,1) \cdot 4 \cdot (1-u)^{2}+(1,-2) \cdot 5 \cdot 2 \cdot u \cdot (1-u)+(2,3) \cdot 6 \cdot u^{2}}{ 4 \cdot (1-u)^{2}+5 \cdot 2 \cdot u \cdot (1-u)+6 \cdot u^{2}} . @f]  
1219  
1220  
1221 @subsubsection occt_brep_format_4_3_7 B-spline Curve -  \<2D curve record 7\>
1222  
1223 **Example**  
1224
1225 @verbatim
1226 7 1 0  1 3 5  0 1  4 1 -2  5  2 3  6  
1227  0 1 0.25 1 0.5 1 0.75 1 1 1  
1228 @endverbatim
1229  
1230 **BNF-like Definition**
1231
1232 ~~~~
1233         <2D curve record 7> = "7" <_> <2D B-spline rational flag> <_> "0" <_> <2D B-spline degree> <_> <2D B-spline pole count> <_> <2D B-spline multiplicity knot count> <2D B-spline weight poles> <_\n> <2D B-spline multiplicity knots> <_\n>;
1234
1235         <2D B-spline rational flag> = <flag>;
1236
1237         <2D B-spline degree> = <int>;
1238
1239         <2D B-spline pole count> = <int>;
1240
1241         <2D B-spline multiplicity knot count> = <int>;
1242
1243         <2D B-spline weight poles> = <2D B-spline weight pole> ^ <2D B-spline pole count>;
1244
1245         <2D B-spline weight pole> = <_> <2D point> [<_> <real>];
1246
1247         <2D B-spline multiplicity knots> =
1248         <2D B-spline multiplicity knot> ^ <2D B-spline multiplicity knot count>;
1249
1250         <2D B-spline multiplicity knot> = <_> <real> <_> <int>;
1251 ~~~~
1252  
1253 **Description**  
1254  
1255 \<2D curve record 7\> describes a B-spline curve.  The curve data consist of a rational flag *r*, a degree @f$ m \leq 25 @f$, a pole count @f$ n \geq 2 @f$, a multiplicity knot count *k*, weight poles and  multiplicity knots.  
1256  
1257 The weight poles are *n* 2D points *B<sub>1</sub> ... B<sub>n</sub>* if the flag *r* is 0. The weight  poles are *n* pairs  *B<sub>1</sub>h<sub>1</sub> ... B<sub>n</sub>h<sub>n</sub>* if the flag  *r* is 1. Here *B<sub>i</sub>* is a 2D point and *h<sub>i</sub>* is a positive real @f$ (1\leq i\leq n) @f$. *h<sub>i</sub>*=1 @f$(1\leq i\leq n) @f$ if the flag *r* is 0.  
1258  
1259 The multiplicity knots are *k* pairs *u<sub>1</sub>q<sub>1</sub> ... u<sub>k</sub>q<sub>k</sub>*. Here *u<sub>i</sub>* is a knot with multiplicity @f$ q_{i} \geq 1\; (1 \leq i \leq k) @f$ so that  
1260  
1261 @f[ u_{i} < u_{i+1}\; (1 \leq i \leq k-1), \\
1262 q_{1} \leq m+1,\; q_{k} \leq m+1,\; q_{i} \leq m\; (2 \leq i \leq k-1),\; \sum_{i=1}^{k}q_{i}=m+n+1 . @f]  
1263  
1264 The B-spline curve is defined by the following  parametric equation:  
1265  
1266 @f[ C(u)= \frac{\sum_{i=1}^{n} B_{i} \cdot h_{i} \cdot N_{i,m+1}(u) }{\sum_{i=1}^{n} h_{i} \cdot N_{i,m+1}(u)},\; u \in [u_{1},\; u_{k}] @f]
1267  
1268 where functions *N<sub>i,j</sub>* have the following recursion definition  by *j*
1269  
1270 @f[ N_{i,1}(u)=\left\{\begin{matrix}
1271 1\Leftarrow \bar{u}_{i} \leq u \leq \bar{u}_{i+1}\\ 
1272 0\Leftarrow u < \bar{u}_{i} \vee  \bar{u}_{i+1} \leq u \end{matrix} \right.,\;
1273 N_{i,j}(u)=\frac{(u-\bar{u}_{i}) \cdot N_{i,j-1}(u) }{\bar{u}_{i+j-1}-\bar{u}_{i}}+ \frac{(\bar{u}_{i+j}-u) \cdot N_{i+1,j-1}(u)}{\bar{u}_{i+j}-\bar{u}_{i+1}},\;(2 \leq j \leq m+1) @f] 
1274  
1275 where  
1276  
1277 @f[ \bar{u}_{i}=u_{j}\; (1\leq j\leq k,\; \sum_{l=1}^{j-1}q_{l}+1 \leq i \leq \sum_{l=1}^{j}q_{l}) . @f] 
1278  
1279 The example record is interpreted as a B-spline curve with a rational flag *r*=1, a degree *m*=1, a pole count *n*=3, a multiplicity knot count *k*=5, weight poles *B<sub>1</sub>*=(0,1), *h<sub>1</sub>*=4, *B<sub>2</sub>*=(1,-2), *h<sub>2</sub>*=5 and *B<sub>3</sub>*=(2,3), *h<sub>3</sub>*=6 and multiplicity knots *u<sub>1</sub>*=0, *q<sub>1</sub>*=1, *u<sub>2</sub>*=0.25, *q<sub>2</sub>*=1, *u<sub>3</sub>*=0.5, *q<sub>3</sub>*=1, *u<sub>4</sub>*=0.75, *q<sub>4</sub>*=1 and *u<sub>5</sub>*=1, *q<sub>5</sub>*=1. The B-spline curve is defined  by the following parametric equation:  
1280  
1281 @f[ C(u)= \frac{(0,1) \cdot 4 \cdot N_{1,2}(u)+(1,-2) \cdot 5 \cdot N_{2,2}(u)+(2,3) \cdot 6 \cdot N_{3,2}(u)}{ 4 \cdot N_{1,2}(u)+5 \cdot N_{2,2}(u)+6 \cdot N_{3,2}(u)} . @f] 
1282  
1283  
1284 @subsubsection occt_brep_format_4_3_8 Trimmed Curve - \<2D curve record 8\> 
1285  
1286 **Example**  
1287
1288 @verbatim
1289     8 -4 5  
1290     1 1 2 1 0   
1291 @endverbatim
1292  
1293 **BNF-like Definition**
1294
1295 @verbatim
1296         <2D curve record 8> = "8" <_> <2D trimmed curve u min> <_> <2D trimmed curve u max> <_\n> 
1297         <2D curve record>;
1298
1299         <2D trimmed curve u min> = <real>;
1300
1301         <2D trimmed curve u max> = <real>;
1302 @endverbatim
1303  
1304 **Description**
1305  
1306 \<2D curve record 8\> describes a trimmed curve. The trimmed curve data consist of reals *u<sub>min</sub>* and *u<sub>max</sub>* and a \<2D curve record\> so that *u<sub>min</sub>* < *u<sub>max</sub>*. The trimmed curve  is a restriction of the base curve *B* described in the record to the segment @f$ [u_{min},\;u_{max}]\subseteq domain(B) @f$. The trimmed curve is  defined by the following parametric equation:  
1307  
1308 @f[ C(u)=B(u),\; u \in [u_{min},\;u_{max}] . @f] 
1309  
1310 The example record is interpreted as a trimmed curve with *u<sub>min</sub>*=-4, *u<sub>max</sub>*=5 and base curve @f$ B(u)=(1,2)+u \cdot (1,0) @f$. The trimmed curve is defined by the following parametric equation: @f$ C(u)=(1,2)+u \cdot (1,0),\; u \in [-4,5] @f$.  
1311  
1312  
1313 @subsubsection occt_brep_format_4_3_9 Offset Curve - \<2D curve record 9\> 
1314  
1315 **Example**  
1316
1317 @verbatim
1318     9 2  
1319     1 1 2 1 0   
1320 @endverbatim
1321  
1322 **BNF-like Definition**
1323  
1324 @verbatim
1325 <2D curve record 9> = "9" <_> <2D offset curve distance> <_\n> <2D curve record>;
1326
1327 <2D offset curve distance> = <real>;
1328 @endverbatim
1329  
1330 **Description**  
1331  
1332 \<2D curve record 9\> describes an offset curve. The offset curve data consist of a distance *d* and a \<2D curve record\>. The offset curve is the result of offsetting the base curve *B* described in the record to the distance *d* along  the vector @f$ (B'_{Y}(u),\; -B'_{X}(u)) \neq \vec{0} @f$ where @f$ B(u)=(B'_{X}(u),\; B'_{Y}(u)) @f$. The offset curve is defined by the following parametric equation:  
1333  
1334 @f[ C(u)=B(u)+d \cdot (B'_{Y}(u),\; -B'_{X}(u)),\; u \in domain(B) . @f]  
1335  
1336 The example record is interpreted as an offset curve  with a distance *d*=2 and  base curve @f$ B(u)=(1,2)+u \cdot (1,0) @f$ and is defined by the following parametric equation: @f$ C(u)=(1,2)+u \cdot (1,0)+2 \cdot (0,-1) @f$.  
1337  
1338 @subsection occt_brep_format_4_4 3D polygons
1339  
1340 **Example**  
1341
1342 @verbatim
1343     Polygon3D 1  
1344     2 1  
1345     0.1  
1346     1 0 0 2 0 0   
1347     0 1   
1348 @endverbatim
1349  
1350 **BNF-like Definition**
1351
1352 @verbatim
1353         <3D polygons> = <3D polygon header> <_\n> <3D polygon records>;
1354
1355         <3D polygon header> = "Polygon3D" <_> <3D polygon record count>;
1356
1357         <3D polygon records> = <3D polygon record> ^ <3D polygon record count>;
1358
1359         <3D polygon record> =
1360         <3D polygon node count> <_> <3D polygon flag of parameter presence> <_\n>
1361         <3D polygon deflection> <_\n>
1362         <3D polygon nodes> <_\n>
1363         [<3D polygon parameters> <_\n>];
1364
1365         <3D polygon node count> = <int>;
1366
1367         <3D polygon flag of parameter presence> = <flag>;
1368
1369         <3D polygon deflection> = <real>;
1370
1371         <3D polygon nodes> = (<3D polygon node> <_>) ^ <3D polygon node count>;
1372
1373         <3D polygon node> = <3D point>;
1374
1375         <3D polygon u parameters> = (<3D polygon u parameter> <_>) ^ <3D polygon node count>;
1376
1377         <3D polygon u parameter> = <real>;
1378 @endverbatim
1379  
1380 **Description**  
1381  
1382 \<3D polygons\> record describes a 3D polyline *L* which approximates a 3D curve *C*.  The polyline data consist of a node count @f$ m \geq 2 @f$, a parameter presence flag *p*, a deflection @f$ d \geq 0 @f$, nodes @f$ N_{i}\; (1\leq i \leq m) @f$ and parameters @f$ u_{i}\; (1\leq i \leq m) @f$. The parameters are present only if *p*=1. The polyline *L* passes  through the nodes. The deflection *d* describes the deflection of polyline *L* from the curve *C*:  
1383  
1384 @f[ \underset{P \in C}{max}\; \underset{Q \in L}{min}|Q-P| \leq d . @f]  
1385  
1386 The parameter @f$ u_{i}\; (1\leq i \leq m) @f$ is the parameter of the node *N<sub>i</sub>* on the curve *C*:  
1387  
1388 @f[ C(u_{i})=N_{i} . @f]  
1389  
1390 The example record describes a polyline from *m*=2 nodes with a parameter presence flag *p*=1, a deflection *d*=0.1, nodes *N<sub>1</sub>*=(1,0,0) and *N<sub>2</sub>*=(2,0,0) and parameters *u<sub>1</sub>*=0 and *u<sub>2</sub>*=1.  
1391  
1392  
1393 @subsection occt_brep_format_4_5 Triangulations
1394  
1395 **Example**  
1396
1397 @verbatim
1398     Triangulations 6  
1399     4 2 1 0  
1400     0 0 0 0 0 3 0 2 3 0 2 0 0 0 3  0 3 -2 0 -2 2 4 3 2 1 4   
1401     4 2 1 0  
1402     0 0 0 1 0 0 1 0 3 0 0 3 0 0 0  1 3 1 3 0 3 2 1 3 1 4   
1403     4 2 1 0  
1404     0 0 3 0 2 3 1 2 3 1 0 3 0 0 0  2 1 2 1 0 3 2 1 3 1 4   
1405     4 2 1 0  
1406     0 2 0 1 2 0 1 2 3 0 2 3 0 0 0  1 3 1 3 0 3 2 1 3 1 4   
1407     4 2 1 0  
1408     0 0 0 0 2 0 1 2 0 1 0 0 0 0 0  2 1 2 1 0 3 2 1 3 1 4   
1409     4 2 1 0  
1410     1 0 0 1 0 3 1 2 3 1 2 0 0 0 3  0 3 -2 0 -2 2 4 3 2 1 4   
1411 @endverbatim
1412  
1413 **BNF-like Definition**
1414
1415 ~~~~
1416         <triangulations> = <triangulation header> <_\n> <triangulation records>;
1417
1418         <triangulation header> = "Triangulations" <_> <triangulation count>;
1419
1420         <triangulation records> = <triangulation record> ^ <triangulation count>;
1421
1422         <triangulation record> = <triangulation node count> <_> <triangulation triangle count> <_> <triangulation parameter presence flag> <_> <triangulation deflection> <_\n> 
1423         <triangulation nodes> [<_> <triangulation u v parameters>] <_> <triangulation triangles> <_\n>;
1424
1425         <triangulation node count> = <int>;
1426
1427         <triangulation triangle count> = <int>;
1428
1429         <triangulation parameter presence flag> = <flag>;
1430
1431         <triangulation deflection> = <real>;
1432
1433         <triangulation nodes> = (<triangulation node> <_>) ^ <triangulation node count>;
1434
1435         <triangulation node> = <3D point>;
1436
1437         <triangulation u v parameters> =        
1438         (<triangulation u v parameter pair> <_>) ^ <triangulation node count>;
1439
1440         <triangulation u v parameter pair> = <real> <_> <real>;
1441
1442         <triangulation triangles> = (<triangulation triangle> <_>) ^ <triangulation triangle count>;
1443
1444         <triangulation triangle> = <int> <_> <int> <_> <int>.  
1445 ~~~~
1446  
1447 **Description**  
1448  
1449 \<triangulation record\> describes a triangulation  *T* which  approximates a surface *S*. The triangulation data consist of a node  count @f$ m \geq 3 @f$, a triangle count @f$ k \geq 1 @f$, a parameter  presence flag *p*, a deflection @f$ d \geq 0 @f$, nodes @f$ N_{i}\; (1\leq i \leq m) @f$, parameter pairs @f$ u_{i}\; v_{i}\; (1\leq i \leq m) @f$, triangles @f$ n_{j,1}\; n_{j,2}\; n_{j,3}\; (1\leq j \leq k,\; n_{j,l} \in \left \{1,...,m \right \}\; (1\leq l\leq 3)) @f$. The parameters are present  only if *p*=1. The deflection describes the triangulation deflection from the surface:  
1450  
1451 @f[ \underset{P \in S}{max}\; \underset{Q \in T}{min}|Q-P| \leq d . @f]  
1452  
1453 The parameter pair @f$ u_{i}\; v_{i}\; (1\leq i \leq m) @f$ describes the parameters of node *N<sub>i</sub>* on the surface:  
1454  
1455 @f[ S(u_{i},v_{i})=N_{i} . @f]  
1456  
1457 The triangle @f$ n_{j,1}\; n_{j,2}\; n_{j,3}\; (1\leq j \leq k) @f$ is interpreted as a triangle of nodes @f$ N_{n_{j},1}\; N_{n_{j},2}@f$ and @f$ N_{n_{j},3} @f$ with circular traversal of the nodes in the order @f$ N_{n_{j},1}\;  N_{n_{j},2}@f$ and @f$ N_{n_{j},3} @f$. From any side of the triangulation *T* all its triangles  have the same direction of the node circular traversal: either clockwise or  counterclockwise.  
1458  
1459 Triangulation record  
1460
1461 @verbatim 
1462     4 2 1 0  
1463     0 0 0 0 0 3 0 2 3 0 2 0 0 0 3  0 3 -2 0 -2 2 4 3 2 1 4   
1464 @endverbatim
1465
1466 describes a triangulation with *m*=4 nodes, *k*=2 triangles, parameter presence flag *p*=1, deflection *d*=0, nodes *N<sub>1</sub>*=(0,0,0), *N<sub>2</sub>*=(0,0,3), *N<sub>3</sub>*=(0,2,3) and *N<sub>4</sub>*=(0,2,0), parameters (*u<sub>1</sub>*, *v<sub>1</sub>*)=(0,0), (*u<sub>2</sub>*, *v<sub>2</sub>*)=(3,0), (*u<sub>3</sub>*, *v<sub>3</sub>*)=(3,-2) and (*u<sub>4</sub>*, *v<sub>4</sub>*)=(0,-2), and triangles (*n<sub>1,1</sub>*, *n<sub>1,2</sub>*, *n<sub>1,3</sub>*)=(2,4,3) and (*n<sub>2,1</sub>*, *n<sub>2,2</sub>*, *n<sub>2,3</sub>*)=(2,1,4). From the point (1,0,0) ((-1,0,0)) the triangles have clockwise (counterclockwise) direction of the node circular traversal.  
1467  
1468  
1469 @subsection occt_brep_format_4_6 Polygons on triangulations
1470  
1471 **Example**  
1472
1473 @verbatim
1474     PolygonOnTriangulations 24  
1475     2 1 2   
1476     p 0.1 1 0 3   
1477     2 1 4   
1478     p 0.1 1 0 3   
1479     2 2 3   
1480     p 0.1 1 0 2   
1481     2 1 2   
1482     p 0.1 1 0 2   
1483     2 4 3   
1484     p 0.1 1 0 3   
1485     2 1 4   
1486     p 0.1 1 0 3   
1487     2 1 4   
1488     p 0.1 1 0 2   
1489     2 1 2   
1490     p 0.1 1 0 2   
1491     2 1 2   
1492     p 0.1 1 0 3   
1493     2 2 3   
1494     p 0.1 1 0 3   
1495     2 2 3   
1496     p 0.1 1 0 2   
1497     2 4 3   
1498     p 0.1 1 0 2   
1499     2 4 3   
1500     p 0.1 1 0 3   
1501     2 2 3   
1502     p 0.1 1 0 3   
1503     2 1 4   
1504     p 0.1 1 0 2   
1505     2 4 3   
1506     p 0.1 1 0 2   
1507     2 1 2   
1508     p 0.1 1 0 1   
1509     2 1 4   
1510     p 0.1 1 0 1   
1511     2 4 3   
1512     p 0.1 1 0 1   
1513     2 1 4   
1514     p 0.1 1 0 1   
1515     2 1 2   
1516     p 0.1 1 0 1   
1517     2 2 3   
1518     p 0.1 1 0 1   
1519     2 4 3   
1520     p 0.1 1 0 1   
1521     2 2 3   
1522     p 0.1 1 0 1   
1523 @endverbatim
1524  
1525 **BNF-like Definition**
1526
1527 @verbatim
1528         <polygons on triangulations> = <polygons on triangulations header> <_\n>
1529         <polygons on triangulations records>;
1530
1531         <polygons on triangulations header> =
1532         "PolygonOnTriangulations" <_> <polygons on triangulations record count>;
1533
1534         <polygons on triangulations record count> = <int>;
1535
1536         <polygons on triangulations records> =
1537         <polygons on triangulations record> ^ <polygons on triangulations record count>;
1538
1539         <polygons on triangulations record> =
1540         <polygons on triangulations node count> <_> <polygons on triangulations node numbers> <_\n>
1541         "p" <_> <polygons on triangulations deflection> <_>
1542         <polygons on triangulations parameter presence flag>
1543         [<_> <polygons on triangulations u parameters>] <_\n>;
1544
1545         <polygons on triangulations node count> = <int>;
1546
1547         <polygons on triangulations node numbers> =
1548         <polygons on triangulations node number> ^ <polygons on triangulations node count>;
1549
1550         <polygons on triangulations node number> = <int>;
1551
1552         <polygons on triangulations deflection> = <real>;
1553
1554         <polygons on triangulations parameter presence flag> = <flag>;
1555
1556         <polygons on triangulations u parameters> =
1557         (<polygons on triangulations u parameter> <_>) ^ <polygons on triangulations node count>;
1558
1559         <polygons on triangulations u parameter> = <real>;
1560 @endverbatim
1561  
1562 **Description**  
1563  
1564 \<polygons on triangulations\> describes a polyline  *L* on a triangulation  which approximates a curve *C*. The polyline data consist of a node  count @f$ m \geq 2 @f$,  node numbers @f$ n_{i} \geq 1 @f$,  deflection @f$ d \geq 0 @f$, a parameter presence flag *p* and parameters @f$ u_{i}\; (1\leq i\leq m) @f$. The parameters are present only if *p*=1. The  deflection *d* describes  the deflection of polyline *L* from the curve *C*:  
1565  
1566 @f[ \underset{P \in C}{max}\; \underset{Q \in L}{min}|Q-P| \leq d . @f]  
1567  
1568 Parameter @f$ u_{i}\; (1\leq i\leq m) @f$ is *n<sub>i</sub>*-th node *C(u<sub>i</sub>)* parameter on curve *C*.  
1569  
1570  
1571 @subsection occt_brep_format_4_7 Geometric Sense of a Curve
1572  
1573 Geometric sense of curve *C* described above is determined by the direction  of parameter *u* increasing.  
1574  
1575  
1576 @section occt_brep_format_5 Shapes
1577  
1578 An example of section shapes and a whole  *.brep file are given in chapter 7 @ref occt_brep_format_6 "Appendix".  
1579  
1580  
1581 **BNF-like Definition**
1582
1583 @verbatim
1584         <shapes> = <shape header> <_\n> <shape records> <_\n> <shape final record>;
1585
1586         <shape header> = "TShapes" <_> <shape count>;
1587
1588         <shape count> = <int>;
1589
1590         <shape records> = <shape record> ^ <shape count>;
1591
1592         <shape record> = <shape subrecord> <_\n> <shape flag word> <_\n> <shape subshapes> <_\n>;
1593
1594         <shape flag word> = <flag> ^ 7;
1595
1596         <shape subshapes> = (<shape subshape> <_>)* "*";
1597
1598         <shape subshape> =
1599         <shape subshape orientation> <shape subshape number> <_> <shape location number>;
1600
1601         <shape subshape orientation> = "+" | "-" | "i" | "e";
1602
1603         <shape subshape number> = <int>;
1604
1605         <shape location number> = <int>;
1606
1607         <shape final record> = <shape subshape>;
1608
1609         <shape subrecord> =
1610         ("Ve" <_\n> <vertex data> <_\n>) |
1611         ("Ed" <_\n> <edge data> <_\n>) |
1612         ("Wi" <_\n> <_\n>) |
1613         ("Fa" <_\n> <face data>) |
1614         ("Sh" <_\n> <_\n>) |
1615         ("So" <_\n> <_\n>) |
1616         ("CS" <_\n> <_\n>) |
1617         ("Co" <_\n> <_\n>);
1618 @endverbatim
1619  
1620 **Description**  
1621  
1622 \<shape flag word\> @f$ f_{1}\; f_{2}\; f_{3}\; f_{4}\; f_{5}\; f_{6}\; f_{7} @f$ \<flag\>s @f$ f_{i}\;(1\leq i \leq 7) @f$ are interpreted as shape  flags in the following way:  
1623
1624   *  @f$ f_{1} @f$ – free;  
1625   *  @f$ f_{2} @f$ – modified;  
1626   *  @f$ f_{3} @f$ – IGNORED(version 1) \\ checked (version 2);  
1627   *  @f$ f_{4} @f$ – orientable;  
1628   *  @f$ f_{5} @f$ – closed;  
1629   *  @f$ f_{6} @f$ – infinite;  
1630   *  @f$ f_{7} @f$ – convex.  
1631   
1632 The flags are used in a special way [1].  
1633  
1634 \<shape subshape orientation\> is interpreted in  the following way:  
1635
1636   *  + – forward;  
1637   *  - – reversed;  
1638   *  i – internal;  
1639   *  e – external.  
1640   
1641 \<shape subshape orientation\> is used in a special  way [1].  
1642  
1643 \<shape subshape number\> is the number of a \<shape record\> which is located in this section above the \<shape subshape  number\>. \<shape record\> numbering is backward and starts from 1.  
1644  
1645 \<shape subrecord\> types are interpreted in the  following way: 
1646  
1647   *  "Ve" – vertex;  
1648   *  "Ed" – edge;  
1649   *  "Wi" – wire;  
1650   *  "Fa" – face;  
1651   *  "Sh" – shell;  
1652   *  "So" – solid;  
1653   *  "CS" – compsolid;  
1654   *  "Co" – compound.  
1655  
1656 \<shape final record\> determines the orientation  and location for the whole model.  
1657  
1658 @subsection occt_brep_format_5_1  Common Terms
1659  
1660 The terms below are used by \<vertex data\>, \<edge data\> and \<face data\>.  
1661  
1662  
1663 **BNF-like Definition**
1664
1665 @verbatim
1666         <location number> = <int>;
1667
1668         <3D curve number> = <int>;
1669
1670         <surface number> = <int>;
1671
1672         <2D curve number> = <int>;
1673
1674         <3D polygon number> = <int>;
1675
1676         <triangulation number> = <int>;
1677
1678         <polygon on triangulation number> = <int>;
1679
1680         <curve parameter minimal and maximal values> = <real> <_> <real>;
1681
1682         <curve values for parameter minimal and maximal values> =
1683         real> <_> <real> <_> <real> <_> <real>;
1684 @endverbatim
1685  
1686 **Description**  
1687  
1688 \<location number\> is the number of \<location record\> from section locations. \<location record\> numbering  starts from 1. \<location number\> 0 is interpreted  as the identity location.  
1689  
1690 \<3D curve number\> is the number of a \<3D curve record\> from subsection \<3D curves\> of section \<geometry\>. \<3D curve record\> numbering starts from 1.  
1691  
1692 \<surface number\> is the number of a \<surface record\> from subsection \<surfaces\> of section \<geometry\>. \<surface record\> numbering starts from 1.  
1693  
1694 \<2D curve number\> is the number of a \<2D curve record\> from subsection \<2D curves\> of section \<geometry\>. \<2D curve record\> numbering starts from 1.  
1695  
1696 \<3D polygon number\> is the number of a \<3D polygon record\> from subsection \<3D polygons\> of section \<geometry\>.  \<3D polygon record\> numbering starts from 1.  
1697  
1698 \<triangulation number\> is the number of a \<triangulation record\> from subsection \<triangulations\> of section \<geometry\>. \<triangulation record\> numbering starts from 1.  
1699  
1700 \<polygon on triangulation\> number is the number of a \<polygons on triangulations record\> from subsection \<polygons on  triangulations\> of section \<geometry\>.  
1701 \<polygons on triangulations record\> numbering  starts from 1.  
1702  
1703 \<curve parameter minimal and maximal values\> *u<sub>min</sub>* and *u<sub>max</sub>* are the curve parameter *u* bounds: *u<sub>min</sub>* @f$ \leq @f$ *u* @f$ \leq @f$ *u<sub>max</sub>*.  
1704  
1705 \<curve  values for parameter minimal and maximal values\> *u<sub>min</sub>* and *u<sub>max</sub>* are real pairs *x<sub>min</sub> y<sub>min</sub>* and *x<sub>max</sub> y<sub>max</sub>* that (*x<sub>min</sub>*, *y<sub>min</sub>*)= *C* (*u<sub>min</sub>*) and (*x<sub>max</sub>*, *y<sub>max</sub>*)= *C* (*u<sub>max</sub>*) where *C* is a parametric  equation of the curve.  
1706  
1707  
1708 @subsection occt_brep_format_5_2 Vertex data
1709  
1710 **BNF-like Definition**
1711
1712 @verbatim
1713         <vertex data> = <vertex data tolerance> <_\n> <vertex data 3D representation> <_\n> 
1714         <vertex data representations>;
1715
1716         <vertex data tolerance> = <real>;
1717
1718         <vertex data 3D representation> = <3D point>;
1719
1720         <vertex data representations> = (<vertex data representation> <_\n>)* "0 0";
1721
1722         <vertex data representation> = <vertex data representation u parameter> <_>
1723         <vertex data representation data> <_> <location number>;
1724
1725         <vertex data representation u parameter> = <real>;
1726
1727         <vertex data representation data> =
1728         ("1" <_> <vertex data representation data 1>) |
1729         ("2" <_> <vertex data representation data 2>) |
1730         ("3" <_> <vertex data representation data 3>);
1731
1732         <vertex data representation data 1> = <3D curve number>;
1733
1734         <vertex data representation data 2> = <2D curve number> <_> <surface number>;
1735
1736         <vertex data representation data 3> =
1737         <vertex data representation v parameter> <_> <surface number>;
1738
1739         <vertex data representation v parameter> = <real>;
1740 @endverbatim
1741  
1742 **Description**  
1743  
1744 The usage of \<vertex data representation u  parameter\> *U* is  described below.  
1745  
1746 \<vertex data representation data 1\> and  parameter *U* describe  the position of the vertex *V* on a 3D curve *C*. Parameter *U* is a parameter of the  vertex *V* on the  curve *C*: *C(u)=V*.  
1747  
1748 \<vertex data representation data 2\> and  parameter *U* describe  the position of the vertex *V* on a 2D curve *C* which is located on a  surface. Parameter *U* is a parameter of the  vertex *V* on the  curve *C*: *C(u)=V*.  
1749  
1750 \<vertex data representation data 3\> and  parameter *u* describe  the position of the vertex *V* on a surface *S* through \<vertex data  representation v parameter\> *v*: *S(u,v)=V*.  
1751  
1752 \<vertex data tolerance\> *t* describes the maximum distance  from the vertex *V* to the set *R* of vertex *V* representations:  
1753  
1754 @f[ \underset{P \in R }{max} |P-V| \leq t . @f]  
1755  
1756  
1757 @subsection occt_brep_format_5_3 Edge data
1758  
1759 **BNF-like Definition**
1760
1761 ~~~~
1762         <edge data> = <_> <edge data tolerance> <_> <edge data same parameter flag> <_> edge data same range flag> <_> <edge data degenerated flag> <_\n> <edge data representations>;
1763
1764         <edge data tolerance> = <real>;
1765
1766         <edge data same parameter flag> = <flag>;
1767
1768         <edge data same range flag> = <flag>;
1769
1770         <edge data degenerated flag> = <flag>;
1771
1772         <edge data representations> = (<edge data representation> <_\n>)* "0";
1773
1774         <edge data representation> =
1775         "1" <_> <edge data representation data 1>
1776         "2" <_> <edge data representation data 2>
1777         "3" <_> <edge data representation data 3>
1778         "4" <_> <edge data representation data 4>
1779         "5" <_> <edge data representation data 5>
1780         "6" <_> <edge data representation data 6>
1781         "7" <_> <edge data representation data 7>;
1782
1783         <edge data representation data 1> = <3D curve number> <_> <location number> <_>
1784         <curve parameter minimal and maximal values>;
1785
1786         <edge data representation data 2> = <2D curve number> <_> <surface number> <_> 
1787         <location number> <_> <curve parameter minimal and maximal values>
1788         [<_\n> <curve values for parameter minimal and maximal values>];
1789
1790         <edge data representation data 3> = (<2D curve number> <_>) ^ 2 <continuity order> <_> <surface number> <_> <location number> <_> <curve parameter minimal and maximal values> <\n> <curve values for parameter minimal and maximal values>];
1791
1792         <continuity order> = "C0" | "C1" | "C2" | "C3" | "CN" | "G1" | "G2".
1793
1794         <edge data representation data 4> =
1795         <continuity order> (<_> <surface number> <_> <location number>) ^ 2;
1796
1797         <edge data representation data 5> = <3D polygon number> <_> <location number>;
1798
1799         <edge data representation data 6> =
1800         <polygon on triangulation number> <_> <triangulation number> <_> <location number>;
1801
1802         <edge data representation data 7> = (<polygon on triangulation number> <_>) ^ 2 
1803         <triangulation number> <_> <location number>;
1804 ~~~~
1805  
1806 **Description**  
1807  
1808 Flags \<edge data same parameter flag\>, \<edge data same range flag\> and \<edge data degenerated flag\> are used in a special  way [1].  
1809  
1810 \<edge data representation data 1\> describes a 3D curve.  
1811  
1812 \<edge data representation data 2\> describes a 2D curve on a surface.  
1813 \<curve values for parameter minimal and maximal  values\> are used only in version 2.  
1814  
1815 \<edge data representation data 3\> describes a 2D  curve on a closed surface.  
1816 \<curve values for parameter minimal and maximal  values\> are used only in version 2.  
1817  
1818 \<edge data representation data 5\> describes a 3D polyline.  
1819  
1820 \<edge data representation data 6\> describes a polyline  on a triangulation.  
1821  
1822 \<edge data tolerance\> *t* describes the maximum distance from the edge *E* to  the set *R* of  edge *E* representations:  
1823  
1824 @f[ \underset{C \in R}{max}\;\underset{P \in E}{max}\;\underset{Q \in C}{min}|Q-P| \leq t @f]  
1825  
1826  
1827 @subsection occt_brep_format_5_4 Face data
1828  
1829 **BNF-like Definition**
1830
1831 ~~~~
1832         <face data> = <face data natural restriction flag> <_> <face data tolerance> <_> <surface number> <_> <location number> <\n> ["2" <_> <triangulation number>];
1833
1834         <face data natural restriction flag> = <flag>;
1835
1836         <face data tolerance> = <real>;
1837 ~~~~
1838  
1839 **Description**  
1840  
1841 \<face data\> describes a surface *S* of face *F* and a triangulation *T* of face *F*. The surface *S* may be empty: \<surface  number\> = 0.  
1842  
1843 \<face data tolerance\> *t* describes the maximum distance  from the face *F* to  the surface *S*:  
1844  
1845 @f[ \underset{P \in F}{max}\;\underset{Q \in S}{min}|Q-P| \leq t @f] 
1846
1847 Flag \<face data natural restriction flag\> is  used in a special way [1].  
1848
1849
1850 @section occt_brep_format_6 Appendix
1851  
1852   This chapter contains a *.brep file example.  
1853  
1854 @verbatim
1855     DBRep_DrawableShape  
1856      
1857     CASCADE Topology V1, (c)  Matra-Datavision  
1858     Locations 3  
1859     1  
1860                   0                0               1               0   
1861                   1                0               0               0   
1862                   0                1               0               0   
1863     1  
1864                   1                0               0               4   
1865                   0                1               0               5   
1866                   0                0               1               6   
1867     2  1 1 2 1 0  
1868     Curve2ds 24  
1869     1 0 0 1 0   
1870     1 0 0 1 0   
1871     1 3 0 0 -1   
1872     1 0 0 0 1   
1873     1 0 -2 1 0   
1874     1 0 0 1 0   
1875     1 0 0 0 -1   
1876     1 0 0 0 1   
1877     1 0 0 1 0   
1878     1 0 1 1 0   
1879     1 3 0 0 -1   
1880     1 1 0 0 1   
1881     1 0 -2 1 0   
1882     1 0 1 1 0   
1883     1 0 0 0 -1   
1884     1 1 0 0 1   
1885     1 0 0 0 1   
1886     1 0 0 1 0   
1887     1 3 0 0 1   
1888     1 0 0 1 0   
1889     1 0 0 0 1   
1890     1 0 2 1 0   
1891     1 3 0 0 1   
1892     1 0 2 1 0   
1893     Curves 13  
1894     1 0 0 0 0 0 1   
1895     1 0 0 3 -0 1 0   
1896     1 0 2 0 0 0 1   
1897     1 0 0 0 -0 1 0   
1898     1 1 0 0 0 0 1   
1899     1 1 0 3 0 1 0   
1900     1 1 2 0 0 0 1   
1901     1 1 0 0 -0 1 0   
1902     1 0 0 0 1 0 -0   
1903     1 0 0 3 1 0 -0   
1904     1 0 2 0 1 0 -0   
1905     1 0 2 3 1 0 -0   
1906     1 1 0 0 1 0 0   
1907     Polygon3D 1  
1908     2 1  
1909     0.1  
1910     1 0 0 2 0 0   
1911     0 1   
1912     PolygonOnTriangulations 24  
1913     2 1 2   
1914     p 0.1 1 0 3   
1915     2 1 4   
1916     p 0.1 1 0 3   
1917     2 2 3   
1918     p 0.1 1 0 2   
1919     2 1 2   
1920     p 0.1 1 0 2   
1921     2 4 3   
1922     p 0.1 1 0 3   
1923     2 1 4   
1924     p 0.1 1 0 3   
1925     2 1 4   
1926     p 0.1 1 0 2   
1927     2 1 2   
1928     p 0.1 1 0 2   
1929     2 1 2   
1930     p 0.1 1 0 3   
1931     2 2 3   
1932     p 0.1 1 0 3   
1933     2 2 3   
1934     p 0.1 1 0 2   
1935     2 4 3   
1936     p 0.1 1 0 2   
1937     2 4 3   
1938     p 0.1 1 0 3   
1939     2 2 3   
1940     p 0.1 1 0 3   
1941     2 1 4   
1942     p 0.1 1 0 2   
1943     2 4 3   
1944     p 0.1 1 0 2   
1945     2 1 2   
1946     p 0.1 1 0 1   
1947     2 1 4   
1948     p 0.1 1 0 1   
1949     2 4 3   
1950     p 0.1 1 0 1   
1951     2 1 4   
1952     p 0.1 1 0 1   
1953     2 1 2   
1954     p 0.1 1 0 1   
1955     2 2 3   
1956     p 0.1 1 0 1   
1957     2 4 3   
1958     p 0.1 1 0 1   
1959     2 2 3   
1960     p 0.1 1 0 1   
1961     Surfaces 6  
1962     1 0 0 0 1 0 -0 0 0 1 0 -1 0   
1963     1 0 0 0 -0 1 0 0 0 1 1 0 -0   
1964     1 0 0 3 0 0 1 1 0 -0 -0 1 0   
1965     1 0 2 0 -0 1 0 0 0 1 1 0 -0   
1966     1 0 0 0 0 0 1 1 0 -0 -0 1 0   
1967     1 1 0 0 1 0 -0 0 0 1 0 -1 0   
1968     Triangulations 6  
1969     4 2 1 0  
1970     0 0 0 0 0 3 0 2 3 0 2 0 0 0 3  0 3 -2 0 -2 2 4 3 2 1 4   
1971     4 2 1 0  
1972     0 0 0 1 0 0 1 0 3 0 0 3 0 0 0  1 3 1 3 0 3 2 1 3 1 4   
1973     4 2 1 0  
1974     0 0 3 0 2 3 1 2 3 1 0 3 0 0 0  2 1 2 1 0 3 2 1 3 1 4   
1975     4 2 1 0  
1976     0 2 0 1 2 0 1 2 3 0 2 3 0 0 0  1 3 1 3 0 3 2 1 3 1 4   
1977     4 2 1 0  
1978     0 0 0 0 2 0 1 2 0 1 0 0 0 0 0  2 1 2 1 0 3 2 1 3 1 4   
1979     4 2 1 0  
1980     1 0 0 1 0 3 1 2 3 1 2 0 0 0 3  0 3 -2 0 -2 2 4 3 2 1 4   
1981      
1982     TShapes 39  
1983     Ve  
1984     1e-007  
1985     0 0 3  
1986     0 0  
1987      
1988     0101101  
1989     *  
1990     Ve  
1991     1e-007  
1992     0 0 0  
1993     0 0  
1994      
1995     0101101  
1996     *  
1997     Ed  
1998      1e-007 1 1 0  
1999     1  1 0 0 3  
2000     2  1 1 0 0 3  
2001     2  2 2 0 0 3  
2002     6  1 1 0  
2003     6  2 2 0  
2004     0  
2005      
2006     0101000  
2007     -39 0 +38 0 *  
2008     Ve  
2009     1e-007  
2010     0 2 3  
2011     0 0  
2012      
2013     0101101  
2014     *  
2015     Ed  
2016      1e-007 1 1 0  
2017     1  2 0 0 2  
2018     2  3 1 0 0 2  
2019     2  4 3 0 0 2  
2020     6  3 1 0  
2021     6  4 3 0  
2022     0  
2023      
2024     0101000  
2025     -36 0 +39 0 *  
2026     Ve  
2027     1e-007  
2028     0 2 0  
2029     0 0  
2030      
2031     0101101  
2032     *  
2033     Ed  
2034      1e-007 1 1 0  
2035     1  3 0 0 3  
2036     2  5 1 0 0 3  
2037     2  6 4 0 0 3  
2038     6  5 1 0  
2039     6  6 4 0  
2040     0  
2041      
2042     0101000  
2043     -36 0 +34 0 *  
2044     Ed  
2045      1e-007 1 1 0  
2046     1  4 0 0 2  
2047     2  7 1 0 0 2  
2048     2  8 5 0 0 2  
2049     6  7 1 0  
2050     6  8 5 0  
2051     0  
2052      
2053     0101000  
2054     -34 0 +38 0 *  
2055     Wi  
2056      
2057     0101000  
2058     -37 0 -35 0 +33 0 +32 0 *  
2059     Fa  
2060     0  1e-007 1 0  
2061     2  1  
2062     0101000  
2063     +31 0 *  
2064     Ve  
2065     1e-007  
2066     1 0 3  
2067     0 0  
2068      
2069     0101101  
2070     *  
2071     Ve  
2072     1e-007  
2073     1 0 0  
2074     0 0  
2075      
2076     0101101  
2077     *  
2078     Ed  
2079      1e-007 1 1 0  
2080     1  5 0 0 3  
2081     2  9 6 0 0 3  
2082     2  10 2 0 0 3  
2083     6  9 6 0  
2084     6  10 2 0  
2085     0  
2086      
2087     0101000  
2088     -29 0 +28 0 *  
2089     Ve  
2090     1e-007  
2091     1 2 3  
2092     0 0  
2093      
2094     0101101  
2095     *  
2096     Ed  
2097      1e-007 1 1 0  
2098     1  6 0 0 2  
2099     2  11 6 0 0 2  
2100     2  12 3 0 0 2  
2101     6  11 6 0  
2102     6  12 3 0  
2103     0  
2104      
2105     0101000  
2106     -26 0 +29 0 *  
2107     Ve  
2108     1e-007  
2109     1 2 0  
2110     0 0  
2111      
2112     0101101  
2113     *  
2114     Ed  
2115      1e-007 1 1 0  
2116     1  7 0 0 3  
2117     2  13 6 0 0 3  
2118     2  14 4 0 0 3  
2119     6  13 6 0  
2120     6  14 4 0  
2121     0  
2122      
2123     0101000  
2124     -26 0 +24 0 *  
2125     Ed  
2126      1e-007 1 1 0  
2127     1  8 0 0 2  
2128     2  15 6 0 0 2  
2129     2  16 5 0 0 2  
2130     6  15 6 0  
2131     6  16 5 0  
2132     0  
2133      
2134     0101000  
2135     -24 0 +28 0 *  
2136     Wi  
2137      
2138     0101000  
2139     -27 0 -25 0 +23 0 +22 0 *  
2140     Fa  
2141     0  1e-007 6 0  
2142     2  6  
2143     0101000  
2144     +21 0 *  
2145     Ed  
2146      1e-007 1 1 0  
2147     1  9 0 0 1  
2148     2  17 2 0 0 1  
2149     2  18 5 0 0 1  
2150     6  17 2 0  
2151     6  18 5 0  
2152     0  
2153      
2154     0101000  
2155     -28 0 +38 0 *  
2156     Ed  
2157      1e-007 1 1 0  
2158     1  10 0 0 1  
2159     2  19 2 0 0 1  
2160     2  20 3 0 0 1  
2161     6  19 2 0  
2162     6  20 3 0  
2163     0  
2164      
2165     0101000  
2166     -29 0 +39 0 *  
2167     Wi  
2168      
2169     0101000  
2170     -19 0 -27 0 +18 0 +37 0 *  
2171     Fa  
2172     0  1e-007 2 0  
2173     2  2  
2174     0101000  
2175     +17 0 *  
2176     Ed  
2177      1e-007 1 1 0  
2178     1  11 0 0 1  
2179     2  21 4 0 0 1  
2180     2  22 5 0 0 1  
2181     6  21 4 0  
2182     6  22 5 0  
2183     0  
2184      
2185     0101000  
2186     -24 0 +34 0 *  
2187     Ed  
2188      1e-007 1 1 0  
2189     1  12 0 0 1  
2190     2  23 4 0 0 1  
2191     2  24 3 0 0 1  
2192     6  23 4 0  
2193     6  24 3 0  
2194     0  
2195      
2196     0101000  
2197     -26 0 +36 0 *  
2198     Wi  
2199      
2200     0101000  
2201     -15 0 -23 0 +14 0 +33 0 *  
2202     Fa  
2203     0  1e-007 4 0  
2204     2  4  
2205     0101000  
2206     +13 0 *  
2207     Wi  
2208      
2209     0101000  
2210     -32 0 -15 0 +22 0 +19 0 *  
2211     Fa  
2212     0  1e-007 5 0  
2213     2  5  
2214     0101000  
2215     +11 0 *  
2216     Wi  
2217      
2218     0101000  
2219     -35 0 -14 0 +25 0 +18 0 *  
2220     Fa  
2221     0  1e-007 3 0  
2222     2  3  
2223     0101000  
2224     +9 0 *  
2225     Sh  
2226      
2227     0101100  
2228     -30 0 +20 0 -16 0 +12 0 -10 0  +8 0 *  
2229     So  
2230      
2231     0100000  
2232     +7 0 *  
2233     CS  
2234      
2235     0101000  
2236     +6 3 *  
2237     Ve  
2238     1e-007  
2239     1 0 0  
2240     0 0  
2241      
2242     0101101  
2243     *  
2244     Ve  
2245     1e-007  
2246     2 0 0  
2247     0 0  
2248      
2249     0101101  
2250     *  
2251     Ed  
2252      1e-007 1 1 0  
2253     1  13 0 0 1  
2254     5  1 0  
2255     0  
2256      
2257     0101000  
2258     +4 0 -3 0 *  
2259     Co  
2260      
2261     1100000  
2262     +5 0 +2 0 *  
2263      
2264     +1 0   
2265     0  
2266 @endverbatim