Построение правильного многоугольника

Функция

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.

При успешном завершении работы функция возвращает rt_Success, в противном случае функция возвращает код ошибки из перечисления 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.

Построенная кривая будет замкнутой ломаной линией, описанной в подразделе Ломаная линия MbPolyline3D (для vertexCount >= 3). На рис. 1 приведён вписанный в окружность правильный многоугольник, а на рис. 2 приведён описанный вокруг окружности правильный многоугольник:

../../../../_images/M.3.5.1.png

Рис. 1

../../../../_images/M.3.5.2.png

Рис. 2