2
2
-- Points
3
3
--
4
4
5
- SELECT point (f1) FROM CIRCLE_TBL;
5
+ SELECT ' ' AS xxx, center(f1) AS center
6
+ FROM BOX_TBL;
6
7
8
+ SELECT ' ' AS xxx, (@@ f1) AS center
9
+ FROM BOX_TBL;
10
+
11
+ SELECT ' ' AS xxx, point (f1) AS center
12
+ FROM CIRCLE_TBL;
13
+
14
+ SELECT ' ' AS xxx, (@@ f1) AS center
15
+ FROM CIRCLE_TBL;
16
+
17
+ SELECT ' ' AS xxx, (@@ f1) AS center
18
+ FROM POLYGON_TBL
19
+ WHERE (# f1) > 2;
20
+
21
+ -- "is horizontal" function
7
22
SELECT ' ' AS two, p1 .f1
8
- FROM POINT_TBL p1
9
- WHERE ishorizontal(p1 .f1 , ' (0,0)' ::point );
23
+ FROM POINT_TBL p1
24
+ WHERE ishorizontal(p1 .f1 , ' (0,0)' ::point );
10
25
26
+ -- "is horizontal" operator
27
+ SELECT ' ' AS two, p1 .f1
28
+ FROM POINT_TBL p1
29
+ WHERE p1 .f1 ?- ' (0,0)' ::point ;
30
+
31
+ -- "is vertical" function
32
+ SELECT ' ' AS one, p1 .f1
33
+ FROM POINT_TBL p1
34
+ WHERE isvertical(p1 .f1 , ' (5.1,34.5)' ::point );
35
+
36
+ -- "is vertical" operator
11
37
SELECT ' ' AS one, p1 .f1
12
- FROM POINT_TBL p1
13
- WHERE isvertical( p1 .f1 , ' (5.1,34.5)' ::point ) ;
38
+ FROM POINT_TBL p1
39
+ WHERE p1 .f1 ?| ' (5.1,34.5)' ::point ;
14
40
15
41
--
16
42
-- Line segments
17
43
--
18
44
45
+ -- intersection
46
+ SELECT ' ' AS xxx, p .f1 , l .s , l .s # p.f1 AS intersection
47
+ FROM LSEG_TBL l, POINT_TBL p;
48
+
49
+ -- closest point
50
+ SELECT ' ' AS xxx, p .f1 , l .s , p .f1 # # l.s AS closest
51
+ FROM LSEG_TBL l, POINT_TBL p;
52
+
19
53
--
20
54
-- Lines
21
55
--
@@ -24,64 +58,91 @@ SELECT '' AS one, p1.f1
24
58
-- Boxes
25
59
--
26
60
27
- SELECT center(f1) FROM BOX_TBL;
28
-
29
- SELECT box (f1) FROM CIRCLE_TBL;
61
+ SELECT box (f1) AS box FROM CIRCLE_TBL;
30
62
31
63
-- translation
32
- SELECT ' ' AS count, b .f1 + p .f1
33
- FROM BOX_TBL b, POINT_TBL p;
64
+ SELECT ' ' AS count, b .f1 + p .f1 AS translation
65
+ FROM BOX_TBL b, POINT_TBL p;
66
+
67
+ SELECT ' ' AS count, b .f1 - p .f1 AS translation
68
+ FROM BOX_TBL b, POINT_TBL p;
34
69
35
70
-- scaling and rotation
36
- SELECT ' ' AS count, b .f1 * p .f1
37
- FROM BOX_TBL b, POINT_TBL p;
71
+ SELECT ' ' AS count, b .f1 * p .f1 AS rotation
72
+ FROM BOX_TBL b, POINT_TBL p;
73
+
74
+ SELECT ' ' AS count, b .f1 / p .f1 AS rotation
75
+ FROM BOX_TBL b, POINT_TBL p
76
+ WHERE (p .f1 < - > ' (0,0)' ::point ) >= 1 ;
38
77
39
78
--
40
79
-- Paths
41
80
--
42
81
43
82
SET geqo TO ' off' ;
44
83
45
- SELECT points(f1) AS npoints, f1 AS path FROM PATH_TBL;
84
+ SELECT ' ' AS xxx, points(f1) AS npoints, f1 AS path FROM PATH_TBL;
46
85
47
- SELECT path (f1) FROM POLYGON_TBL;
86
+ SELECT ' ' AS xxx, path (f1) FROM POLYGON_TBL;
48
87
49
88
-- translation
50
89
SELECT ' ' AS eight, p1 .f1 + ' (10,10)' ::point AS dist_add
51
- FROM PATH_TBL p1;
90
+ FROM PATH_TBL p1;
52
91
53
92
-- scaling and rotation
54
93
SELECT ' ' AS eight, p1 .f1 * ' (2,-1)' ::point AS dist_mul
55
- FROM PATH_TBL p1;
94
+ FROM PATH_TBL p1;
56
95
57
96
RESET geqo;
58
97
59
98
--
60
99
-- Polygons
61
100
--
62
101
63
- SELECT points(f1) AS npoints, f1 AS polygon FROM POLYGON_TBL;
102
+ -- containment
103
+ SELECT ' ' AS xxx, p .f1 , poly .f1 , poly .f1 ~ p .f1 AS contains
104
+ FROM POLYGON_TBL poly, POINT_TBL p;
64
105
65
- SELECT polygon (f1) FROM BOX_TBL;
106
+ SELECT ' ' AS xxx, p .f1 , poly .f1 , p .f1 @ poly .f1 AS contained
107
+ FROM POLYGON_TBL poly, POINT_TBL p;
66
108
67
- SELECT polygon (f1) FROM PATH_TBL WHERE isclosed(f1);
109
+ SELECT ' ' AS xxx, points(f1) AS npoints, f1 AS polygon
110
+ FROM POLYGON_TBL;
68
111
69
- SELECT f1 AS open_path, polygon ( pclose(f1)) AS polygon FROM PATH_TBL WHERE isopen(f1);
112
+ SELECT ' ' AS xxx, polygon (f1)
113
+ FROM BOX_TBL;
114
+
115
+ SELECT ' ' AS xxx, polygon (f1)
116
+ FROM PATH_TBL WHERE isclosed(f1);
117
+
118
+ SELECT ' ' AS xxx, f1 AS open_path, polygon ( pclose(f1)) AS polygon
119
+ FROM PATH_TBL
120
+ WHERE isopen(f1);
70
121
71
122
-- convert circles to polygons using the default number of points
72
- SELECT polygon (f1) FROM CIRCLE_TBL;
123
+ SELECT ' ' AS xxx, polygon (f1)
124
+ FROM CIRCLE_TBL;
73
125
74
126
-- convert the circle to an 8-point polygon
75
- SELECT polygon (8 , f1) FROM CIRCLE_TBL;
127
+ SELECT ' ' AS xxx, polygon (8 , f1)
128
+ FROM CIRCLE_TBL;
76
129
77
130
--
78
131
-- Circles
79
132
--
80
133
81
- SELECT circle ( f1, 50 .0 ) FROM POINT_TBL;
134
+ SELECT ' ' AS xxx, circle (f1, 50 .0 )
135
+ FROM POINT_TBL;
136
+
137
+ SELECT ' ' AS xxx, circle (f1)
138
+ FROM BOX_TBL;
139
+
140
+ SELECT ' ' AS xxx, circle (f1)
141
+ FROM POLYGON_TBL
142
+ WHERE (# f1) >= 2;
82
143
83
- SELECT ' ' AS twentyfour, c1 .f1 AS circle , p1 .f1 AS point , (p1 .f1 <=== > c1 .f1 ) AS distance
84
- from CIRCLE_TBL c1, POINT_TBL p1
85
- WHERE (p1 .f1 <=== > c1 .f1 ) > 0
86
- ORDER BY distance, circle ;
144
+ SELECT ' ' AS twentyfour, c1 .f1 AS circle , p1 .f1 AS point , (p1 .f1 < - > c1 .f1 ) AS distance
145
+ FROM CIRCLE_TBL c1, POINT_TBL p1
146
+ WHERE (p1 .f1 < - > c1 .f1 ) > 0
147
+ ORDER BY distance, circle ;
87
148
0 commit comments