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) 2019 CNRS and LIRIS' Establishments (France). // All rights reserved. // // This file is part of CGAL (www.cgal.org). // // $URL: https://github.com/CGAL/cgal/blob/v6.1/Surface_mesh_topology/include/CGAL/Curves_on_surface_topology.h $ // $Id: include/CGAL/Curves_on_surface_topology.h b26b07a1242 $ // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // Author(s) : Guillaume Damiand // #ifndef CGAL_CURVES_ON_SURFACE_TOPOLOGY_H #define CGAL_CURVES_ON_SURFACE_TOPOLOGY_H 1 #include #include #include #include #include #include namespace CGAL { namespace Surface_mesh_topology { template class Curves_on_surface_topology { public: // Types for minimal quadrangulation using Minimal_quadrangulation=internal::Minimal_quadrangulation; using Reduced_map =typename Minimal_quadrangulation::Local_map; // Types for shortest noncontractible cycle using Shortest_noncontractible_cycle=typename internal::Shortest_noncontractible_cycle; using Facewidth =typename internal::Facewidth; using Dart_const_descriptor =typename Shortest_noncontractible_cycle::Original_dart_const_descriptor; using halfedge_descriptor =Dart_const_descriptor ; // To be compatible with BGL // Constructor Curves_on_surface_topology(const Mesh& amesh, bool /* display_time */=false) : m_original_mesh(amesh), m_minimal_quadrangulation(nullptr), m_shortest_noncontractible_cycle(nullptr), m_facewidth(nullptr), m_is_verbose(false) {} //================================================================================ // Homotopy test /// @return true iff the minimal quadrangulation is computed. bool is_minimal_quadrangulation_computed() const { return m_minimal_quadrangulation!=nullptr; } /// Computes the minimal quadrangulation if it is not yet computed. void compute_minimal_quadrangulation(bool display_time=true) const { if (m_minimal_quadrangulation==nullptr) { m_minimal_quadrangulation=std::make_unique (m_original_mesh, display_time); } } /// Return the reduced map computed in the minimal quadrangulation. /// @pre is_minimal_quadrangulation_computed() const Reduced_map& get_minimal_quadrangulation() const { CGAL_assertion(is_minimal_quadrangulation_computed()); return m_minimal_quadrangulation->get_local_map(); } /// @return true iff 'p' is contractible. bool is_contractible(const Path_on_surface& p, bool display_time=false) const { compute_minimal_quadrangulation(display_time); return m_minimal_quadrangulation->is_contractible(p, display_time, m_is_verbose); } /// @return true iff 'p1' and 'p2' are freely homotopic. bool are_freely_homotopic(const Path_on_surface& p1, const Path_on_surface& p2, bool display_time=false) const { compute_minimal_quadrangulation(display_time); return m_minimal_quadrangulation->are_freely_homotopic(p1, p2, display_time, m_is_verbose); } /// @return true iff 'p1' and 'p2' are base point freely homotopic. bool are_base_point_homotopic(const Path_on_surface& p1, const Path_on_surface& p2, bool display_time=false) const { compute_minimal_quadrangulation(display_time); return m_minimal_quadrangulation->are_base_point_homotopic(p1, p2, display_time, m_is_verbose); } //================================================================================ // Shortest noncontractible cycle; edge and face width bool is_shortest_noncontractible_cycle_representation_computed() const { return m_shortest_noncontractible_cycle!=nullptr; } void compute_shortest_non_contractible_cycle_representation(bool display_time=false) const { if (m_shortest_noncontractible_cycle==nullptr) { m_shortest_noncontractible_cycle=std::make_unique (m_original_mesh, display_time); } } template Path_on_surface compute_shortest_non_contractible_cycle_with_base_point (Dart_const_descriptor dh, const WeightFunctor& wf, bool display_time=false) const { compute_shortest_non_contractible_cycle_representation(display_time); return m_shortest_noncontractible_cycle->compute_cycle(dh, NULL, wf, display_time); } Path_on_surface compute_shortest_non_contractible_cycle_with_base_point (Dart_const_descriptor dh, bool display_time=false) const { compute_shortest_non_contractible_cycle_representation(display_time); return m_shortest_noncontractible_cycle->compute_cycle(dh, display_time); } Path_on_surface compute_shortest_non_contractible_cycle (bool display_time=false) const { compute_shortest_non_contractible_cycle_representation(display_time); return m_shortest_noncontractible_cycle-> compute_shortest_non_contractible_cycle(nullptr, display_time); } template Path_on_surface compute_shortest_non_contractible_cycle (const WeightFunctor& wf, bool display_time=false) const { compute_shortest_non_contractible_cycle_representation(display_time); return m_shortest_noncontractible_cycle-> compute_shortest_non_contractible_cycle(nullptr, wf, display_time); } Path_on_surface compute_edge_width(bool display_time=false) const { compute_shortest_non_contractible_cycle_representation(display_time); return m_shortest_noncontractible_cycle->compute_edge_width(display_time); } bool is_facewidth_representation_computed() const { return m_facewidth!=nullptr; } void compute_face_width_representation(bool display_time=false) const { if (m_facewidth==nullptr) { m_facewidth=std::make_unique(m_original_mesh, display_time); } } std::vector compute_face_width(bool display_time=false) const { compute_face_width_representation(display_time); return m_facewidth->compute_face_width(display_time); } //================================================================================ // Test whether a path is homotopic to a simple cycle bool is_homotopic_to_simple_cycle(const Path_on_surface& p, bool display_time=false) const { compute_minimal_quadrangulation(display_time); return m_minimal_quadrangulation->is_homotopic_to_simple_cycle(p, display_time, m_is_verbose); } //================================================================================ // Utility functions // Set whether to display warning message in `std::cerr` when input doesn't meet // prerequisite void set_verbose(bool is_verbose) { m_is_verbose = is_verbose; } protected: const Mesh& m_original_mesh; mutable std::unique_ptr m_minimal_quadrangulation; mutable std::unique_ptr m_shortest_noncontractible_cycle; mutable std::unique_ptr m_facewidth; bool m_is_verbose; }; } // namespace Surface_mesh_topology } // namespace CGAL #endif // CGAL_CURVES_ON_SURFACE_TOPOLOGY_H // // EOF //