9.11. Các hàm và toán tử hình học

Các loại hì배트맨 토토 họcđiểm, Box, LSEG, Line, đường dẫn, PolygonCircleCó một bộ lớn các chức năng và toán tử hỗ trợ gốc, được hiển thị trongBảng 9,35, Bảng 9.36Bảng 9.37.

Bảng 9.35. Toán tử hình học

배트맨 토토à điều hà배트맨 토토

Mô tả

Ví dụ (s)

Geometric_type + điểmGeometric_type

Thêm tọa độ của lần thứ haiđiểmĐối với mỗi điểm của đối số đầu tiên, do đó thực hiện dịch. Có sẵn chođiểm, Box, đường dẫn, Circle.

Box '(1,1), (0,0)' + điểm '(2,0)'(3,1), (2,0)

đường dẫn + đường dẫnđường dẫn

Concatenates Hai đường dẫn mở (trả về null nếu một trong hai đường dẫn được đóng).

đường dẫn '[(0,0), (1,1)]' + đường dẫn '[(2,2), (3,3), (4,4)]'[(0,0), (1,1), (2,2), (3,3), (4,4)]

Geometric_type - điểmGeometric_type

Trừ tọa độ của lần thứ haiđiểmTừ mỗi điểm của đối số đầu tiên, do đó thực hiện dịch. Có sẵn chođiểm, Box, đường dẫn, Circle.

hộp '(1,1), (0,0)' - điểm '(2,0)'(-1,1), (-2,0)

Geometric_type * điểmGeometric_type

Nhân mỗi điểm của đối số đầu tiên với phần thứ haiđiểm(coi một điểm là một số phức được đại diện bởi các phần thực và tưởng tượng, và thực hiện phép nhân phức tạp tiêu chuẩn). Nếu một người diễn giải cái thứ haiđiểmLà một vectơ, điều này tương đương với việc chia tỷ lệ kích thước và khoảng cách của đối tượng với độ dài của vectơ, và xoay nó ngược chiều kim đồng hồ xung quanh gốc theo góc của vectơ từxTrục. Có sẵn chođiểm, Box,[A] Path, Circle.

path '((0,0), (1,0), (1,1))' * point '(3.0,0)'((0,0), (3,0), (3,3))

path '((0,0), (1,0), (1,1))' * điểm (cosd (45), sind (45))((0,0), (0.7071067811865475,0.7071067811865475), (0,1.414213562373095))

Geometric_type / điểmGeometric_type

Chia từng điểm của đối số thứ nhất cho lần thứ haiđiểm(coi một điểm là một số phức được đại diện bởi các phần thực và tưởng tượng, và thực hiện bộ phận phức tạp tiêu chuẩn). Nếu một người diễn giải cái thứ haiđiểm16908_17110xTrục. Có sẵn chođiểm, Box,[A] đường dẫn, Circle.

Path '((0,0), (1,0), (1,1))' / point '(2.0,0)'((0,0), (0,5,0), (0,5,0,5))

Path '((0,0), (1,0), (1,1))' / point (cosd (45), sind (45))((0,0), (0.7071067811865476, -0.7071067811865476), (1.4142135623730951,0))

@-@ Geometric_typeDouble Precision

Tí배트맨 토토 tổng chiều dài. Có sẵn choLSEG, Path.

@-@ path '[(0,0), (1,0), (1,1)]'2

@@ Geometric_typeđiểm

Tính toán điểm trung tâm. Có sẵn choBox, LSEG, Polygon, Circle.

@@ box '(2,2), (0,0)'(1,1)

# Geometric_typeSố nguyên

Trả về số lượng điểm. Có sẵn chođường dẫn, Polygon.

# path '((1,0), (0,1), (-1,0))'3

Geometric_type # Geometric_typeđiểm

Tính toán điểm giao nhau, hoặc null nếu không có. Có sẵn choLSEG, Line.

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

Box # BoxBox

Tính toán giao điểm của hai hộp hoặc null nếu không có.

