## Представление геометрических объектов Трехмерный геометрический решатель GCM работает с определенным представлением данных геометрических объектов, проиллюстрированной в таблице 1. Все объекты выражены в координатах точек, векторов и чисел (скаляров), записанных в определенной для каждого типе форме. ::::{only} html Таблица 1 – Представление геометрических объектов :::{list-table} :header-rows: 1 :widths: 25 40 35 * - **Тип геометрии** - **Изображение** - **Кортеж и его значения** * - Точка - - \ – декартовы координаты точки * - Прямая - :::{figure} /SOLVER/THREE-DIMENSIONAL_GEOMETRIC_SOLVER/pictures/S.6.8.1_Line.png :width: 5cm :align: center ::: - \ O – точка прямой; Z – направляющий вектор прямой. * - Плоскость - :::{figure} /SOLVER/THREE-DIMENSIONAL_GEOMETRIC_SOLVER/pictures/S.6.8.1_Plane.png :width: 5cm :align: center ::: - \ O – точка плоскости; Z – нормальный вектор плоскости. * - Цилиндр - :::{figure} /SOLVER/THREE-DIMENSIONAL_GEOMETRIC_SOLVER/pictures/S.6.8.1_Cylinder.png :width: 5cm :align: center ::: - \ O – точка на оси конуса; Z – направляющий вектор оси; R – радиус цилиндра. * - Конус - :::{figure} /SOLVER/THREE-DIMENSIONAL_GEOMETRIC_SOLVER/pictures/S.6.8.1_Cone.png :width: 5cm :align: center ::: - \ O – центр нижнего сечения конуса; Z – направляющий вектор оси; R {sub}`A`, R {sub}`B` – радиусы нижнего и верхнего сечений конуса, высота которого принимается равной 1. * - Сфера - :::{figure} /SOLVER/THREE-DIMENSIONAL_GEOMETRIC_SOLVER/pictures/S.6.8.1_Sphere.png :width: 5cm :align: center ::: - \ O – центр сферы; R – радиус сферы. * - Тороид - :::{figure} /SOLVER/THREE-DIMENSIONAL_GEOMETRIC_SOLVER/pictures/S.6.8.1_Torus.png :width: 5cm :align: center ::: - \ * - Окружность - :::{figure} /SOLVER/THREE-DIMENSIONAL_GEOMETRIC_SOLVER/pictures/S.6.8.1_Circle.png :width: 5cm :align: center ::: - \ O – центр окружности; Z – направление оси окружности; R – радиус окружности. * - Локальная система координат - :::{figure} /SOLVER/THREE-DIMENSIONAL_GEOMETRIC_SOLVER/pictures/S.6.8.1_LSK.png :width: 5cm :align: center ::: - \ O – точка начала ЛСК; Z X Y – тройка ортов ЛСК. ::: :::: | Записи всех перечисленных геометрических объектов можно унифицировать в виде кортежа значений: \<$O Z X Y R_A R_B$\> где четверка значений O Z X Y -- задает размещение объекта в пространстве, а именно его ЛСК, заданное точкой начала СК и тремя осям Z, X, Y, а два скалярных значения $R_A$, $R_B$ задают параметры радиусных объектов, таких как окружность, цилиндр, конус, тороид, сфера. Считается, что геометрический объект любого типа имеет ассоциированную с ним локальную систему координат. Даже точка или сфера может избыточно представлена в виде ЛСК, для которых безразлично направление осей Z, X, Y, но имеют значение координаты точки начала O. Аналогично плоскость имеет свою ЛСК, начало которой задает положение плоскости, а ось Z задает нормаль плоскости. При этом значения осей X, Y для плоскости игнорируются. В программном интерфейсе трехмерного решателя унифицированная форма записи в виде \<$O Z X Y R_A R_B$\> используется в структуре GCM_g\_record, поля данных которой приведены в таблице 2: Таблица 2 - Описание полей данных структуры GCM_g\_record. | Тип данных | Поле данных | Интерпретация (геометрический смысл разъясняется в таблице 31.8.1.) | |:------------|:------------|:-------------------------------------------------------------------------------------------------------------------------------| | GCM_g\_type | type | дескриптор системы ограничений | | GCM_point | origin | Точка позиционирования геометрического объекта (начало ЛСК, центр окружности или сферы и т.д.) | | GCM_vec3d | axisZ | Ось «Z» локальной системы координат (например, в случае прямой ось axisZ -- это её направляющий вектор). | | | axisX | Ось «X» локальной системы координат | | | axisY | Ось «Y» локальной системы координат | | double | radiusA | Задает радиус в случае окружности, сферы или цилиндра, для конуса задает радиус основания, для тора задает \"Большой\" радиус. | | | radiusB | Задает \"Малый\" радиус в случае тора или конуса | GCM_g\_record обобщает запись любой геометрии, поэтому в зависимости от типа геометрии некоторые поля данных GCM_g\_record могут не использоваться. Например, поля axisX, axisY нужны только для случая type = GCM_LCS, а для таких объектов, как плоскость, цилиндр, тор не имеют значения. Поле axisZ не используется для точки, и сферы, однако в остальных случаях она задает ориентацию объекта в пространстве. В API решателя GCM предусмотрены вспомогательные функции **GCM_Point**, **GCM_Line**, **GCM_Plane**, **GCM_Cone**, **GCM_Cylinder**, **GCM_Circle**, **GCM_Torus**, **GCM_Sphere**, **GCM_SolidLCS**, позволяющие правильно заполнить структуру GCM_g\_record. Подробнее о данных функциях см. параграф [Добавление и удаление геометрических объектов](./Adding_and_deleting_geometric_objects.md).