9.11. 기하학적 함수 및 연산자#

기하학적 유형, 상자, lseg, 라인, 경로, 다각형다음에 표시된 다양한 기본 지원 함수 및 연산자 세트가 있습니다.표 9.36, 표 9.37표 9.38.

표 9.36. 기하학적 연산자

운영자

설명

기하학적_유형 + 배트맨 토토기하학적_유형

두 번째 좌표를 추가합니다첫 번째 인수의 각 지점에 대한 변환을 수행합니다. 사용 가능 대상:, 상자, 경로, .

상자 '(1,1),(0,0)' + 점 '(2,0)'(3,1),(2,0)

경로 + 경로경로

두 개의 열린 경로를 연결합니다(두 경로 중 하나가 닫히면 NULL을 반환합니다).

경로 '[(0,0),(1,1)]' + 경로 '[(2,2),(3,3),(4,4)]'[(0,0),(1,1),(2,2),(3,3),(4,4)]

기하학적_유형 - 기하학적_유형

두 번째 좌표를 뺍니다.배트맨 토토첫 번째 인수의 각 지점에서 변환을 수행합니다. 사용 가능 대상:, 상자, 경로, .

상자 '(1,1),(0,0)' - 점 '(2,0)'(-1,1),(-2,0)

기하학적_유형 * 기하학적_유형

첫 번째 인수의 각 점에 두 번째 인수를 곱합니다.(점을 실수부와 허수부로 표현되는 복소수로 처리하고 표준 복소 곱셈을 수행함). 두 번째를 해석하면벡터로서 이는 객체의 크기와 원점으로부터의 거리를 벡터의 길이만큼 조정하고 원점을 중심으로 벡터의 각도만큼 시계 반대 방향으로 회전시키는 것과 같습니다.x축. 사용 가능 대상:배트맨 토토, 상자,[a] 경로, .

경로 '((0,0),(1,0),(1,1))' * 배트맨 토토 '(3.0,0)'((0,0),(3,0),(3,3))

경로 '((0,0),(1,0),(1,1))' * point(cosd(45), sind(45))((0,0),​(0.7071067811865475,0.7071067811865475),​(0,1.414213562373095))

기하학적_유형 / 기하학적_유형

첫 번째 인수의 각 점을 두 번째 인수로 나눕니다.배트맨 토토(점을 실수부와 허수부로 표현되는 복소수로 처리하고 표준 복소 나눗셈을 수행함). 두 번째를 해석하면벡터로서 이는 객체의 크기와 원점으로부터의 거리를 벡터의 길이만큼 조정하고 원점을 기준으로 벡터의 각도만큼 원점을 중심으로 시계 방향으로 회전시키는 것과 같습니다.x축. 사용 가능 대상:, 상자,[a] 경로, .

경로 '((0,0),(1,0),(1,1))' / 지점 '(2.0,0)'((0,0),(0.5,0),(0.5,0.5))

경로 '((0,0),(1,0),(1,1))' / point(cosd(45), sind(45))((0,0),​(0.7071067811865476,-0.7071067811865476),​(1.4142135623730951,0))

@-@ 기하학적_유형배정밀도

전체 길이를 계산합니다. 사용 가능 대상:lseg, 경로.

@-@ 경로 '[(0,0),(1,0),(1,1)]'2

@@ 기하학적_유형

중심점을 계산합니다. 사용 가능 대상:상자, lseg, 다각형, 서클.

@@ 상자 '(2,2),(0,0)'(1,1)

# 기하학적_유형정수

배트맨 토토 수를 반환합니다. 사용 가능 대상:경로, 다각형.

# 경로 '((1,0),(0,1),(-1,0))'3

기하학적_유형 # 기하학적_유형배트맨 토토

교차점을 계산하거나, 교차점이 없으면 NULL을 계산합니다. 사용 가능 대상:lseg, 라인.

lseg '[(0,0),(1,1)]' # lseg '[(1,0),(0,1)]'(0.5,0.5)