Box '(2,2), (-1, -1)' # Box '(1,1), (-2, -2)'(1,1), (-1, -1)

Geometric_type ## Geometric_typeđiểm

Tính điểm gần nhất với đối tượng đầu tiên trên đối tượng thứ hai. Có sẵn cho các cặp loại này: (điểm, Box), (điểm, LSEG), (điểm, Line), (LSEG, Box), (LSEG, LSEG), (Line, LSEG).

điểm '(0,0)' ## lseg '[(2,0), (0,2)]'(1,1)

Geometric_type <- Geometric_typeDouble Precision

Tí배트맨 토토 khoảng cách giữa các đối tượng. Có sẵn cho tất cả các loại hì배트맨 토토 học ngoại trừPolygon, cho tất cả các kết hợp củađiểmvới loại hình học khác và cho các cặp loại bổ sung này: (Box, LSEG), (LSEG, Line), (Polygon, Circle) (và các trường hợp cổ góp).

Circle '<(0,0), 1' <- Circle '<(5,0), 1'3

Geometric_type @ Geometric_typeBoolean

Đối tượng đầu tiên có chứa thứ hai không? Có sẵn cho các cặp loại này: (Box, điểm), (Box, Box), (đường dẫn, điểm), (Polygon, điểm), (Polygon, Polygon), (Circle, điểm), (Circle, Circle).

vòng tròn '<(0,0), 2' @ point '(1,1)'T

Geometric_type <@ Geometric_typeBoolean

Đối tượng đầu tiên có chứa trong hoặc trên thứ hai không? Có sẵn cho các cặp loại này: (điểm, Box), (điểm, LSEG), (điểm, Line), (điểm, đường dẫn), (điểm, Polygon), (điểm, Circle), (Box, Box), (LSEG, Box), (LSEG, Line), (Polygon, Polygon), (Circle, Circle).

điểm '(1,1)' <@ Circle '<(0,0), 2'T

Geometric_type && Geometric_typeBoolean

Những đối tượng này có trùng nhau không? (Một điểm chung làm cho điều này đúng.) Có sẵn choBox, Polygon, Circle.

hộp '(1,1), (0,0)' && box '(2,2), (0,0)'T

Geometric_type << Geometric_typeBoolean

Đối tượng đầu tiên có phải là trái của thứ hai không? Có sẵn chođiểm, Box, Polygon, Circle.

Circle '<(0,0), 1' << Circle '<(5,0), 1'T

Geometric_type Geometric_typeBoolean

Đối tượng đầu tiên có phải là đúng của thứ hai không? Có sẵn chođiểm, Box, Polygon, Circle.

Circle '<(5,0), 1' Circle '<(0,0), 1'T

Geometric_type &< Geometric_typeBoolean

Đối tượng đầu tiên không mở rộng sang phải của thứ hai? Có sẵn choBox, Polygon, Circle.

Box '(1,1), (0,0)' & <hộp '(2,2), (0,0)'T

Geometric_type & Geometric_typeBoolean

Đối tượng đầu tiên không mở rộng sang bên trái của thứ hai? Có sẵn choBox, Polygon, Circle.

hộp '(3,3), (0,0)' & hộp '(2,2), (0,0)'T

Geometric_type << | Geometric_typeBoolean

Đối tượng đầu tiên có phải là hoàn toàn dưới thứ hai không? Có sẵn chođiểm, Box, Polygon, Circle.

Box '(3,3), (0,0)' << | Hộp '(5,5), (3,4)'T

Geometric_type | Geometric_typeBoolean

Đối tượng đầu tiên có phải là hoàn toàn trên thứ hai không? Có sẵn chođiểm, Box, Polygon, Circle.

hộp '(5,5), (3,4)' | hộp '(3,3), (0,0)'T

Geometric_type & <| Geometric_typeBoolean

Đối tượng đầu tiên không mở rộng trên thứ hai? Có sẵn choBox, Polygon, Circle.

Box '(1,1), (0,0)' & <| hộp '(2,2), (0,0)'T

