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-2021 // Utrecht University (The Netherlands), // ETH Zurich (Switzerland), // INRIA Sophia-Antipolis (France), // Max-Planck-Institute Saarbruecken (Germany), // and 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/Distance_3/include/CGAL/Distance_3/Segment_3_Ray_3.h $ // $Id: include/CGAL/Distance_3/Segment_3_Ray_3.h b26b07a1242 $ // SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-Commercial // // // Author(s) : Geert-Jan Giezeman, Andreas Fabri #ifndef CGAL_DISTANCE_3_SEGMENT_3_RAY_3_H #define CGAL_DISTANCE_3_SEGMENT_3_RAY_3_H #include #include #include namespace CGAL { namespace internal { template typename K::FT squared_distance_parallel(const typename K::Segment_3& seg, const typename K::Ray_3& ray, const K& k) { typedef typename K::Vector_3 Vector_3; const Vector_3 dir1 = seg.direction().vector(); const Vector_3 dir2 = ray.direction().vector(); bool same_direction; if(CGAL_NTS abs(dir1.hx()) > CGAL_NTS abs(dir1.hy())) same_direction = (CGAL_NTS sign(dir1.hx()) == CGAL_NTS sign(dir2.hx())); else same_direction = (CGAL_NTS sign(dir1.hy()) == CGAL_NTS sign(dir2.hy())); if(same_direction) { if(!is_acute_angle(seg.source(), seg.target(), ray.source(), k)) return squared_distance(seg.target(), ray.source(), k); } else { if(!is_acute_angle(seg.target(), seg.source(), ray.source(), k)) return squared_distance(seg.source(), ray.source(), k); } return squared_distance(ray.source(), seg.supporting_line(), k); } template typename K::FT squared_distance(const typename K::Segment_3& seg, const typename K::Ray_3& ray, const K& k) { typedef typename K::RT RT; typedef typename K::FT FT; typedef typename K::Point_3 Point_3; typedef typename K::Vector_3 Vector_3; typename K::Construct_vector_3 vector = k.construct_vector_3_object(); typename K::Compute_squared_distance_3 sq_dist = k.compute_squared_distance_3_object(); const Point_3& ss = seg.source(); const Point_3& se = seg.target(); //TODO This seems complicated compared to Segment_3_Segment_3.h. Consider improving by adapting Lumelsky's method for segment-segment intersection. if(ss == se) return sq_dist(ss, ray); const Vector_3 raydir = ray.direction().vector(); const Vector_3 segdir = seg.direction().vector(); const Vector_3 normal = wcross(segdir, raydir, k); if(is_null(normal, k)) return squared_distance_parallel(seg, ray, k); bool crossing1, crossing2; const Vector_3 perpend2seg = wcross(segdir, normal, k); const Vector_3 perpend2ray = wcross(raydir, normal, k); const Vector_3 ss_min_rs = vector(ray.source(), ss); const Vector_3 se_min_rs = vector(ray.source(), se); const RT sdm_ss2r = wdot(perpend2ray, ss_min_rs, k); const RT sdm_se2r = wdot(perpend2ray, se_min_rs, k); if(sdm_ss2r < RT(0)) { crossing1 = (sdm_se2r >= RT(0)); } else { if(sdm_se2r <= RT(0)) crossing1 = true; else crossing1 = (sdm_ss2r == RT(0)); } const RT sdm_rs2s = - wdot(perpend2seg, ss_min_rs, k); const RT sdm_re2s = wdot(perpend2seg, raydir, k); if(sdm_rs2s < RT(0)) { crossing2 = (sdm_re2s >= RT(0)); } else { if(sdm_re2s <= RT(0)) crossing2 = true; else crossing2 = (sdm_rs2s == RT(0)); } if(crossing1) { if(crossing2) return squared_distance_to_plane(normal, ss_min_rs, k); return sq_dist(ray.source(), seg); } else { if(crossing2) { const RT dm = distance_measure_sub(sdm_ss2r, sdm_se2r, ss_min_rs, se_min_rs, k); if(dm < RT(0)) { return sq_dist(ss, ray); } else { if(dm > RT(0)) return sq_dist(se, ray); else // parallel, should not happen (no crossing) return squared_distance_parallel(seg, ray, k); } } else { const RT dm = distance_measure_sub(sdm_ss2r, sdm_se2r, ss_min_rs, se_min_rs, k); if(dm == RT(0)) return squared_distance_parallel(seg, ray, k); const FT min1 = (dm < RT(0)) ? sq_dist(ss, ray) : sq_dist(se, ray); const FT min2 = sq_dist(ray.source(), seg); return (min1 < min2) ? min1 : min2; } } } template typename K::FT squared_distance(const typename K::Ray_3& ray, const typename K::Segment_3& seg, const K& k) { return squared_distance(seg, ray, k); } template typename K::Comparison_result compare_squared_distance(const typename K::Ray_3& ray, const typename K::Segment_3& seg, const K& k, const typename K::FT& d2) { return ::CGAL::compare(squared_distance(ray, seg, k), d2); } template typename K::Comparison_result compare_squared_distance(const typename K::Segment_3& seg, const typename K::Ray_3& ray, const K& k, const typename K::FT& d2) { return compare_squared_distance(ray, seg, k, d2); } } // namespace internal template inline typename K::FT squared_distance_parallel(const Segment_3& seg, const Ray_3& ray) { return internal::squared_distance_parallel(ray, seg, K()); } } // namespace CGAL #endif // CGAL_DISTANCE_3_SEGMENT_3_RAY_3_H