기하학적 유형점, 상자, lseg, 라인, 경로, 다각형및원다음에 표시된 다양한 기본 지원 함수 및 연산자 세트가 있습니다.표 9.33, 표 9.34및표 9.35.
참고하세요“동일”스포츠 토토,~=는 일반적인 평등 개념을 나타냅니다.포인트, 상자, 다각형및원유형. 이러한 유형 중 일부에는=스포츠 토토이지만=동일한 비교지역전용. 다른 스칼라 비교 스포츠 토토(<=등) 마찬가지로 이러한 유형의 영역을 비교합니다.
표 9.33. 기하학적 연산자
| 운영자 | 설명 | 예 |
|---|---|---|
+ |
번역 | 상자 '((0,0),(1,1))' + 점 '(2.0,0)' |
- |
번역 | 상자 '((0,0),(1,1))' - 점 '(2.0,0)' |
* |
크기 조정/회전 | 상자 '((0,0),(1,1))' * 포인트 '(2.0,0)' |
/ |
크기 조정/회전 | 상자 '((0,0),(2,2))' / 포인트 '(2.0,0)' |
# |
교점 또는 교차점 | 상자 '((1,-1),(-1,1))' # 상자 '((1,1),(-2,-2))' |
# |
경로 또는 다각형의 점 수 | # 경로 '((1,0),(0,1),(-1,0))' |
@-@ |
길이 또는 둘레 | @-@ 경로 '((0,0),(1,0))' |
@@ |
센터 | @@ 원 '((0,0),10)' |
## |
두 번째 피스포츠 토토의 첫 번째 피스포츠 토토와 가장 가까운 지점 | 포인트 '(0,0)' ## lseg '((2,0),(0,2))' |
<- |
사이의 거리 | 원 '((0,0),1)' <- 원 '((5,0),1)' |
&& |
겹침? (한 가지 공통점이 이를 사실로 만듭니다.) | 상자 '((0,0),(1,1))' && 상자 '((0,0),(2,2))' |
<< |
완전히 다음 중 하나입니까? | 원 '((0,0),1)' << 원 '((5,0),1)' |
|
엄격히 옳은가요? | 원 '((5,0),1)' 원 '((0,0),1)' |
&< |
오른쪽으로 확장되지 않습니까? | 상자 '((0,0),(1,1))' &< 상자 '((0,0),(2,2))' |
& |
왼쪽으로 확장되지 않습니까? | 박스 '((0,0),(3,3))' & 박스 '((0,0),(2,2))' |
<<| |
엄격히 아래에 해당합니까? | 상자 '((0,0),(3,3))' <<| 상자 '((3,4),(5,5))' |
| |
엄격히 위에 있습니까? | 상자 '((3,4),(5,5))' | 상자 '((0,0),(3,3))' |
&<| |
위로 확장되지 않습니까? | 상자 '((0,0),(1,1))' &<| 상자 '((0,0),(2,2))' |
|& |
아래로 확장되지 않습니까? | 상자 '((0,0),(3,3))' |& 상자 '((0,0),(2,2))' |
<^ |
아래에 있습니까(터치 가능)? | 원 '((0,0),1)' <^ 원 '((0,5),1)' |
^ |
위(접촉 허용)입니까? | 원 '((0,5),1)' ^ 원 '((0,0),1)' |
?# |
교차? | lseg '((-1,0),(1,0))' ?# 상자 '((-2,-2),(2,2))' |
?- |
수평인가요? | ?- lseg '((-1,0),(1,0))' |
?- |
수평으로 정렬되어 있습니까? | 포인트 '(1,0)' ?- 포인트 '(0,0)' |
?| |
수직인가요? | ?| lseg '((-1,0),(1,0))' |
?| |
수직으로 정렬되어 있나요? | 포인트 '(0,1)' ?| 포인트 '(0,0)' |
?-| |
수직인가요? | lseg '((0,0),(0,1))' ?-| lseg '((0,0),(1,0))' |
?|| |
병렬인가요? | lseg '((-1,0),(1,0))' ?|| lseg '((-1,2),(1,2))' |
@ |
포함? | 원 '((0,0),2)' @ 포인트 '(1,1)' |
<@ |
다음에 포함되어 있습니까? | 포인트 '(1,1)' <@ 원 '((0,0),2)' |
~= |
같은데요? | 다각형 '((0,0),(1,1))' ~= 다각형 '((1,1),(0,0))' |
이전PostgreSQL8.2, 봉쇄 연산자@그리고<@각각 호출되었습니다~그리고@. 이러한 이름은 계속 사용할 수 있지만 더 이상 사용되지 않으며 결국 제거될 예정입니다.
표 9.34. 기하학적 함수
| 기능 | 반환 유형 | 설명 | 예 |
|---|---|---|---|
|
배정밀도 |
지역 | 면적(상자 '((0,0),(1,1))') |
|
점 |
중심 | center(box '((0,0),(1,2))') |
|
배정밀도 |
원의 직경 | 직경(원 '((0,0),2.0)') |
|
배정밀도 |
상자의 수직 크기 | 높이(상자 '((0,0),(1,1))') |
|
부울 |
닫힌 길? | isclosed(경로 '((0,0),(1,1),(2,0))') |
|
부울 |
열린 길이요? | isopen(경로 '[(0,0),(1,1),(2,0)]') |
|
배정밀도 |
길이 | 길이(경로 '((-1,0),(1,0))') |
|
int |
포인트 수 | npoints(경로 '[(0,0),(1,1),(2,0)]') |
|
int |
포인트 수 | npoints(다각형 '((1,1),(0,0))') |
|
경로 |
경로를 닫힌 경로로 변환 | pclose(경로 '[(0,0),(1,1),(2,0)]') |
|
경로 |
경로를 열기로 변환 | popen(경로 '((0,0),(1,1),(2,0))') |
|
배정밀도 |
원의 반경 | 반경(원 '((0,0),2.0)') |
|
배정밀도 |
상자의 가로 크기 | 너비(상자 '((0,0),(1,1))') |
표 9.35. 기하학적 유형 변환 함수
a의 두 구성요소 번호에 액세스할 수 있습니다.포인트포인트가 인덱스 0과 1을 가진 배열인 것처럼 보입니다. 예를 들어, ift.p은포인트그럼 열t에서 p[0] 선택X 좌표를 검색하고업데이트 t SET p[1] = ...Y 좌표를 변경합니다. 같은 방식으로 유형의 값은상자또는lseg2개의 배열로 처리될 수 있습니다.점값.
그지역함수는 해당 유형에 대해 작동합니다.상자, 원및경로.지역함수는 다음에서만 작동합니다.경로포인트가 있는 경우 데이터 유형경로교차하지 않습니다. 예를 들어,경로 '((0,0),(0,1),(2,1),(2,2),(1,2),(1,0),(0,0))'::PATH작동하지 않습니다. 그러나 다음은 시각적으로 동일합니다.경로 '((0,0),(0,1),(1,1),(1,2),(2,2),(2,1),(1,1),(1,0),(0,0))'::PATH작동합니다. 교차와 비교차의 개념인 경우경로혼란스럽습니다. 위의 두 가지를 모두 그리세요.경로모눈종이 위에 나란히 있습니다.