Геометрические типы
Геометрические типы данных представляют собой объекты в двумерном пространстве. В Таблице 20 перечислены геометрические типы, существующие в QHB.
Таблица 20. Геометрические типы
Имя | Размер | Описание | Представление |
---|---|---|---|
point | 16 байт | Точка на плоскости | (x,y) |
line | 32 байта | Бесконечная прямая | {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> (центр окружности и радиус) |
Для выполнения различных геометрических операций, таких как масштабирование, перемещение, вращение и определение пересечений QHB предоставляет широкий спектр функций и операторов. Они рассматриваются в разделе Геометрические функции и операторы.
Точки
Точки являются основной двумерной структурной единицей для геометрических типов. Значения типа 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 ), r
x, y , r
где (x,y) — это центральная точка, а r — радиус окружности.
Выводятся круги в первом формате.