상자 # 상자상자

두 상자의 교차점을 계산하거나, 없는 경우 NULL을 계산합니다.

상자 '(2,2),(-1,-1)' # 상자 '(1,1),(-2,-2)'(1,1),(-1,-1)

기하학적_유형 ## 기하학적_유형배트맨 토토

두 번째 개체의 첫 번째 개체에 가장 가까운 지점을 계산합니다. 다음 유형 쌍에 사용 가능: (, 상자), (, lseg), (배트맨 토토, 라인), (lseg, 상자), (lseg, lseg), (라인, lseg).

배트맨 토토 '(0,0)' ## lseg '[(2,0),(0,2)]'(1,1)

기하학적_유형 <- 기하학적_유형배정밀도

객체 사이의 거리를 계산합니다. 다음의 모든 조합에 대해 7가지 기하학적 유형 모두에 사용 가능배트맨 토토다른 기하학적 유형과 다음과 같은 추가 유형 쌍의 경우: (상자, lseg), (lseg, 라인), (다각형, ) (및 정류자의 경우).

서클 '<(0,0),1' <- 서클 '<(5,0),1'3

기하학적_유형 @ 기하학적_유형부울

첫 번째 개체에 두 번째 개체가 포함되어 있습니까? 다음 유형 쌍에 사용 가능: (상자, 배트맨 토토), (상자, 상자), (경로, ), (다각형, ), (다각형, 다각형), (, 배트맨 토토), (, ).

원 '<(0,0),2' @ 배트맨 토토 '(1,1)'t

기하학적_유형 <@ 기하학적_유형부울

첫 번째 개체가 두 번째 개체에 포함되어 있습니까, 아니면 두 번째 개체에 포함되어 있습니까? 다음 유형 쌍에 사용 가능: (배트맨 토토, 상자), (배트맨 토토, lseg), (배트맨 토토, 라인), (배트맨 토토, 경로), (배트맨 토토, 다각형), (배트맨 토토, 서클), (상자, 상자), (lseg, 상자), (lseg, 라인), (다각형, 다각형), (, ).

배트맨 토토 '(1,1)' <@ 원 '<(0,0),2't

기하학적_유형 && 기하학적_유형부울

이 개체들이 겹치나요? (한 가지 공통점이 이를 사실로 만듭니다.) 사용 가능상자, 다각형, .

박스 '(1,1),(0,0)' && 박스 '(2,2),(0,0)'t

기하학적_유형 << 기하학적_유형부울

첫 번째 개체는 두 번째 개체보다 정확히 왼쪽에 있습니까? 사용 가능 대상:, 상자, 다각형, .

서클 '<(0,0),1' << 서클 '<(5,0),1't

기하학적_유형 기하학적_유형부울

첫 번째 개체는 엄격히 두 번째 개체의 오른쪽입니까? 사용 가능 대상:, 상자, 다각형, .

서클 '<(5,0),1' 서클 '<(0,0),1't

기하학적_유형 &< 기하학적_유형부울

첫 번째 개체가 두 번째 개체의 오른쪽으로 확장되지 않습니까? 사용 가능 대상:상자, 다각형, .

박스 '(1,1),(0,0)' &< 박스 '(2,2),(0,0)'t

기하학적_유형 & 기하학적_유형부울

첫 번째 개체가 두 번째 개체의 왼쪽으로 확장되지 않습니까? 사용 가능 대상:상자, 다각형, .

박스 '(3,3),(0,0)' & 박스 '(2,2),(0,0)'t

기하학적_유형 <<| 기하학적_유형부울

첫 번째 개체는 엄격히 두 번째 개체 아래에 있습니까? 사용 가능 대상:, 상자, 다각형, .

상자 '(3,3),(0,0)' <<| 상자 '(5,5),(3,4)'t

기하학적_유형 | 기하학적_유형부울

첫 번째 개체는 엄격하게 두 번째 개체 위에 있습니까? 사용 가능 대상:배트맨 토토, 상자, 다각형, .

