.. role:: blue :class: blue Построение элементарной поверхности =================================== .. _Elementary_Surface_Construction: .. версия ядра: 118056 Функция .. code-block:: cpp MbResultType ElementarySurface( const MbCartPoint3D & point0, const MbCartPoint3D & point1, const MbCartPoint3D & point2, MbeSpaceType surfaceType, MbSurface *& result ) выполняет построение элементарной поверхности. Входными параметрами функции являются: - **point0** -- точка, определяющая начало локальной системы координат поверхности; - **point1** -- точка, определяющая направление осей **axisX**, **axisZ** (в зависимости от типа поверхности) локальной системы координат и высоту поверхности; - **point2** -- точка, определяющая направление оси **axisY** локальной системы; - **surfaceType** -- тип поверхности. Выходным параметром функции является построенная поверхность **result**. При успешном завершении работы функция возвращает :blue:`rt_Success`, в противном случае функция возвращает код ошибки из перечисления :ref:`MbResultType `. Функция объявлена в файле *action_surface.h*. Параметр **surfaceType** определяет тип создаваемой поверхности. Контрольные точки **point0**, **point1** и **point2** определяют локальную систему координат и размеры элементарной поверхности. Точка **point0** определяет начало локальной системы координат. В таблице приведены тип поверхности, ось локальной системы координат и величина, которую определяет точка **point1** для создания поверхности типа **surfaceType**: +---------------------+----------------------------+--------------------------------------+ | **surfaceType** | **Тип поверхности** | Точка **point1** определяет | +=====================+============================+======================================+ | st_Plane | плоскость | **axisX** | +---------------------+----------------------------+--------------------------------------+ | st_CylinderSurface | цилиндрическая поверхность | **axisZ**, высоту | +---------------------+----------------------------+--------------------------------------+ | st_ConeSurface | коническая поверхность | **axisZ**, высоту | +---------------------+----------------------------+--------------------------------------+ | st_SphereSurface | сферическая поверхность | **axisZ** | +---------------------+----------------------------+--------------------------------------+ | st_TorusSurface | поверхность тора | **axisX**, больший радиус | +---------------------+----------------------------+--------------------------------------+ Точка **point1** определяет высоту цилиндрической поверхности, высоту конической поверхности, больший радиус поверхности тора. Точка **point2** определяет радиус цилиндрической поверхности, радиус конической поверхности и угол конусности, радиус сферы, малый радиус поверхности тора. При построении плоскости точки **point0**, **point1** и **point2** определяют локальную систему координат плоскости с началом в точке **point0**. Ось **axisX** локальной системы координат плоскости направлена из точки **point0** в точку **point1**, ось **axisY** локальной системы координат плоскости ортогональна оси **axisX** и направлена в сторону точки **point2**. Область определения первого параметра равна удвоенному расстоянию между точками **point0** и **point1**. Область определения второго параметра равна удвоенному расстоянию между точками **point0** и проекцией на ось **axisY** точки **point2**, рис. 1: .. figure:: /MODELER/SURFACE_CONSTRUCTION_METHODS/pictures/M.5.1.1.png :width: 12cm :align: center .. rst-class:: fig-caption Рис. 1 При построении цилиндрической поверхности точка **point0** определяет центр нижнего основания цилиндра, в котором располагается начало локальной системы координат. Точка **point1** определяет центр верхнего основания цилиндра. Ось **axisZ** локальной системы координат поверхности направлена из точки **point0** в точку **point1**. Точка **point2** вместе с предыдущими точками определяет плоскость расположения осей **axisX** и **axisZ** локальной системы координат поверхности. Расстояние между точками **point0** и **point1** определяет высоту цилиндрической поверхности, расстояние от оси **axisZ** до точки **point2** определяет радиус цилиндрической поверхности, рис. 2: .. figure:: /MODELER/SURFACE_CONSTRUCTION_METHODS/pictures/M.5.1.2.png :width: 12cm :align: center .. rst-class:: fig-caption Рис. 2 Цилиндрическая поверхность описана в параграфе :ref:`Цилиндрическая поверхность MbCylinderSurface `. При построении конической поверхности точка **point0** определяет вершину конуса, в которой располагается начало локальной системы координат. Точка **point1** определяет центр основания конуса и направление оси **axisZ** локальной системы координат конуса. Точка **point2** вместе с предыдущими точками определяет плоскость расположения осей **axisX** и **axisZ** локальной системы координат поверхности. Расстояние между точками **point0** и **point1** определяет высоту конической поверхности. Точка **point2** определяет угол конусности, из условия, что точка **point2** лежит на конической поверхности, рис. 3: .. figure:: /MODELER/SURFACE_CONSTRUCTION_METHODS/pictures/M.5.1.3.png :width: 12cm :align: center .. rst-class:: fig-caption Рис. 3 Коническая поверхность описана в параграфе :ref:`Коническая поверхность MbConeSurface `. При построении сферической поверхности точка **point0** определяет центр сферы, в котором располагается начало локальной системы координат. Ось **axisZ** локальной системы координат поверхности направлена из точки **point0** в точку **point1**. Точка **point2** вместе с предыдущими точками определяет плоскость расположения осей **axisX** и **axisZ** локальной системы координат поверхности. Расстояние между точками **point0** и **point2** определяет радиус сферической поверхности, рис. 4: .. figure:: /MODELER/SURFACE_CONSTRUCTION_METHODS/pictures/M.5.1.4.png :width: 12cm :align: center .. rst-class:: fig-caption Рис. 4 Сферическая поверхность описана в параграфе :ref:`Сферическая поверхность MbSphereSurface `. При построении поверхности тора точка **point0** определяет центр тора, в котором располагается начало локальной системы координат. Ось **axisX** локальной системы координат поверхности направлена из точки **point0** в точку **point1**. Точка **point2** вместе с предыдущими точками определяет плоскость, в которой располагаются оси **axisX** и **axisZ** локальной системы координат поверхности. Расстояние между точками **point0** и **point1** определяет больший радиус тора, расстояние между точками **point1** и **point2** определяет меньший радиус тора, рис. 5: .. figure:: /MODELER/SURFACE_CONSTRUCTION_METHODS/pictures/M.5.1.5.png :width: 12cm :align: center .. rst-class:: fig-caption Рис. 5 Поверхность тора описана в параграфе :ref:`Поверхность тора MbTorusSurface `. В тестовом приложении *test.exe* построение элементарной поверхности по заданным точкам выполняется командой меню «Создать → Поверхность → Элементарную».