.. role:: blue :class: blue MbConeSurface Conical Surface ============================== .. _MbConeSurface_Conical_Surface_: .. версия ядра: The :blue:`MbConeSurface` class is declared in the *surf\_cone\_surface.h* file. The :blue:`MbConeSurface` conical surface belongs to the group of elementary surfaces :blue:`MbElementarySurface`. The conical surface is described by the radius *radius*, the height *height*, and the cone angle *angle*, defined in the local coordinate system :ref:`MbPlacement3D ` **position**. The first surface parameter is measured along the arc from the vector **position.axisX** in the direction of the vector **position.axisY**. The first surface parameter *u* takes values on the interval: *umin* ≤ *u* ≤ *umax*. The values *u* = 0 and *u* = 2π correspond to a point on the XZ plane. The surface can be periodic with respect to the first parameter. For a periodic surface, *umax* - *umin* = 2π; for a non-periodic surface, *umax* - *umin* < 2π. The second surface parameter is measured along the straight line in the direction of the vector **position.axisZ**. The second surface parameter *v* takes values on the interval: *vmin* ≤ *v* ≤ *vmax*. The value *v* = 0 corresponds to the origin of the local coordinate system, and the value *v* = 1 corresponds to the point at a distance *height* from the XY plane of the local coordinate system of the surface. In the :blue:`PointOn`\( double *u*, double *v*, :ref:`MbCartPoint3D ` & **s** ) method, the position vector of the surface **s** is described by the vector function .. math:: :nowrap: \begin{equation} \mathbf{s}(u, v) = \mathbf{position.origin} + \left( \mathit{radius} + \mathit{height} \cdot v \cdot \tan(\mathit{angle}) \right) \left( \cos(u)\, \mathbf{position.axisX} + \sin(u)\, \mathbf{position.axisY} \right) + \mathit{height} \cdot v\, \mathbf{position.axisZ} \end{equation} Fig. 1 shows the conical surface: .. figure:: /MODELER/SURFACES/pictures/O.5.4.1.png :width: 15cm :align: center Fig. 1 The radius and height must be greater than zero, and the absolute value of the angle must not exceed π/2: *radius* > 0, *height* > 0, -π/2 < *angle* < π/2. When *angle* = 0, the conical surface is equivalent to a cylindrical surface. The following inequalities must hold for the boundary parameters of the surface: *umin* < *umax*, *vmin* < *vmax*. The pole of the surface corresponds to the value of the second parameter *v* = -*radius* / (*height* · tg(*angle*)). The boundary parameters *vmax* and *vmin* take values such that the surface is located on one side of the pole. The local coordinate system **position** can be either right-handed or left-handed. If the local coordinate system is right-handed, the normal is directed towards the convex side of the surface (away from the surface axis); if the local coordinate system is left-handed, the normal is directed towards the concave side of the surface (towards the surface axis).