8.8. Геометрические типы#

8.8. Геометрические типы

8.8. Геометрические типы

Геометрические типы данных представляют двухмерные пространственные объекты. Таблица 8.20 показывает доступные геометрические типы в Tantor SE.

Таблица 8.20. Геометрические типы

ИмяРазмер хранилищаОписаниеПредставление
point16 байтТочка на плоскости(x,y)
line32 байтаБесконечная линия{A,B,C}
lseg32 байтаКонечный отрезок прямой((x1,y1),(x2,y2))
box32 байтаПрямоугольная рамка((x1,y1),(x2,y2))
path16+16n байтЗамкнутый путь (аналогично полигону)((x1,y1),...)
path16+16n байтОткрыть путь[(x1,y1),...]
polygon40+16n байтПолигон (аналогично замкнутому пути)((x1,y1),...)
circle24 байтаКруг<(x,y),r> (точка центра и радиус)

Доступен богатый набор функций и операторов для выполнения различных геометрических операций, таких как масштабирование, перевод, поворот и определение пересечений. Они объясняются в Раздел 9.11.

8.8.1. Точки

Точки - это основной двумерный строительный блок для геометрических типов. Значения типа point указываются с использованием одного из следующих синтаксисов:

( x , y )
  x , y

где x и y - соответствующие координаты, представленные в виде чисел с плавающей точкой.

Точки выводятся с использованием первого синтаксиса.

8.8.2. Линии

Линии представлены линейным уравнением 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) являются двумя разными точками на линии.

8.8.3. Линейные сегменты

Отрезки представляются парами точек, которые являются конечными точками отрезка. Значения типа lseg задаются с использованием любого из следующих синтаксисов:

[ ( x1 , y1 ) , ( x2 , y2 ) ]
( ( x1 , y1 ) , ( x2 , y2 ) )
  ( x1 , y1 ) , ( x2 , y2 )
    x1 , y1   ,   x2 , y2

где (x1,y1) и (x2,y2) являются конечными точками отрезка.

Отрезки линий выводятся с использованием первого синтаксиса.

8.8.4. Коробки

Коробки представлены парой точек, которые являются противоположными углами коробки. Значения типа box указываются с использованием любого из следующих синтаксисов:

( ( x1 , y1 ) , ( x2 , y2 ) )
  ( x1 , y1 ) , ( x2 , y2 )
    x1 , y1   ,   x2 , y2

где (x1,y1) и (x2,y2) являются любыми двумя противоположными углами прямоугольника.

Коробки выводятся с использованием второго синтаксиса.

Любые два противоположных угла можно указать на входе, но значения будут переупорядочены по необходимости для сохранения верхнего правого и нижнего левого углов, в таком порядке.

8.8.5. Пути

Пути представлены списками связанных точек. Пути могут быть открытыми, где первая и последняя точки в списке считаются несвязанными, или замкнутыми, где первая и последняя точки считаются связанными.

Значения типа path указываются с использованием одного из следующих синтаксисов:

[ ( x1 , y1 ) , ... , ( xn , yn ) ]
( ( x1 , y1 ) , ... , ( xn , yn ) )
  ( x1 , y1 ) , ... , ( xn , yn )
  ( x1 , y1   , ... ,   xn , yn )
    x1 , y1   , ... ,   xn , yn

где точки являются конечными точками отрезков линии, составляющих путь. Квадратные скобки ([]) указывают на открытый путь, а круглые скобки (()) указывают на закрытый путь. Когда внешние скобки не указаны, как в третьем до пятого синтаксисах, предполагается закрытый путь.

Пути выводятся с использованием первого или второго синтаксиса, в зависимости от ситуации.

8.8.6. Многоугольники

Полигоны представлены списками точек (вершинами полигона). Полигоны очень похожи на замкнутые пути; основное отличие заключается в том, что полигон считается включающим в себя площадь внутри него, в то время как путь - нет.

Значения типа polygon указываются с использованием любого из следующих синтаксисов:

( ( x1 , y1 ) , ... , ( xn , yn ) )
  ( x1 , y1 ) , ... , ( xn , yn )
  ( x1 , y1   , ... ,   xn , yn )
    x1 , y1   , ... ,   xn , yn

где точки являются конечными точками отрезков, составляющих границу полигона.

Многоугольники выводятся с использованием первого синтаксиса.

8.8.7. Круги

Круги представлены центральной точкой и радиусом. Значения типа circle указываются с использованием любого из следующих синтаксисов:

< ( x , y ) , r >
( ( x , y ) , r )
  ( x , y ) , r
    x , y   , r

где (x,y) является центральной точкой, а r - радиусом окружности.

Круги выводятся с использованием первого синтаксиса.