상자 '(5,5),(3,4)' | 상자 '(3,3),(0,0)'t

기하학적_유형 &<| 기하학적_유형부울

첫 번째 개체가 두 번째 개체 위로 확장되지 않습니까? 사용 가능 대상:상자, 다각형, .

상자 '(1,1),(0,0)' &<| 상자 '(2,2),(0,0)'t

기하학적_유형 |& 기하학적_유형부울

첫 번째 개체가 두 번째 개체 아래로 확장되지 않습니까? 사용 가능 대상:상자, 다각형, 서클.

박스 '(3,3),(0,0)' |& 박스 '(2,2),(0,0)'t

상자 <^ 상자부울

첫 번째 개체가 두 번째 개체 아래에 있습니까(가장자리가 닿을 수 있음)?

상자 '((1,1),(0,0))' <^ 상자 '((2,2),(1,1))'t

상자 ^ 상자부울

첫 번째 개체가 두 번째 개체 위에 있습니까(가장자리가 닿을 수 있도록 허용)?

상자 '((2,2),(1,1))' ^ 상자 '((1,1),(0,0))'t

기하학적_유형 ?# 기하학적_유형부울

이 개체들이 교차합니까? 다음 유형 쌍에 사용 가능: (상자, 상자), (lseg, 상자), (lseg, lseg), (lseg, 라인), (라인, 상자), (라인, 라인), (경로, 경로).

lseg '[(-1,0),(1,0)]' ?# 상자 '(2,2),(-2,-2)'t

?- 라인부울

?- lseg부울

선이 수평인가요?

?- lseg '[(-1,0),(1,0)]'t

?- 부울

점들이 수평으로 정렬되어 있습니까(즉, 동일한 y 좌표를 가지고 있습니까)?

배트맨 토토 '(1,0)' ?- 배트맨 토토 '(0,0)'t

?| 라인부울

?| lseg부울

선이 수직인가요?

?| lseg '[(-1,0),(1,0)]'f

?| 부울

점들이 수직으로 정렬되어 있습니까(즉, 동일한 x 좌표를 가지고 있습니까)?

배트맨 토토 '(0,1)' ?| 배트맨 토토 '(0,0)'t

라인 ?-| 라인부울

lseg ?-| lseg부울

선은 수직입니까?

lseg '[(0,0),(0,1)]' ?-| lseg '[(0,0),(1,0)]'t

라인 ?|| 라인부울

lseg ?|| lseg부울

선은 평행합니까?

lseg '[(-1,0),(1,0)]' ?|| lseg '[(-1,2),(1,2)]'t

기하학적_유형 ~= 기하학적_유형부울

이 개체들은 동일합니까? 사용 가능 대상:, 상자, 다각형, .

다각형 '((0,0),(1,1))' ~= 다각형 '((1,1),(0,0))'t

[a] 회전 중이러한 연산자가 있는 상자는 꼭지점만 이동합니다. 상자는 여전히 축과 평행한 측면을 갖는 것으로 간주됩니다. 따라서 상자의 크기는 실제 회전처럼 보존되지 않습니다.


주의

참고하세요동일연산자,~=은에 대한 일반적인 평등 개념을 나타냅니다., 상자, 다각형유형. 일부 기하학적 유형에는=연산자이지만=같음으로 비교지역전용. 다른 스칼라 비교 연산자(<=등), 이러한 유형에 사용 가능한 경우 마찬가지로 영역을 비교합니다.

참고

이전PostgreSQL14, 요점은 비교 연산자 바로 아래/위입니다배트맨 토토 <<| 그리고 | 각각 호출되었습니다<^그리고^. 이러한 이름은 계속 사용할 수 있지만 더 이상 사용되지 않으며 결국 제거될 예정입니다.

표 9.37. 기하학적 함수

기능

설명

지역 ( 기하학적_유형 ) → 배정밀도

