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) 1998-2003 ETH Zurich (Switzerland). // All rights reserved. // // This file is part of CGAL (www.cgal.org). // // $URL: https://github.com/CGAL/cgal/blob/v6.1/Inscribed_areas/include/CGAL/Extremal_polygon_traits_2.h $ // $Id: include/CGAL/Extremal_polygon_traits_2.h b26b07a1242 $ // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // // Author(s) : Michael Hoffmann #ifndef CGAL_EXTREMAL_POLYGON_TRAITS_2_H #define CGAL_EXTREMAL_POLYGON_TRAITS_2_H 1 #include #include #include #include #include namespace CGAL { template < class K_ > struct Extremal_polygon_area_traits_2 { typedef K_ K; typedef typename K::FT FT; typedef typename K::Point_2 Point_2; #ifdef CGAL_OPTIMISATION_EXPENSIVE_PRECONDITION_TAG typedef typename K::Less_xy_2 Less_xy_2; typedef typename K::Orientation_2 Orientation_2; #endif // CGAL_OPTIMISATION_EXPENSIVE_PRECONDITION_TAG struct Kgon_triangle_area { typedef FT result_type; Kgon_triangle_area(const K& k_) : k(k_) {} result_type operator()(const Point_2& p, const Point_2& q, const Point_2& r) const { return CGAL_NTS abs(k.compute_area_2_object()( k.construct_triangle_2_object()(p, q, r))); } protected: K k; }; typedef Kgon_triangle_area Baseop; typedef std::function Operation; Extremal_polygon_area_traits_2() {} Extremal_polygon_area_traits_2(const K& k_) : k(k_) {} int min_k() const { return 3; } FT init( const Point_2&, const Point_2&) const { return FT( 0); } Operation operation( const Point_2& p) const { return [&p, this](const Point_2& p1, const Point_2& p2){ return Baseop(this->k)(p1, p2, p);}; } template < class RandomAccessIC, class OutputIterator > OutputIterator compute_min_k_gon( RandomAccessIC points_begin, RandomAccessIC points_end, FT& max_area, OutputIterator o) const // RandomAccessIC is a random access iterator or // circulator with value_type Point_2. // OutputIterator accepts int as value_type. // // PRE: n := | [points_begin, points_end) | >= min_k() and // the points described by the range [points_begin, points_end) // form the boundary of a convex polygon oriented counterclockwise. // // POST: write indices of the points from [points_begin, points_end) // forming a min_k()-gon rooted at points_begin[0] // of maximum area to o in counterclockwise order and return // the past-the-end iterator for that range (== o + min_k()). { int number_of_points( static_cast(iterator_distance( points_begin, points_end))); CGAL_precondition( number_of_points > min_k()); // this gives the area of the triangle of two points with // the root: Operation op( operation( points_begin[0])); int p1( 1); int p2( 2); // maximal triangle so far (and the corresponding points): max_area = op( points_begin[p1], points_begin[p2]); int opt_p1( p1); int opt_p2( p2); // maximal triangle containing p1 so far: FT tmp_area( max_area); for (;;) { while ( p2 + 1 < number_of_points && tmp_area < op( points_begin[p1], points_begin[p2+1])) { tmp_area = op( points_begin[p1], points_begin[++p2]); } if ( tmp_area > max_area) { max_area = tmp_area; opt_p1 = p1; opt_p2 = p2; } if ( ++p1 == number_of_points - 1) break; if ( p2 == p1) ++p2; tmp_area = op( points_begin[p1], points_begin[p2]); } // for (;;) // give result: *o++ = opt_p2; *o++ = opt_p1; *o++ = 0; return o; } // compute_min_k_gon( ... ) #ifdef CGAL_OPTIMISATION_EXPENSIVE_PRECONDITION_TAG Less_xy_2 less_xy_2_object() const { return k.less_xy_2_object(); } Orientation_2 orientation_2_object() const { return k.orientation_2_object(); } #endif // CGAL_OPTIMISATION_EXPENSIVE_PRECONDITION_TAG protected: K k; }; } //namespace CGAL #include #ifdef CGAL_USE_LEDA #include #endif // CGAL_USE_LEDA namespace CGAL { template < class K_ > struct Extremal_polygon_perimeter_traits_2 { typedef K_ K; typedef typename K::FT FT; typedef typename K::Point_2 Point_2; #ifdef CGAL_OPTIMISATION_EXPENSIVE_PRECONDITION_TAG typedef typename K::Less_xy_2 Less_xy_2; typedef typename K::Orientation_2 Orientation_2; #endif // CGAL_OPTIMISATION_EXPENSIVE_PRECONDITION_TAG struct Kgon_triangle_perimeter { typedef FT result_type; Kgon_triangle_perimeter(const K& k_): k(k_) {} // Added as workaround for VC2017 with /arch:AVX to fix // https://cgal.geometryfactory.com/CGAL/testsuite/CGAL-4.14-I-95/Inscribed_areas_Examples/TestReport_afabri_x64_Cygwin-Windows10_MSVC2017-Release-64bits.gz Kgon_triangle_perimeter(const Kgon_triangle_perimeter& other) : k(other.k) {} Kgon_triangle_perimeter& operator=(const Kgon_triangle_perimeter& other) { k = other.k; return *this; } result_type operator()(const Point_2& p, const Point_2& q, const Point_2& r) const { return dist(p, r) + dist(p, q) - dist(q, r); } private: result_type dist(const Point_2& p, const Point_2& q) const { return CGAL_NTS sqrt(k.compute_squared_distance_2_object()(p, q)); } protected: K k; }; typedef Kgon_triangle_perimeter Baseop; typedef std::function Operation; Extremal_polygon_perimeter_traits_2() {} Extremal_polygon_perimeter_traits_2(const K& k_) : k(k_) {} int min_k() const { return 2; } FT init( const Point_2& p, const Point_2& r) const { return operation( r)( p, r); } Operation operation( const Point_2& p) const { return [this,&p](const Point_2& p1, const Point_2& p2){ return Baseop(this->k)(p1,p2,p); }; } template < class RandomAccessIC, class OutputIterator > OutputIterator compute_min_k_gon( RandomAccessIC points_begin, RandomAccessIC points_end, FT& max_perimeter, OutputIterator o) const // RandomAccessIC is a random access iterator or // circulator with value_type Point_2. // OutputIterator accepts int as value_type. // // PRE: n := | [points_begin, points_end) | >= min_k() and // the points described by the range [points_begin, points_end) // form the boundary of a convex polygon oriented counterclockwise. // // POST: write indices of the points from [points_begin, points_end) // forming a min_k()-gon rooted at points_begin[0] of maximum // perimeter to o in counterclockwise order, set max_perimeter // to twice this perimeter and return the past-the-end iterator // for the range (== o + min_k()). { using std::less; using std::max_element; CGAL_precondition_code( int number_of_points( static_cast(iterator_distance( points_begin, points_end)));) CGAL_precondition( number_of_points > min_k()); // kind of messy, but first we have to have something // like Distance (function object) ... RandomAccessIC maxi( max_element( points_begin + 1, points_end, [points_begin, this](const Point_2& p1, const Point_2& p2) { return less< FT >()( this->operation(points_begin[0])(p1, points_begin[0]), this->operation(points_begin[0])(p2, points_begin[0])); } )); // give result: max_perimeter = operation(*points_begin)(*maxi, *points_begin); *o++ = static_cast(iterator_distance(points_begin, maxi)); *o++ = 0; return o; } // compute_min_k_gon( ... ) #ifdef CGAL_OPTIMISATION_EXPENSIVE_PRECONDITION_TAG Less_xy_2 less_xy_2_object() const { return k.less_xy_2_object(); } Orientation_2 orientation_2_object() const { return k.orientation_2_object(); } #endif // CGAL_OPTIMISATION_EXPENSIVE_PRECONDITION_TAG protected: K k; }; template < class RandomAccessIC, class OutputIterator > inline OutputIterator maximum_area_inscribed_k_gon_2( RandomAccessIC points_begin, RandomAccessIC points_end, int k, OutputIterator o) // // preconditions: // -------------- // * Traits fulfills the requirements for an extremal polygon // traits class // * the range [points_begin, points_end) of size n > 0 // describes the vertices of a convex polygon $P$ // enumerated clock- or counterclockwise // * R is a CGAL representation class // * value_type of RandomAccessIC is Point_2 // * OutputIterator accepts Point_2 as value_type // * k >= 3 // // functionality: // -------------- // computes maximum area inscribed k-gon $P_k$ // of the polygon $P$, // writes the indices (relative to points_begin) // of $P_k$'s vertices to o and // returns the past-the-end iterator of that sequence. { typedef typename std::iterator_traits< RandomAccessIC >::value_type::R R; return extremal_polygon_2( points_begin, points_end, k, o, Extremal_polygon_area_traits_2< R >()); } // maximum_area_inscribed_k_gon_2( ... ) // backwards compatibility template < class RandomAccessIC, class OutputIterator > inline OutputIterator maximum_area_inscribed_k_gon( RandomAccessIC points_begin, RandomAccessIC points_end, int k, OutputIterator o) { return maximum_area_inscribed_k_gon_2( points_begin, points_end, k, o); } // maximum_area_inscribed_k_gon( ... ) template < class RandomAccessIC, class OutputIterator > inline OutputIterator maximum_perimeter_inscribed_k_gon_2( RandomAccessIC points_begin, RandomAccessIC points_end, int k, OutputIterator o) // // preconditions: // -------------- // * Traits fulfills the requirements for an extremal polygon // traits class // * the range [points_begin, points_end) of size n > 0 // describes the vertices of a convex polygon $P$ // enumerated clock- or counterclockwise // * R is a CGAL representation class // * value_type of RandomAccessIC is Point_2 // * OutputIterator accepts Point_2 as value_type // * k >= 2 // // functionality: // -------------- // computes maximum perimeter inscribed k-gon $P_k$ // of the polygon $P$, // writes the indices (relative to points_begin) // of $P_k$'s vertices to o and // returns the past-the-end iterator of that sequence. { typedef typename std::iterator_traits< RandomAccessIC >::value_type::R R; return extremal_polygon_2( points_begin, points_end, k, o, Extremal_polygon_perimeter_traits_2< R >()); } // maximum_perimeter_inscribed_k_gon_2( ... ) // backwards compatibility template < class RandomAccessIC, class OutputIterator > inline OutputIterator maximum_perimeter_inscribed_k_gon( RandomAccessIC points_begin, RandomAccessIC points_end, int k, OutputIterator o) { return maximum_perimeter_inscribed_k_gon_2( points_begin, points_end, k, o); } // maximum_perimeter_inscribed_k_gon( ... ) } //namespace CGAL #endif // ! (CGAL_EXTREMAL_POLYGON_TRAITS_2_H) // ---------------------------------------------------------------------------- // ** EOF // ----------------------------------------------------------------------------