Представление геометрических объектов

Трехмерный геометрический решатель GCM работает с определенным представлением данных геометрических объектов, проиллюстрированной в таблице 1. Все объекты выражены в координатах точек, векторов и чисел (скаляров), записанных в определенной для каждого типе форме.

Таблица 1 – Представление геометрических объектов

Тип геометрии

Изображение

Кортеж и его значения

Точка

<x y z> – декартовы координаты точки

Прямая

../../../../_images/S.6.8.1_Line.png

<O Z>

O – точка прямой;

Z – направляющий вектор прямой.

Плоскость

../../../../_images/S.6.8.1_Plane.png

<O Z>

O – точка плоскости;

Z – нормальный вектор плоскости.

Цилиндр

../../../../_images/S.6.8.1_Cylinder.png

<O Z R>

O – точка на оси конуса;

Z – направляющий вектор оси;

R – радиус цилиндра.

Конус

../../../../_images/S.6.8.1_Cone.png

<O Z R A R B>

O – центр нижнего сечения конуса;

Z – направляющий вектор оси;

R A, R B – радиусы нижнего и верхнего сечений конуса, высота которого принимается равной 1.

Сфера

../../../../_images/S.6.8.1_Sphere.png

<O Z R>

O – центр сферы;

R – радиус сферы.

Тороид

../../../../_images/S.6.8.1_Torus.png

<O Z R A R B>

Окружность

../../../../_images/S.6.8.1_Circle.png

<O Z R>

O – центр окружности;

Z – направление оси окружности;

R – радиус окружности.

Локальная система координат

../../../../_images/S.6.8.1_LSK.png

<O Z X Y>

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. Подробнее о данных функциях см. параграф Добавление и удаление геометрических объектов.