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) 2011 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/Linear_cell_complex/include/CGAL/Linear_cell_complex_operations.h $ // $Id: include/CGAL/Linear_cell_complex_operations.h b26b07a1242 $ // SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-Commercial // // Author(s) : Guillaume Damiand // #ifndef CGAL_LINEAR_CELL_COMPLEX_OPERATIONS_H #define CGAL_LINEAR_CELL_COMPLEX_OPERATIONS_H 1 #include #include #include #include namespace CGAL { /** @file Linear_cell_complex_operations.h * Basic operators on a linear cell complex. */ namespace internal { template void newell_single_step_3_for_lcc(const Point& p, const Point& q, Vector& n) { // Compute normal of the face by using Newell's method: for each edge PQ // Nx += (Py - Qy) * (Pz + Qz); // Ny += (Pz - Qz) * (Px + Qx); // Nz += (Px - Qx) * (Py + Qy); n = Vector(n.x()+((p.y()-q.y())*(p.z()+q.z())), n.y()+((p.z()-q.z())*(p.x()+q.x())), n.z()+((p.x()-q.x())*(p.y()+q.y()))); // Dot product formula /*n=Vector(n.x()+((p.y()*q.z())-(p.z()*q.y())), n.y()+((p.x()*q.z())-(p.z()*q.x())), n.z()+((p.x()*q.y())-(p.y()*q.x())));*/ } } // End namespace internal /** Compute the normal of the given facet. * @param amap the used linear cell complex. * @param adart a dart incident to the facet. * @return the normal of the facet. */ template typename LCC::Vector compute_normal_of_cell_2 (const LCC& amap, typename LCC::Dart_const_descriptor adart) { typedef typename LCC::Point Point; typedef typename LCC::Vector Vector; typename LCC::Dart_const_descriptor start=adart; Vector normal(CGAL::NULL_VECTOR); // We go to the beginning of the face (first dart) while ( amap.is_previous_exist(start) && amap.previous(start)!=adart ) start = amap.previous(start); // Now we advance to process each edge unsigned int nb = 0; const Point* curr = &amap.point(start); adart=start; do { if (amap.other_extremity(adart)==LCC::null_descriptor) adart=start; // To leave the loop, because we know that adart has no next dart else { const Point* next = &amap.point(amap.other_extremity(adart)); internal::newell_single_step_3_for_lcc(*curr, *next, normal); ++nb; curr = next; if (amap.is_next_exist(adart) && amap.next(adart)!=start) adart=amap.next(adart); else adart=start; } } while(adart!=start); CGAL_assertion(nb>0); return (typename LCC::Traits::Construct_scaled_vector()(normal, 1.0/nb)); // return normal / std::sqrt(normal * normal); } /** Compute the normal of the given vertex. * @param amap the used linear cell complex. * @param adart a dart incident to the vertex. * @return the normal of the vertex. */ template typename LCC::Vector compute_normal_of_cell_0 (const LCC& amap, typename LCC::Dart_const_descriptor adart) { typedef typename LCC::Vector Vector; Vector normal(CGAL::NULL_VECTOR); unsigned int nb = 0; for ( typename LCC::template One_dart_per_incident_cell_range<2,0>:: const_iterator it(amap, adart); it.cont(); ++it ) { normal = typename LCC::Traits::Construct_sum_of_vectors() (normal, CGAL::compute_normal_of_cell_2(amap,it)); ++nb; } if ( nb<2 ) return normal; return (typename LCC::Traits::Construct_scaled_vector()(normal, 1.0/nb)); } // Compute the barycenter of a given i-cell // General case, 1 struct Barycenter_functor { static typename LCC::Point run(const LCC& amap, typename LCC::Dart_const_descriptor adart) { static_assert(0:: const_iterator it(amap, adart); for ( ++it; it.cont(); ++it) { vec = typename LCC::Traits::Construct_sum_of_vectors() (vec, typename LCC::Traits::Construct_vector()(CGAL::ORIGIN, amap.point(it) )); ++nb; } return typename LCC::Traits::Construct_translated_point() (CGAL::ORIGIN, typename LCC::Traits::Construct_scaled_vector() (vec, 1.0/nb)); } }; // Compute the barycenter of a given 1-cell template struct Barycenter_functor { static typename LCC::Point run(const LCC& amap, typename LCC::Dart_const_descriptor adart) { static_assert(1<=LCC::dimension); CGAL_assertion(adart != LCC::null_descriptor); typename LCC::Dart_const_descriptor d2=amap.other_extremity(adart); if (d2==amap.null_descriptor) return amap.point(adart); return typename LCC::Traits::Construct_midpoint() (amap.point(adart), amap.point(d2)); } }; // Compute the barycenter of a given 2-cell template struct Barycenter_functor { static typename LCC::Point run(const LCC& amap, typename LCC::Dart_const_descriptor adart) { static_assert(2<=LCC::dimension); CGAL_assertion(adart != LCC::null_descriptor); // We go to the beginning of the face (first dart, case of open face) typename LCC::Dart_const_descriptor start=adart; while ( amap.is_previous_exist(start) && amap.previous(start)!=adart ) start = amap.previous(start); typename LCC::Vector vec (typename LCC::Traits::Construct_vector()(CGAL::ORIGIN, amap.point(start))); if ((!amap.is_previous_exist(adart) && !amap.is_next_exist(adart)) || amap.next(adart)==adart) return typename LCC::Traits::Construct_translated_point() (CGAL::ORIGIN, vec); // case of face with only one edge unsigned int nb = 1; // Now we advance to process each edge adart=amap.next(start); // Because the first vertex was already sum up do { vec = typename LCC::Traits::Construct_sum_of_vectors() (vec, typename LCC::Traits::Construct_vector()(CGAL::ORIGIN, amap.point(adart))); ++nb; if (amap.is_next_exist(adart) && amap.next(adart)!=start) adart=amap.next(adart); else adart=start; } while(adart!=start); CGAL_assertion(nb>1); return typename LCC::Traits::Construct_translated_point() (CGAL::ORIGIN, typename LCC::Traits::Construct_scaled_vector() (vec, 1.0/nb)); } }; } // namespace CGAL #endif // CGAL_LINEAR_CELL_COMPLEX_OPERATIONS_H // // EOF //