@@ -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>' ;