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) 2003,2004,2006 INRIA Sophia-Antipolis (France). // All rights reserved. // // This file is part of CGAL (www.cgal.org). // // $URL: https://github.com/CGAL/cgal/blob/v6.1/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/Finite_edge_test_C2.h $ // $Id: include/CGAL/Apollonius_graph_2/Finite_edge_test_C2.h b26b07a1242 $ // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // // Author(s) : Menelaos Karavelas #ifndef CGAL_APOLLONIUS_GRAPH_2_FINITE_EDGE_TEST_C2_H #define CGAL_APOLLONIUS_GRAPH_2_FINITE_EDGE_TEST_C2_H #include #include #include #include #include namespace CGAL { namespace ApolloniusGraph_2 { //-------------------------------------------------------------------- template< class K > class Orientation_wrt_symmetry_axis_2 { public: typedef typename K::Point_2 Point_2; typedef Voronoi_circle_2 Voronoi_circle; typedef typename K::FT FT; typedef typename K::Orientation Orientation; public: Orientation operator()(const Voronoi_circle& vc, const Point_2& p1, const Point_2& p2, const Field_with_sqrt_tag&) const { FT a = vc.a1() + vc.a2() * CGAL::sqrt(vc.delta()); FT b = vc.b1() + vc.b2() * CGAL::sqrt(vc.delta()); FT det = a * (p2.y() - p1.y()) - b * (p2.x() - p1.x()); return CGAL::sign(det); } Orientation operator()(const Voronoi_circle& vc, const Point_2& p1, const Point_2& p2, const Integral_domain_without_division_tag&) const { FT dx = p2.x() - p1.x(); FT dy = p2.y() - p1.y(); FT A = vc.a1() * dy - vc.b1() * dx; FT B = vc.a2() * dy - vc.b2() * dx; return sign_a_plus_b_x_sqrt_c(A, B, vc.delta()); } }; //-------------------------------------------------------------------- template< class K > class Compare_Voronoi_radii_2 { public: typedef Voronoi_circle_2 Voronoi_circle; typedef typename K::FT FT; typedef typename K::Sign Sign; typedef typename K::Comparison_result Comparison_result; private: Sign sign_of_P4(const FT& u, const FT& v, const FT& du, const FT& dv, const FT& dr, const FT& Du, const FT& Dv, const FT& Dr) const { std::pair factors = factors_of_P4(u, v, du, dv, dr, Du, Dv, Dr); Sign s1 = CGAL::sign(factors.first); Sign s2 = CGAL::sign(factors.second); return s1 * s2; } std::pair factors_of_P4(const FT& u, const FT& v, const FT& du, const FT& dv, const FT& dr, const FT& Du, const FT& Dv, const FT& Dr) const { FT u2 = CGAL::square(u); FT v2 = CGAL::square(v); FT du2 = CGAL::square(du); FT Du2 = CGAL::square(Du); FT dv2 = CGAL::square(dv); FT Dv2 = CGAL::square(Dv); FT dr2 = CGAL::square(dr); FT Dr2 = CGAL::square(Dr); FT u2_P_v2 = u2 + v2; FT u2_M_v2 = u2 - v2; FT uv = FT(2) * u * v; FT drDr = FT(2) * dr * Dr; FT du2_P_dv2 = du2 + dv2; FT Du2_P_Dv2 = Du2 + Dv2; FT uU_P_vV = du * Du + dv * Dv; FT uU_M_vV = du * Du - dv * Dv; FT uV_P_Uv = du * Dv + Du * dv; FT uV_M_Uv = du * Dv - Du * dv; FT F1 = du2_P_dv2 * Dr2 + Du2_P_Dv2 * dr2 - uU_P_vV * drDr - CGAL::square(uV_M_Uv); FT F2 = CGAL::square(u2_P_v2) * (du2_P_dv2 * Dr2 + Du2_P_Dv2 * dr2); F2 -= u2_P_v2 * (u2_M_v2 * uU_M_vV + uv * uV_P_Uv) * drDr; F2 -= CGAL::square(u2_M_v2 * uV_P_Uv - uv * uU_M_vV); std::pair factors(F1,F2); return factors; } public: Comparison_result operator()(const Voronoi_circle& vc1, const Voronoi_circle& vc2, const Field_with_sqrt_tag&) const { FT c1 = (vc1.c1() + vc1.c2() * CGAL::sqrt(vc1.delta())) / vc1.d(); FT c2 = (vc2.c1() + vc2.c2() * CGAL::sqrt(vc2.delta())) / vc2.d(); Comparison_result r = CGAL::compare(c2, c1); return r; } // this is the naive way but without divisions and square roots; the // degree becomes 36 in this case. /* Comparison_result operator()(const Voronoi_circle& vc1, const Voronoi_circle& vc2, Integral_domain_without_division_tag) { FT A = vc1.c1() * vc2.d() - vc2.c1() * vc1.d(); FT B = vc1.c2() * vc2.d(); FT C = -vc2.c2() * vc1.d(); FT E = vc1.delta(); FT F = vc2.delta(); Sign s = sign_a_plus_b_x_sqrt_e_plus_c_x_sqrt_f(A,B,C,E,F); if ( s == ZERO ) { return EQUAL; } return ( s == POSITIVE ) ? SMALLER : LARGER; } */ Comparison_result operator()(const Voronoi_circle& vc1, const Voronoi_circle& vc2, const Integral_domain_without_division_tag&) const { bool is_first_root1 = vc1.is_first_root(); bool is_first_root2 = vc2.is_first_root(); CGAL_precondition( CGAL::is_positive(vc1.alpha()) ); CGAL_precondition( CGAL::is_positive(vc2.alpha()) ); Comparison_result r; if ( is_first_root1 && is_first_root2 ) { r = ke_compare_l1_l2(vc1.alpha(), vc1.beta(), vc1.gamma(), vc2.alpha(), vc2.beta(), vc2.gamma()); } else if ( is_first_root1 && !is_first_root2 ) { r = ke_compare_l1_r2(vc1.alpha(), vc1.beta(), vc1.gamma(), vc2.alpha(), vc2.beta(), vc2.gamma()); } else if ( !is_first_root1 && is_first_root2 ) { r = ke_compare_r1_l2(vc1.alpha(), vc1.beta(), vc1.gamma(), vc2.alpha(), vc2.beta(), vc2.gamma()); } else { r = ke_compare_r1_r2(vc1.alpha(), vc1.beta(), vc1.gamma(), vc2.alpha(), vc2.beta(), vc2.gamma()); } #ifdef COMPARATOR_PROFILER if ( comparator_profiler::count_cases ) { // count cases only for the tree r1-r2 if ( !is_first_root1 && !is_first_root2 ) { comparator_profiler::count_case(vc1.alpha(), vc1.beta(), vc1.gamma(), vc2.alpha(), vc2.beta(), vc2.gamma()); } } #endif if ( r == EQUAL ) { return EQUAL; } return ( r == LARGER ) ? SMALLER : LARGER; } // this uses the DFMT trees; slightly slower but same degree (20). /* Comparison_result operator()(const Voronoi_circle& vc1, const Voronoi_circle& vc2, Integral_domain_without_division_tag) { bool is_first_root1 = vc1.is_first_root(); bool is_first_root2 = vc2.is_first_root(); CGAL_precondition( CGAL::is_positive(vc1.alpha()) ); CGAL_precondition( CGAL::is_positive(vc2.alpha()) ); Comparison_result r; if ( is_first_root1 && is_first_root2 ) { r = dfmt_compare_l1_l2(vc1.alpha(), vc1.beta(), vc1.gamma(), vc2.alpha(), vc2.beta(), vc2.gamma()); } else if ( is_first_root1 && !is_first_root2 ) { r = dfmt_compare_l1_r2(vc1.alpha(), vc1.beta(), vc1.gamma(), vc2.alpha(), vc2.beta(), vc2.gamma()); } else if ( !is_first_root1 && is_first_root2 ) { r = dfmt_compare_r1_l2(vc1.alpha(), vc1.beta(), vc1.gamma(), vc2.alpha(), vc2.beta(), vc2.gamma()); } else { r = dfmt_compare_r1_r2(vc1.alpha(), vc1.beta(), vc1.gamma(), vc2.alpha(), vc2.beta(), vc2.gamma()); } if ( r == EQUAL ) { return EQUAL; } return ( r == LARGER ) ? SMALLER : LARGER; } */ }; //-------------------------------------------------------------------- template< class K > class Order_on_finite_bisector_2 { public: typedef Voronoi_circle_2 Voronoi_circle; typedef typename K::Site_2 Site_2; typedef typename K::FT FT; typedef typename K::Comparison_result Comparison_result; typedef typename K::Orientation Orientation; typedef Compare_Voronoi_radii_2 Compare_Voronoi_radii; typedef Orientation_wrt_symmetry_axis_2 Orientation_wrt_symmetry_axis; public: template Comparison_result operator()(const Voronoi_circle& vc1, const Voronoi_circle& vc2, const Site_2& p1, const Site_2& p2, const Method_tag& tag) const { #ifdef AG2_PROFILE_PREDICATES ag2_predicate_profiler::order_on_bisector_counter++; #endif Orientation o1 = Orientation_wrt_symmetry_axis()(vc1, p1.point(), p2.point(), tag); Orientation o2 = Orientation_wrt_symmetry_axis()(vc2, p1.point(), p2.point(), tag); Comparison_result cr; if ( o1 == LEFT_TURN ) { if ( o2 != LEFT_TURN ) { return SMALLER; } Comparison_result r = Compare_Voronoi_radii()(vc1, vc2, tag); if ( r == EQUAL ) { cr = EQUAL; } else { cr = (r == LARGER ) ? SMALLER : LARGER; } } else if ( o1 == COLLINEAR ) { if ( o2 == COLLINEAR ) { cr = EQUAL; } else { cr = (o2 == LEFT_TURN) ? LARGER : SMALLER; } } else { if ( o2 != RIGHT_TURN ) { cr = LARGER; } else { Comparison_result r = Compare_Voronoi_radii()(vc1, vc2, tag); cr = r; } } return cr; } }; //-------------------------------------------------------------------- template < class K > class Finite_edge_interior_conflict { public: typedef typename K::Site_2 Site_2; typedef Weighted_point_inverter_2 Weighted_point_inverter; typedef Inverted_weighted_point_2 Inverted_weighted_point; typedef Voronoi_radius_2 Voronoi_radius; typedef Voronoi_circle_2 Voronoi_circle; typedef Bitangent_line_2 Bitangent_line; typedef typename K::FT FT; typedef typename K::Sign Sign; typedef typename K::Bounded_side Bounded_side; typedef typename K::Comparison_result Comparison_result; typedef Bounded_side_of_CCW_circle_2 Bounded_side_of_CCW_circle; typedef Order_on_finite_bisector_2 Order_on_finite_bisector; typedef Sign_of_distance_from_bitangent_line_2 Sign_of_distance_from_bitangent_line; typedef Sign_of_distance_from_CCW_circle_2 Sign_of_distance_from_CCW_circle; public: template bool operator()(const Site_2& p1, const Site_2& p2, const Site_2& p3, const Site_2& p4, const Site_2& q, bool b, const Method_tag& tag) const { #ifdef AG2_PROFILE_PREDICATES ag2_predicate_profiler::shadow_region_type_counter++; #endif // Weighted_point_inverter inverter(p1); Inverted_weighted_point u2 = inverter(p2); Inverted_weighted_point v = inverter(q); // Voronoi_radius vr_12q(u2, v); Voronoi_radius vr_1q2 = vr_12q.get_symmetric(); Bounded_side bs1 = Bounded_side_of_CCW_circle()(vr_12q, tag ); Bounded_side bs2 = Bounded_side_of_CCW_circle()(vr_1q2, tag ); bool is_bs1 = (bs1 == ON_UNBOUNDED_SIDE); bool is_bs2 = (bs2 == ON_UNBOUNDED_SIDE); // both the ccw and cw circles do not exist if ( !is_bs1 && !is_bs2 ) { return b; } // the ccw circle exists but not the cw if ( is_bs1 && !is_bs2 ) { return b; } // the cw circle exists but not the ccw if ( !is_bs1 && is_bs2 ) { return b; } // both circles exist // check whether the shadow region is connected, i.e., whether it is // of the form (a, b) or (-oo, a) U (b, +oo) Bitangent_line bl_12(p1, p2); Sign stc = Sign_of_distance_from_bitangent_line()(bl_12, q, tag); CGAL_assertion( stc != ZERO ); bool is_shadow_region_connected = (stc == POSITIVE); if ( is_shadow_region_connected ) { if ( b ) { return true; } Inverted_weighted_point u3 = inverter(p3); Bitangent_line blinv_23(u2, u3); Voronoi_circle vc_123(blinv_23); Voronoi_circle vc_12q(vr_12q); Comparison_result r = Order_on_finite_bisector()(vc_123, vc_12q, p1, p2, tag); if ( r != SMALLER ) { return false; } Inverted_weighted_point u4 = inverter(p4); Bitangent_line blinv_42(u4, u2); Voronoi_circle vc_142(blinv_42); Voronoi_circle vc_1q2(vr_1q2); r = Order_on_finite_bisector()(vc_142, vc_1q2, p1, p2, tag); return ( r == LARGER ); } // the shadow region is of the form (-oo, a) U (b, +oo) if ( !b ) { return false; } Inverted_weighted_point u3 = inverter(p3); Bitangent_line blinv_23(u2, u3); Voronoi_circle vc_123(blinv_23); Voronoi_circle vc_1q2(vr_1q2); Comparison_result r = Order_on_finite_bisector()(vc_123, vc_1q2, p1, p2, tag); if ( r != SMALLER ) { return true; } Inverted_weighted_point u4 = inverter(p4); Bitangent_line blinv_42(u4, u2); Voronoi_circle vc_142(blinv_42); Voronoi_circle vc_12q(vr_12q); r = Order_on_finite_bisector()(vc_142, vc_12q, p1, p2, tag); return ( r != LARGER ); } }; //-------------------------------------------------------------------- template < class K > class Finite_edge_interior_conflict_degenerated { public: typedef typename K::Site_2 Site_2; typedef Weighted_point_inverter_2 Weighted_point_inverter; typedef Inverted_weighted_point_2 Inverted_weighted_point; typedef Voronoi_radius_2 Voronoi_radius; typedef Voronoi_circle_2 Voronoi_circle; typedef Bitangent_line_2 Bitangent_line; typedef typename K::FT FT; typedef typename K::Sign Sign; typedef typename K::Comparison_result Comparison_result; typedef typename K::Bounded_side Bounded_side; typedef Bounded_side_of_CCW_circle_2 Bounded_side_of_CCW_circle; typedef Order_on_finite_bisector_2 Order_on_finite_bisector; typedef Sign_of_distance_from_bitangent_line_2 Sign_of_distance_from_bitangent_line; typedef Sign_of_distance_from_CCW_circle_2 Sign_of_distance_from_CCW_circle; public: template bool operator()(const Site_2& p1, const Site_2& p2, const Site_2& p3, const Site_2& q, bool b, const Method_tag& tag) const { #ifdef AG2_PROFILE_PREDICATES ag2_predicate_profiler::shadow_region_type_counter++; #endif // Weighted_point_inverter inverter(p1); Inverted_weighted_point u2 = inverter(p2); Inverted_weighted_point v = inverter(q); Voronoi_radius vr_12q(u2, v); Voronoi_radius vr_1q2 = vr_12q.get_symmetric(); Bounded_side bs1 = Bounded_side_of_CCW_circle()(vr_12q, tag ); Bounded_side bs2 = Bounded_side_of_CCW_circle()(vr_1q2, tag ); bool is_bs1 = (bs1 == ON_UNBOUNDED_SIDE); bool is_bs2 = (bs2 == ON_UNBOUNDED_SIDE); // both the ccw and cw circles do not exist if ( !is_bs1 && !is_bs2 ) { return b; } // the ccw circle exists but not the cw if ( is_bs1 && !is_bs2 ) { return b; } // the cw circle exists but not the ccw if ( !is_bs1 && is_bs2 ) { return b; } // both circles exist // check whether the shadow region is connected, i.e., whether it is // of the form (a, b) or (-oo, a) U (b, +oo) Bitangent_line bl_12(p1, p2); Sign stc = Sign_of_distance_from_bitangent_line()(bl_12, q, tag); Inverted_weighted_point u3 = inverter(p3); Bitangent_line blinv_23(u2, u3); CGAL_assertion( stc != ZERO ); bool is_shadow_region_connected = (stc == POSITIVE); if ( is_shadow_region_connected ) { // the shadow region is of the form (a, b) if ( b ) { return false; } Voronoi_circle vc_123(blinv_23); Voronoi_circle vc_12q(vr_12q); Comparison_result r = Order_on_finite_bisector()(vc_123, vc_12q, p1, p2, tag); return ( r == SMALLER ); } // the shadow region is of the form (-oo, a) U (b, +oo) if ( !b ) { return false; } Voronoi_circle vc_123(blinv_23); Voronoi_circle vc_1q2(vr_1q2); Comparison_result r = Order_on_finite_bisector()(vc_123, vc_1q2, p1, p2, tag); return ( r != SMALLER ); } template bool operator()(const Site_2& p1, const Site_2& p2, const Site_2& q, bool b, const Method_tag& tag) const { #ifdef AG2_PROFILE_PREDICATES ag2_predicate_profiler::shadow_region_type_counter++; #endif // Weighted_point_inverter inverter(p1); Inverted_weighted_point u2 = inverter(p2); Inverted_weighted_point v = inverter(q); Voronoi_radius vr_12q(u2, v); Voronoi_radius vr_1q2 = vr_12q.get_symmetric(); Bounded_side bs1 = Bounded_side_of_CCW_circle()(vr_12q, tag ); Bounded_side bs2 = Bounded_side_of_CCW_circle()(vr_1q2, tag ); bool is_bs1 = (bs1 == ON_UNBOUNDED_SIDE); bool is_bs2 = (bs2 == ON_UNBOUNDED_SIDE); // both the ccw and cw circles do not exist if ( !is_bs1 && !is_bs2 ) { return b; } // only the ccw circle exists if ( is_bs1 && !is_bs2 ) { return false; } // only the cw circle exists if ( !is_bs1 && is_bs2 ) { return false; } // both circles exist // check whether the shadow region is connected, i.e., whether it is // of the form (a, b) or (-oo, a) U (b, +oo) return !b; } }; //-------------------------------------------------------------------- template class Finite_edge_interior_conflict_2 { public: typedef K Kernel; typedef MTag Method_tag; typedef typename K::Site_2 Site_2; private: typedef Finite_edge_interior_conflict_degenerated Test_degenerated; typedef Finite_edge_interior_conflict Test; public: typedef bool result_type; struct argument_type {}; inline bool operator()(const Site_2& p1, const Site_2& p2, const Site_2& q, bool b) const { return Test_degenerated()(p1, p2, q, b, Method_tag()); } inline bool operator()(const Site_2& p1, const Site_2& p2, const Site_2& p3, const Site_2& q, bool b) const { return Test_degenerated()(p1, p2, p3, q, b, Method_tag()); } inline bool operator()(const Site_2& p1, const Site_2& p2, const Site_2& p3, const Site_2& p4, const Site_2& q, bool b) const { return Test()(p1, p2, p3, p4, q, b, Method_tag()); } }; //-------------------------------------------------------------------- } //namespace ApolloniusGraph_2 } //namespace CGAL #endif // CGAL_APOLLONIUS_GRAPH_2_FINITE_EDGE_TEST_C2_H