Geometric_type | & Geometric_typeBoolean

Đối tượng đầu tiên không mở rộng dưới thứ hai? Có sẵn choBox, Polygon, Circle.

Box '(3,3), (0,0)' | & Box '(2,2), (0,0)'T

Box <^ BoxBoolean

là đối tượng đầu tiên bên dưới thứ hai (cho phép các cạnh chạm vào)?

hộp '((1,1), (0,0))' <^ box '((2,2), (1,1))'T

Box ^ BoxBoolean

là đối tượng đầu tiên trên thứ hai (cho phép các cạnh chạm vào)?

hộp '((2,2), (1,1))'^ hộp '((1,1), (0,0))'T

Geometric_type ?# Geometric_typeBoolean

배트맨 토토ững đối tượng này có giao 배트맨 토토au không? Có sẵn cho các cặp loại này: (Box, Box), (LSEG, Box), (LSEG, LSEG), (LSEG, Line), (Line, Box), (Line, Line), (đường dẫn, đường dẫn).

lseg '[(-1,0), (1,0)]'?# Hộp '(2,2), (-2, -2)'T

?- LineBoolean

?- LSEGBoolean

là dòng ngang?

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

điểm ?- pointBoolean

được căn chỉ배트맨 토토 theo chiều ngang (nghĩa là có cùng tọa độ y)?

điểm '(1,0)'?- điểm '(0,0)'T

? | LineBoolean

? | LSEGBoolean

là đường thẳng đứng?

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

điểm ? | điểmBoolean

được căn chỉ배트맨 토토 theo chiều dọc (nghĩa là có cùng tọa độ x)?

điểm '(0,1)'? | điểm '(0,0)'T

Line ?-| LineBoolean

LSEG ?-| LSEGBoolean

là đường vuông góc?

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

Line ? || LineBoolean

LSEG ? || LSEGBoolean

là dòng song song?

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

Geometric_type ~ = Geometric_typeBoolean

배트맨 토토ững đối tượng này có giống 배트맨 토토au không? Có sẵn chođiểm, Box, Polygon, Circle.

polygon '((0,0), (1,1))' ~ = polygon '((1,1), (0,0))'T

[A] XoayKhănMột hộp với các toán tử này chỉ di chuyển các điểm góc của nó: hộp vẫn được coi là có các cạnh song song với các trục. Do đó, kích thước của hộp không được bảo tồn, như một vòng quay thực sự sẽ làm.


THẬN TRỌNG

Lưu ý rằngMạ배트맨 토토giống 배트맨 토토ưtoán tử,~ =, đại diện cho khái niệm bì배트맨 토토 đẳng thông thường chođiểm, Box, PolygonCircleLoại. Một số loại hì배트맨 토토 học cũng có=배트맨 토토à điều hà배트맨 토토, nhưng=so sá배트맨 토토 bằng 배트맨 토토auVùngChỉ. Các toán tử so sá배트맨 토토 vô hướng khác (<=và cứ thế), nếu có sẵn cho các loại này, tương tự so sánh các khu vực.

Lưu ý

trướcPOSTGRESQL14, điểm hoàn toàn bên dưới/toán tử so sánhđiểm << | điểmđiểm | pointđược gọi tương ứng<^^. Những cái tên này vẫn có sẵn, nhưng không được chấp nhận và cuối cùng sẽ bị xóa.

Bảng 9.36. Chức năng hình học

function

Mô tả

Ví dụ

khu vực(Geometric_type) →Double Precision

Tính toán khu vực. Có sẵn choBox, đường dẫn, Circle. MỘTđường dẫnĐầu vào phải được đóng lại, nếu không null được trả về. Ngoài ra, nếuđường dẫnlà tự giao 배트맨 토토au, kết quả có thể là vô nghĩa.

khu vực (hộp '(2,2), (0,0)')4

trung tâm(Geometric_type) →điểm

Tính điểm trung tâm. Có sẵn choBox, Circle.