계산 영역. 사용 가능 대상:상자, 경로, . 갑경로입력을 닫아야 합니다. 그렇지 않으면 NULL이 반환됩니다. 또한 만약에경로자체 교차하므로 결과가 의미가 없을 수 있습니다.

면적(상자 '(2,2),(0,0)')4

센터 ( 기하학적_유형 ) → 배트맨 토토

중심점을 계산합니다. 사용 가능 대상:상자, .

center(box '(1,2),(0,0)')(0.5,1)

대각선 ( 상자 ) → lseg

상자의 대각선을 선분으로 추출합니다(동일lseg(상자)).

대각선(상자 '(1,2),(0,0)')[(1,2),(0,0)]

직경 ( ) → 배정밀도

원의 지름을 계산합니다.

직경(원 '<(0,0),2')4

높이 ( 상자 ) → 배정밀도

상자의 수직 크기를 계산합니다.

높이(상자 '(1,2),(0,0)')2

공개됨 ( 경로 ) → 부울

경로가 닫혀 있습니까?

isclosed(경로 '((0,0),(1,1),(2,0))')t

isopen ( 경로 ) → 부울

경로가 열려 있습니까?

isopen(경로 '[(0,0),(1,1),(2,0)]')t

길이 ( 기하학적_유형 ) → 배정밀도

전체 길이를 계산합니다. 사용 가능 대상:lseg, 경로.

길이(경로 '((-1,0),(1,0))')4

n배트맨 토토 ( 기하학적_유형 ) → 정수

배트맨 토토 수를 반환합니다. 사용 가능 대상:경로, 다각형.

npoints(경로 '[(0,0),(1,1),(2,0)]')3

pclose ( 경로 ) → 경로

경로를 닫힌 형식으로 변환합니다.

pclose(경로 '[(0,0),(1,1),(2,0)]')((0,0),(1,1),(2,0))

오픈 ( 경로 ) → 경로

경로를 열린 형식으로 변환합니다.

popen(경로 '((0,0),(1,1),(2,0))')[(0,0),(1,1),(2,0)]

반경 ( ) → 배정밀도

원의 반경을 계산합니다.

반경(원 '<(0,0),2')2

경사 ( 배트맨 토토, 배트맨 토토 ) → 배정밀도

두 점을 지나는 선의 기울기를 계산합니다.

기울기(점 '(0,0)', 점 '(2,1)')0.5

( 상자 ) → 배정밀도

상자의 수평 크기를 계산합니다.

너비(상자 '(1,2),(0,0)')1


표 9.38. 기하학적 유형 변환 함수

기능

설명

상자 ( ) → 상자

원 안에 새겨진 상자를 계산합니다.

상자(원 '<(0,0),2')(1.414213562373095,1.414213562373095),​(-1.414213562373095,-1.414213562373095)

상자 ( ) → 상자

배트맨 토토를 빈 상자로 변환합니다.

상자(점 '(1,0)')(1,0),(1,0)

상자 ( 배트맨 토토, 배트맨 토토 ) → 상자

두 개의 모서리 점을 상자로 변환합니다.

box(배트맨 토토 '(0,1)', 배트맨 토토 '(1,0)')(1,1),(0,0)

상자 ( 다각형 ) → 상자

다각형의 경계 상자를 계산합니다.

box(다각형 '((0,0),(1,1),(2,0))')(2,1),(0,0)

bound_box ( 상자, 상자 ) → 상자

두 상자의 경계 상자를 계산합니다.

bound_box(박스 '(1,1),(0,0)', 박스 '(4,4),(3,3)')(4,4),(0,0)

서클 ( 상자 ) → 서클

상자를 둘러싸는 가장 작은 원을 계산합니다.

원(상자 '(1,1),(0,0)')<(0.5,0.5),0.7071067811865476

서클 ( 배트맨 토토, 배정밀도 ) → 서클

중심과 반경으로 원을 만듭니다.

원(점 '(0,0)', 2.0)<(0,0),2

