.. role:: blue :class: blue MbChannelSurface Fillet Surface =============================================== .. _MbChannelSurface_Fillet_Surface_: .. версия ядра: 1180ХХ Class :blue:`MbChannelSurface` is declared in the *surf\_channel\_surface.h* file. The variable-radius fillet surface :blue:`MbChannelSurface` is an inheritor of the fillet surface :blue:`MbFilletSurface`. The variable-radius fillet surface is defined by a curve on the first blended surface :ref:`MbFilletSurface ` *curve1*, a curve on the second blended surface :ref:`MbSurfaceCurve ` *curve2*, a curve :blue:`MbCurve3D` *curve0*, a function :blue:`MbFunction` *weights0* of the weights of the curve *curve0*, a radius variation function :blue:`MbFunction` *function*, 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 functions *weights0* and *function*, 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*, and the flag that indicates the presence of a surface pole at the final value of the first parameter *poleMax*. 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 functions *weights0*, *function* 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 functions *weights0* and *function*, 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 functions *weights0* and *function*. The surface can be periodic in the first parameter if the curves *curve1*, *curve2*, *curve0* and the functions *weights0* and *function* 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*, :blue:`MbCartPoint3D` & **s** ) method, the radius vector of the surface **s** is described by the vector function .. math:: s(u, v) = \frac{(1 - v)^{2}\cdot\mathbf{curve1}(u) + 2 v (1 - v)\cdot\mathit{\text{weight}}0(u)\cdot\mathbf{curve0}(u) + v^{2}\cdot\mathbf{curve2}(u)}{(1 - v)^{2} + 2 v (1 - v)\cdot\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*). As the first surface parameter varies, the fillet radii change according to the laws R1\(*u*) = *distance1* · *function*\(*u*) and R2\(*u*) = *distance2* · *function*\(*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 variable-radius fillet surface is shown in Fig. 1. .. figure:: /MODELER/SURFACES/pictures/O.5.26.1.png :width: 12cm :align: center Fig. 1 The variable-radius fillet surface blends smoothly with the surfaces on which the curves *curve1*\(*u*) and *curve2*\(*u*) lie, with the parameter *equable* = true and *form* = st\_Fillet. 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.