기하학적 유형포인트
, 젠 토토
, lseg
, line
, Path
, Polygon
및Circle
큰 기본 지원 기능 및 연산자 세트가 있습니다.표 9.34, 표 9.35및표 9.36.
“동일”운영자,~ =
, 일반적인 평등 개념을 나타냅니다포인트
, 젠 토토
, Polygon
및Circle
유형. 이러한 유형 중 일부는도 있습니다.=
운영자이지만=
동등한 비교영역만. 다른 스칼라 비교 연산자 (<=
등) 마찬가지로 이러한 유형의 영역을 비교합니다.
표 9.34. 기하학적 운영자
운영자 | 설명 | example |
---|---|---|
+ |
번역 | 젠 토토 '((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))' / Point '(2.0,0)' |
# |
교차점의 포인트 또는 상자 | 젠 토토 '((1, -1), (-1,1))' # 젠 토토 '((1,1), (-2, -2))' |
# |
경로 또는 다각형의 점수 | # path '((1,0), (0,1), (-1,0))' |
@-@ |
길이 또는 둘레 | @-@ path '((0,0), (1,0))' |
@@ |
센터 | @@ Circle '((0,0), 10)' |
## |
두 번째 피연산자에서 첫 번째 피연산자에 가장 가까운 지점 | 포인트 '(0,0)'## lseg '((2,0), (0,2))' |
<-- |
거리의 거리 | Circle '((0,0), 1)'<- Circle '((5,0), 1)' |
&& |
오버랩? (공통점이 사실입니다.) | box '((0,0), (1,1))'&& box '((0,0), (2,2))' |
<< |
엄격하게 왼쪽에 있습니까? | Circle '((0,0), 1)'<< circle '((5,0), 1)' |
|
엄격하게 맞습니까? | Circle '((5,0), 1)' circle '((0,0), 1)' |
&< |
오른쪽으로 확장되지 않습니까? | 젠 토토 '((0,0), (1,1))'& <젠 토토 '((0,0), (2,2))' |
& |
왼쪽으로 확장되지 않습니까? | 젠 토토 '((0,0), (3,3))'& box '((0,0), (2,2))' |
<< | |
엄격하게 아래에 있습니까? | box '((0,0), (3,3))'<< | 젠 토토 '((3,4), (5,5))' |
| |
엄격하게 위에 있습니까? | 젠 토토 '((3,4), (5,5))'| 젠 토토 '((0,0), (3,3))' |
& <| |
위에 확장되지 않습니까? | 젠 토토 '((0,0), (1,1))'& <| 상자 '(0,0), (2,2))' |
| & |
아래에 확장되지 않습니까? | box '((0,0), (3,3))'| & box '((0,0), (2,2))' |
<^ |
아래입니다 (터치 허용)? | Circle '((0,0), 1)'<^ Circle '((0,5), 1)' |
^ |
위입니다 (만지기 허용)? | Circle '((0,5), 1)'^ Circle '((0,0), 1)' |
?# |
교차? | lseg '((-1,0), (1,0))'?# box '((-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))' |
@ |
포함? | Circle '((0,0), 2)' @ Point '(1,1)' |
<@ |
포함 또는 on? | 포인트 '(1,1)'<@ circle '((0,0), 2)' |
~ = |
동일? | 다각형 '((0,0), (1,1))'~ = 다각형 '((1,1), (0,0))' |
전PostgreSQL8.2, 격리 연산자@
and<@
각각~
and@
. 이 이름은 여전히 사용할 수 있지만 더 이상 사용되지 않으며 결국 제거됩니다.
표 9.35. 기하학적 기능
기능 | 반환 유형 | 설명 | example |
---|---|---|---|
|
이중 정밀 |
지역 | Area (젠 토토 '(0,0), (1,1))') |
|
포인트 |
센터 | 센터 (젠 토토 '(0,0), (1,2))') |
|
이중 정밀 |
원의 직경 | 직경 (원 '((0,0), 2.0)') |
|
이중 정밀 |
상자의 수직 크기 | 높이 (상자 '((0,0), (1,1))') |
|
부울 |
닫힌 경로? | isclosed (경로 '((0,0), (1,1), (2,0))') |
|
부울 |
열린 경로? | Isopen (Path '[(0,0), (1,1), (2,0)]') |
|
이중 정밀도 |
길이 | 길이 (경로 '((-1,0), (1,0))') |
|
int |
포인트 수 | npoints (경로 '[(0,0), (1,1), (2,0)]') |
|
int |
포인트 수 | npoints (다각형 '((1,1), (0,0))') |
|
PATH |
폐쇄로 경로 변환 | pclose (Path '[(0,0), (1,1), (2,0)]') |
|
PATH |
개방으로 경로 변환 | Popen (Path '((0,0), (1,1), (2,0))') |
|
이중 정밀도 |
원의 반경 | RADIUS (Circle '((0,0), 2.0)') |
|
이중 정밀 |
상자의 수평 크기 | 너비 (젠 토토 '((0,0),))') |
표 9.36. 기하학적 유형 변환 기능
a의 두 구성 요소 번호에 액세스 할 수 있습니다.포인트
요점이 인덱스 0과 1이있는 배열 인 것처럼. 예를 들어, ifT.P
is포인트
칼럼t에서 p [0]을 선택하십시오
x 좌표를 검색하고업데이트 t 세트 p [1] = ... ...
y 좌표를 변경합니다. 같은 방식으로 유형의 값젠 토토
또는LSEG
|포인트
값.
the지역
함수는 유형에 대해 작동합니다젠 토토
, Circle
및PATH
. 그만큼지역
함수는에서만 작동합니다.Path
데이터 유형의 지점 인 경우PATH
intersecting이 없습니다. 예를 들어,PATH
'((0,0), (0,1), (2,1), (2,2), (1,2), (1,0), (0,0))':: path
작동하지 않습니다. 그러나 다음은 시각적으로 동일합니다PATH
'((0,0), (0,1), (1,1), (1,2), (2,2), (2,1), (1,1), (1,0), (0,0))':: PATH
작동합니다. 교차와 비 연락의 개념 인 경우PATH
혼란스럽고, 위의 두 가지를 모두 그리십시오PATH
그래프 용지에 나란히.