.. role:: blue :class: blue MbFilletSurface Fillet Surface ============================== .. _MbFilletSurface_Fillet_Surface_: .. версия ядра: 1180ХХ Class :blue:`MbFilletSurface` is declared in the *surf\_fillet\_surface.h* file. The fillet surface :blue:`MbFilletSurface` belongs to the group of blending surfaces :blue:`MbSmoothSurface`. The fillet surface is defined by a curve on the first blended surface :ref:`MbSurfaceCurve ` *curve1*, a curve on the second blended surface :ref:`MbSurfaceCurve ` *curve2*, a curve :blue:`MbCurve3D` *curve0*, a function :ref:`MbFunction ` *weights0* of the weights of the curve *curve0*, the fillet construction method *form*, the fillet radii *distance1* and *distance2*, the shape factor *conic*, the boundary values *umin* and *umax* of the parameter of the curves *curve1*, *curve2*, *curve0* and the function *weights0*, the boundary values of the second surface parameter *vmin* and *vmax*, the flag of the first surface parameter periodicity *uclosed*, the flag that indicates the presence of a surface pole at the initial value of the first parameter *poleMin*, the flag that indicates the presence of a surface pole at the final value of the first parameter *poleMax*, the flag of uniform parameterization of the surface in the second parameter *even*, the flag of smooth blending of the surface with the blended surfaces *equable*, and the flag *byCurve1* that indicates the presence of an edge along the curve *curve2* or *curve1* (*equable* = false). The surface also has some additional data that is optional and is used to speed up the surface methods. The curves *curve1*, *curve2*, *curve0* and the function *weights0* are coordinated with each other and have the same parameter domain. The first surface parameter *u* coincides with the parameter of the curves *curve1*, *curve2*, *curve0* and the function *weights0*, which is common for them. The first surface parameter takes values on the segment *umin* ≤ *u* ≤ *umax*, which corresponds to the domain of the curves *curve1*, *curve2*, *curve0* and the function *weights0*. The surface can be periodic in the first parameter if the curves *curve1*, *curve2*, *curve0* and the function *weights0* are periodic. The second surface parameter *v* takes values on the segment *vmin* ≤ *v* ≤ *vmax*. The value *v* = *vmin* corresponds to a point on the curve *curve1*, and the value *v* = *vmax* corresponds to a point on the curve *curve2*. The surface cannot be periodic in the second parameter. In the :blue:`PointOn`\( double *u*, double *v*, :ref:`MbCartPoint3D ` & **s** ) method, the radius vector of the surface **s** is described by the vector function .. math:: s(u, v) = \frac{(1 - v)^{2}\,\mathbf{curve1}(u) + 2 t (1 - v)\,\mathit{\text{weight}}0(u)\,\mathbf{curve0}(u) + v^{2}\,\mathbf{curve2}(u)}{(1 - v)^{2} + 2 v (1 - v)\,\mathit{\text{weight}}0(u) + v^{2}}. Each curve **s**\(*const*, *v*) with a fixed first surface parameter *u* = const is a third-order NURBS curve constructed by the points *curve1*\(*u*), *curve0*\(*u*), *curve2*\(*u*), where the end points have unit weights and the middle point *curve0*\(*u*) has the weight *weights0*\(*u*). If *conic* = \_ARC\_, the function *weights0*\(*u*) is computed from the condition that all curves **s**\(*const*, *v*) are circular arcs. If *conic* ≠ \_ARC\_, the function *weights0* is a constant and is equal to the shape factor *conic*. The fillet surface is shown in Fig. 1. .. figure:: /MODELER/SURFACES/pictures/O.5.25.1.png :width: 12cm :align: center Fig. 1 In the general case, the surface blends smoothly with the surfaces on which the curves *curve1*\(*u*) and *curve2*\(*u*) lie. In this case, the parameter *equable* = true. If *equable* = false, then along one of the curves *curve1* or *curve2* the blending is smooth, and the other curve is an edge. If *byCurve1* = true, the blending is smooth along the curve *curve1*; otherwise, the blending is smooth along the curve *curve2*. A fillet surface with the preserved edge is shown in Fig. 2. .. figure:: /MODELER/SURFACES/pictures/O.5.25.2.png :width: 12cm :align: center Fig. 2 If the fillet radii *distance1* and *distance2* are not equal, then the fillet surface in the section **s**\(*const*, *v*) with *u* = const describes an ellipse. An elliptic fillet surface is shown in Fig. 3. .. figure:: /MODELER/SURFACES/pictures/O.5.25.3.png :width: 12cm :align: center Fig. 3 In the general case, the fillet construction method is *form* = st\_Fillet. If the fillet construction method is *form* = st\_Span, then *distance1* = *distance2* and they are equal to the distance between the curves *curve1* and *curve2*, and the fillet surface radius is variable. A fillet surface with the preserved distance between the guide curves is shown in Fig. 4. .. figure:: /MODELER/SURFACES/pictures/O.5.25.4.png :width: 12cm :align: center Fig. 4 The curves on the surface **s**\(*const*, *v*) with *u* = const are conic sections whose shape depends on the parameter *conic*. If *conic* = \_ARC\_ = 0, then the curves on the surface **s**\(*const*, *v*) are circular arcs. If *conic* = 0.5, then the curves on the surface **s**\(*const*, *v*) are parabolic arcs. If 0.05 < *conic* < 0.5, then the curves on the surface **s**\(*const*, *v*) are elliptic arcs. If 0.5 < *conic* < 0.95, then the curves on the surface **s**\(*const*, *v*) are hyperbolic arcs. The surface can have a pole at *u* = *umin* and *u* = *umax* if the corresponding ends of the curves *curve0*, *curve1* and *curve2* coincide.