Геометрические типы данных представляют двумерные пространственные объекты. Таблица 2.5.20 содержит сведения о геометрических типах, доступных в Digital Q.DataBase.
Таблица 2.5.20. Геометрические типы
| Имя | Размер | Описание | Представление |
|---|---|---|---|
point | 16 байт | Точка на плоскости | (x,y) |
line | 24 байта | Бесконечная прямая | {A,B,C} |
lseg | 32 байта | Конечный отрезок прямой | [(x1,y1),(x2,y2)] |
box | 32 байта | Прямоугольник | (x1,y1),(x2,y2) |
path | 16+16n байт | Замкнутый контур (аналогично многоугольнику) | ((x1,y1),...) |
path | 16+16n байт | Разомкнутый контур | [(x1,y1),...] |
polygon | 40+16n байт | Многоугольник (аналогичен замкнутому контуру) | ((x1,y1),...) |
circle | 24 байта | Окружность | <(x,y),r> (координаты центра и радиус) |
Для всех этих типов отдельные координаты хранятся как
double precision (float8) числа.
Для выполнения различных геометрических операций, таких как масштабирование, перенос, поворот и определение пересечений, доступен широкий набор функций и операторов. Они описаны в Раздел 2.6.11.
Точки являются фундаментальным двумерным строительным блоком для геометрических типов. Значения типа point задаются с использованием одного из следующих вариантов синтаксиса:
(x,y)x,y
где x и y — соответствующие
координаты, представленные в виде чисел с плавающей точкой.
Для вывода точек используется первый вариант синтаксиса.
Прямые описываются линейным
уравнением Ax + By + C = 0,
где A и B не равны нулю одновременно. Значения
типа line вводятся и выводятся в следующем формате:
{ A, B, C }
Для ввода также можно использовать любой из следующих форматов:
[ (x1,y1) , (x2,y2) ] ( (x1,y1) , (x2,y2) ) (x1,y1) , (x2,y2)x1,y1,x2,y2
где
(
и
x1,y1)(
— это две различные точки на прямой.
x2,y2)
Отрезки представляются парами точек, являющихся концами отрезка. Значения типа lseg задаются с помощью любого из следующих вариантов синтаксиса:
[ (x1,y1) , (x2,y2) ] ( (x1,y1) , (x2,y2) ) (x1,y1) , (x2,y2)x1,y1,x2,y2
где
(
и
x1,y1)(
являются конечными точками отрезка.
x2,y2)
Отрезки выводятся с использованием первого синтаксиса.
Прямоугольники представляются парами точек, которые являются противоположными углами прямоугольника. Значения типа box задаются с помощью любого из следующих синтаксисов:
( (x1,y1) , (x2,y2) ) (x1,y1) , (x2,y2)x1,y1,x2,y2
где
(
и
x1,y1)(
являются любыми двумя противоположными углами прямоугольника.
x2,y2)
Прямоугольники выводятся с использованием второго синтаксиса.
При вводе можно указать любые два противоположных угла, но значения будут автоматически переупорядочены для сохранения координат верхнего правого и нижнего левого углов именно в таком порядке.
Пути представляются списками соединенных точек. Пути могут быть открытыми, в котором первая и последняя точки в списке считаются не соединенными, или замкнутыми, в которых первая и последняя точки считаются связанными.
Значения типа path задаются с помощью любого из следующих синтаксисов:
[ (x1,y1) , ... , (xn,yn) ] ( (x1,y1) , ... , (xn,yn) ) (x1,y1) , ... , (xn,yn) (x1,y1, ... ,xn,yn)x1,y1, ... ,xn,yn
где точки являются конечными точками сегментов линий, составляющих путь. Квадратные скобки ([]) обозначают
разомкнутый путь, в то время как круглые скобки (()) обозначают замкнутый путь. Когда внешние круглые скобки опущены, как в вариантах синтаксиса с третьего по пятый, путь считается замкнутым.
Пути выводятся с использованием первого или второго синтаксиса, в зависимости от ситуации.
Многоугольники представляются списками точек (вершинами многоугольника). Многоугольники очень похожи на замкнутые пути; основное семантическое различие заключается в том, что многоугольник включает в себя внутреннюю область, в то время как путь — нет.
Важное различие в реализации между многоугольниками и путями заключается в том, что внутреннее представление многоугольника включает его минимальный ограничивающий прямоугольник. Это ускоряет выполнение определенных операций поиска, хотя вычисление ограничивающего прямоугольника создает дополнительные накладные расходы при создании новых многоугольников.
Значения типа polygon задаются с помощью любого из следующих вариантов синтаксиса:
( (x1,y1) , ... , (xn,yn) ) (x1,y1) , ... , (xn,yn) (x1,y1, ... ,xn,yn)x1,y1, ... ,xn,yn
где точки являются конечными точками отрезков, образующих границу многоугольника.
Многоугольники выводятся в первом формате синтаксиса.
Окружности представляются центральной точкой и радиусом.
Значения типа circle задаются с помощью любого из следующих вариантов синтаксиса:
< (x,y) ,r> ( (x,y) ,r) (x,y) ,rx,y,r
где
(
является центральной точкой, а x,y)r параметр является радиусом
окружности.
Окружности выводятся в первом формате синтаксиса.