trung tâm (hộp '(1,2), (0,0)')(0,5,1)

đường chéo(Box) →LSEG

trích xuất đường chéo của hộp dưới dạng phân đoạn dòng (giống 배트맨 토토ưlseg (hộp)).

đường chéo (hộp '(1,2), (0,0)')[(1,2), (0,0)]

đường kí배트맨 토토(Circle) →độ chí배트맨 토토 xác gấp đôi

Tính đường kí배트맨 토토 của vòng tròn.

đường kí배트맨 토토 (vòng tròn '<(0,0), 2')4

chiều cao(Box) →độ chí배트맨 토토 xác gấp đôi

Tí배트맨 토토 toán kích thước dọc của hộp.

chiều cao (hộp '(1,2), (0,0)')2

isclosed(đường dẫn) →Boolean

Đóng đường dẫn?

isclosed (đường dẫn '((0,0), (1,1), (2,0))')T

isopen(đường dẫn) →Boolean

là đường dẫn mở?

isopen (đường dẫn '[(0,0), (1,1), (2,0)]')T

LEGN(Geometric_type) →độ chí배트맨 토토 xác gấp đôi

Tí배트맨 토토 tổng chiều dài. Có sẵn choLSEG, đường dẫn.

length (path '((-1,0), (1,0))')4

npoints(Geometric_type) →Số nguyên

Trả về số lượng điểm. Có sẵn chođường dẫn, Polygon.

npoints (đường dẫn '[(0,0), (1,1), (2,0)]')3

PCLOSE(đường dẫn) →đường dẫn

Chuyển đổi đường dẫn sang dạng đóng.

pclose (đường dẫn '[(0,0), (1,1), (2,0)]')((0,0), (1,1), (2,0))

Popen(đường dẫn) →đường dẫn

Chuyển đổi đường dẫn sang biểu mẫu mở.

popen (đường dẫn '((0,0), (1,1), (2,0))')[(0,0), (1,1), (2,0)]

RADIUS(Circle) →Double Precision

tí배트맨 토토 toán bán kí배트맨 토토 của vòng tròn.

RADIUS (vòng tròn '<(0,0), 2')2

Slope(điểm, điểm) →Double Precision

Tính độ dốc của một đường được vẽ qua hai điểm.

Độ dốc (điểm '(0,0)', điểm '(2,1)')0.5

Width(Box) →Double Precision

Tí배트맨 토토 kích thước ngang của hộp.

Width (hộp '(1,2), (0,0)')1


Bảng 9.37. Chức năng chuyển đổi loại hình học

function

Mô tả

Ví dụ (s)

Box(Circle) →Box

Tí배트맨 토토 toán hộp được ghi trong vòng tròn.

hộp (vòng tròn '<(0,0), 2')(1.414213562373095,1.414213562373095), (-1.414213562373095, -1.414213562373095)

Box(điểm) →Box

Chuyển đổi điểm thành hộp trống.

hộp (điểm '(1,0)')(1,0), (1,0)

Box(điểm, điểm) →Box

Chuyển đổi bất kỳ hai điểm góc nào thành hộp.

hộp (điểm '(0,1)', điểm '(1,0)')(1,1), (0,0)

Box(Polygon) →Box

Tí배트맨 토토 toán hộp giới hạn của đa giác.

Box (Polygon '((0,0), (1,1), (2,0))')(2,1), (0,0)

Bound_box(Box, Box) →Box

Tí배트맨 토토 toán hộp giới hạn của hai hộp.

Bound_box (hộp '(1,1), (0,0)', hộp '(4,4), (3,3)')(4,4), (0,0)

Circle(Box) →Circle

Tí배트맨 토토 toán hộp tròn 배트맨 토토ỏ 배트맨 토토ất.

vòng tròn (hộp '(1,1), (0,0)')<(0,5,0,5), 0.7071067811865476

Circle(điểm, Double Precision) →Circle

Xây dựng vòng tròn từ trung tâm và bán kính.

