intersects_sph_geo.cpp 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // Boost.Geometry
  2. // Copyright (c) 2016 Oracle and/or its affiliates.
  3. // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
  4. // Use, modification and distribution is subject to the Boost Software License,
  5. // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  6. // http://www.boost.org/LICENSE_1_0.txt)
  7. #include "test_intersects.hpp"
  8. #include <boost/geometry/geometries/geometries.hpp>
  9. template <typename P>
  10. void test_point_box()
  11. {
  12. typedef bg::model::box<P> box_t;
  13. test_geometry<P, box_t>("POINT(0 0)", "BOX(0 0, 1 1)", true);
  14. test_geometry<P, box_t>("POINT(1 1)", "BOX(0 0, 2 2)", true);
  15. test_geometry<P, box_t>("POINT(180 1)", "BOX(170 0, 190 2)", true);
  16. test_geometry<P, box_t>("POINT(-180 1)", "BOX(170 0, 190 2)", true);
  17. test_geometry<P, box_t>("POINT(180 1)", "BOX(170 0, 180 2)", true);
  18. test_geometry<P, box_t>("POINT(-180 1)", "BOX(170 0, 180 2)", true);
  19. test_geometry<P, box_t>("POINT(179 1)", "BOX(170 0, 190 2)", true);
  20. test_geometry<P, box_t>("POINT(-179 1)", "BOX(170 0, 190 2)", true);
  21. test_geometry<P, box_t>("POINT(179 1)", "BOX(170 0, 180 2)", true);
  22. test_geometry<P, box_t>("POINT(-179 1)", "BOX(170 0, 180 2)", false);
  23. test_geometry<P, box_t>("POINT(169 1)", "BOX(170 0, 180 2)", false);
  24. }
  25. template <typename P>
  26. void test_box_box()
  27. {
  28. typedef bg::model::box<P> box_t;
  29. test_geometry<box_t, box_t>("BOX(0 0, 1 1)", "BOX(0 0, 1 1)", true);
  30. test_geometry<box_t, box_t>("BOX(-170 0,-160 1)", "BOX(-180 0, 180 1)", true);
  31. test_geometry<box_t, box_t>("BOX(-170 0,-160 1)", "BOX(170 0, 200 1)", true);
  32. test_geometry<box_t, box_t>("BOX(-170 0,-150 1)", "BOX(170 0, 200 1)", true);
  33. test_geometry<box_t, box_t>("BOX(201 0,202 1)", "BOX(170 0, 200 1)", false); // invalid g1?
  34. test_geometry<box_t, box_t>("BOX(-159 0,-158 1)", "BOX(170 0, 200 1)", false);
  35. test_geometry<box_t, box_t>("BOX(160 0,169 1)", "BOX(170 0, 200 1)", false);
  36. test_geometry<box_t, box_t>("BOX(-159 0,169 1)", "BOX(170 0, 200 1)", false);
  37. test_geometry<box_t, box_t>("BOX(0 0,1 1)", "BOX(170 0, 370 1)", true);
  38. test_geometry<box_t, box_t>("BOX(0 0,10 1)", "BOX(170 0, 370 1)", true);
  39. test_geometry<box_t, box_t>("BOX(-180 0,10 1)", "BOX(170 0, 370 1)", true);
  40. test_geometry<box_t, box_t>("BOX(-180 0,20 1)", "BOX(170 0, 370 1)", true);
  41. test_geometry<box_t, box_t>("BOX(10 0,20 1)", "BOX(170 0, 370 1)", true);
  42. test_geometry<box_t, box_t>("BOX(160 0,180 1)", "BOX(170 0, 370 1)", true);
  43. test_geometry<box_t, box_t>("BOX(160 0,165 1)", "BOX(170 0, 370 1)", false);
  44. test_geometry<box_t, box_t>("BOX(15 0,20 1)", "BOX(170 0, 370 1)", false);
  45. test_geometry<box_t, box_t>("BOX(375 0,380 1)", "BOX(170 0, 370 1)", false); // invalid g1?
  46. test_geometry<box_t, box_t>("BOX(-180 0,-170 1)", "BOX(180 0, 190 1)", true); // invalid?
  47. test_geometry<box_t, box_t>("BOX(-180 0,-170 1)", "BOX(180 0, 191 1)", true); // invalid?
  48. test_geometry<box_t, box_t>("BOX(-180 0,-170 1)", "BOX(179 0, 190 1)", true);
  49. test_geometry<box_t, box_t>("BOX(-180 0,-170 1)", "BOX(181 0, 190 1)", true); // invalid?
  50. test_geometry<box_t, box_t>("BOX(-180 0,-170 1)", "BOX(180 0, 189 1)", true); // invalid?
  51. }
  52. template <typename P>
  53. void test_cs()
  54. {
  55. test_point_box<P>();
  56. test_box_box<P>();
  57. }
  58. int test_main( int , char* [] )
  59. {
  60. test_cs<bg::model::point<double, 2, bg::cs::spherical_equatorial<bg::degree> > >();
  61. test_cs<bg::model::point<double, 2, bg::cs::geographic<bg::degree> > >();
  62. #if defined(HAVE_TTMATH)
  63. test_cs<bg::model::point<ttmath_big, 2, bg::cs::spherical_equatorial<bg::degree> > >();
  64. test_cs<bg::model::point<ttmath_big, 2, bg::cs::geographic<bg::degree> > >();;
  65. #endif
  66. return 0;
  67. }