.. role:: blue :class: blue Построение правильного многоугольника ====================================== .. _Construction_of_a_Regular_Polygon: .. версия ядра: 118058 Функция .. code-block:: cpp MbResultType RegularPolygon( const MbCartPoint3D & centre, const MbCartPoint3D & point, const MbVector3D & axisZ, size_t vertexCount, bool describe, MbCurve3D *& result ) выполняет построение правильного многоугольника, вписанного в обозначенную окружность или описанного около окружности. Входными параметрами функции являются: - **centre** — центр окружности, описанной около равностороннего многоугольника или вписанной в равносторонний многоугольник; - **point** — точка на окружности; - **axisZ** — вектор, перпендикулярный плоскости окружности; - **vertexCount** — количество вершин многоугольника; - **describe** — флаг описанной или вписанной окружности (*true* — описанный многоугольник, *false* — вписанный многоугольник). Выходным параметром функции является построенная ломаная кривая **result**. При успешном завершении работы функция возвращает :blue:`rt_Success`, в противном случае функция возвращает код ошибки из перечисления :ref:`MbResultType `. Функция объявлена в файле *action_curve3d.h*. Параметры **centre**, **point** и **axisZ** определяют окружность, в которую будет вписан (**describe** = *false*) многоугольник с числом вершин **vertexCount** или вокруг которой будет описан (**describe** = *true*) многоугольник с числом вершин **vertexCount**. Центр окружности будет расположен в точке **centre**, окружность пройдёт через точку **point**, ось окружности будет параллельна вектору **axisZ**. Параметр **vertexCount** определяет число вершин правильного многоугольника: - при **vertexCount** == 0 строится окружность с центром **centre**, проходящая через **point**; - при **vertexCount** == 1 строится отрезок c крайними точками **centre** и **point**; - при **vertexCount** == 2 строится прямоугольник со сторонами, параллельными глобальным осям и с противоположными вершинами в **centre** и **point**; - при **vertexCount** >= 3 строится правильный многоугольник с заданным числом сторон, вписанный в окружность (**describe** == *false*) или описанный вокруг окружности (**describe** == *true*) с центром **centre**, проходящей через **point**. Построенная кривая будет замкнутой ломаной линией, описанной в подразделе :ref:`Ломаная линия MbPolyline3D ` (для **vertexCount** >= 3). На рис. 1 приведён вписанный в окружность правильный многоугольник, а на рис. 2 приведён описанный вокруг окружности правильный многоугольник: .. figure:: /MODELER/TWO-DIMENSIONAL_CURVE_CONSTRUCTION_METHODS/pictures/M.3.5.1.png :width: 12cm :align: center Рис. 1 .. figure:: /MODELER/TWO-DIMENSIONAL_CURVE_CONSTRUCTION_METHODS/pictures/M.3.5.2.png :width: 12cm :align: center Рис. 2