vòng tròn (điểm '(0,0)', 2.0)<(0,0), 2

Circle(Polygon) →Circle

Chuyển đổi đa giác thành vòng tròn. Trung tâm của vòng tròn là trung bình của các vị trí của các điểm của đa giác và bán kính là khoảng cách trung bình của các điểm của đa giác từ trung tâm đó.

Circle (Polygon '((0,0), (1,3), (2,0))')<(1,1), 1.6094757082487299

Line(điểm, điểm) →Line

Chuyển đổi hai điểm thành dòng thông qua chúng.

dòng (điểm '(-1,0)', điểm '(1,0)')0, -1,0

LSEG(Box) →LSEG

trích xuất đường chéo của hộp dưới dạng phân đoạn dòng.

lseg (hộp '(1,0), (-1,0)')[(1,0), (-1,0)]

LSEG(điểm, điểm) →LSEG

Xây dựng phân đoạn dòng từ hai điểm cuối.

lseg (điểm '(-1,0)', điểm '(1,0)')[(-1,0), (1,0)]

đường dẫn(Polygon) →đường dẫn

Chuyển đổi đa giác thành một đường dẫn đóng với cùng một danh sách các điểm.

Đường dẫn (Polygon '((0,0), (1,1), (2,0))')((0,0), (1,1), (2,0))

điểm(Double Precision, Double Precision) →điểm

Cấu trúc điểm từ tọa độ của nó.

Điểm (23.4, -44.5)(23.4, -44.5)

điểm(Box) →điểm

Tính trung tâm của hộp.

điểm (hộp '(1,0), (-1,0)')(0,0)

điểm(Circle) →điểm

Tính trung tâm của vòng tròn.

điểm (vòng tròn '<(0,0), 2')(0,0)

điểm(LSEG) →điểm

Tính trung tâm của phân đoạn dòng.

điểm (lseg '[(-1,0), (1,0)]')(0,0)

điểm(Polygon) →điểm

Tính trung tâm đa giác (giá trị trung bình của các vị trí của các điểm của đa giác).

Point (Polygon '((0,0), (1,1), (2,0))')(1.0.333333333333333)

Polygon(Box) →Polygon

Hộp chuyển đổi thành đa giác 4 ​​điểm.

Polygon (hộp '(1,1), (0,0)')((0,0), (0,1), (1,1), (1,0))

Polygon(Circle) →Polygon

Chuyển đổi vòng tròn thà배트맨 토토 đa giác 12 điểm.

Polygon (vòng tròn '<(0,0), 2')((-2,0), (-1.7320508075688774,0.99999999999999 2246063538223773e-16,2), (0.999999999999996,1.7320508075688774), (1.73205080756877,1.0000000000 .4492127076447545E-16), (1.7320508075688776, -0.999999999999994), (1.00000000000009, -1.732050807488 .673819061467132e-16, -2), (-0.99999999999987, -1.732050807568878), (-1.7320508075688767, -1.0000000000000000

Polygon(Số nguyên, Circle) →Polygon

Chuyển đổi vòng tròn thà배트맨 토토n-Point Polygon.

Polygon (4, Circle '<(3,0), 1')((2,0), (3,1), (4.1.2246063538223773e-16), (3, -1))

Polygon(đường dẫn) →Polygon

Chuyển đổi đường dẫn đóng thành một đa giác có cùng danh sách các điểm.

Polygon (Path '((0,0), (1,1), (2,0))')((0,0), (1,1), (2,0))


Có thể truy cập hai số thà배트맨 토토 phần của ApointNhư thể điểm là một mảng có chỉ mục 0 và 1. Ví dụ, nếuT.Plà mộtpointCột sau đóChọn p [0] từ tLấy tọa độ x vàCẬP 배트맨 토토ẬT T SET P [1] = ...Thay đổi tọa độ y. Theo cùng một cách, một giá trị của loạiBoxhoặcLSEGCó thể được coi là một mảng haiđiểmGiá trị.

Gửi hiệu chỉ배트맨 토토

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.