Các kiểu hình học point, box, lseg, line, path, polygon, circle có nhiều hàm và toán tử hỗ trợ nguyên gốc, được trình bày trong các Bảng 2.2, Bảng 2.3, và Bảng 2.4.
Toán tử Mô tả Sử dụng
+ dịch chuyển box ‟((0,0),(1,1))‟+ point ‟(2.0,0)‟
- dịch chuyển box ‟((0,0),(1,1))‟ - point ‟(2.0,0)‟
* Scaling/rotation box ‟((0,0),(1,1))‟ * point ‟(2.0,0)‟ / Scaling/rotation box ‟((0,0),(2,2))‟ / point ‟(2.0,0)‟
# Phần giao nhau ‟((1,-1),(-1,1))‟ #‟((1,1),(-1,-1))‟
# số đỉnh của một path hay polygon # ‟((1,0),(0,1),(-1,0))‟
## điểm gần nhất point ‟(0,0)‟ ##
lseg ‟((2,0),(0,2))‟ && Overlaps? box ‟((0,0),(1,1))‟ &&
box ‟((0,0),(2,2))‟ &< Overlaps bên trái ? box ‟((0,0),(1,1))‟ &<
box ‟((0,0),(2,2))‟ &> Overlaps bên phải ? box ‟((0,0),(3,3))‟ &>
box ‟((0,0),(2,2))‟ <-> Khoảng cách ? circle ‟((0,0),1)‟ <->
circle ‟((5,0),1)‟ << Ở về bên trái ? circle ‟((0,0),1)‟ <<
circle ‟((5,0),1)‟
<^ Ở bên dưới ? circle ‟((0,0),1)‟ <^
circle ‟((0,5),1)‟ >> Ở về bên phải ? circle ‟((5,0),1)‟ >>
circle ‟((0,0),1)‟
>^ Ở bên trên ? circle ‟((0,5),1)‟ >^
circle ‟((0,0),1)‟ ?# có cắt nhau hay đè nhau lseg ‟((-1,0),(1,0))‟ ?#
box ‟((-2,-2),(2,2))‟
?- là nằm ngang ? point ‟(1,0)‟ ?- point ‟(0,0)‟
?-| là vuông góc ? lseg ‟((0,0),(0,1))‟ ?-|
lseg ‟((0,0),(1,0))‟
@-@ độ dài hay chu vi @-@ path ‟((0,0),(1,0))‟
?| là thẳng đứng ? point ‟(0,1)‟ ?| point ‟(0,0)‟
?|| là song song ? lseg ‟((-1,0),(1,0))‟ ?||
lseg ‟((-1,2),(1,2))‟
@ chứa trong hay nằm trên point ‟(1,1)‟ @ circle ‟((0,0),2)‟
@@ Ở tâm của @@ circle ‟((0,0),10)‟
~= Same as polygon ‟((0,0),(1,1))‟ ~= polygon
‟((1,1),(0,0))‟
Nguyên mẫu Kiểu giá trị trả về
Mô tả Ví dụ
area(object) double
precision diện tích của area(box‟((0,0),(1,1))‟)
box(box,box) box giao của hai box box(box‟((0,0),(1,1))‟,box‟((0.5,0 .5),(2,2))‟)
center(object) point tâm của center(box‟((0,0),(1,2))‟) diameter(circle) double precision đường kính của vòng tròn diameter(circle‟((0,0),2.0)‟) height(box) double precision
chiều cao của box
height(box‟((0,0),(1,1))‟) isclosed(path) boolean là đường đóng
kín ?
isclosed(path‟((0,0),(1,1),(2,0))‟) isopen(path) boolean là đường hở ? isopen(path‟[(0,0),(1,1),(2,0)]‟) length(object) double
precision
độ dài của length(path‟((-1,0),(1,0))‟) npoints(path) integer số đỉnh của npoints(path‟[(0,0),(1,1),(2,0)]‟) npoints(polygon) integer số đỉnh của npoints(polygon‟((1,1),(0,0))‟)
pclose(path) path chuyển path
thành đóng
pclose(path‟[(0,0),(1,1),(2,0)]‟)
popen(path) path chuyển path
thành hở popen(path‟((0,0),(1,1),(2,0))‟) radius(circle) double precision bán kính radius(circle ‟((0,0),2.0)‟) width(box) double
precision chiều ngang width(box‟((0,0),(1,1))‟)
Nguyên mẫu Kiểu dữ liệu trả về
Mô tả Ví dụ
box(circle) box circle -> box box(circle‟((0,0),2.0)‟) box(point,point) box points -> box box(point, point‟(1,1)‟) box(polygon) box polygon -> box box(polygon‟((0,0),(1,1),(2,0)
)‟)
circle(box) circle box -> circle circle(box‟((0,0),(1,1))‟) circle(point,double
precision)
circle point, number -> circle
circle(point‟(0,0)‟,2.0)
lseg(box) lseg đường chéo box
-> lseg
lseg(box‟((-1,0),(1,0))‟) lseg(point,point) lseg 2 điểm -> lseg lseg(point‟(-
1,0)‟,point‟(1,0)‟)
path(polygon) point polygon -> path path(polygon‟((0,0),(1,1),(2,0 ))‟)
point(circle) point vòng tròn -> tâm
của point(circle‟((0,0),2.0)‟)
point(lseg,lseg) point giao điểm point(lseg‟((-
1,0),(1,0))‟,lseg‟((-2,- 2),(2,2))‟)
point(polygon) point đa giác ->
tâm của nó 0))‟) point(polygon‟((0,0),(1,1),(2, polygon(box) polygon box -> polygon polygon(box‟((0,0),(1,1))‟) polygon(circle) polygon circle ->
polygon 12 đỉnh
polygon(circle ‟((0,0),2.0)‟) polygon(npts,circle) polygon cirle -> polygon
n đỉnh
polygon(12, circle‟((0,0),2.0)‟) polygon(path) polygon path -> polygon polygon(path
‟((0,0),(1,1),(2,0))‟)
Bảng 2.4. Các hàm chuyển đổi hình học
Có thể để truy nhập hai tọa độ thành phần của một điểm như thể nó là một mảng với chỉ số 0, 1. Cho ví dụ, nếu t.p là một cột kiểu điểm (point) thì câu lệnh
SELECT p[0] FROM t Sẽ lấy ra tọa độ X, câu lệnh
UPDATE t SET p[1] = ... sẽ sửa đổi tọa độ Y.