@@ -7,31 +7,31 @@ SET extra_float_digits = 0;
7
7
8
8
\set poly ' spoly \' {(0.1,0),(0.2,0),(0.2,0.1),(0.3,0.1),(0.3,-0.1),(0.4,-0.1),(0.5,0.1),(0.4,0.2),(0.1,0.2)}\' '
9
9
SELECT spoint ' (0.15,0.10)' @ :poly; -- point inside polygon
10
- SELECT spoint ' (0.20,0.00)' @ :poly; -- point contained polygon
11
- SELECT spoint ' (0.10,0.10)' @ :poly; -- point contained polygon
12
- SELECT spoint ' (0.25,0.50)' @ :poly; -- point outside polygon
13
- SELECT spoint ' (0.25,0.00)' @ :poly; -- point outside polygon
10
+ SELECT spoint ' (0.20,0.00)' @ :poly; -- point contained polygon
11
+ SELECT spoint ' (0.10,0.10)' @ :poly; -- point contained polygon
12
+ SELECT spoint ' (0.25,0.50)' @ :poly; -- point outside polygon
13
+ SELECT spoint ' (0.25,0.00)' @ :poly; -- point outside polygon
14
14
SELECT scircle ' <(0.15,0.10),0.03>' @ :poly; -- circle inside polygon
15
- SELECT scircle ' <(0.20,0.00),0.00>' @ :poly; -- circle contained polygon
16
- SELECT scircle ' <(0.20,0.30),0.05>' @ :poly; -- circle outside polygon
15
+ SELECT scircle ' <(0.20,0.00),0.00>' @ :poly; -- circle contained polygon
16
+ SELECT scircle ' <(0.20,0.30),0.05>' @ :poly; -- circle outside polygon
17
17
SELECT scircle ' <(0.25,0.00),0.05>' @ :poly; -- circle overlaps polygon
18
18
SELECT scircle ' <(0.25,0.00),0.10>' @ :poly; -- circle overlaps polygon
19
19
SELECT scircle ' <(0.15,0.10),0.03>' && :poly; -- circle inside polygon
20
- SELECT scircle ' <(0.20,0.00),0.00>' && :poly; -- circle contained polygon
21
- SELECT scircle ' <(0.20,0.30),0.05>' && :poly; -- circle outside polygon
20
+ SELECT scircle ' <(0.20,0.00),0.00>' && :poly; -- circle contained polygon
21
+ SELECT scircle ' <(0.20,0.30),0.05>' && :poly; -- circle outside polygon
22
22
SELECT scircle ' <(0.25,0.00),0.05>' && :poly; -- circle overlaps polygon
23
23
SELECT scircle ' <(0.25,0.00),0.10>' && :poly; -- circle overlaps polygon
24
- SELECT sline ( spoint ' (0.00, 0.00)' , spoint ' (0.10,0.20)' ) @ :poly; -- line touches polygon
25
- SELECT sline ( spoint ' (0.00, 0.10)' , spoint ' (0.10,0.10)' ) @ :poly; -- line touches polygon
24
+ SELECT sline ( spoint ' (0.00, 0.00)' , spoint ' (0.10,0.20)' ) @ :poly; -- line touches polygon
25
+ SELECT sline ( spoint ' (0.00, 0.10)' , spoint ' (0.10,0.10)' ) @ :poly; -- line touches polygon
26
26
SELECT sline ( spoint ' (0.50, 0.00)' , spoint ' (0.50,0.20)' ) @ :poly; -- line touches polygon
27
- SELECT sline ( spoint ' (0.10, 0.20)' , spoint ' (0.20,0.00)' ) @ :poly; -- line touches and inside polygon
27
+ SELECT sline ( spoint ' (0.10, 0.20)' , spoint ' (0.20,0.00)' ) @ :poly; -- line touches and inside polygon
28
28
SELECT sline ( spoint ' (0.45,-0.20)' , spoint ' (0.45,0.20)' ) @ :poly; -- line overlaps polygon
29
29
SELECT sline ( spoint ' (0.45, 0.10)' , spoint ' (0.45,0.20)' ) @ :poly; -- line overlaps polygon
30
30
SELECT sline ( spoint ' (0.24, 0.17)' , spoint ' (0.25,0.14)' ) @ :poly; -- line inside polygon
31
- SELECT sline ( spoint ' (0.00, 0.00)' , spoint ' (0.10,0.20)' ) && :poly; -- line touches polygon
32
- SELECT sline ( spoint ' (0.00, 0.10)' , spoint ' (0.10,0.10)' ) && :poly; -- line touches polygon
31
+ SELECT sline ( spoint ' (0.00, 0.00)' , spoint ' (0.10,0.20)' ) && :poly; -- line touches polygon
32
+ SELECT sline ( spoint ' (0.00, 0.10)' , spoint ' (0.10,0.10)' ) && :poly; -- line touches polygon
33
33
SELECT sline ( spoint ' (0.50, 0.00)' , spoint ' (0.50,0.20)' ) && :poly; -- line touches polygon
34
- SELECT sline ( spoint ' (0.10, 0.20)' , spoint ' (0.20,0.00)' ) && :poly; -- line touches and inside polygon
34
+ SELECT sline ( spoint ' (0.10, 0.20)' , spoint ' (0.20,0.00)' ) && :poly; -- line touches and inside polygon
35
35
SELECT sline ( spoint ' (0.45,-0.20)' , spoint ' (0.45,0.20)' ) && :poly; -- line overlaps polygon
36
36
SELECT sline ( spoint ' (0.45, 0.10)' , spoint ' (0.45,0.20)' ) && :poly; -- line overlaps polygon
37
37
SELECT sline ( spoint ' (0.24, 0.17)' , spoint ' (0.25,0.14)' ) && :poly; -- line inside polygon
@@ -86,7 +86,21 @@ SELECT spoly_deg(ARRAY[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]);
86
86
87
87
SELECT spoly_deg(ARRAY[10 .0 , 0 .0 , 10 .0 , 1 .0 , 15 .0 , 0 .0 ]);
88
88
89
- -- incorrect input -----
89
+ -- - Constructors
90
+
91
+ SELECT spoly(NULL ::spoint[]);
92
+
93
+ SELECT spoly(ARRAY[]::spoint[]);
94
+
95
+ SELECT spoly(ARRAY[spoint_deg(0 , 0 )]);
96
+
97
+ SELECT spoly(ARRAY[spoint_deg(0 , 0 ), spoint_deg(10 , 0 )]);
98
+
99
+ SELECT spoly(ARRAY[spoint_deg(0 , 0 ), spoint_deg(10 , 0 ), spoint_deg(10 ,10 )]);
100
+
101
+ SELECT spoly(ARRAY[spoint_deg(0 , 0 ), spoint_deg(10 , 0 ), spoint_deg(10 ,10 ), spoint_deg(0 , 10 )]);
102
+
103
+ -- - incorrect input -----
90
104
91
105
SELECT spoly ' {(10d,0d),(10d,1d)}' ;
92
106
@@ -457,7 +471,7 @@ SELECT spoly '{(0d,-88d),(90d,-88d),(180d,-88d),(270d,-88d)}' @ spoly '{(0d,89d)
457
471
458
472
-- - spoly ~ spoly
459
473
460
- -- - should be true
474
+ -- - should be true
461
475
462
476
SELECT spoly ' {(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' ~ spoly ' {(0d,0d),(0d,0.5d),(0.5d,0.5d),(0.5d,0d)}' ;
463
477
@@ -485,7 +499,7 @@ SELECT spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' ~ spoly '{(0d,-88d),(9
485
499
486
500
-- - spoly && spoly
487
501
488
- -- - should be true
502
+ -- - should be true
489
503
490
504
SELECT spoly ' {(0d,0d),(0d,0.5d),(0.5d,0.5d),(0.5d,0d)}' && spoly ' {(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' ;
491
505
@@ -536,7 +550,7 @@ SELECT spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' && spoly '{(179d,-1d),(179d
536
550
--
537
551
-- ellipse and polygon
538
552
--
539
-
553
+
540
554
-- negators , commutator @,&&
541
555
542
556
SELECT spoly ' {(280d, -9d),(280d, -8d),(279d, -8d)}' @ sellipse ' <{10d,5d},(280d,-20d),90d>' ;
@@ -565,14 +579,14 @@ SELECT sellipse '<{10d,5d},(280d,-20d),90d>' !&& spoly '{(280d, -9d),(280d,-12
565
579
SELECT sellipse ' <{10d,5d},(280d,-20d),90d>' !&& spoly ' {(280d,-11d),(280d,-12d),(279d, -12d)}' ;
566
580
567
581
-- ellipse is point
568
- SELECT spoly ' {(280d, -9d),(280d, -8d),(279d, -8d)}' @ sellipse ' <{0d,0d},(280d,-20d),90d>' ;
569
- SELECT spoly ' {(280d,-11d),(280d,-20d),(279d, -12d)}' @ sellipse ' <{0d,0d},(280d,-20d),90d>' ;
570
- SELECT spoly ' {(280d, -9d),(280d, -8d),(279d, -8d)}' && sellipse ' <{0d,0d},(280d,-20d),90d>' ;
571
- SELECT spoly ' {(280d,-11d),(280d,-20d),(279d, -12d)}' && sellipse ' <{0d,0d},(280d,-20d),90d>' ;
572
- SELECT sellipse ' <{0d,0d},(280d,-20d),90d>' @ spoly ' {(280d, -9d),(280d, -8d),(279d, -8d)}' ;
573
- SELECT sellipse ' <{0d,0d},(280d,-20d),90d>' @ spoly ' {(280d,-11d),(280d,-20d),(279d, -12d)}' ;
574
- SELECT sellipse ' <{0d,0d},(280d,-20d),90d>' && spoly ' {(280d, -9d),(280d, -8d),(279d, -8d)}' ;
575
- SELECT sellipse ' <{0d,0d},(280d,-20d),90d>' && spoly ' {(280d,-11d),(280d,-20d),(279d, -12d)}' ;
582
+ SELECT spoly ' {(280d, -9d),(280d, -8d),(279d, -8d)}' @ sellipse ' <{0d,0d},(280d,-20d),90d>' ;
583
+ SELECT spoly ' {(280d,-11d),(280d,-20d),(279d, -12d)}' @ sellipse ' <{0d,0d},(280d,-20d),90d>' ;
584
+ SELECT spoly ' {(280d, -9d),(280d, -8d),(279d, -8d)}' && sellipse ' <{0d,0d},(280d,-20d),90d>' ;
585
+ SELECT spoly ' {(280d,-11d),(280d,-20d),(279d, -12d)}' && sellipse ' <{0d,0d},(280d,-20d),90d>' ;
586
+ SELECT sellipse ' <{0d,0d},(280d,-20d),90d>' @ spoly ' {(280d, -9d),(280d, -8d),(279d, -8d)}' ;
587
+ SELECT sellipse ' <{0d,0d},(280d,-20d),90d>' @ spoly ' {(280d,-11d),(280d,-20d),(279d, -12d)}' ;
588
+ SELECT sellipse ' <{0d,0d},(280d,-20d),90d>' && spoly ' {(280d, -9d),(280d, -8d),(279d, -8d)}' ;
589
+ SELECT sellipse ' <{0d,0d},(280d,-20d),90d>' && spoly ' {(280d,-11d),(280d,-20d),(279d, -12d)}' ;
576
590
577
591
-- ellipse is circle
578
592
SELECT spoly ' {(280d, -9d),(280d, -8d),(279d, -8d)}' @ sellipse ' <{5d,5d},(280d,-20d),90d>' ;
0 commit comments