1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
// Copyright (c) 2006,2007,2009,2010,2011 Tel-Aviv University (Israel). // All rights reserved. // // This file is part of CGAL (www.cgal.org). // // $URL: https://github.com/CGAL/cgal/blob/v6.1/Arrangement_on_surface_2/include/CGAL/Arr_bounded_planar_topology_traits_2.h $ // $Id: include/CGAL/Arr_bounded_planar_topology_traits_2.h b26b07a1242 $ // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // Author(s): Ron Wein // Efi Fogel // Eric Berberich #ifndef CGAL_ARR_BOUNDED_PLANAR_TOPOLOGY_TRAITS_2_H #define CGAL_ARR_BOUNDED_PLANAR_TOPOLOGY_TRAITS_2_H #include #include #include /*! \file * * Definition of the Arr_bounded_planar_topology_traits_2 class. */ #include #include #include #include #include #include #include #include #include #include namespace CGAL { // Forward declaration: template class Arrangement_on_surface_2; /*! \class Arr_bounded_planar_topology_traits_2 * * A topology-traits class that encapsulates the embedding of 2D arrangements * of bounded curves on the plane. */ template > class Arr_bounded_planar_topology_traits_2 : public Arr_planar_topology_traits_base_2 { public: typedef GeometryTraits_2 Geometry_traits_2; typedef Dcel_ Dcel; private: typedef Geometry_traits_2 Gt2; typedef Arr_planar_topology_traits_base_2 Base; public: ///! \name The geometry-traits types. //@{ typedef typename Base::Point_2 Point_2; typedef typename Base::X_monotone_curve_2 X_monotone_curve_2; //@} ///! \name The DCEL types. //@{ typedef typename Base::Size Size; typedef typename Base::Vertex Vertex; typedef typename Base::Halfedge Halfedge; typedef typename Base::Face Face; typedef typename Base::Outer_ccb Outer_ccb; typedef typename Base::Inner_ccb Inner_ccb; typedef typename Base::Isolated_vertex Isolated_vertex; //@} //! \name Arrangement types //!@{ typedef Arr_bounded_planar_topology_traits_2 Self; typedef Arr_traits_basic_adaptor_2 Gt_adaptor_2; //!@} ///! \name The side tags //@{ typedef typename Gt_adaptor_2::Left_side_category Left_side_category; typedef typename Gt_adaptor_2::Bottom_side_category Bottom_side_category; typedef typename Gt_adaptor_2::Top_side_category Top_side_category; typedef typename Gt_adaptor_2::Right_side_category Right_side_category; static_assert(std::is_same< Left_side_category, Arr_oblivious_side_tag >::value); static_assert(std::is_same< Bottom_side_category, Arr_oblivious_side_tag >::value); static_assert(std::is_same< Top_side_category, Arr_oblivious_side_tag >::value); static_assert(std::is_same< Right_side_category, Arr_oblivious_side_tag >::value); //@} /*! \struct * An auxiliary structure for rebinding the topology traits with a new * geometry-traits class and a new DCEL class. */ template struct rebind { typedef Arr_bounded_planar_topology_traits_2 other; }; protected: // Data members: Face* unb_face; // The unbounded face. // Copy constructor and assignment operator - not supported. Arr_bounded_planar_topology_traits_2(const Self&); Self& operator=(const Self&); public: ///! \name Construction methods. //@{ /*! constructs default. */ Arr_bounded_planar_topology_traits_2() : Base(), unb_face(nullptr) {} /*! constructs from a geometry-traits object. */ Arr_bounded_planar_topology_traits_2(const Gt2* traits) : Base(traits), unb_face(nullptr) {} /*! assigns the contents of another topology-traits class. */ void assign(const Self& other); //@} ///! \name Accessing the DCEL and constructing iterators. //@{ /*! determines whether the DCEL reprsenets an empty structure. */ bool is_empty_dcel() const { // An empty bounded arrangement has no edges or vertices. return (this->m_dcel.size_of_vertices() == 0 && this->m_dcel.size_of_halfedges() == 0); } /*! checks if the given vertex is concrete (associated with a point). */ inline bool is_concrete_vertex(const Vertex*) const { return true; } /*! obtains the number of concrete vertices. */ Size number_of_concrete_vertices() const { // All vertices are concrete. return (this->m_dcel.size_of_vertices()); } /*! checks if the given vertex is valid (not a fictitious one). */ inline bool is_valid_vertex(const Vertex*) const { return true; } /*! obtains the number of valid vertices. */ Size number_of_valid_vertices() const { // All vertices are valid. return (this->m_dcel.size_of_vertices()); } /*! checks if the given halfedge is valid (not a fictitious one). */ inline bool is_valid_halfedge(const Halfedge*) const { return true; } /*! obtains the number of valid halfedges. */ Size number_of_valid_halfedges() const { // All halfedges are valid. return (this->m_dcel.size_of_halfedges()); } /*! checks if the given face is valid (not a fictitious one). */ inline bool is_valid_face (const Face*) const { return true; } /*! obtains the number of valid faces. */ Size number_of_valid_faces() const { // All faces are valid. return (this->m_dcel.size_of_faces()); } //@} private: /// \name Auxiliary type definitions. //@{ typedef Arrangement_on_surface_2 Arr; public: // The following definitions of helper functions use a C++11 features called // alias template. This feature can be mimiked by non C++11 support simply by // defining a type that inherits from the template we need to alias. However, // the non-C++11 code requires the (re)definition of all constructors of the // derived class. // Type definition for the construction surface-sweep visitor. template using Construction_helper = Arr_bounded_planar_construction_helper; // Type definition for the no-intersection construction surface-sweep visitor. template using No_intersection_construction_helper = Arr_bounded_planar_construction_helper; // Type definition for the insertion surface-sweep visitor. typedef Arr_insertion_traits_2 I_traits; template using Insertion_helper = Arr_bounded_planar_insertion_helper; // Type definition for the no-intersection insertion surface-sweep visitor. typedef Arr_basic_insertion_traits_2 Nxi_traits; template using No_intersection_insertion_helper = Arr_bounded_planar_insertion_helper; // Type definition for the batched point-location surface-sweep visitor. typedef Arr_batched_point_location_traits_2 Bpl_traits; template using Batched_point_location_helper = Arr_bounded_planar_batched_pl_helper; // Type definition for the vertical decomposition sweep-line visitor. typedef Arr_batched_point_location_traits_2 Vd_traits; template using Vertical_decomposition_helper = Arr_bounded_planar_vert_decomp_helper; // Type definition for the overlay surface-sweep visitor. template using Overlay_helper = Arr_bounded_planar_overlay_helper; //@} public: ///! \name Visitor types. //@{ typedef Arr_inc_insertion_zone_visitor Zone_insertion_visitor; typedef Arr_walk_along_line_point_location Default_point_location_strategy; typedef Arr_walk_along_line_point_location Default_vertical_ray_shooting_strategy; //@} ///! \name Topology-traits methods. //@{ /*! initializes an empty DCEL structure. */ void init_dcel(); /*! makes the necessary updates after the DCEL structure have been updated. */ void dcel_updated(); /*! checks if the given vertex is associated with the given curve end. * \param v The vertex. * \param cv The x-monotone curve. * \param ind The curve end. * \param ps_x The boundary condition of the curve end in x. * \param ps_y The boundary condition of the curve end in y. * \pre The curve has a boundary condition in either x or y. * \return Whether v represents the given curve end. */ bool are_equal(const Vertex* v, const X_monotone_curve_2& cv, Arr_curve_end ind, Arr_parameter_space ps_x, Arr_parameter_space ps_y) const { CGAL_USE(ps_x); CGAL_USE(ps_y); CGAL_assertion((ps_x == ARR_INTERIOR) && (ps_y == ARR_INTERIOR)); if (ind == ARR_MIN_END) { // Compare v with the left endpoint of cv. return (this->m_geom_traits->equal_2_object() (this->m_geom_traits->construct_min_vertex_2_object()(cv), v->point())); } else { // Compare v with the right endpoint of cv. return (this->m_geom_traits->equal_2_object() (this->m_geom_traits->construct_max_vertex_2_object()(cv), v->point())); } } /*! given a curve end with boundary conditions and a face that contains the * interior of the curve, finds a place for a boundary vertex that will * represent the curve end along the face boundary. * \param f The face. * \param cv The x-monotone curve. * \param ind The curve end. * \param ps_x The boundary condition of the curve end in x. * \param ps_y The boundary condition of the curve end in y. * \pre The curve has a boundary condition in either x or y. * \return An object that wraps the curve end. */ std::optional > place_boundary_vertex(Face*, const X_monotone_curve_2&, Arr_curve_end, Arr_parameter_space /* ps_x */, Arr_parameter_space /* ps_y */) { // This function should never be called: CGAL_error(); return std::nullopt; } /*! locates the predecessor halfedge for the given curve around a given * vertex with boundary conditions. * \param v The vertex. * \param cv The x-monotone curve. * \param ind The curve end. * \param ps_x The boundary condition of the curve end in x. * \param ps_y The boundary condition of the curve end in y. * \pre The curve has a boundary condition in either x or y, and should be * incident to the vertex v. * \return An object that contains the curve end. */ Halfedge* locate_around_boundary_vertex(Vertex*, const X_monotone_curve_2&, Arr_curve_end, Arr_parameter_space /* ps_x */, Arr_parameter_space /* ps_y */) const { CGAL_error(); return nullptr; } /*! locates a DCEL feature that contains the given curve end. * \param cv The x-monotone curve. * \param ind The curve end. * \param ps_x The boundary condition of the curve end in x. * \param ps_y The boundary condition of the curve end in y. * \pre The curve end is incident to the boundary. * \return An object that contains the curve end. */ std::variant locate_curve_end(const X_monotone_curve_2&, Arr_curve_end, Arr_parameter_space /* ps_x */, Arr_parameter_space /* ps_y */) { typedef std::variant Result; // This function should never be called: CGAL_error(); Vertex* v(nullptr); return Result(v); } /*! splits a fictitious edge using the given vertex. * \param e The edge to split (one of the pair of halfedges). * \param v The split vertex. * \pre e is a fictitious halfedge. * \return A halfedge whose direction is the same as e's and whose target is * the split vertex v. */ Halfedge* split_fictitious_edge (Halfedge*, Vertex*) { // This function should never be called: CGAL_error(); return nullptr; } /*! determines whether the given face is unbounded. * \param f The face. * \return Whether f is unbounded. * There is only one unbounded face in the arrangement: */ bool is_unbounded(const Face* f) const { return (f == unb_face); } /*! determines whether the given boundary vertex is redundant. * \param v The vertex. * \return Whether v is redundant, and should be erased. * There are no redundant vertices. */ bool is_redundant(const Vertex*) const { return false; } /*! erases the given redundant vertex by merging a fictitious edge. * The function does not free the vertex v itself. * \param v The vertex. * \pre v is a redundant vertex. * \return One of the pair of halfedges that form the merged edge. */ Halfedge* erase_redundant_vertex(Vertex*) { // This function should never be called: CGAL_error(); return nullptr; } //! reference_face (const version). /*! returns a reference face of the arrangement. All reference faces of * arrangements of the same type have a common point. * * \return A pointer to the reference face. */ const Face* reference_face() const { return unbounded_face(); } //! reference_face (non-const version). /*! returns a reference face of the arrangement. All reference faces of * arrangements of the same type have a common point. * * \return A pointer to the reference face. */ Face* reference_face() { return unbounded_face(); } //@} /// \name Additional accessors, specialized for this topology-traits class. //@{ /*! This function is used by the "walk" point-location strategy. */ const Face* initial_face() const { return (unb_face); } /*! obtains the unbounded face (const version). */ const Face* unbounded_face() const { return (unb_face); } /*! obtains the unbounded face (non-const version). */ Face* unbounded_face() { return (unb_face); } //@} /// \name Additional predicates, specialized for this topology-traits class. //@{ /*! compares the given vertex and the given point. * \param p The point. * \param v The vertex. * \return The result of the comparison of the x-coordinates of p and v. */ virtual Comparison_result compare_x(const Point_2& p, const Vertex* v) const { return (this->m_geom_traits->compare_x_2_object()(p, v->point())); } /*! compares the given vertex and the given point. * \param p The point. * \param v The vertex. * \return The result of the xy-lexicographic comparison of p and v. */ virtual Comparison_result compare_xy(const Point_2& p, const Vertex* v) const { return (this->m_geom_traits->compare_xy_2_object()(p, v->point())); } /*! compares the relative y-position of the given point and the given edge * (which may be fictitious). * \param p The point. * \param he The edge (one of the pair of halfedges). * \pre p should lie in the x-range of the given edge. * \return The relative y-position of the point p and the edge. */ virtual Comparison_result compare_y_at_x(const Point_2& p, const Halfedge* he) const { return (this->m_geom_traits->compare_y_at_x_2_object()(p, he->curve())); } //@} }; } // namespace CGAL #include #include #endif