1\set ECHO none
2 set_sphere_output_precision
3-----------------------------
4 SET 8
5(1 row)
6
7-- checking polygon operators
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)}\''
9SELECT spoint   '(0.15,0.10)' @ :poly;                  -- point inside polygon
10 ?column?
11----------
12 t
13(1 row)
14
15SELECT spoint   '(0.20,0.00)' @ :poly;                  -- point contained polygon
16 ?column?
17----------
18 t
19(1 row)
20
21SELECT spoint   '(0.10,0.10)' @ :poly;                  -- point contained polygon
22 ?column?
23----------
24 t
25(1 row)
26
27SELECT spoint   '(0.25,0.50)' @ :poly;                  -- point outside polygon
28 ?column?
29----------
30 f
31(1 row)
32
33SELECT spoint   '(0.25,0.00)' @ :poly;                  -- point outside polygon
34 ?column?
35----------
36 f
37(1 row)
38
39SELECT scircle  '<(0.15,0.10),0.03>' @  :poly;          -- circle inside polygon
40 ?column?
41----------
42 t
43(1 row)
44
45SELECT scircle  '<(0.20,0.00),0.00>' @  :poly;          -- circle contained polygon
46 ?column?
47----------
48 t
49(1 row)
50
51SELECT scircle  '<(0.20,0.30),0.05>' @  :poly;          -- circle outside  polygon
52 ?column?
53----------
54 f
55(1 row)
56
57SELECT scircle  '<(0.25,0.00),0.05>' @  :poly;          -- circle overlaps polygon
58 ?column?
59----------
60 f
61(1 row)
62
63SELECT scircle  '<(0.25,0.00),0.10>' @  :poly;          -- circle overlaps polygon
64 ?column?
65----------
66 f
67(1 row)
68
69SELECT scircle  '<(0.15,0.10),0.03>' && :poly;          -- circle inside polygon
70 ?column?
71----------
72 t
73(1 row)
74
75SELECT scircle  '<(0.20,0.00),0.00>' && :poly;          -- circle contained polygon
76 ?column?
77----------
78 t
79(1 row)
80
81SELECT scircle  '<(0.20,0.30),0.05>' && :poly;          -- circle outside  polygon
82 ?column?
83----------
84 f
85(1 row)
86
87SELECT scircle  '<(0.25,0.00),0.05>' && :poly;          -- circle overlaps polygon
88 ?column?
89----------
90 t
91(1 row)
92
93SELECT scircle  '<(0.25,0.00),0.10>' && :poly;          -- circle overlaps polygon
94 ?column?
95----------
96 t
97(1 row)
98
99SELECT sline ( spoint '(0.00, 0.00)', spoint '(0.10,0.20)' ) @  :poly;  -- line touches polygon
100 ?column?
101----------
102 f
103(1 row)
104
105SELECT sline ( spoint '(0.00, 0.10)', spoint '(0.10,0.10)' ) @  :poly;  -- line touches polygon
106 ?column?
107----------
108 f
109(1 row)
110
111SELECT sline ( spoint '(0.50, 0.00)', spoint '(0.50,0.20)' ) @  :poly;  -- line touches polygon
112 ?column?
113----------
114 f
115(1 row)
116
117SELECT sline ( spoint '(0.10, 0.20)', spoint '(0.20,0.00)' ) @  :poly;  -- line touches and inside polygon
118 ?column?
119----------
120 t
121(1 row)
122
123SELECT sline ( spoint '(0.45,-0.20)', spoint '(0.45,0.20)' ) @  :poly;  -- line overlaps polygon
124 ?column?
125----------
126 f
127(1 row)
128
129SELECT sline ( spoint '(0.45, 0.10)', spoint '(0.45,0.20)' ) @  :poly;  -- line overlaps polygon
130 ?column?
131----------
132 f
133(1 row)
134
135SELECT sline ( spoint '(0.24, 0.17)', spoint '(0.25,0.14)' ) @  :poly;  -- line inside  polygon
136 ?column?
137----------
138 t
139(1 row)
140
141SELECT sline ( spoint '(0.00, 0.00)', spoint '(0.10,0.20)' ) && :poly;  -- line touches polygon
142 ?column?
143----------
144 t
145(1 row)
146
147SELECT sline ( spoint '(0.00, 0.10)', spoint '(0.10,0.10)' ) && :poly;  -- line touches polygon
148 ?column?
149----------
150 t
151(1 row)
152
153SELECT sline ( spoint '(0.50, 0.00)', spoint '(0.50,0.20)' ) && :poly;  -- line touches polygon
154 ?column?
155----------
156 t
157(1 row)
158
159SELECT sline ( spoint '(0.10, 0.20)', spoint '(0.20,0.00)' ) && :poly;  -- line touches and inside polygon
160 ?column?
161----------
162 t
163(1 row)
164
165SELECT sline ( spoint '(0.45,-0.20)', spoint '(0.45,0.20)' ) && :poly;  -- line overlaps polygon
166 ?column?
167----------
168 t
169(1 row)
170
171SELECT sline ( spoint '(0.45, 0.10)', spoint '(0.45,0.20)' ) && :poly;  -- line overlaps polygon
172 ?column?
173----------
174 t
175(1 row)
176
177SELECT sline ( spoint '(0.24, 0.17)', spoint '(0.25,0.14)' ) && :poly;  -- line inside  polygon
178 ?column?
179----------
180 t
181(1 row)
182
183\unset poly
184\set poly1 'spoly \'{(0,0),(1,0),(0,1)}\''
185\set poly2 'spoly \'{(1,0),(0,0),(0,1)}\''
186\set poly3 'spoly \'{(0,1),(0,0),(1,0)}\''
187\set poly4 'spoly \'{(0.1,0.9),(0.1,0.1),(0.9,0.1)}\''
188\set poly5 'spoly \'{(0.2,0.0),(1.2,0.0),(0.2,1)}\''
189SELECT :poly1  = :poly2;
190 ?column?
191----------
192 t
193(1 row)
194
195SELECT :poly2  = :poly3;
196 ?column?
197----------
198 t
199(1 row)
200
201SELECT :poly3  = :poly1;
202 ?column?
203----------
204 t
205(1 row)
206
207SELECT :poly1 && :poly2;
208 ?column?
209----------
210 t
211(1 row)
212
213SELECT :poly2 && :poly3;
214 ?column?
215----------
216 t
217(1 row)
218
219SELECT :poly3 && :poly1;
220 ?column?
221----------
222 t
223(1 row)
224
225SELECT :poly1  @ :poly2;
226 ?column?
227----------
228 t
229(1 row)
230
231SELECT :poly2  @ :poly3;
232 ?column?
233----------
234 t
235(1 row)
236
237SELECT :poly3  @ :poly1;
238 ?column?
239----------
240 t
241(1 row)
242
243SELECT :poly1  @ :poly4;
244 ?column?
245----------
246 f
247(1 row)
248
249SELECT :poly4  @ :poly1;
250 ?column?
251----------
252 t
253(1 row)
254
255SELECT :poly1 && :poly4;
256 ?column?
257----------
258 t
259(1 row)
260
261SELECT :poly4 && :poly1;
262 ?column?
263----------
264 t
265(1 row)
266
267SELECT :poly1  @ :poly5;
268 ?column?
269----------
270 f
271(1 row)
272
273SELECT :poly5  @ :poly1;
274 ?column?
275----------
276 f
277(1 row)
278
279SELECT :poly1 && :poly5;
280 ?column?
281----------
282 t
283(1 row)
284
285SELECT :poly5 && :poly1;
286 ?column?
287----------
288 t
289(1 row)
290
291\unset poly1
292\unset poly2
293\unset poly3
294\unset poly4
295\unset poly5
296-- From testsuite/poly_test.sql
297SELECT set_sphere_output('DEG');
298 set_sphere_output
299-------------------
300 SET DEG
301(1 row)
302
303SELECT spoly '{(10d,0d),(10d,1d),(15d,0d)}';
304               spoly
305------------------------------------
306 {(10d , 0d),(10d , 1d),(15d , 0d)}
307(1 row)
308
309SELECT spoly '{(359d,0d),(359d,1d),(4d,0d)}';
310                spoly
311-------------------------------------
312 {(359d , 0d),(359d , 1d),(4d , 0d)}
313(1 row)
314
315SELECT spoly '{(10d,0d),(10d,1d),(15d,0d)}';
316               spoly
317------------------------------------
318 {(10d , 0d),(10d , 1d),(15d , 0d)}
319(1 row)
320
321-- incorrect input -----
322SELECT spoly '{(10d,0d),(10d,1d)}';
323ERROR:  spherepoly_in: more than two points needed
324LINE 1: SELECT spoly '{(10d,0d),(10d,1d)}';
325                     ^
326--- self-crossing input -----
327SELECT spoly '{(0d,0d),(10d,10d),(0d,10d),(10d,0d)}';
328ERROR:  spherepoly_from_array: a line segment overlaps or polygon too large
329LINE 1: SELECT spoly '{(0d,0d),(10d,10d),(0d,10d),(10d,0d)}';
330                     ^
331--- functions
332SELECT npoints( spoly '{(10d,0d),(10d,1d),(15d,0d)}');
333 npoints
334---------
335       3
336(1 row)
337
338SELECT npoints( spoly '{(10d,0d),(10d,1d),(15d,0d),(5d,-5d)}');
339 npoints
340---------
341       4
342(1 row)
343
344--SELECT npoints( spoly '{(0d,0d),(0d,90d),(15d,90d),(15d,0d)}');
345SELECT area(spoly '{(0d,0d),(0d,90d),(1,0d)}');
346 area
347------
348    1
349(1 row)
350
351SELECT area(spoly '{(0d,0d),(0d,90d),(90d,0d)}')/(4.0*pi());
352 ?column?
353----------
354    0.125
355(1 row)
356
357--- operations
358--- = operator
359--- should be true
360SELECT spoly '{(1d,0d),(1d,1d),(2d,1d)}' = spoly '{(1d,1d),(2d,1d),(1d,0d)}';
361 ?column?
362----------
363 t
364(1 row)
365
366SELECT spoly '{(1d,0d),(1d,1d),(2d,1d)}' = spoly '{(2d,1d),(1d,1d),(1d,0d)}';
367 ?column?
368----------
369 t
370(1 row)
371
372SELECT spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' = spoly '{(1d,0d),(0d,0d),(0d,1d),(1d,1d)}';
373 ?column?
374----------
375 t
376(1 row)
377
378SELECT spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' = spoly '{(0d,0d),(1d,0d),(1d,1d),(0d,1d)}';
379 ?column?
380----------
381 t
382(1 row)
383
384--- should be false
385SELECT spoly '{(1d,0d),(1d,1d),(2d,1d)}' = spoly '{(1d,1d),(3d,1d),(1d,0d)}';
386 ?column?
387----------
388 f
389(1 row)
390
391SELECT spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' = spoly '{(1d,0d),(0d,0d),(0d,1d),(2d,2d)}';
392 ?column?
393----------
394 f
395(1 row)
396
397--- <> operator
398--- should be false
399SELECT spoly '{(1d,0d),(1d,1d),(2d,1d)}' <> spoly '{(1d,1d),(2d,1d),(1d,0d)}';
400 ?column?
401----------
402 f
403(1 row)
404
405SELECT spoly '{(1d,0d),(1d,1d),(2d,1d)}' <> spoly '{(2d,1d),(1d,1d),(1d,0d)}';
406 ?column?
407----------
408 f
409(1 row)
410
411SELECT spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' <> spoly '{(1d,0d),(0d,0d),(0d,1d),(1d,1d)}';
412 ?column?
413----------
414 f
415(1 row)
416
417SELECT spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' <> spoly '{(0d,0d),(1d,0d),(1d,1d),(0d,1d)}';
418 ?column?
419----------
420 f
421(1 row)
422
423--- should be true
424SELECT spoly '{(1d,0d),(1d,1d),(2d,1d)}' <> spoly '{(1d,1d),(3d,1d),(1d,0d)}';
425 ?column?
426----------
427 t
428(1 row)
429
430SELECT spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' <> spoly '{(1d,0d),(0d,0d),(0d,1d),(2d,2d)}';
431 ?column?
432----------
433 t
434(1 row)
435
436--- spoint @ spoly
437--- should be true
438SELECT spoly '{(1d,0d),(1d,1d),(2d,1d)}' <> spoly '{(1d,1d),(3d,1d),(1d,0d)}';
439 ?column?
440----------
441 t
442(1 row)
443
444SELECT spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' <> spoly '{(1d,0d),(0d,0d),(0d,1d),(2d,2d)}';
445 ?column?
446----------
447 t
448(1 row)
449
450--- spoint @ spoly
451--- should be true
452SELECT '(0.5d,0.5d)'::spoint @ spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}';
453 ?column?
454----------
455 t
456(1 row)
457
458SELECT '(0d,0.5d)'::spoint @ spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}';
459 ?column?
460----------
461 t
462(1 row)
463
464SELECT '(0d,0d)'::spoint @ spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}';
465 ?column?
466----------
467 t
468(1 row)
469
470SELECT '(0.5d,0.5d)'::spoint @ spoly '{(0d,0d),(0.5d,0.5d),(0d,1d),(1d,1d),(1d,0d)}';
471 ?column?
472----------
473 t
474(1 row)
475
476SELECT '(0d,89.9d)'::spoint @ spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
477 ?column?
478----------
479 t
480(1 row)
481
482SELECT '(0d,90d)'::spoint @ spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
483 ?column?
484----------
485 t
486(1 row)
487
488SELECT '(0d,-89.9d)'::spoint @ spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}';
489 ?column?
490----------
491 t
492(1 row)
493
494SELECT '(0d,-90d)'::spoint @ spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}';
495 ?column?
496----------
497 t
498(1 row)
499
500--- should be false
501SELECT '(0.1d,0.5d)'::spoint @ spoly '{(0d,0d),(0.5d,0.5d),(0d,1d),(1d,1d),(1d,0d)}';
502 ?column?
503----------
504 f
505(1 row)
506
507SELECT '(45d,-89d)'::spoint @ spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}';
508 ?column?
509----------
510 f
511(1 row)
512
513SELECT '(0d,1d)'::spoint @ spoly '{(0d,0d),(1d,1d),(1d,0d)}';
514 ?column?
515----------
516 f
517(1 row)
518
519--- spoly ~ spoint
520--- should be true
521SELECT  spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' ~ '(0.5d,0.5d)'::spoint;
522 ?column?
523----------
524 t
525(1 row)
526
527SELECT  spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' ~ '(0d,0.5d)'::spoint;
528 ?column?
529----------
530 t
531(1 row)
532
533SELECT  spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' ~ '(0d,0d)'::spoint;
534 ?column?
535----------
536 t
537(1 row)
538
539SELECT  spoly '{(0d,0d),(0.5d,0.5d),(0d,1d),(1d,1d),(1d,0d)}' ~ '(0.5d,0.5d)'::spoint;
540 ?column?
541----------
542 t
543(1 row)
544
545SELECT  spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' ~ '(0d,89.9d)'::spoint;
546 ?column?
547----------
548 t
549(1 row)
550
551SELECT  spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' ~ '(0d,90d)'::spoint;
552 ?column?
553----------
554 t
555(1 row)
556
557SELECT  spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}' ~ '(0d,-89.9d)'::spoint;
558 ?column?
559----------
560 t
561(1 row)
562
563SELECT  spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}' ~ '(0d,-90d)'::spoint;
564 ?column?
565----------
566 t
567(1 row)
568
569--- should be false
570SELECT  spoly '{(0d,0d),(0.5d,0.5d),(0d,1d),(1d,1d),(1d,0d)}' ~ '(0.1d,0.5d)'::spoint;
571 ?column?
572----------
573 f
574(1 row)
575
576SELECT  spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}' ~ '(45d,-89d)'::spoint;
577 ?column?
578----------
579 f
580(1 row)
581
582SELECT  spoly '{(0d,0d),(1d,1d),(1d,0d)}' ~ '(0d,1d)'::spoint;
583 ?column?
584----------
585 f
586(1 row)
587
588--- scircle @ spoly
589--- should be true
590SELECT '<(0.5d,0.5d),0.1d>'::scircle @ spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}';
591 ?column?
592----------
593 t
594(1 row)
595
596SELECT '<(0d,89.9d),0.1d>'::scircle @ spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
597 ?column?
598----------
599 t
600(1 row)
601
602SELECT '<(0d,90d),0.1d>'::scircle @ spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
603 ?column?
604----------
605 t
606(1 row)
607
608SELECT '<(0d,-89.9d),0.1d>'::scircle @ spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}';
609 ?column?
610----------
611 t
612(1 row)
613
614SELECT '<(0d,-90d),0.1d>'::scircle @ spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}';
615 ?column?
616----------
617 t
618(1 row)
619
620--- should be false
621SELECT '<(0.1d,0.5d),0.1d>'::scircle @ spoly '{(0d,0d),(0.5d,0.5d),(0d,1d),(1d,1d),(1d,0d)}';
622 ?column?
623----------
624 f
625(1 row)
626
627SELECT '<(45d,-89d),0.1d>'::scircle @ spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}';
628 ?column?
629----------
630 f
631(1 row)
632
633SELECT '<(0d,1d),0.1d>'::scircle @ spoly '{(0d,0d),(1d,1d),(1d,0d)}';
634 ?column?
635----------
636 f
637(1 row)
638
639SELECT '<(0d,0.5d),0.1d>'::scircle @ spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}';
640 ?column?
641----------
642 f
643(1 row)
644
645SELECT '<(0d,0d),0.1d>'::scircle @ spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}';
646 ?column?
647----------
648 f
649(1 row)
650
651SELECT '<(0.5d,0.5d),0.1d>'::scircle @ spoly '{(0d,0d),(0.5d,0.5d),(0d,1d),(1d,1d),(1d,0d)}';
652 ?column?
653----------
654 f
655(1 row)
656
657--- spoly ~ scircle
658--- should be true
659SELECT  spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' ~ '<(0.5d,0.5d),0.1d>'::scircle;
660 ?column?
661----------
662 t
663(1 row)
664
665SELECT  spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' ~ '<(0d,89.9d),0.1d>'::scircle;
666 ?column?
667----------
668 t
669(1 row)
670
671SELECT  spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' ~ '<(0d,90d),0.1d>'::scircle;
672 ?column?
673----------
674 t
675(1 row)
676
677SELECT  spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}' ~ '<(0d,-89.9d),0.1d>'::scircle;
678 ?column?
679----------
680 t
681(1 row)
682
683SELECT  spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}' ~ '<(0d,-90d),0.1d>'::scircle;
684 ?column?
685----------
686 t
687(1 row)
688
689--- should be false
690SELECT  spoly '{(0d,0d),(0.5d,0.5d),(0d,1d),(1d,1d),(1d,0d)}' ~ '<(0.1d,0.5d),0.1d>'::scircle;
691 ?column?
692----------
693 f
694(1 row)
695
696SELECT  spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}' ~ '<(45d,-89d),0.1d>'::scircle;
697 ?column?
698----------
699 f
700(1 row)
701
702SELECT  spoly '{(0d,0d),(1d,1d),(1d,0d)}' ~ '<(0d,1d),0.1d>'::scircle;
703 ?column?
704----------
705 f
706(1 row)
707
708SELECT  spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' ~ '<(0d,0.5d),0.1d>'::scircle;
709 ?column?
710----------
711 f
712(1 row)
713
714SELECT  spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' ~ '<(0d,0d),0.1d>'::scircle;
715 ?column?
716----------
717 f
718(1 row)
719
720SELECT  spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' ~ '<(0.1d,0.5d),0.1d>'::scircle;
721 ?column?
722----------
723 f
724(1 row)
725
726SELECT  spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' ~ '<(0.1d,0.1d),0.1d>'::scircle;
727 ?column?
728----------
729 f
730(1 row)
731
732SELECT  spoly '{(0d,0d),(0.5d,0.5d),(0d,1d),(1d,1d),(1d,0d)}' ~ '<(0.6d,0.5d),0.1d>'::scircle;
733 ?column?
734----------
735 f
736(1 row)
737
738--- spoly @ scircle
739--- should be true
740SELECT spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' @ '<(0d,0d),2.0d>'::scircle;
741 ?column?
742----------
743 t
744(1 row)
745
746SELECT spoly '{(-1d,0d),(0d,1d),(1d,0d),(0d,-1d)}' @ '<(0d,0d),1.0d>'::scircle;
747 ?column?
748----------
749 t
750(1 row)
751
752SELECT spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' @ '<(0d,90d),1.0d>'::scircle;
753 ?column?
754----------
755 t
756(1 row)
757
758SELECT spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}' @ '<(180d,-90d),1.0d>'::scircle;
759 ?column?
760----------
761 t
762(1 row)
763
764SELECT spoly '{(0d,0d),(0d,1d),(1d,0d)}' @ '<(0d,0d),1.0d>'::scircle;
765 ?column?
766----------
767 t
768(1 row)
769
770--- should be false
771SELECT spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' @ '<(0d,0d),1.0d>'::scircle;
772 ?column?
773----------
774 f
775(1 row)
776
777SELECT spoly '{(-1d,0d),(0d,1d),(1d,0d),(0d,-1d)}' @ '<(0d,0d),0.99d>'::scircle;
778 ?column?
779----------
780 f
781(1 row)
782
783SELECT spoly '{(-1d,0d),(0d,1d),(1d,0d),(0d,-1d)}' @ '<(60d,0d),0.99d>'::scircle;
784 ?column?
785----------
786 f
787(1 row)
788
789SELECT spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,88d)}' @ '<(0d,90d),1.0d>'::scircle;
790 ?column?
791----------
792 f
793(1 row)
794
795SELECT spoly '{(0d,-87d),(90d,-87d),(180d,-87d),(270d,-87d)}' @ '<(180d,-90d),1.0d>'::scircle;
796 ?column?
797----------
798 f
799(1 row)
800
801SELECT spoly '{(0d,0d),(0d,1d),(2d,0d)}' @ '<(0d,0d),1.0d>'::scircle;
802 ?column?
803----------
804 f
805(1 row)
806
807--- scircle ~ spoly
808--- should be true
809SELECT '<(0d,0d),2.0d>'::scircle ~ spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}';
810 ?column?
811----------
812 t
813(1 row)
814
815SELECT '<(0d,0d),1.0d>'::scircle ~ spoly '{(-1d,0d),(0d,1d),(1d,0d),(0d,-1d)}';
816 ?column?
817----------
818 t
819(1 row)
820
821SELECT '<(0d,90d),1.0d>'::scircle ~ spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
822 ?column?
823----------
824 t
825(1 row)
826
827SELECT '<(180d,-90d),1.0d>'::scircle ~ spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}';
828 ?column?
829----------
830 t
831(1 row)
832
833SELECT '<(0d,0d),1.0d>'::scircle ~ spoly '{(0d,0d),(0d,1d),(1d,0d)}';
834 ?column?
835----------
836 t
837(1 row)
838
839--- should be false
840SELECT '<(0d,0d),1.0d>'::scircle ~ spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}';
841 ?column?
842----------
843 f
844(1 row)
845
846SELECT '<(0d,0d),0.99d>'::scircle ~ spoly '{(-1d,0d),(0d,1d),(1d,0d),(0d,-1d)}';
847 ?column?
848----------
849 f
850(1 row)
851
852SELECT '<(60d,0d),0.99d>'::scircle ~ spoly '{(-1d,0d),(0d,1d),(1d,0d),(0d,-1d)}';
853 ?column?
854----------
855 f
856(1 row)
857
858SELECT '<(0d,90d),1.0d>'::scircle ~ spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,88d)}';
859 ?column?
860----------
861 f
862(1 row)
863
864SELECT '<(180d,-90d),1.0d>'::scircle ~ spoly '{(0d,-87d),(90d,-87d),(180d,-87d),(270d,-87d)}';
865 ?column?
866----------
867 f
868(1 row)
869
870SELECT '<(0d,0d),1.0d>'::scircle ~ spoly '{(0d,0d),(0d,1d),(2d,0d)}';
871 ?column?
872----------
873 f
874(1 row)
875
876--- scircle && spoly
877--- should be true
878SELECT  spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' && '<(0.5d,0.5d),0.1d>'::scircle;
879 ?column?
880----------
881 t
882(1 row)
883
884SELECT  spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' && '<(0d,89.9d),0.1d>'::scircle;
885 ?column?
886----------
887 t
888(1 row)
889
890SELECT  spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' && '<(0d,90d),0.1d>'::scircle;
891 ?column?
892----------
893 t
894(1 row)
895
896SELECT  spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}' && '<(0d,-89.9d),0.1d>'::scircle;
897 ?column?
898----------
899 t
900(1 row)
901
902SELECT  spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}' && '<(0d,-90d),0.1d>'::scircle;
903 ?column?
904----------
905 t
906(1 row)
907
908SELECT  spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' && '<(0d,0d),2.0d>'::scircle;
909 ?column?
910----------
911 t
912(1 row)
913
914SELECT  spoly '{(-1d,0d),(0d,1d),(1d,0d),(0d,-1d)}' && '<(0d,0d),1.0d>'::scircle;
915 ?column?
916----------
917 t
918(1 row)
919
920SELECT  spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' && '<(0d,90d),1.0d>'::scircle;
921 ?column?
922----------
923 t
924(1 row)
925
926SELECT  spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}' && '<(180d,-90d),1.0d>'::scircle;
927 ?column?
928----------
929 t
930(1 row)
931
932SELECT  spoly '{(0d,0d),(0d,1d),(1d,0d)}' && '<(0d,0d),1.0d>'::scircle;
933 ?column?
934----------
935 t
936(1 row)
937
938SELECT  spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' && '<(0d,2d),1.0d>'::scircle;
939 ?column?
940----------
941 t
942(1 row)
943
944SELECT  spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' && '<(2d,0d),1.0d>'::scircle;
945 ?column?
946----------
947 t
948(1 row)
949
950SELECT  spoly '{(0d,0d),(0.5d,0.5d),(0d,1d),(1d,1d),(1d,0d)}' && '<(0.5d,0.5d),0.1d>'::scircle;
951 ?column?
952----------
953 t
954(1 row)
955
956--- should be false
957SELECT  spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' && '<(1.5d,0.5d),0.1d>'::scircle;
958 ?column?
959----------
960 f
961(1 row)
962
963SELECT  spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' && '<(0d,88.0d),0.1d>'::scircle;
964 ?column?
965----------
966 f
967(1 row)
968
969SELECT  spoly '{(0d,0d),(0.5d,0.5d),(0d,1d),(1d,1d),(1d,0d)}' && '<(0.3d,0.5d),0.1d>'::scircle;
970 ?column?
971----------
972 f
973(1 row)
974
975SELECT  spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}' && '<(0d,-87d),0.1d>'::scircle;
976 ?column?
977----------
978 f
979(1 row)
980
981--- spoly && scircle
982--- should be true
983SELECT  '<(0.5d,0.5d),0.1d>'::scircle && spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}';
984 ?column?
985----------
986 t
987(1 row)
988
989SELECT  '<(0d,89.9d),0.1d>'::scircle && spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
990 ?column?
991----------
992 t
993(1 row)
994
995SELECT  '<(0d,90d),0.1d>'::scircle && spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
996 ?column?
997----------
998 t
999(1 row)
1000
1001SELECT  '<(0d,-89.9d),0.1d>'::scircle && spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}';
1002 ?column?
1003----------
1004 t
1005(1 row)
1006
1007SELECT  '<(0d,-90d),0.1d>'::scircle && spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}';
1008 ?column?
1009----------
1010 t
1011(1 row)
1012
1013SELECT  '<(0d,0d),2.0d>'::scircle && spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}';
1014 ?column?
1015----------
1016 t
1017(1 row)
1018
1019SELECT  '<(0d,0d),1.0d>'::scircle && spoly '{(-1d,0d),(0d,1d),(1d,0d),(0d,-1d)}';
1020 ?column?
1021----------
1022 t
1023(1 row)
1024
1025SELECT  '<(0d,90d),1.0d>'::scircle && spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
1026 ?column?
1027----------
1028 t
1029(1 row)
1030
1031SELECT  '<(180d,-90d),1.0d>'::scircle && spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}';
1032 ?column?
1033----------
1034 t
1035(1 row)
1036
1037SELECT  '<(0d,0d),1.0d>'::scircle && spoly '{(0d,0d),(0d,1d),(1d,0d)}';
1038 ?column?
1039----------
1040 t
1041(1 row)
1042
1043SELECT  '<(0d,2d),1.0d>'::scircle && spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}';
1044 ?column?
1045----------
1046 t
1047(1 row)
1048
1049SELECT  '<(2d,0d),1.0d>'::scircle && spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}';
1050 ?column?
1051----------
1052 t
1053(1 row)
1054
1055SELECT  '<(0.5d,0.5d),0.1d>'::scircle && spoly '{(0d,0d),(0.5d,0.5d),(0d,1d),(1d,1d),(1d,0d)}';
1056 ?column?
1057----------
1058 t
1059(1 row)
1060
1061--- should be false
1062SELECT  '<(1.5d,0.5d),0.1d>'::scircle && spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}';
1063 ?column?
1064----------
1065 f
1066(1 row)
1067
1068SELECT  '<(0d,88.0d),0.1d>'::scircle && spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
1069 ?column?
1070----------
1071 f
1072(1 row)
1073
1074SELECT  '<(0.3d,0.5d),0.1d>'::scircle && spoly '{(0d,0d),(0.5d,0.5d),(0d,1d),(1d,1d),(1d,0d)}';
1075 ?column?
1076----------
1077 f
1078(1 row)
1079
1080SELECT  '<(0d,-87d),0.1d>'::scircle && spoly '{(0d,-89d),(90d,-89d),(180d,-89d),(270d,-89d)}';
1081 ?column?
1082----------
1083 f
1084(1 row)
1085
1086--- spoly @ spoly
1087--- should be true
1088SELECT spoly '{(0d,0d),(0d,0.5d),(0.5d,0.5d),(0.5d,0d)}' @ spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}';
1089 ?column?
1090----------
1091 t
1092(1 row)
1093
1094SELECT spoly '{(-0.5d,-0.5d),(-0.5d,0.5d),(0.5d,0.5d),(0.5d,-0.5d)}' @ spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}';
1095 ?column?
1096----------
1097 t
1098(1 row)
1099
1100SELECT spoly '{(0d,0d),(0d,0.5d),(0.5d,0.5d),(0.5d,0d)}' @ spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}';
1101 ?column?
1102----------
1103 t
1104(1 row)
1105
1106SELECT spoly '{(0d,0d),(0d,1d),(1d,0d)}' @ spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}';
1107 ?column?
1108----------
1109 t
1110(1 row)
1111
1112SELECT spoly '{(0d,0d),(0d,1d),(1d,0d)}' @ spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}';
1113 ?column?
1114----------
1115 t
1116(1 row)
1117
1118SELECT spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' @ spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
1119 ?column?
1120----------
1121 t
1122(1 row)
1123
1124SELECT spoly '{(45d,89.3d),(135d,89.3d),(225d,89.3d),(315d,89.3d)}' @ spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
1125 ?column?
1126----------
1127 t
1128(1 row)
1129
1130--- should be false
1131--SELECT spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' @ spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}';
1132SELECT spoly '{(45d,89.2d),(135d,89.2d),(225d,89.2d),(315d,89.2d)}' @ spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
1133 ?column?
1134----------
1135 f
1136(1 row)
1137
1138SELECT spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' @ spoly '{(0.5d,0.5d),(0.5d,1.5d),(1.5d,1.5d),(1.5d,0.5d)}';
1139 ?column?
1140----------
1141 f
1142(1 row)
1143
1144SELECT spoly '{(0d,88d),(90d,88d),(180d,88d),(270d,88d)}' @ spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
1145 ?column?
1146----------
1147 f
1148(1 row)
1149
1150SELECT spoly '{(0d,-88d),(90d,-88d),(180d,-88d),(270d,-88d)}' @ spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
1151 ?column?
1152----------
1153 f
1154(1 row)
1155
1156--- spoly ~ spoly
1157--- should be true
1158SELECT spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' ~ spoly '{(0d,0d),(0d,0.5d),(0.5d,0.5d),(0.5d,0d)}';
1159 ?column?
1160----------
1161 t
1162(1 row)
1163
1164SELECT spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' ~ spoly '{(-0.5d,-0.5d),(-0.5d,0.5d),(0.5d,0.5d),(0.5d,-0.5d)}';
1165 ?column?
1166----------
1167 t
1168(1 row)
1169
1170SELECT spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' ~ spoly '{(0d,0d),(0d,0.5d),(0.5d,0.5d),(0.5d,0d)}';
1171 ?column?
1172----------
1173 t
1174(1 row)
1175
1176SELECT spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' ~ spoly '{(0d,0d),(0d,1d),(1d,0d)}';
1177 ?column?
1178----------
1179 t
1180(1 row)
1181
1182SELECT spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' ~ spoly '{(0d,0d),(0d,1d),(1d,0d)}';
1183 ?column?
1184----------
1185 t
1186(1 row)
1187
1188SELECT spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' ~ spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
1189 ?column?
1190----------
1191 t
1192(1 row)
1193
1194SELECT spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' ~ spoly '{(45d,89.3d),(135d,89.3d),(225d,89.3d),(315d,89.3d)}';
1195 ?column?
1196----------
1197 t
1198(1 row)
1199
1200--- should be false
1201SELECT spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' ~ spoly '{(45d,89.2d),(135d,89.2d),(225d,89.2d),(315d,89.2d)}';
1202 ?column?
1203----------
1204 f
1205(1 row)
1206
1207SELECT spoly '{(0.5d,0.5d),(0.5d,1.5d),(1.5d,1.5d),(1.5d,0.5d)}' ~ spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}';
1208 ?column?
1209----------
1210 f
1211(1 row)
1212
1213SELECT spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' ~ spoly '{(0d,88d),(90d,88d),(180d,88d),(270d,88d)}';
1214 ?column?
1215----------
1216 f
1217(1 row)
1218
1219SELECT spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' ~ spoly '{(0d,-88d),(90d,-88d),(180d,-88d),(270d,-88d)}';
1220 ?column?
1221----------
1222 f
1223(1 row)
1224
1225--- spoly && spoly
1226--- should be true
1227SELECT spoly '{(0d,0d),(0d,0.5d),(0.5d,0.5d),(0.5d,0d)}' && spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}';
1228 ?column?
1229----------
1230 t
1231(1 row)
1232
1233SELECT spoly '{(-0.5d,-0.5d),(-0.5d,0.5d),(0.5d,0.5d),(0.5d,-0.5d)}' && spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}';
1234 ?column?
1235----------
1236 t
1237(1 row)
1238
1239SELECT spoly '{(0d,0d),(0d,0.5d),(0.5d,0.5d),(0.5d,0d)}' && spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}';
1240 ?column?
1241----------
1242 t
1243(1 row)
1244
1245SELECT spoly '{(0d,0d),(0d,1d),(1d,0d)}' && spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}';
1246 ?column?
1247----------
1248 t
1249(1 row)
1250
1251SELECT spoly '{(0d,0d),(0d,1d),(1d,0d)}' && spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}';
1252 ?column?
1253----------
1254 t
1255(1 row)
1256
1257SELECT spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' && spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
1258 ?column?
1259----------
1260 t
1261(1 row)
1262
1263SELECT spoly '{(45d,89.3d),(135d,89.3d),(225d,89.3d),(315d,89.3d)}' && spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
1264 ?column?
1265----------
1266 t
1267(1 row)
1268
1269SELECT spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' && spoly '{(0d,0d),(0d,0.5d),(0.5d,0.5d),(0.5d,0d)}';
1270 ?column?
1271----------
1272 t
1273(1 row)
1274
1275SELECT spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' && spoly '{(-0.5d,-0.5d),(-0.5d,0.5d),(0.5d,0.5d),(0.5d,-0.5d)}';
1276 ?column?
1277----------
1278 t
1279(1 row)
1280
1281SELECT spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' && spoly '{(0d,0d),(0d,0.5d),(0.5d,0.5d),(0.5d,0d)}';
1282 ?column?
1283----------
1284 t
1285(1 row)
1286
1287SELECT spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' && spoly '{(0d,0d),(0d,1d),(1d,0d)}';
1288 ?column?
1289----------
1290 t
1291(1 row)
1292
1293SELECT spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' && spoly '{(0d,0d),(0d,1d),(1d,0d)}';
1294 ?column?
1295----------
1296 t
1297(1 row)
1298
1299SELECT spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' && spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
1300 ?column?
1301----------
1302 t
1303(1 row)
1304
1305SELECT spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' && spoly '{(45d,89.3d),(135d,89.3d),(225d,89.3d),(315d,89.3d)}';
1306 ?column?
1307----------
1308 t
1309(1 row)
1310
1311SELECT spoly '{(45d,89.2d),(135d,89.2d),(225d,89.2d),(315d,89.2d)}' && spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
1312 ?column?
1313----------
1314 t
1315(1 row)
1316
1317SELECT spoly '{(0d,0d),(0d,1d),(1d,1d),(1d,0d)}' && spoly '{(0.5d,0.5d),(0.5d,1.5d),(1.5d,1.5d),(1.5d,0.5d)}';
1318 ?column?
1319----------
1320 t
1321(1 row)
1322
1323SELECT spoly '{(0d,88d),(90d,88d),(180d,88d),(270d,88d)}' && spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
1324 ?column?
1325----------
1326 t
1327(1 row)
1328
1329--- should be false
1330SELECT spoly '{(0d,-88d),(90d,-88d),(180d,-88d),(270d,-88d)}' && spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}';
1331 ?column?
1332----------
1333 f
1334(1 row)
1335
1336SELECT spoly '{(0d,89d),(90d,89d),(180d,89d),(270d,89d)}' && spoly '{(0d,-88d),(90d,-88d),(180d,-88d),(270d,-88d)}';
1337 ?column?
1338----------
1339 f
1340(1 row)
1341
1342SELECT spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' && spoly '{(3d,-1d),(3d,1d),(5d,1d),(5d,-1d)}';
1343 ?column?
1344----------
1345 f
1346(1 row)
1347
1348SELECT spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' && spoly '{(-1d,3d),(-1d,5d),(1d,5d),(1d,3d)}';
1349 ?column?
1350----------
1351 f
1352(1 row)
1353
1354SELECT spoly '{(-1d,-1d),(-1d,1d),(1d,1d),(1d,-1d)}' && spoly '{(179d,-1d),(179d,1d),(181d,1d),(181d,-1d)}';
1355 ?column?
1356----------
1357 f
1358(1 row)
1359
1360--
1361-- ellipse and polygon
1362--
1363
1364-- negators , commutator @,&&
1365SELECT spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}'    @  sellipse '<{10d,5d},(280d,-20d),90d>';
1366 ?column?
1367----------
1368 f
1369(1 row)
1370
1371SELECT spoly '{(280d, -9d),(280d,-12d),(279d, -8d)}'    @  sellipse '<{10d,5d},(280d,-20d),90d>';
1372 ?column?
1373----------
1374 f
1375(1 row)
1376
1377SELECT spoly '{(280d,-11d),(280d,-12d),(279d, -12d)}'   @  sellipse '<{10d,5d},(280d,-20d),90d>';
1378 ?column?
1379----------
1380 t
1381(1 row)
1382
1383SELECT spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}'   &&  sellipse '<{10d,5d},(280d,-20d),90d>';
1384 ?column?
1385----------
1386 f
1387(1 row)
1388
1389SELECT spoly '{(280d, -9d),(280d,-12d),(279d, -8d)}'   &&  sellipse '<{10d,5d},(280d,-20d),90d>';
1390 ?column?
1391----------
1392 t
1393(1 row)
1394
1395SELECT spoly '{(280d,-11d),(280d,-12d),(279d, -12d)}'  &&  sellipse '<{10d,5d},(280d,-20d),90d>';
1396 ?column?
1397----------
1398 t
1399(1 row)
1400
1401SELECT spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}'   !@  sellipse '<{10d,5d},(280d,-20d),90d>';
1402 ?column?
1403----------
1404 t
1405(1 row)
1406
1407SELECT spoly '{(280d, -9d),(280d,-12d),(279d, -8d)}'   !@  sellipse '<{10d,5d},(280d,-20d),90d>';
1408 ?column?
1409----------
1410 t
1411(1 row)
1412
1413SELECT spoly '{(280d,-11d),(280d,-12d),(279d, -12d)}'  !@  sellipse '<{10d,5d},(280d,-20d),90d>';
1414 ?column?
1415----------
1416 f
1417(1 row)
1418
1419SELECT spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}'  !&&  sellipse '<{10d,5d},(280d,-20d),90d>';
1420 ?column?
1421----------
1422 t
1423(1 row)
1424
1425SELECT spoly '{(280d, -9d),(280d,-12d),(279d, -8d)}'  !&&  sellipse '<{10d,5d},(280d,-20d),90d>';
1426 ?column?
1427----------
1428 f
1429(1 row)
1430
1431SELECT spoly '{(280d,-11d),(280d,-12d),(279d, -12d)}' !&&  sellipse '<{10d,5d},(280d,-20d),90d>';
1432 ?column?
1433----------
1434 f
1435(1 row)
1436
1437SELECT sellipse '<{10d,5d},(280d,-20d),90d>'   ~  spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}';
1438 ?column?
1439----------
1440 f
1441(1 row)
1442
1443SELECT sellipse '<{10d,5d},(280d,-20d),90d>'   ~  spoly '{(280d, -9d),(280d,-12d),(279d, -8d)}';
1444 ?column?
1445----------
1446 f
1447(1 row)
1448
1449SELECT sellipse '<{10d,5d},(280d,-20d),90d>'   ~  spoly '{(280d,-11d),(280d,-12d),(279d, -12d)}';
1450 ?column?
1451----------
1452 t
1453(1 row)
1454
1455SELECT sellipse '<{10d,5d},(280d,-20d),90d>'   &&  spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}';
1456 ?column?
1457----------
1458 f
1459(1 row)
1460
1461SELECT sellipse '<{10d,5d},(280d,-20d),90d>'   &&  spoly '{(280d, -9d),(280d,-12d),(279d, -8d)}';
1462 ?column?
1463----------
1464 t
1465(1 row)
1466
1467SELECT sellipse '<{10d,5d},(280d,-20d),90d>'   &&  spoly '{(280d,-11d),(280d,-12d),(279d, -12d)}';
1468 ?column?
1469----------
1470 t
1471(1 row)
1472
1473SELECT sellipse '<{10d,5d},(280d,-20d),90d>'  !~  spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}';
1474 ?column?
1475----------
1476 t
1477(1 row)
1478
1479SELECT sellipse '<{10d,5d},(280d,-20d),90d>'  !~  spoly '{(280d, -9d),(280d,-12d),(279d, -8d)}';
1480 ?column?
1481----------
1482 t
1483(1 row)
1484
1485SELECT sellipse '<{10d,5d},(280d,-20d),90d>'  !~  spoly '{(280d,-11d),(280d,-12d),(279d, -12d)}';
1486 ?column?
1487----------
1488 f
1489(1 row)
1490
1491SELECT sellipse '<{10d,5d},(280d,-20d),90d>'  !&&  spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}';
1492 ?column?
1493----------
1494 t
1495(1 row)
1496
1497SELECT sellipse '<{10d,5d},(280d,-20d),90d>'  !&&  spoly '{(280d, -9d),(280d,-12d),(279d, -8d)}';
1498 ?column?
1499----------
1500 f
1501(1 row)
1502
1503SELECT sellipse '<{10d,5d},(280d,-20d),90d>'  !&&  spoly '{(280d,-11d),(280d,-12d),(279d, -12d)}';
1504 ?column?
1505----------
1506 f
1507(1 row)
1508
1509-- ellipse is point
1510SELECT spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}'    @  sellipse '<{0d,0d},(280d,-20d),90d>';
1511 ?column?
1512----------
1513 f
1514(1 row)
1515
1516SELECT spoly '{(280d,-11d),(280d,-20d),(279d, -12d)}'   @  sellipse '<{0d,0d},(280d,-20d),90d>';
1517 ?column?
1518----------
1519 f
1520(1 row)
1521
1522SELECT spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}'   &&  sellipse '<{0d,0d},(280d,-20d),90d>';
1523 ?column?
1524----------
1525 f
1526(1 row)
1527
1528SELECT spoly '{(280d,-11d),(280d,-20d),(279d, -12d)}'  &&  sellipse '<{0d,0d},(280d,-20d),90d>';
1529 ?column?
1530----------
1531 t
1532(1 row)
1533
1534SELECT sellipse '<{0d,0d},(280d,-20d),90d>'   @  spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}' ;
1535 ?column?
1536----------
1537 f
1538(1 row)
1539
1540SELECT sellipse '<{0d,0d},(280d,-20d),90d>'   @  spoly '{(280d,-11d),(280d,-20d),(279d, -12d)}';
1541 ?column?
1542----------
1543 t
1544(1 row)
1545
1546SELECT sellipse '<{0d,0d},(280d,-20d),90d>'  &&  spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}' ;
1547 ?column?
1548----------
1549 f
1550(1 row)
1551
1552SELECT sellipse '<{0d,0d},(280d,-20d),90d>'  &&  spoly '{(280d,-11d),(280d,-20d),(279d, -12d)}';
1553 ?column?
1554----------
1555 t
1556(1 row)
1557
1558-- ellipse is circle
1559SELECT spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}'    @  sellipse '<{5d,5d},(280d,-20d),90d>';
1560 ?column?
1561----------
1562 f
1563(1 row)
1564
1565SELECT spoly '{(280d,-10d),(290d,-30d),(270d, -30d)}'   @  sellipse '<{2d,2d},(280d,-20d),90d>';
1566 ?column?
1567----------
1568 f
1569(1 row)
1570
1571SELECT spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}'   &&  sellipse '<{5d,5d},(280d,-20d),90d>';
1572 ?column?
1573----------
1574 f
1575(1 row)
1576
1577SELECT spoly '{(280d,-11d),(280d,-20d),(279d, -12d)}'  &&  sellipse '<{5d,5d},(280d,-20d),90d>';
1578 ?column?
1579----------
1580 t
1581(1 row)
1582
1583SELECT sellipse '<{5d,5d},(280d,-20d),90d>'   @  spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}' ;
1584 ?column?
1585----------
1586 f
1587(1 row)
1588
1589SELECT sellipse '<{2d,2d},(280d,-20d),90d>'   @  spoly '{(280d,-10d),(290d,-30d),(270d, -30d)}';
1590 ?column?
1591----------
1592 t
1593(1 row)
1594
1595SELECT sellipse '<{5d,5d},(280d,-20d),90d>'  &&  spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}' ;
1596 ?column?
1597----------
1598 f
1599(1 row)
1600
1601SELECT sellipse '<{5d,5d},(280d,-20d),90d>'  &&  spoly '{(280d,-11d),(280d,-18d),(279d, -12d)}';
1602 ?column?
1603----------
1604 t
1605(1 row)
1606
1607-- ellipse is line
1608SELECT spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}'    @  sellipse '<{5d,0d},(280d,-20d),90d>';
1609 ?column?
1610----------
1611 f
1612(1 row)
1613
1614SELECT spoly '{(280d,-10d),(290d,-30d),(270d, -30d)}'   @  sellipse '<{2d,0d},(280d,-20d),90d>';
1615 ?column?
1616----------
1617 f
1618(1 row)
1619
1620SELECT spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}'   &&  sellipse '<{5d,0d},(280d,-20d),90d>';
1621 ?column?
1622----------
1623 f
1624(1 row)
1625
1626SELECT spoly '{(280d,-11d),(280d,-20d),(279d, -12d)}'  &&  sellipse '<{5d,0d},(280d,-20d),90d>';
1627 ?column?
1628----------
1629 t
1630(1 row)
1631
1632SELECT sellipse '<{5d,0d},(280d,-20d),90d>'   @  spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}' ;
1633 ?column?
1634----------
1635 f
1636(1 row)
1637
1638SELECT sellipse '<{2d,0d},(280d,-20d),90d>'   @  spoly '{(280d,-10d),(290d,-30d),(270d, -30d)}';
1639 ?column?
1640----------
1641 t
1642(1 row)
1643
1644SELECT sellipse '<{5d,0d},(280d,-20d),90d>'  &&  spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}' ;
1645 ?column?
1646----------
1647 f
1648(1 row)
1649
1650SELECT sellipse '<{5d,0d},(280d,-20d),90d>'  &&  spoly '{(280d,-11d),(280d,-18d),(279d, -12d)}';
1651 ?column?
1652----------
1653 t
1654(1 row)
1655
1656-- ellipse is a real ellipse
1657SELECT spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}'    @  sellipse '<{5d,2d},(280d,-20d),90d>';
1658 ?column?
1659----------
1660 f
1661(1 row)
1662
1663SELECT spoly '{(280d,-10d),(290d,-30d),(270d, -30d)}'   @  sellipse '<{2d,1d},(280d,-20d),90d>';
1664 ?column?
1665----------
1666 f
1667(1 row)
1668
1669SELECT spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}'   &&  sellipse '<{5d,2d},(280d,-20d),90d>';
1670 ?column?
1671----------
1672 f
1673(1 row)
1674
1675SELECT spoly '{(280d,-11d),(280d,-20d),(279d, -12d)}'  &&  sellipse '<{5d,2d},(280d,-20d),90d>';
1676 ?column?
1677----------
1678 t
1679(1 row)
1680
1681SELECT sellipse '<{5d,2d},(280d,-20d),90d>'   @  spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}' ;
1682 ?column?
1683----------
1684 f
1685(1 row)
1686
1687SELECT sellipse '<{2d,1d},(280d,-20d),90d>'   @  spoly '{(280d,-10d),(290d,-30d),(270d, -30d)}';
1688 ?column?
1689----------
1690 t
1691(1 row)
1692
1693SELECT sellipse '<{5d,2d},(280d,-20d),90d>'  &&  spoly '{(280d, -9d),(280d, -8d),(279d, -8d)}' ;
1694 ?column?
1695----------
1696 f
1697(1 row)
1698
1699SELECT sellipse '<{5d,2d},(280d,-20d),90d>'  &&  spoly '{(280d,-11d),(280d,-18d),(279d, -12d)}';
1700 ?column?
1701----------
1702 t
1703(1 row)
1704
1705-- create polygon as aggregate
1706SELECT spoly(data.p) FROM ( SELECT spoint '(0,1)' as p UNION ALL SELECT spoint '(1,1)' UNION ALL SELECT '(1,0)' ) AS data ;
1707                            spoly
1708-------------------------------------------------------------
1709 {(0d , 57.29578d),(57.29578d , 57.29578d),(57.29578d , 0d)}
1710(1 row)
1711
1712-- test stored data
1713SELECT count(id) FROM spheretmp5 WHERE id=2  AND area(p) BETWEEN 5.735555 AND 5.735556 ;
1714 count
1715-------
1716     1
1717(1 row)
1718
1719-- check to create this small polygon without errors
1720SELECT area( spoly '{
1721  (3.09472232280407 , 1.47261266025223),
1722  (3.0947320190777 , 1.47261266025223),
1723  (3.0947320190777 , 1.47262235652586),
1724  (3.09472232280407 , 1.47262235652586) }') >= 0 ;
1725 ?column?
1726----------
1727 t
1728(1 row)
1729
1730SELECT npoints( spoly '{
1731  (1.51214841579108 , -2.90888208684947e-05),
1732  (1.5121581120647 , -2.90888208684947e-05),
1733  (1.5121581120647 , -1.93925472462553e-05),
1734  (1.51214841579108 , -1.93925472462553e-05)
1735}');
1736 npoints
1737---------
1738       4
1739(1 row)
1740
1741