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

기하학적 유형배트맨 토토, 상자, lseg, 라인, 경로, 다각형다음에 표시된 다양한 기본 지원 함수 및 연산자 집합이 있습니다.표 9.35, 표 9.36표 9.37.

표 9.35. 기하학적 연산자

운영자

설명

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

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

상자 '(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)

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

객체 사이의 거리를 계산합니다. 다음을 제외한 모든 기하학적 유형에 사용 가능합니다.다각형, 모든 조합에 대해다른 기하학적 유형과 다음과 같은 추가 유형 쌍의 경우: (상자, 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.36. 기하학적 함수

기능

설명

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

계산 영역. 사용 가능 대상:상자, 경로, . 에이경로입력을 닫아야 합니다. 그렇지 않으면 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.37. 기하학적 유형 변환 함수

기능

설명

상자 ( ) → 상자

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

상자(원 '<(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개의 배열로 처리될 수 있습니다.배트맨 토토값.

수정 사항 제출

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