@@ -7,31 +7,31 @@ SET extra_float_digits = 0;
77
88\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)}\' '
99SELECT 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
1414SELECT 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
1717SELECT scircle' <(0.25,0.00),0.05>' @ :poly;-- circle overlaps polygon
1818SELECT scircle' <(0.25,0.00),0.10>' @ :poly;-- circle overlaps polygon
1919SELECT 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
2222SELECT scircle' <(0.25,0.00),0.05>' && :poly;-- circle overlaps polygon
2323SELECT 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
2626SELECT 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
2828SELECT sline ( spoint' (0.45,-0.20)' , spoint' (0.45,0.20)' ) @ :poly;-- line overlaps polygon
2929SELECT sline ( spoint' (0.45, 0.10)' , spoint' (0.45,0.20)' ) @ :poly;-- line overlaps polygon
3030SELECT 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
3333SELECT 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
3535SELECT sline ( spoint' (0.45,-0.20)' , spoint' (0.45,0.20)' ) && :poly;-- line overlaps polygon
3636SELECT sline ( spoint' (0.45, 0.10)' , spoint' (0.45,0.20)' ) && :poly;-- line overlaps polygon
3737SELECT 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]);
8686
8787SELECT spoly_deg(ARRAY[10 .0 ,0 .0 ,10 .0 ,1 .0 ,15 .0 ,0 .0 ]);
8888
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 -----
90104
91105SELECT spoly' {(10d,0d),(10d,1d)}' ;
92106
@@ -457,7 +471,7 @@ SELECT spoly '{(0d,-88d),(90d,-88d),(180d,-88d),(270d,-88d)}' @ spoly '{(0d,89d)
457471
458472-- - spoly ~ spoly
459473
460- -- - should be true
474+ -- - should be true
461475
462476SELECT spoly' {(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' ~ spoly' {(0d,0d),(0d,0.5d),(0.5d,0.5d),(0.5d,0d)}' ;
463477
@@ -485,7 +499,7 @@ SELECT spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' ~ spoly '{(0d,-88d),(9
485499
486500-- - spoly && spoly
487501
488- -- - should be true
502+ -- - should be true
489503
490504SELECT spoly' {(0d,0d),(0d,0.5d),(0.5d,0.5d),(0.5d,0d)}' && spoly' {(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' ;
491505
@@ -536,7 +550,7 @@ SELECT spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' && spoly '{(179d,-1d),(179d
536550--
537551-- ellipse and polygon
538552--
539-
553+
540554-- negators , commutator @,&&
541555
542556SELECT 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
565579SELECT sellipse' <{10d,5d},(280d,-20d),90d>' !&& spoly' {(280d,-11d),(280d,-12d),(279d, -12d)}' ;
566580
567581-- 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)}' ;
576590
577591-- ellipse is circle
578592SELECT spoly' {(280d, -9d),(280d, -8d),(279d, -8d)}' @ sellipse' <{5d,5d},(280d,-20d),90d>' ;