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