9.11. Геометрические функции и операторы#
9.11. Геометрические функции и операторы #
Геометрические типы point
, box
,
lseg
, line
, path
,
polygon
и circle
имеют большой набор
встроенных функций и операторов, показанных в таблице Таблица 9.36, Таблица 9.37 и Таблица 9.38.
Таблица 9.36. Геометрические операторы
Оператор Описание Пример(ы) |
---|
Добавляет координаты второй точки
|
Соединяет два открытых пути (возвращает NULL, если хотя бы один путь закрыт).
|
Вычитает координаты второй точки
|
Умножает каждую точку первого аргумента на вторую
|
Разделяет каждую точку первого аргумента на вторую
|
Вычисляет общую длину.
Доступно для
|
Вычисляет центральную точку.
Доступно для
|
Возвращает количество точек.
Доступно для
|
Вычисляет точку пересечения или NULL, если она отсутствует.
Доступно для типов
|
Вычисляет пересечение двух прямоугольников или возвращает NULL, если пересечения нет.
|
Вычисляет ближайшую точку к первому объекту на втором объекте.
Доступно для следующих пар типов:
(
|
Вычисляет расстояние между объектами.
Доступно для всех семи геометрических типов, для всех комбинаций
типа
|
Содержит ли первый объект второй?
Доступно для следующих пар типов:
(
|
Перевод с сохранением форматирования:
{Первый объект содержится внутри или на втором?
Доступно для следующих пар типов:
(
|
Перекрываются ли эти объекты? (Один общий точка делает это верным).
Доступно для
|
Является ли первый объект строго слева от второго?
Доступно для
|
Является ли первый объект строго правее второго?
Доступно для
|
Не распространяется ли первый объект вправо от второго?
Доступно для
|
Не распространяется ли первый объект влево от второго?
Доступно для
|
Является ли первый объект строго ниже второго?
Доступно для
|
Является ли первый объект строго выше второго?
Доступно для
|
Не распространяется ли первый объект выше второго?
Доступно для
|
Не распространяется ли первый объект ниже второго?
Доступно для
|
Первый объект ниже второго (позволяет касаться граням)?
|
Является ли первый объект выше второго (позволяет касаться граней)?
|
Эти объекты пересекаются?
Доступно для следующих пар типов:
(
|
Является ли линия горизонтальной?
|
Выровнены ли точки горизонтально (то есть, имеют одинаковую координату y)?
|
Является ли линия вертикальной?
|
Вертикально ли выровнены точки (то есть, имеют одинаковую x-координату)?
|
Являются ли линии перпендикулярными?
|
Являются ли линии параллельными?
|
Эти объекты одинаковы?
Доступно для
|
[a] “Вращение” коробки с помощью этих операторов перемещает только ее угловые точки: коробка все еще считается имеющей стороны, параллельные осям. Таким образом, размер коробки не сохраняется, как это делалось бы при настоящем вращении. |
Предостережение
Обратите внимание, что оператор “same as”, ~=
,
представляет обычное понятие равенства для типов point
,
box
, polygon
и circle
.
Некоторые геометрические типы также имеют оператор =
, но
=
сравнивает только площади.
Другие операторы сравнения скаляров (<=
и так далее),
если они доступны для этих типов, также сравнивают площади.
Примечание
Перед Tantor BE 14 точка
строго ниже/выше операторов сравнения point
<<|
point
и point
|>>
point
соответственно
назывались <^
и >^
. Эти
имена по-прежнему доступны, но устарели и в конечном итоге будут
удалены.
Таблица 9.37. Геометрические функции
Таблица 9.38. Функции преобразования геометрических типов
Возможно получить доступ к двум компонентным числам типа point
так, как если бы точка была массивом с индексами 0 и 1. Например, если t.p
- это столбец типа point
, то SELECT p[0] FROM t
извлекает координату X, а UPDATE t SET p[1] = ...
изменяет координату Y. Таким же образом, значение типа box
или lseg
может быть рассмотрено как массив из двух значений типа point
.