diff --git a/.gitattributes b/.gitattributes index f194392bdda..193c3d58568 100644 --- a/.gitattributes +++ b/.gitattributes @@ -24,6 +24,8 @@ AABB_tree/include/CGAL/Triangle_3_line_3_intersection.h -text AABB_tree/test/AABB_tree/CMakeLists.txt -text AABB_tree/test/AABB_tree/aabb_intersection_test.cpp -text AABB_tree/test/AABB_tree/aabb_projection_test.cpp -text +AABB_tree/test/AABB_tree/data/anchor.off -text +AABB_tree/test/AABB_tree/data/cube.off -text Algebraic_foundations/doc_tex/Algebraic_foundations/Algebraic_foundations.png -text Algebraic_foundations/doc_tex/Algebraic_foundations/Algebraic_foundations2.png -text Algebraic_foundations/doc_tex/Algebraic_foundations/algebraic_structures.tex -text diff --git a/AABB_tree/examples/AABB_tree/AABB_polyhedron_facet_example.cpp b/AABB_tree/examples/AABB_tree/AABB_polyhedron_facet_example.cpp index ecefb88ddb2..17bdb73daab 100644 --- a/AABB_tree/examples/AABB_tree/AABB_polyhedron_facet_example.cpp +++ b/AABB_tree/examples/AABB_tree/AABB_polyhedron_facet_example.cpp @@ -26,7 +26,6 @@ #include #include #include -#include #include typedef CGAL::Exact_predicates_inexact_constructions_kernel K; @@ -35,19 +34,21 @@ typedef CGAL::Polyhedron_3 Polyhedron; typedef K::FT FT; typedef K::Ray_3 Ray; typedef K::Point_3 Point; +typedef K::Vector_3 Vector; class Polyhedron_triangle_primitive { - // type +// types public: typedef K::Triangle_3 Object; // object type typedef Polyhedron::Facet_handle Id; // Id type - // member data +// member data private: Id m_handle; // Facet_handle Object m_object; // 3D triangle +public: Polyhedron_triangle_primitive(Id handle) : m_handle(handle) { @@ -56,13 +57,13 @@ private: const Point& c = handle->halfedge()->prev()->vertex()->point(); m_object = Object(a,b,c); } -public: - Object object() { return m_object; } + const Object& object() const { return m_object; } + Object& object() { return m_object; } Id id() { return m_handle; } }; -typedef AABB_traits AABB_Polyhedron_traits; -typedef AABB_tree Polyhedron_tree; +typedef CGAL::AABB_traits AABB_Polyhedron_traits; +typedef CGAL::AABB_tree Polyhedron_tree; int main(void) { diff --git a/AABB_tree/examples/AABB_tree/AABB_triangle_3_example.cpp b/AABB_tree/examples/AABB_tree/AABB_triangle_3_example.cpp index 482f194ab20..c8673c5cbf9 100644 --- a/AABB_tree/examples/AABB_tree/AABB_triangle_3_example.cpp +++ b/AABB_tree/examples/AABB_tree/AABB_triangle_3_example.cpp @@ -23,9 +23,9 @@ //****************************************************************************** #include +#include #include #include -#include #include typedef CGAL::Exact_predicates_inexact_constructions_kernel K; @@ -48,20 +48,22 @@ private: Id m_it; // iterator Object m_object; // 3D triangle +public: Triangle_primitive(Id it) : m_it(it) { m_object = *it; // copy triangle } public: - Object object() { return m_object; } + const Object& object() const { return m_object; } + Object& object() { return m_object; } Id id() { return m_it; } }; -typedef std::list::iterator Iterator; -typedef typename Triangle_primitive Primitive; -typedef AABB_traits AABB_triangle_traits; -typedef AABB_tree Polyhedron_tree; +typedef std::list::iterator Iterator; +typedef Triangle_primitive Primitive; +typedef CGAL::AABB_traits AABB_triangle_traits; +typedef CGAL::AABB_tree Polyhedron_tree; int main(void) { diff --git a/AABB_tree/examples/AABB_tree/CMakeLists.txt b/AABB_tree/examples/AABB_tree/CMakeLists.txt index 9ef3237099e..c133a8ea598 100644 --- a/AABB_tree/examples/AABB_tree/CMakeLists.txt +++ b/AABB_tree/examples/AABB_tree/CMakeLists.txt @@ -1,12 +1,11 @@ # Created by the script cgal_create_cmake_script # This is the CMake script for compiling a CGAL application. - project(AABB_example) CMAKE_MINIMUM_REQUIRED(VERSION 2.4.5) -include_directories(../../include/CGAL/AABB_tree) +include_directories(../../include/) set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) @@ -24,12 +23,11 @@ if ( CGAL_FOUND ) include( CGAL_CreateSingleSourceCGALProgram ) - create_single_source_cgal_program("AABB_polyhedron_facet_example.cpp") create_single_source_cgal_program("AABB_triangle_3_example.cpp") + create_single_source_cgal_program("AABB_polyhedron_facet_example.cpp") else() message(STATUS "This program requires the CGAL library, and will not be compiled.") endif() - diff --git a/AABB_tree/include/CGAL/AABB_intersections.h b/AABB_tree/include/CGAL/AABB_intersections.h index 74cfc2711cb..3b278c329b6 100644 --- a/AABB_tree/include/CGAL/AABB_intersections.h +++ b/AABB_tree/include/CGAL/AABB_intersections.h @@ -1,9 +1,11 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include +// PA: this file will move later to the kernel folder + +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/AABB_tree/include/CGAL/AABB_node.h b/AABB_tree/include/CGAL/AABB_node.h index 7de2e354c7e..b372dec542e 100644 --- a/AABB_tree/include/CGAL/AABB_node.h +++ b/AABB_tree/include/CGAL/AABB_node.h @@ -31,15 +31,7 @@ #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include namespace CGAL { diff --git a/AABB_tree/include/CGAL/AABB_traits.h b/AABB_tree/include/CGAL/AABB_traits.h index 1375af00abd..2b6b1bb89a4 100644 --- a/AABB_tree/include/CGAL/AABB_traits.h +++ b/AABB_tree/include/CGAL/AABB_traits.h @@ -26,6 +26,7 @@ #define AABB_TRAITS_H_ #include +#include namespace CGAL { @@ -34,7 +35,7 @@ namespace CGAL { * * */ -template +template class AABB_traits { public: @@ -45,10 +46,14 @@ public: /// Segment query type typedef typename GeomTraits::Segment_3 Segment_3; + // TODO: delete once "inside..." disappears + typedef typename GeomTraits::Triangle_3 Triangle_3; + /// AABBTraits concept types typedef typename CGAL::Bbox_3 Bounding_box; - typedef typename Primitive::Data Data; + typedef typename AABB_primitive Primitive; + typedef typename AABB_primitive::Object Object; typedef typename GeomTraits::Sphere_3 Sphere; typedef typename GeomTraits::Point_3 Projection; @@ -121,7 +126,6 @@ private: /// Private types typedef typename GeomTraits::FT FT; typedef typename GeomTraits::Point_3 Point_3; - typedef typename TrianglePrimitive::Triangle_3 Triangle_3; private: /** @@ -131,7 +135,7 @@ private: */ Bounding_box compute_bbox(const Primitive& pr) const { - return pr.data().bbox(); + return pr.object().bbox(); } typedef enum { CGAL_AXIS_X = 0, @@ -144,7 +148,7 @@ private: private: // Disabled copy constructor & assignment operator - typedef AABB_traits Self; + typedef AABB_traits Self; AABB_traits(const Self& src); Self& operator=(const Self& src); @@ -152,59 +156,59 @@ private: -template +template bool -AABB_traits::x_less_than(const Primitive& pr1, - const Primitive& pr2) +AABB_traits::x_less_than(const P& pr1, + const P& pr2) { - const FT& ax1 = pr1.data().vertex(0).x(); - const FT& bx1 = pr1.data().vertex(1).x(); - const FT& cx1 = pr1.data().vertex(2).x(); + const FT& ax1 = pr1.object().vertex(0).x(); + const FT& bx1 = pr1.object().vertex(1).x(); + const FT& cx1 = pr1.object().vertex(2).x(); - const FT& ax2 = pr2.data().vertex(0).x(); - const FT& bx2 = pr2.data().vertex(1).x(); - const FT& cx2 = pr2.data().vertex(2).x(); + const FT& ax2 = pr2.object().vertex(0).x(); + const FT& bx2 = pr2.object().vertex(1).x(); + const FT& cx2 = pr2.object().vertex(2).x(); return (ax1+bx1+cx1) < (ax2+bx2+cx2); } -template +template bool -AABB_traits::y_less_than(const Primitive& pr1, - const Primitive& pr2) +AABB_traits::y_less_than(const P& pr1, + const P& pr2) { - const FT& ay1 = pr1.data().vertex(0).y(); - const FT& by1 = pr1.data().vertex(1).y(); - const FT& cy1 = pr1.data().vertex(2).y(); + const FT& ay1 = pr1.object().vertex(0).y(); + const FT& by1 = pr1.object().vertex(1).y(); + const FT& cy1 = pr1.object().vertex(2).y(); - const FT& ay2 = pr2.data().vertex(0).y(); - const FT& by2 = pr2.data().vertex(1).y(); - const FT& cy2 = pr2.data().vertex(2).y(); + const FT& ay2 = pr2.object().vertex(0).y(); + const FT& by2 = pr2.object().vertex(1).y(); + const FT& cy2 = pr2.object().vertex(2).y(); return (ay1+by1+cy1) < (ay2+by2+cy2); } -template +template bool -AABB_traits::z_less_than(const Primitive& pr1, - const Primitive& pr2) +AABB_traits::z_less_than(const P& pr1, + const P& pr2) { - const FT& az1 = pr1.data().vertex(0).z(); - const FT& bz1 = pr1.data().vertex(1).z(); - const FT& cz1 = pr1.data().vertex(2).z(); + const FT& az1 = pr1.object().vertex(0).z(); + const FT& bz1 = pr1.object().vertex(1).z(); + const FT& cz1 = pr1.object().vertex(2).z(); - const FT& az2 = pr2.data().vertex(0).z(); - const FT& bz2 = pr2.data().vertex(1).z(); - const FT& cz2 = pr2.data().vertex(2).z(); + const FT& az2 = pr2.object().vertex(0).z(); + const FT& bz2 = pr2.object().vertex(1).z(); + const FT& cz2 = pr2.object().vertex(2).z(); return (az1+bz1+cz1) < (az2+bz2+cz2); } -template +template template void -AABB_traits::sort_primitives(PrimitiveIterator first, +AABB_traits::sort_primitives(PrimitiveIterator first, PrimitiveIterator last, const Bounding_box& bbox) const { @@ -225,10 +229,10 @@ AABB_traits::sort_primitives(PrimitiveIterator first, } } -template +template template -typename AABB_traits::Bounding_box -AABB_traits::compute_bbox(ConstPrimitiveIterator first, +typename AABB_traits::Bounding_box +AABB_traits::compute_bbox(ConstPrimitiveIterator first, ConstPrimitiveIterator last) const { Bounding_box bbox = compute_bbox(*first); @@ -240,10 +244,10 @@ AABB_traits::compute_bbox(ConstPrimitiveIterator first, } -template +template template bool -AABB_traits::do_intersect(const Query& q, +AABB_traits::do_intersect(const Query& q, const Bounding_box& bbox) const { // AABB tree package call @@ -252,26 +256,26 @@ AABB_traits::do_intersect(const Query& q, } -template +template template bool -AABB_traits::do_intersect(const Query& q, - const Primitive& pr) const +AABB_traits::do_intersect(const Query& q, + const P& pr) const { - return GT().do_intersect_3_object()(q, pr.data()); + return GT().do_intersect_3_object()(q, pr.object()); } -template +template template bool -AABB_traits::intersection(const Query& q, - const Primitive& pr, +AABB_traits::intersection(const Query& q, + const P& pr, Intersection& intersection) const { // TODO: implement a real intersection construction method // do_intersect is needed here because we construct intersection between - // pr.data().supporting_plane() and q + // pr.object().supporting_plane() and q if ( ! do_intersect(q,pr) ) { return false; @@ -279,7 +283,8 @@ AABB_traits::intersection(const Query& q, // AABB tree package call // TODO: extend kernel - Object intersection_obj = CGAL::intersection(pr.data(), q); + Object o = pr.object(); + CGAL::Object intersection_obj = CGAL::intersection(o, q); return CGAL::assign(intersection, intersection_obj); } @@ -287,15 +292,15 @@ AABB_traits::intersection(const Query& q, // PA: CAREFUL: the ad-hoc code here must be removed. -template +template bool -AABB_traits::intersection(const Sphere& sphere, - const Primitive& pr, +AABB_traits::intersection(const Sphere& sphere, + const P& pr, Projection& projected) const { - typedef typename TP::Data Triangle_3; + typedef typename P::Object Triangle_3; - const Triangle_3 triangle = pr.data(); + const Triangle_3 triangle = pr.object(); projected = triangle.supporting_plane().projection(sphere.center()); // If point is projected outside sphere, return false @@ -318,9 +323,9 @@ AABB_traits::intersection(const Sphere& sphere, } -template +template bool -AABB_traits::is_smaller(const Sphere& a, const Sphere& b) const +AABB_traits::is_smaller(const Sphere& a, const Sphere& b) const { CGAL_precondition(a.center() == b.center()); @@ -333,9 +338,9 @@ AABB_traits::is_smaller(const Sphere& a, const Sphere& b) const //------------------------------------------------------- // Private methods //------------------------------------------------------- -template -typename AABB_traits::Axis -AABB_traits::longest_axis(const Bounding_box& bbox) const +template +typename AABB_traits::Axis +AABB_traits::longest_axis(const Bounding_box& bbox) const { const double dx = bbox.xmax() - bbox.xmin(); const double dy = bbox.ymax() - bbox.ymin(); @@ -366,9 +371,9 @@ AABB_traits::longest_axis(const Bounding_box& bbox) const } // PA: ad-hoc code to be removed -template +template bool -AABB_traits::is_inside_triangle_3(Point_3& p, +AABB_traits::is_inside_triangle_3(Point_3& p, const Triangle_3& t) const { typedef typename GT::Vector_3 Vector; diff --git a/AABB_tree/include/CGAL/AABB_tree.h b/AABB_tree/include/CGAL/AABB_tree.h index 04487146151..788dee9bdaf 100644 --- a/AABB_tree/include/CGAL/AABB_tree.h +++ b/AABB_tree/include/CGAL/AABB_tree.h @@ -23,7 +23,7 @@ #include #include -#include +#include #include #include #include @@ -43,8 +43,8 @@ public: typedef typename AABBTraits::Primitive Primitive; typedef typename AABBTraits::Bounding_box Bounding_box; typedef typename AABBTraits::Projection_query Projection_query; - typedef typename AABBTraits::Projection_type Projection_type; - typedef typename AABBTraits::Intersection_type Intersection_type; + typedef typename AABBTraits::Projection Projection; + typedef typename AABBTraits::Intersection Intersection; /** * @brief Constructor @@ -77,27 +77,27 @@ public: template bool any_intersection(const Query& q, - Intersection_type& intersection) const; + Intersection& intersection) const; template bool any_intersected_primitive(const Query& q, Primitive& pr) const; - Projection_type closest_point(const Projection_query& q, - const Projection_type& hint) const; + Projection closest_point(const Projection_query& q, + const Projection& hint) const; ////////////////////////////////////////////// //TODO: document this - Bounding_box root_bbox() const { return p_root_->bounding_box(); } - bool is_empty() const { return data_.empty(); } - size_t size() const { return data_.size(); } + Bounding_box root_bbox() const { return m_p_root->bounding_box(); } + bool is_empty() const { return m_data.empty(); } + size_t size() const { return m_data.size(); } /// generic traversal of tree template void traversal(const Query& q, Traversal_traits& traits) const { - p_root_->template traversal(q, traits, data_.size()); + m_p_root->template traversal(q, traits, m_data.size()); } ////////////////////////////////////////////// @@ -116,14 +116,14 @@ private: { public: First_intersection_traits() - : is_found_(false) - , result_() {} + : m_is_found(false) + , m_result() {} - bool go_further() const { return !is_found_; } + bool go_further() const { return !m_is_found; } void intersection(const Query& q, const Primitive& primitive) { - is_found_ = AABBTraits().intersection(q, primitive, result_); + m_is_found = AABBTraits().intersection(q, primitive, m_result); } bool do_intersect(const Query& q, const Node& node) const @@ -131,12 +131,12 @@ private: return AABBTraits().do_intersect(q, node.bounding_box()); } - Intersection_type result() const { return result_; } - bool is_intersection_found() const { return is_found_; } + Intersection result() const { return m_result; } + bool is_intersection_found() const { return m_is_found; } private: - bool is_found_; - Intersection_type result_; + bool m_is_found; + Intersection m_result; }; @@ -169,7 +169,7 @@ private: int intersection_number() const { return intersection_nb_; } private: - Intersection_type intersection_; + Intersection intersection_; int intersection_nb_; }; @@ -201,7 +201,7 @@ private: } private: - Intersection_type intersection_; + Intersection intersection_; Output_iterator out_it_; }; @@ -233,7 +233,7 @@ private: } private: - Intersection_type intersection_; + Intersection intersection_; Output_iterator out_it_; }; @@ -244,7 +244,7 @@ private: { public: Projecting_traits(const Projection_query& query, - const Projection_type& hint) + const Projection& hint) : projection_(hint) , center_(query) , sphere_(AABBTraits().sphere(query,hint)) { } @@ -256,7 +256,7 @@ private: // We don't use q here because it is embedded in sphere_ and we don't // want to compute sphere everytime - Projection_type projection; + Projection projection; if ( AABBTraits().intersection(sphere_, primitive, projection) ) { const Sphere sphere = AABBTraits().sphere(center_, projection); @@ -273,10 +273,10 @@ private: return AABBTraits().do_intersect(sphere_, node.bounding_box()); } - Projection_type projection() const { return projection_; } + Projection projection() const { return projection_; } private: - Projection_type projection_; + Projection projection_; Projection_query center_; Sphere sphere_; }; @@ -284,9 +284,9 @@ private: private: // set of input primitives (halfedge or face handles) - std::vector data_; + std::vector m_data; // single root node - Node* p_root_; + Node* m_p_root; private: // Disabled copy constructor & assignment operator @@ -300,26 +300,26 @@ template template AABB_tree::AABB_tree(ConstPrimitiveIterator first, ConstPrimitiveIterator beyond) -: data_() -, p_root_(NULL) +: m_data() +, m_p_root(NULL) { // Insert each primitive into tree // TODO: get number of elements to reserve space ? while ( first != beyond ) { - data_.push_back(Primitive(first)); + m_data.push_back(Primitive(first)); ++first; } - p_root_ = new Node[data_.size()-1](); - p_root_->expand(data_.begin(), data_.end(), data_.size()); + m_p_root = new Node[m_data.size()-1](); + m_p_root->expand(m_data.begin(), m_data.end(), m_data.size()); } template AABB_tree::~AABB_tree() { - delete[] p_root_; + delete[] m_p_root; } @@ -353,8 +353,8 @@ AABB_tree::number_of_intersections(const Query& query) const template template OutputIterator -AABB_tree::intersected_primitives(const Query& query, - OutputIterator out) const +AABB_tree::all_intersected_primitives(const Query& query, + OutputIterator out) const { typedef Listing_primitive_traits Traversal_traits; Traversal_traits traversal_traits(out); @@ -363,8 +363,6 @@ AABB_tree::intersected_primitives(const Query& query, return out; } - - template template OutputIterator @@ -383,7 +381,7 @@ template template bool AABB_tree::any_intersection(const Query& query, - Intersection_type& intersection) const + Intersection& intersection) const { typedef First_intersection_traits Traversal_traits; Traversal_traits traversal_traits; @@ -396,9 +394,9 @@ AABB_tree::any_intersection(const Query& query, template -typename AABB_tree::Projection_type +typename AABB_tree::Projection AABB_tree::closest_point(const Projection_query& query, - const Projection_type& hint) const + const Projection& hint) const { Projecting_traits traversal_traits(query,hint); diff --git a/AABB_tree/test/AABB_tree/data/anchor.off b/AABB_tree/test/AABB_tree/data/anchor.off new file mode 100644 index 00000000000..748f2902ece --- /dev/null +++ b/AABB_tree/test/AABB_tree/data/anchor.off @@ -0,0 +1,1571 @@ +OFF +519 1050 0 +28.764851 6.267166 23.405861 +29.454098 4.874989 22.716553 +35.857853 20.000011 16.312805 +29.962002 3.334682 22.208656 +30.273045 1.693058 21.897659 +22.286297 9.601860 29.884361 +23.483501 9.749989 28.687210 +23.483501 20.000011 28.687210 +24.680698 9.601860 27.490005 +25.841503 9.161987 26.329208 +26.930653 8.443737 25.240059 +10.882751 -9.079821 41.287903 +12.042248 -11.755716 40.128410 +18.202152 -6.267191 33.968506 +13.483501 -14.142145 38.687210 +19.051952 -7.468946 33.118759 +15.170948 -16.180351 36.999710 +20.036350 -8.443762 32.134354 +17.063107 -17.820139 35.107605 +21.125500 -9.162016 31.045158 +19.113354 -19.021141 33.057358 +22.286297 -9.601887 29.884361 +21.271152 -19.753775 30.899506 +23.483501 -9.750011 28.687210 +23.483501 -20.000010 28.687210 +24.680698 -9.601887 27.490005 +25.841503 -9.162016 26.329208 +27.915051 7.468922 24.255608 +15.170948 16.180328 36.999710 +19.051952 7.468922 33.118759 +17.063107 17.820118 35.107605 +20.036350 8.443737 32.134354 +19.113354 19.021111 33.057358 +21.125500 9.161987 31.045158 +21.271152 19.753761 30.899506 +28.764851 -6.267191 23.405861 +27.915051 -7.468946 24.255608 +35.857853 -20.000010 16.312805 +26.930653 -8.443762 25.240059 +17.512852 -4.875011 34.657806 +10.033501 -6.180351 42.137161 +17.005001 -3.334707 35.165703 +9.515453 -3.128700 42.655205 +16.693951 -1.693081 35.476753 +9.341351 -0.000011 42.829308 +16.589199 -0.000011 35.581459 +9.515453 3.128677 42.655205 +16.693951 1.693058 35.476753 +10.033501 6.180328 42.137161 +17.005001 3.334682 35.165703 +10.882751 9.079796 41.287903 +17.512852 4.874989 34.657806 +12.042248 11.755692 40.128410 +18.202152 6.267166 33.968506 +13.483501 14.142120 38.687210 +30.273045 -1.693081 21.897659 +29.962002 -3.334707 22.208656 +29.454098 -4.875011 22.716553 +30.377796 -0.000011 21.792908 +-43.138153 16.697861 2.170685 +-43.408844 17.708096 2.170685 +-49.999996 18.750011 2.170685 +-43.499996 18.750011 2.170685 +-49.810089 20.920612 2.170685 +-43.408844 19.791862 2.170685 +-49.246155 23.025257 2.170685 +-43.138153 20.802109 2.170685 +-48.325310 25.000008 2.170685 +-42.696148 21.750011 2.170685 +-47.075550 26.784809 2.170685 +-42.096260 22.606709 2.170685 +-45.534843 28.325562 2.170685 +-41.356724 23.346260 2.170685 +-43.749996 29.575314 2.170685 +-40.499992 23.946163 2.170685 +-41.775246 30.496162 2.170685 +-39.552116 24.388161 2.170685 +-39.670597 31.060059 2.170685 +-38.541889 24.658810 2.170685 +-37.499996 31.250008 2.170685 +-37.499996 24.750008 2.170685 +-36.458107 24.658810 2.170685 +-11.755230 18.984859 2.170685 +-10.715832 19.248013 2.170685 +-31.591148 19.791862 2.170685 +-7.451225 19.731163 2.170685 +49.999996 31.250008 2.170685 +-6.911045 19.811108 2.170685 +-3.033009 20.000011 2.170685 +-38.541889 12.841137 2.170685 +-39.552116 13.111832 2.170685 +-30.748934 3.989182 2.170685 +-40.499992 13.553833 2.170685 +-41.356724 14.153717 2.170685 +-42.096260 14.893257 2.170685 +-35.447880 24.388161 2.170685 +-34.499992 23.946163 2.170685 +-33.643272 23.346260 2.170685 +-32.903728 22.606709 2.170685 +-29.903975 6.174702 2.170685 +-34.499992 13.553833 2.170685 +-29.764309 6.535938 2.170685 +-33.643272 14.153717 2.170685 +-28.244524 9.065838 2.170685 +-32.903728 14.893257 2.170685 +-28.233173 9.079250 2.170685 +-32.303841 15.749985 2.170685 +-26.248541 11.424500 2.170685 +-25.889118 11.740864 2.170685 +-35.447880 -24.388165 2.170685 +-36.458107 -24.658859 2.170685 +-37.499996 -31.250010 2.170685 +-37.499996 -24.750010 2.170685 +-39.670597 -31.060106 2.170685 +-38.541889 -24.658859 2.170685 +-41.775246 -30.496168 2.170685 +-39.552116 -24.388165 2.170685 +-43.749996 -29.575327 2.170685 +-40.499992 -23.946159 2.170685 +-45.534843 -28.325565 2.170685 +-41.356724 -23.346279 2.170685 +-47.075550 -26.784855 2.170685 +-42.096260 -22.606735 2.170685 +-48.325310 -25.000010 2.170685 +-42.696148 -21.750010 2.170685 +-49.246155 -23.025261 2.170685 +-43.138153 -20.802130 2.170685 +-49.810089 -20.920610 2.170685 +-43.408844 -19.791901 2.170685 +-49.999996 -18.750010 2.170685 +-43.499996 -18.750010 2.170685 +-43.408844 -17.708120 2.170685 +-35.447880 13.111832 2.170685 +-36.458107 12.841137 2.170685 +-37.499996 12.749985 2.170685 +-31.861843 16.697861 2.170685 +-23.814060 13.567375 2.170685 +-31.591148 17.708096 2.170685 +-22.995100 14.113907 2.170685 +-20.987053 15.453983 2.170685 +-32.303841 -21.750010 2.170685 +-32.903728 -22.606735 2.170685 +49.999996 -31.250010 2.170685 +-33.643272 -23.346279 2.170685 +-34.499992 -23.946159 2.170685 +-15.843601 17.779099 2.170685 +-14.375507 18.321388 2.170685 +-31.499998 18.750011 2.170685 +-3.033009 -20.000010 2.170685 +-3.844883 -19.991770 2.170685 +-7.455860 -19.742081 2.170685 +-31.591148 -19.791901 2.170685 +-7.713654 -19.724255 2.170685 +-11.494011 -19.084185 2.170685 +-32.303841 21.750011 2.170685 +-31.861843 20.802109 2.170685 +-15.114567 -18.083649 2.170685 +-15.851807 -17.791981 2.170685 +-31.499998 -18.750010 2.170685 +-18.506916 -16.741550 2.170685 +-31.591148 -17.708120 2.170685 +-19.621059 -16.145561 2.170685 +-21.606995 -15.083231 2.170685 +-22.985741 -14.108711 2.170685 +-31.861843 -16.697889 2.170685 +-24.356245 -13.140015 2.170685 +-32.303841 -15.750010 2.170685 +-25.866489 -11.729591 2.170685 +-32.903728 -14.893286 2.170685 +-26.702740 -10.948616 2.170685 +-33.643272 -14.153746 2.170685 +-28.195124 -9.064329 2.170685 +-28.602154 -8.550417 2.170685 +-42.696148 -15.750010 2.170685 +-42.096260 -14.893286 2.170685 +-41.356724 -14.153746 2.170685 +-30.891384 -3.457678 2.170685 +-40.499992 -13.553860 2.170685 +-39.552116 -13.111855 2.170685 +-11.766701 -19.008823 2.170685 +-37.499996 -12.750011 2.170685 +-36.458107 -12.841166 2.170685 +-35.447880 -13.111855 2.170685 +-30.018612 -5.990711 2.170685 +-34.499992 -13.553860 2.170685 +-29.916218 -6.175751 2.170685 +-38.541889 -12.841166 2.170685 +-43.138153 -16.697889 2.170685 +-42.696148 15.749985 2.170685 +-19.619949 16.142570 2.170685 +-17.820942 17.048698 2.170685 +-31.861843 -20.802130 2.170685 +-31.265728 -0.000492 2.170685 +-31.237938 1.496937 2.170685 +-30.918743 3.123737 2.170685 +-30.943655 -3.126692 2.170685 +-31.283779 -0.973103 2.170685 +49.999996 -20.000010 2.170685 +49.999996 20.000011 2.170685 +-49.999996 18.750011 -10.329315 +-49.999996 -18.750010 -10.329315 +49.999996 24.388161 -28.277191 +49.999996 24.658810 -29.287422 +49.999996 31.250008 -30.329311 +49.999996 24.750008 -30.329311 +49.999996 31.060059 -32.499912 +49.999996 24.658810 -31.371201 +49.999996 30.496162 -34.604561 +49.999996 24.388161 -32.381432 +49.999996 29.575314 -36.579311 +49.999996 23.946163 -33.329311 +49.999996 28.325562 -38.364155 +49.999996 23.346260 -34.186035 +49.999996 26.784809 -39.904865 +49.999996 22.606709 -34.925575 +49.999996 25.000008 -41.154629 +49.999996 21.750011 -35.525467 +49.999996 23.025257 -42.075470 +49.999996 20.802109 -35.967464 +49.999996 20.920612 -42.639404 +49.999996 19.791862 -36.238155 +49.999996 18.750011 -42.829311 +49.999996 18.750011 -36.329311 +49.999996 17.708096 -36.238155 +49.999996 23.946163 -27.329311 +49.999996 23.346260 -26.472582 +49.999996 22.606709 -25.733042 +49.999996 19.791862 -24.420465 +49.999996 20.802109 -24.691156 +49.999996 21.750011 -25.133156 +49.999996 17.708096 -24.420465 +49.999996 18.750011 -24.329311 +49.999996 -13.553860 -27.329311 +49.999996 15.749985 -35.525467 +49.999996 -14.153746 -26.472582 +49.999996 14.893257 -34.925575 +49.999996 14.153717 -34.186035 +49.999996 13.111832 -28.277191 +49.999996 13.553833 -27.329311 +49.999996 14.153717 -26.472582 +49.999996 14.893257 -25.733042 +49.999996 15.749985 -25.133156 +49.999996 12.841137 -31.371201 +49.999996 12.749985 -30.329311 +49.999996 12.841137 -29.287422 +49.999996 13.553833 -33.329311 +49.999996 13.111832 -32.381432 +49.999996 -22.606735 -25.733042 +49.999996 -21.750010 -25.133156 +49.999996 -20.802130 -24.691156 +49.999996 -19.791901 -24.420465 +49.999996 -18.750010 -24.329311 +49.999996 -24.750010 -30.329311 +49.999996 -24.658859 -29.287422 +49.999996 -31.250010 -30.329311 +49.999996 -24.388165 -28.277191 +49.999996 -23.946159 -27.329311 +49.999996 -23.346279 -26.472582 +49.999996 16.697861 -24.691156 +49.999996 -12.750011 -30.329311 +49.999996 -12.841166 -29.287422 +49.999996 16.697861 -35.967464 +49.999996 -17.708120 -24.420465 +49.999996 -16.697889 -24.691156 +49.999996 -15.750010 -25.133156 +49.999996 -14.893286 -25.733042 +49.999996 -16.697889 -35.967464 +49.999996 -17.708120 -36.238155 +49.999996 -18.750010 -42.829311 +49.999996 -18.750010 -36.329311 +49.999996 -20.920610 -42.639404 +49.999996 -19.791901 -36.238155 +49.999996 -23.025261 -42.075470 +49.999996 -20.802130 -35.967464 +49.999996 -25.000010 -41.154629 +49.999996 -21.750010 -35.525467 +49.999996 -26.784855 -39.904865 +49.999996 -22.606735 -34.925575 +49.999996 -28.325565 -38.364155 +49.999996 -23.346279 -34.186035 +49.999996 -29.575327 -36.579311 +49.999996 -23.946159 -33.329311 +49.999996 -30.496168 -34.604561 +49.999996 -24.388165 -32.381432 +49.999996 -31.060106 -32.499912 +49.999996 -24.658859 -31.371201 +49.999996 -15.750010 -35.525467 +49.999996 -14.893286 -34.925575 +49.999996 -14.153746 -34.186035 +49.999996 -12.841166 -31.371201 +49.999996 -13.111855 -32.381432 +49.999996 -13.553860 -33.329311 +49.999996 -13.111855 -28.277191 +37.500004 -18.750010 -42.829311 +37.500004 18.750011 -42.829311 +37.500004 16.697861 -35.967464 +37.500004 17.708096 -36.238155 +37.500004 18.750011 -36.329311 +37.500004 20.920612 -42.639404 +37.500004 19.791862 -36.238155 +37.500004 23.025257 -42.075470 +37.500004 20.802109 -35.967464 +37.500004 25.000008 -41.154629 +37.500004 21.750011 -35.525467 +37.500004 26.784809 -39.904865 +37.500004 22.606709 -34.925575 +37.500004 28.325562 -38.364155 +37.500004 23.346260 -34.186035 +37.500004 29.575314 -36.579311 +37.500004 23.946163 -33.329311 +37.500004 30.496162 -34.604561 +37.500004 24.388161 -32.381432 +37.500004 31.060059 -32.499912 +37.500004 24.658810 -31.371201 +37.500004 31.250008 -30.329311 +37.500004 24.750008 -30.329311 +37.500004 24.658810 -29.287422 +37.500004 24.388161 -28.277191 +37.500004 31.250008 -10.329315 +37.500004 23.946163 -27.329311 +37.500004 23.346260 -26.472582 +37.500004 22.606709 -25.733042 +37.500004 21.750011 -25.133156 +37.500004 20.802109 -24.691156 +37.500004 13.553833 -33.329311 +37.500004 14.153717 -34.186035 +37.500004 -14.153746 -34.186035 +37.500004 14.893257 -34.925575 +37.500004 15.749985 -35.525467 +37.500004 19.791862 -24.420465 +37.500004 18.750011 -24.329311 +37.500004 17.708096 -24.420465 +37.500004 -13.553860 -33.329311 +37.500004 -13.111855 -32.381432 +37.500004 12.841137 -31.371201 +37.500004 -12.841166 -31.371201 +37.500004 12.749985 -30.329311 +37.500004 -12.750011 -30.329311 +37.500004 12.841137 -29.287422 +37.500004 -12.841166 -29.287422 +37.500004 -13.111855 -28.277191 +37.500004 -18.750010 -36.329311 +37.500004 -17.708120 -36.238155 +37.500004 -16.697889 -35.967464 +37.500004 -15.750010 -35.525467 +37.500004 -14.893286 -34.925575 +37.500004 13.111832 -32.381432 +37.500004 -19.791901 -36.238155 +37.500004 -20.920610 -42.639404 +37.500004 -20.802130 -35.967464 +37.500004 -23.025261 -42.075470 +37.500004 -21.750010 -35.525467 +37.500004 -25.000010 -41.154629 +37.500004 -22.606735 -34.925575 +37.500004 -26.784855 -39.904865 +37.500004 -23.346279 -34.186035 +37.500004 -28.325565 -38.364155 +37.500004 -23.946159 -33.329311 +37.500004 -29.575327 -36.579311 +37.500004 -24.388165 -32.381432 +37.500004 -30.496168 -34.604561 +37.500004 -24.658859 -31.371201 +37.500004 -31.060106 -32.499912 +37.500004 -24.750010 -30.329311 +37.500004 -31.250010 -30.329311 +37.500004 -24.658859 -29.287422 +37.500004 -24.388165 -28.277191 +37.500004 -23.946159 -27.329311 +37.500004 -31.250010 -10.329315 +37.500004 -23.346279 -26.472582 +37.500004 -22.606735 -25.733042 +37.500004 -14.893286 -25.733042 +37.500004 -15.750010 -25.133156 +37.500004 -16.697889 -24.691156 +37.500004 -17.708120 -24.420465 +37.500004 -18.750010 -24.329311 +37.500004 14.153717 -26.472582 +37.500004 13.553833 -27.329311 +37.500004 -14.153746 -26.472582 +37.500004 13.111832 -28.277191 +37.500004 -13.553860 -27.329311 +37.500004 16.697861 -24.691156 +37.500004 15.749985 -25.133156 +37.500004 14.893257 -25.733042 +37.500004 -19.791901 -24.420465 +37.500004 -20.802130 -24.691156 +37.500004 -21.750010 -25.133156 +-34.499992 -13.553860 -10.329315 +-35.447880 -13.111855 -10.329315 +-36.458107 12.841137 -10.329315 +-36.458107 -12.841166 -10.329315 +-37.499996 12.749985 -10.329315 +-37.499996 -12.750011 -10.329315 +-38.541889 12.841137 -10.329315 +-38.541889 -12.841166 -10.329315 +-39.552116 -13.111855 -10.329315 +-40.499992 13.553833 -10.329315 +-41.356724 -14.153746 -10.329315 +-41.356724 14.153717 -10.329315 +-42.096260 -14.893286 -10.329315 +-42.696148 -15.750010 -10.329315 +-43.138153 -16.697889 -10.329315 +-35.447880 24.388161 -10.329315 +-36.458107 24.658810 -10.329315 +-37.499996 31.250008 -10.329315 +-37.499996 24.750008 -10.329315 +-39.670597 31.060059 -10.329315 +-38.541889 24.658810 -10.329315 +-41.775246 30.496162 -10.329315 +-39.552116 24.388161 -10.329315 +-43.749996 29.575314 -10.329315 +-40.499992 23.946163 -10.329315 +-45.534843 28.325562 -10.329315 +-41.356724 23.346260 -10.329315 +-47.075550 26.784809 -10.329315 +-42.096260 22.606709 -10.329315 +-48.325310 25.000008 -10.329315 +-42.696148 21.750011 -10.329315 +-49.246155 23.025257 -10.329315 +-43.138153 20.802109 -10.329315 +-49.810089 20.920612 -10.329315 +-43.408844 19.791862 -10.329315 +-43.499996 18.750011 -10.329315 +-43.408844 17.708096 -10.329315 +-43.408844 -17.708120 -10.329315 +-43.499996 -18.750010 -10.329315 +-49.810089 -20.920610 -10.329315 +-43.408844 -19.791901 -10.329315 +-49.246155 -23.025261 -10.329315 +-43.138153 -20.802130 -10.329315 +-48.325310 -25.000010 -10.329315 +-42.696148 -21.750010 -10.329315 +-47.075550 -26.784855 -10.329315 +-42.096260 -22.606735 -10.329315 +-45.534843 -28.325565 -10.329315 +-41.356724 -23.346279 -10.329315 +-43.749996 -29.575327 -10.329315 +-40.499992 -23.946159 -10.329315 +-41.775246 -30.496168 -10.329315 +-39.552116 -24.388165 -10.329315 +-39.670597 -31.060106 -10.329315 +-38.541889 -24.658859 -10.329315 +-37.499996 -31.250010 -10.329315 +-37.499996 -24.750010 -10.329315 +-36.458107 -24.658859 -10.329315 +-40.499992 -13.553860 -10.329315 +-39.552116 13.111832 -10.329315 +-35.447880 13.111832 -10.329315 +-34.499992 13.553833 -10.329315 +-33.643272 -14.153746 -10.329315 +-33.643272 14.153717 -10.329315 +-32.903728 14.893257 -10.329315 +-43.138153 16.697861 -10.329315 +-42.696148 15.749985 -10.329315 +-42.096260 14.893257 -10.329315 +-32.303841 15.749985 -10.329315 +-31.861843 16.697861 -10.329315 +-31.591148 17.708096 -10.329315 +-31.499998 18.750011 -10.329315 +-32.903728 -14.893286 -10.329315 +-35.447880 -24.388165 -10.329315 +-34.499992 -23.946159 -10.329315 +-33.643272 -23.346279 -10.329315 +-32.903728 -22.606735 -10.329315 +-32.303841 21.750011 -10.329315 +-32.903728 22.606709 -10.329315 +-33.643272 23.346260 -10.329315 +-34.499992 23.946163 -10.329315 +-31.591148 -19.791901 -10.329315 +-31.499998 -18.750010 -10.329315 +-31.591148 -17.708120 -10.329315 +-31.861843 -16.697889 -10.329315 +-32.303841 -15.750010 -10.329315 +-31.591148 19.791862 -10.329315 +-31.861843 20.802109 -10.329315 +-32.303841 -21.750010 -10.329315 +-31.861843 -20.802130 -10.329315 +30.554554 -20.000010 11.009510 +35.857853 -20.000010 5.706223 +41.161152 -20.000010 11.009510 +30.554554 20.000011 11.009510 +35.857853 20.000011 5.706223 +41.161152 20.000011 11.009510 +-0.983727 -1.693081 17.799057 +-0.672688 -3.334707 17.488007 +-1.088467 -0.000011 17.903809 +-0.164795 -4.875011 16.980160 +-0.983727 1.693058 17.799057 +0.524502 -6.267191 16.290859 +-0.672688 3.334682 17.488007 +1.374252 -7.468946 15.441059 +-0.164795 4.874989 16.980160 +2.358700 -8.443762 14.456657 +0.524502 6.267166 16.290859 +3.447849 -9.162016 13.367508 +1.374252 7.468922 15.441059 +4.608650 -9.601887 12.206707 +2.358700 8.443737 14.456657 +5.805805 -9.750011 11.009510 +3.447849 9.161987 13.367508 +7.003002 -9.601887 9.812359 +4.608650 9.601860 12.206707 +8.163803 -9.162016 8.651508 +5.805805 9.749989 11.009510 +9.252953 -8.443762 7.562359 +7.003002 9.601860 9.812359 +10.237400 -7.468946 6.577953 +8.163803 9.161987 8.651508 +11.087151 -6.267191 5.728188 +9.252953 8.443737 7.562359 +11.776455 -4.875011 5.038887 +10.237400 7.468922 6.577953 +12.284355 -3.334707 4.531006 +11.087151 6.267166 5.728188 +12.595348 -1.693081 4.219971 +11.776455 4.874989 5.038887 +12.700100 -0.000011 4.115231 +12.284355 3.334682 4.531006 +12.595348 1.693058 4.219971 +3 0 1 2 +3 2 1 3 +3 2 3 4 +3 5 6 7 +3 7 6 8 +3 7 8 2 +3 2 8 9 +3 2 9 10 +3 11 12 13 +3 13 12 14 +3 13 14 15 +3 15 14 16 +3 15 16 17 +3 17 16 18 +3 17 18 19 +3 19 18 20 +3 19 20 21 +3 21 20 22 +3 21 22 23 +3 23 22 24 +3 23 24 25 +3 25 24 26 +3 10 27 2 +3 2 27 0 +3 28 29 30 +3 30 29 31 +3 30 31 32 +3 32 31 33 +3 32 33 34 +3 34 33 5 +3 34 5 7 +3 35 36 37 +3 37 36 38 +3 37 38 26 +3 11 39 40 +3 40 39 41 +3 40 41 42 +3 42 41 43 +3 42 43 44 +3 44 43 45 +3 44 45 46 +3 46 45 47 +3 46 47 48 +3 48 47 49 +3 48 49 50 +3 50 49 51 +3 50 51 52 +3 52 51 53 +3 52 53 54 +3 54 53 29 +3 54 29 28 +3 55 56 37 +3 37 56 57 +3 37 57 35 +3 55 37 58 +3 58 37 2 +3 58 2 4 +3 13 39 11 +3 24 37 26 +3 59 60 61 +3 61 60 62 +3 61 62 63 +3 63 62 64 +3 63 64 65 +3 65 64 66 +3 65 66 67 +3 67 66 68 +3 67 68 69 +3 69 68 70 +3 69 70 71 +3 71 70 72 +3 71 72 73 +3 73 72 74 +3 73 74 75 +3 75 74 76 +3 75 76 77 +3 77 76 78 +3 77 78 79 +3 79 78 80 +3 79 80 81 +3 82 83 84 +3 84 83 85 +3 84 85 86 +3 86 85 87 +3 86 87 88 +3 89 90 91 +3 91 90 92 +3 91 92 61 +3 61 92 93 +3 61 93 94 +3 81 95 79 +3 79 95 96 +3 79 96 86 +3 86 96 97 +3 86 97 98 +3 91 99 100 +3 100 99 101 +3 100 101 102 +3 102 101 103 +3 102 103 104 +3 104 103 105 +3 104 105 106 +3 106 105 107 +3 106 107 108 +3 109 110 111 +3 111 110 112 +3 111 112 113 +3 113 112 114 +3 113 114 115 +3 115 114 116 +3 115 116 117 +3 117 116 118 +3 117 118 119 +3 119 118 120 +3 119 120 121 +3 121 120 122 +3 121 122 123 +3 123 122 124 +3 123 124 125 +3 125 124 126 +3 125 126 127 +3 127 126 128 +3 127 128 129 +3 129 128 130 +3 129 130 131 +3 132 133 91 +3 91 133 134 +3 91 134 89 +3 106 108 135 +3 135 108 136 +3 135 136 137 +3 137 136 138 +3 137 138 139 +3 140 141 142 +3 142 141 143 +3 142 143 111 +3 111 143 144 +3 111 144 109 +3 145 146 147 +3 147 146 82 +3 147 82 84 +3 148 149 142 +3 142 149 150 +3 142 150 151 +3 151 150 152 +3 151 152 153 +3 98 154 86 +3 86 154 155 +3 86 155 84 +3 156 157 158 +3 158 157 159 +3 158 159 160 +3 160 159 161 +3 160 161 162 +3 162 163 164 +3 164 163 165 +3 164 165 166 +3 166 165 167 +3 166 167 168 +3 168 167 169 +3 168 169 170 +3 170 169 171 +3 170 171 172 +3 173 174 129 +3 129 174 175 +3 129 175 176 +3 176 175 177 +3 176 177 178 +3 151 153 158 +3 158 153 179 +3 158 179 156 +3 180 181 176 +3 176 181 182 +3 176 182 183 +3 183 182 184 +3 183 184 185 +3 185 184 172 +3 180 176 186 +3 186 176 178 +3 131 187 129 +3 129 187 173 +3 188 61 94 +3 139 189 147 +3 147 189 190 +3 147 190 145 +3 140 142 191 +3 191 142 151 +3 192 193 61 +3 61 193 194 +3 61 194 91 +3 176 195 129 +3 129 195 196 +3 129 196 61 +3 61 196 192 +3 142 197 148 +3 100 132 91 +3 164 160 162 +3 184 170 172 +3 147 137 139 +3 188 59 61 +3 88 198 86 +3 199 200 61 +3 61 200 129 +3 201 202 203 +3 203 202 204 +3 203 204 205 +3 205 204 206 +3 205 206 207 +3 207 206 208 +3 207 208 209 +3 209 208 210 +3 209 210 211 +3 211 210 212 +3 211 212 213 +3 213 212 214 +3 213 214 215 +3 215 214 216 +3 215 216 217 +3 217 216 218 +3 217 218 219 +3 219 218 220 +3 219 220 221 +3 221 220 222 +3 221 222 223 +3 201 203 224 +3 224 203 86 +3 224 86 225 +3 225 86 226 +3 227 228 86 +3 86 228 229 +3 86 229 226 +3 230 231 198 +3 198 231 227 +3 198 227 86 +3 232 233 234 +3 234 233 235 +3 234 235 236 +3 237 238 234 +3 234 238 239 +3 234 239 198 +3 198 239 240 +3 198 240 241 +3 242 243 234 +3 234 243 244 +3 234 244 237 +3 236 245 234 +3 234 245 246 +3 234 246 242 +3 247 248 142 +3 142 248 249 +3 142 249 197 +3 197 249 250 +3 197 250 251 +3 252 253 254 +3 254 253 255 +3 254 255 142 +3 142 255 256 +3 142 256 257 +3 230 198 258 +3 258 198 241 +3 259 223 260 +3 260 223 261 +3 260 261 233 +3 251 262 197 +3 197 262 263 +3 197 263 198 +3 198 263 264 +3 198 264 265 +3 266 267 268 +3 268 267 269 +3 268 269 270 +3 270 269 271 +3 270 271 272 +3 272 271 273 +3 272 273 274 +3 274 273 275 +3 274 275 276 +3 276 275 277 +3 276 277 278 +3 278 277 279 +3 278 279 280 +3 280 279 281 +3 280 281 282 +3 282 281 283 +3 282 283 284 +3 284 283 285 +3 284 285 254 +3 254 285 252 +3 266 268 286 +3 286 268 221 +3 286 221 287 +3 287 221 288 +3 259 289 223 +3 223 289 290 +3 223 290 221 +3 221 290 291 +3 221 291 288 +3 232 292 233 +3 233 292 260 +3 142 257 247 +3 265 234 198 +3 293 294 268 +3 268 294 221 +3 295 296 294 +3 294 296 297 +3 294 297 298 +3 298 297 299 +3 298 299 300 +3 300 299 301 +3 300 301 302 +3 302 301 303 +3 302 303 304 +3 304 303 305 +3 304 305 306 +3 306 305 307 +3 306 307 308 +3 308 307 309 +3 308 309 310 +3 310 309 311 +3 310 311 312 +3 312 311 313 +3 312 313 314 +3 314 313 315 +3 314 315 316 +3 314 317 318 +3 318 317 319 +3 318 319 320 +3 320 321 318 +3 318 321 322 +3 318 322 323 +3 324 325 326 +3 326 325 327 +3 326 327 294 +3 294 327 328 +3 294 328 295 +3 323 329 318 +3 318 329 330 +3 318 330 331 +3 332 333 334 +3 334 333 335 +3 334 335 336 +3 336 335 337 +3 336 337 338 +3 338 337 339 +3 338 339 340 +3 341 342 293 +3 293 342 343 +3 293 343 294 +3 294 343 344 +3 294 344 345 +3 332 334 326 +3 326 334 346 +3 326 346 324 +3 341 293 347 +3 347 293 348 +3 347 348 349 +3 349 348 350 +3 349 350 351 +3 351 350 352 +3 351 352 353 +3 353 352 354 +3 353 354 355 +3 355 354 356 +3 355 356 357 +3 357 356 358 +3 357 358 359 +3 359 358 360 +3 359 360 361 +3 361 360 362 +3 361 362 363 +3 363 362 364 +3 363 364 365 +3 365 364 366 +3 366 364 367 +3 367 364 368 +3 367 368 369 +3 369 368 370 +3 371 372 318 +3 318 372 373 +3 318 373 368 +3 368 373 374 +3 368 374 375 +3 376 377 378 +3 378 377 379 +3 378 379 380 +3 380 379 340 +3 318 381 378 +3 378 381 382 +3 378 382 383 +3 384 385 368 +3 368 385 386 +3 368 386 370 +3 316 317 314 +3 340 379 338 +3 383 376 378 +3 318 331 381 +3 368 375 384 +3 318 378 371 +3 345 326 294 +3 387 388 389 +3 389 388 390 +3 389 390 391 +3 391 390 392 +3 391 392 393 +3 393 392 394 +3 393 394 395 +3 396 397 398 +3 398 397 399 +3 398 399 200 +3 200 399 400 +3 200 400 401 +3 402 403 404 +3 404 403 405 +3 404 405 406 +3 406 405 407 +3 406 407 408 +3 408 407 409 +3 408 409 410 +3 410 409 411 +3 410 411 412 +3 412 411 413 +3 412 413 414 +3 414 413 415 +3 414 415 416 +3 416 415 417 +3 416 417 418 +3 418 417 419 +3 418 419 420 +3 420 419 421 +3 420 421 199 +3 199 421 422 +3 199 422 423 +3 401 424 200 +3 200 424 425 +3 200 425 426 +3 426 425 427 +3 426 427 428 +3 428 427 429 +3 428 429 430 +3 430 429 431 +3 430 431 432 +3 432 431 433 +3 432 433 434 +3 434 433 435 +3 434 435 436 +3 436 435 437 +3 436 437 438 +3 438 437 439 +3 438 439 440 +3 440 439 441 +3 440 441 442 +3 442 441 443 +3 442 443 444 +3 395 445 446 +3 446 445 397 +3 446 397 396 +3 447 448 449 +3 449 448 450 +3 449 450 451 +3 447 449 389 +3 389 449 387 +3 199 452 200 +3 200 452 453 +3 200 453 454 +3 455 456 318 +3 318 456 457 +3 318 457 458 +3 459 449 318 +3 318 449 451 +3 318 451 455 +3 444 460 442 +3 442 460 461 +3 442 461 368 +3 368 461 462 +3 368 462 463 +3 464 465 318 +3 318 465 466 +3 318 466 404 +3 404 466 467 +3 404 467 402 +3 468 469 368 +3 368 469 470 +3 368 470 318 +3 318 470 471 +3 318 471 472 +3 458 473 318 +3 318 473 474 +3 318 474 464 +3 463 475 368 +3 368 475 476 +3 368 476 468 +3 395 446 393 +3 454 398 200 +3 318 472 459 +3 423 452 199 +3 404 79 318 +3 318 79 86 +3 318 86 314 +3 314 86 203 +3 364 254 368 +3 368 254 142 +3 368 142 442 +3 442 142 111 +3 129 200 127 +3 127 200 426 +3 127 426 125 +3 125 426 428 +3 125 428 123 +3 123 428 430 +3 123 430 121 +3 121 430 432 +3 121 432 119 +3 119 432 434 +3 119 434 117 +3 117 434 436 +3 117 436 115 +3 115 436 438 +3 115 438 113 +3 113 438 440 +3 113 440 111 +3 111 440 442 +3 199 61 420 +3 420 61 63 +3 420 63 418 +3 418 63 65 +3 418 65 416 +3 416 65 67 +3 416 67 414 +3 414 67 69 +3 414 69 412 +3 412 69 71 +3 412 71 410 +3 410 71 73 +3 410 73 408 +3 408 73 75 +3 408 75 406 +3 406 75 77 +3 406 77 404 +3 404 77 79 +3 221 294 219 +3 219 294 298 +3 219 298 217 +3 217 298 300 +3 217 300 215 +3 215 300 302 +3 215 302 213 +3 213 302 304 +3 213 304 211 +3 211 304 306 +3 211 306 209 +3 209 306 308 +3 209 308 207 +3 207 308 310 +3 207 310 205 +3 205 310 312 +3 205 312 203 +3 203 312 314 +3 293 268 348 +3 348 268 270 +3 348 270 350 +3 350 270 272 +3 350 272 352 +3 352 272 274 +3 352 274 354 +3 354 274 276 +3 354 276 356 +3 356 276 278 +3 356 278 358 +3 358 278 280 +3 358 280 360 +3 360 280 282 +3 360 282 362 +3 362 282 284 +3 362 284 364 +3 364 284 254 +3 342 267 343 +3 343 267 266 +3 343 266 344 +3 344 266 286 +3 344 286 345 +3 345 286 287 +3 345 287 326 +3 326 287 288 +3 326 288 332 +3 332 288 291 +3 332 291 333 +3 333 291 290 +3 333 290 335 +3 335 290 289 +3 335 289 337 +3 337 289 259 +3 337 259 339 +3 339 259 260 +3 339 260 340 +3 340 260 292 +3 340 292 380 +3 380 292 232 +3 380 232 378 +3 378 232 234 +3 378 234 371 +3 371 234 265 +3 371 265 372 +3 372 265 264 +3 372 264 373 +3 373 264 263 +3 373 263 374 +3 374 263 262 +3 374 262 375 +3 375 262 251 +3 375 251 384 +3 384 251 250 +3 384 250 385 +3 385 250 249 +3 385 249 386 +3 386 249 248 +3 386 248 370 +3 370 248 247 +3 370 247 369 +3 369 247 257 +3 369 257 367 +3 367 257 256 +3 367 256 366 +3 366 256 255 +3 366 255 365 +3 365 255 253 +3 365 253 363 +3 363 253 252 +3 363 252 361 +3 361 252 285 +3 361 285 359 +3 359 285 283 +3 359 283 357 +3 357 283 281 +3 357 281 355 +3 355 281 279 +3 355 279 353 +3 353 279 277 +3 353 277 351 +3 351 277 275 +3 351 275 349 +3 349 275 273 +3 349 273 347 +3 347 273 271 +3 347 271 341 +3 341 271 269 +3 341 269 342 +3 342 269 267 +3 299 220 301 +3 301 220 218 +3 301 218 303 +3 303 218 216 +3 303 216 305 +3 305 216 214 +3 305 214 307 +3 307 214 212 +3 307 212 309 +3 309 212 210 +3 309 210 311 +3 311 210 208 +3 311 208 313 +3 313 208 206 +3 313 206 315 +3 315 206 204 +3 315 204 316 +3 316 204 202 +3 316 202 317 +3 317 202 201 +3 317 201 319 +3 319 201 224 +3 319 224 320 +3 320 224 225 +3 320 225 321 +3 321 225 226 +3 321 226 322 +3 322 226 229 +3 322 229 323 +3 323 229 228 +3 323 228 329 +3 329 228 227 +3 329 227 330 +3 330 227 231 +3 330 231 331 +3 331 231 230 +3 331 230 381 +3 381 230 258 +3 381 258 382 +3 382 258 241 +3 382 241 383 +3 383 241 240 +3 383 240 376 +3 376 240 239 +3 376 239 377 +3 377 239 238 +3 377 238 379 +3 379 238 237 +3 379 237 338 +3 338 237 244 +3 338 244 336 +3 336 244 243 +3 336 243 334 +3 334 243 242 +3 334 242 346 +3 346 242 246 +3 346 246 324 +3 324 246 245 +3 324 245 325 +3 325 245 236 +3 325 236 327 +3 327 236 235 +3 327 235 328 +3 328 235 233 +3 328 233 295 +3 295 233 261 +3 295 261 296 +3 296 261 223 +3 296 223 297 +3 297 223 222 +3 297 222 299 +3 299 222 220 +3 470 160 471 +3 471 160 164 +3 471 164 472 +3 472 164 166 +3 472 166 459 +3 459 166 168 +3 459 168 449 +3 449 168 170 +3 449 170 387 +3 387 170 184 +3 387 184 388 +3 388 184 182 +3 388 182 390 +3 390 182 181 +3 390 181 392 +3 392 181 180 +3 392 180 394 +3 394 180 186 +3 394 186 395 +3 395 186 178 +3 395 178 445 +3 445 178 177 +3 445 177 397 +3 397 177 175 +3 397 175 399 +3 399 175 174 +3 399 174 400 +3 400 174 173 +3 400 173 401 +3 401 173 187 +3 401 187 424 +3 424 187 131 +3 424 131 425 +3 425 131 130 +3 425 130 427 +3 427 130 128 +3 427 128 429 +3 429 128 126 +3 429 126 431 +3 431 126 124 +3 431 124 433 +3 433 124 122 +3 433 122 435 +3 435 122 120 +3 435 120 437 +3 437 120 118 +3 437 118 439 +3 439 118 116 +3 439 116 441 +3 441 116 114 +3 441 114 443 +3 443 114 112 +3 443 112 444 +3 444 112 110 +3 444 110 460 +3 460 110 109 +3 460 109 461 +3 461 109 144 +3 461 144 462 +3 462 144 143 +3 462 143 463 +3 463 143 141 +3 463 141 475 +3 475 141 140 +3 475 140 476 +3 476 140 191 +3 476 191 468 +3 468 191 151 +3 468 151 469 +3 469 151 158 +3 469 158 470 +3 470 158 160 +3 473 84 474 +3 474 84 155 +3 474 155 464 +3 464 155 154 +3 464 154 465 +3 465 154 98 +3 465 98 466 +3 466 98 97 +3 466 97 467 +3 467 97 96 +3 467 96 402 +3 402 96 95 +3 402 95 403 +3 403 95 81 +3 403 81 405 +3 405 81 80 +3 405 80 407 +3 407 80 78 +3 407 78 409 +3 409 78 76 +3 409 76 411 +3 411 76 74 +3 411 74 413 +3 413 74 72 +3 413 72 415 +3 415 72 70 +3 415 70 417 +3 417 70 68 +3 417 68 419 +3 419 68 66 +3 419 66 421 +3 421 66 64 +3 421 64 422 +3 422 64 62 +3 422 62 423 +3 423 62 60 +3 423 60 452 +3 452 60 59 +3 452 59 453 +3 453 59 188 +3 453 188 454 +3 454 188 94 +3 454 94 398 +3 398 94 93 +3 398 93 396 +3 396 93 92 +3 396 92 446 +3 446 92 90 +3 446 90 393 +3 393 90 89 +3 393 89 391 +3 391 89 134 +3 391 134 389 +3 389 134 133 +3 389 133 447 +3 447 133 132 +3 447 132 448 +3 448 132 100 +3 448 100 450 +3 450 100 102 +3 450 102 451 +3 451 102 104 +3 451 104 455 +3 455 104 106 +3 455 106 456 +3 456 106 135 +3 456 135 457 +3 457 135 137 +3 457 137 458 +3 458 137 147 +3 458 147 473 +3 473 147 84 +3 37 24 477 +3 477 24 148 +3 477 148 478 +3 478 148 197 +3 478 197 479 +3 2 480 88 +3 88 480 481 +3 88 481 198 +3 198 481 482 +3 88 7 2 +3 85 34 87 +3 87 34 7 +3 87 7 88 +3 82 32 83 +3 83 32 34 +3 83 34 85 +3 145 30 146 +3 146 30 32 +3 146 32 82 +3 189 28 190 +3 190 28 30 +3 190 30 145 +3 138 54 139 +3 139 54 28 +3 139 28 189 +3 108 52 136 +3 136 52 54 +3 136 54 138 +3 103 48 105 +3 105 48 50 +3 105 50 107 +3 107 50 52 +3 107 52 108 +3 103 101 48 +3 48 101 99 +3 48 99 91 +3 48 91 46 +3 46 91 194 +3 46 194 193 +3 46 193 44 +3 44 193 192 +3 44 192 196 +3 44 196 42 +3 42 196 195 +3 42 195 176 +3 185 40 183 +3 183 40 42 +3 183 42 176 +3 171 11 172 +3 172 11 40 +3 172 40 185 +3 167 12 169 +3 169 12 11 +3 169 11 171 +3 163 14 165 +3 165 14 12 +3 165 12 167 +3 161 16 162 +3 162 16 14 +3 162 14 163 +3 157 18 159 +3 159 18 16 +3 159 16 161 +3 179 20 156 +3 156 20 18 +3 156 18 157 +3 179 153 20 +3 20 153 152 +3 20 152 22 +3 22 152 150 +3 22 150 149 +3 148 24 149 +3 149 24 22 +3 197 198 479 +3 479 198 482 +3 483 484 485 +3 485 484 486 +3 485 486 487 +3 487 486 488 +3 487 488 489 +3 489 488 490 +3 489 490 491 +3 491 490 492 +3 491 492 493 +3 493 492 494 +3 493 494 495 +3 495 494 496 +3 495 496 497 +3 497 496 498 +3 497 498 499 +3 499 498 500 +3 499 500 501 +3 501 500 502 +3 501 502 503 +3 503 502 504 +3 503 504 505 +3 505 504 506 +3 505 506 507 +3 507 506 508 +3 507 508 509 +3 509 508 510 +3 509 510 511 +3 511 510 512 +3 511 512 513 +3 513 512 514 +3 513 514 515 +3 515 514 516 +3 515 516 517 +3 517 516 518 +3 55 514 56 +3 56 514 512 +3 56 512 57 +3 57 512 510 +3 57 510 35 +3 35 510 508 +3 35 508 36 +3 36 508 506 +3 36 506 38 +3 38 506 504 +3 38 504 26 +3 26 504 502 +3 26 502 25 +3 25 502 500 +3 25 500 23 +3 23 500 498 +3 23 498 21 +3 21 498 496 +3 21 496 19 +3 19 496 494 +3 19 494 17 +3 17 494 492 +3 17 492 15 +3 15 492 490 +3 15 490 13 +3 13 490 488 +3 13 488 39 +3 39 488 486 +3 39 486 41 +3 41 486 484 +3 41 484 43 +3 43 484 483 +3 43 483 45 +3 45 483 485 +3 45 485 47 +3 47 485 487 +3 47 487 49 +3 49 487 489 +3 49 489 51 +3 51 489 491 +3 51 491 53 +3 53 491 493 +3 53 493 29 +3 29 493 495 +3 29 495 31 +3 31 495 497 +3 31 497 33 +3 33 497 499 +3 33 499 5 +3 5 499 501 +3 5 501 6 +3 6 501 503 +3 6 503 8 +3 8 503 505 +3 8 505 9 +3 9 505 507 +3 9 507 10 +3 10 507 509 +3 10 509 27 +3 27 509 511 +3 27 511 0 +3 0 511 513 +3 0 513 1 +3 1 513 515 +3 1 515 3 +3 3 515 517 +3 3 517 4 +3 4 517 518 +3 4 518 58 +3 58 518 516 +3 58 516 55 +3 55 516 514 +3 477 480 37 +3 37 480 2 +3 478 481 477 +3 477 481 480 +3 479 482 478 +3 478 482 481 diff --git a/AABB_tree/test/AABB_tree/data/cube.off b/AABB_tree/test/AABB_tree/data/cube.off new file mode 100644 index 00000000000..c78d6c7d357 --- /dev/null +++ b/AABB_tree/test/AABB_tree/data/cube.off @@ -0,0 +1,22 @@ +OFF +8 12 0 +0.0 0.0 0.0 +1.0 0.0 0.0 +1.0 1.0 0.0 +0.0 1.0 0.0 +0.0 0.0 1.0 +1.0 0.0 1.0 +1.0 1.0 1.0 +0.0 1.0 1.0 +3 0 1 3 +3 3 1 2 +3 0 4 1 +3 1 4 5 +3 3 2 7 +3 7 2 6 +3 4 0 3 +3 7 4 3 +3 6 4 7 +3 6 5 4 +3 1 5 6 +3 2 1 6