( 다각형 ) →

다각형을 원으로 변환합니다. 원의 중심은 다각형 점 위치의 평균이고, 반경은 해당 중심에서 다각형 점의 평균 거리입니다.

원(다각형 '((0,0),(1,3),(2,0))')<(1,1),1.6094757082487299

라인 ( 배트맨 토토, 배트맨 토토 ) → 라인

두 점을 통과하는 선으로 변환합니다.

line(배트맨 토토 '(-1,0)', 배트맨 토토 '(1,0)'){0,-1,0}

lseg ( 상자 ) → lseg

상자의 대각선을 선분으로 추출합니다.

lseg(상자 '(1,0),(-1,0)')[(1,0),(-1,0)]

lseg ( 배트맨 토토, 배트맨 토토 ) → lseg

두 끝점에서 선분을 구성합니다.

lseg(배트맨 토토 '(-1,0)', 배트맨 토토 '(1,0)')[(-1,0),(1,0)]

경로 ( 다각형 ) → 경로

다각형을 동일한 점 목록을 가진 닫힌 경로로 변환합니다.

경로(다각형 '((0,0),(1,1),(2,0))')((0,0),(1,1),(2,0))

배트맨 토토 ( 배정밀도, 배정밀도 ) → 배트맨 토토

좌표로부터 점을 구성합니다.

점(23.4, -44.5)(23.4,-44.5)

배트맨 토토 ( 상자 ) →

상자 중심을 계산합니다.

배트맨 토토(상자 '(1,0),(-1,0)')(0,0)

배트맨 토토 ( 서클 ) → 배트맨 토토

원의 중심을 계산합니다.

점(원 '<(0,0),2')(0,0)

배트맨 토토 ( lseg ) → 배트맨 토토

선분의 중심을 계산합니다.

point(lseg '[(-1,0),(1,0)]')(0,0)

배트맨 토토 ( 다각형 ) → 배트맨 토토

다각형 중심(다각형 점 위치의 평균)을 계산합니다.

점(다각형 '((0,0),(1,1),(2,0))')(1,0.3333333333333333)

다각형 ( 상자 ) → 다각형

상자를 4점 다각형으로 변환합니다.

다각형(상자 '(1,1),(0,0)')((0,0),(0,1),(1,1),(1,0))

다각형 ( ) → 다각형

원을 12점 다각형으로 변환합니다.

다각형(원 '<(0,0),2')((-2,0),​(-1.7320508075688774,0.9999999999999999),​(-1.0000000000000002,1.7320508075688772),​(-1. 2246063538223773e-16,2),​(0.9999999999999996,1.7320508075688774),​(1.732050807568877,1.0000000000000007),​(2,2 .4492127076447545e-16),​(1.7320508075688776,-0.9999999999999994),​(1.0000000000000009,-1.7320508075688767),​(3 .673819061467132e-16,-2),​(-0.9999999999999987,-1.732050807568878),​(-1.7320508075688767,-1.0000000000000009))

다각형 ( 정수, ) → 다각형

원을 로 변환n-점 다각형.

다각형(4, 원 '<(3,0),1')((2,0),​(3,1),​(4,1.2246063538223773e-16),​(3,-1))

다각형 ( 경로 ) → 다각형

닫힌 경로를 동일한 점 목록을 가진 다각형으로 변환합니다.

다각형(경로 '((0,0),(1,1),(2,0))')((0,0),(1,1),(2,0))


a의 두 구성요소 번호에 액세스할 수 있습니다.배트맨 토토배트맨 토토가 인덱스 0과 1을 가진 배열인 것처럼 보입니다. 예를 들어, ift.p배트맨 토토열 다음t에서 p[0] 선택X 좌표를 검색하고업데이트 t SET p[1] = ...Y 좌표를 변경합니다. 같은 방식으로 유형의 값은상자또는lseg2개의 배열로 처리될 수 있습니다.배트맨 토토값.

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.