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) 2008 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/Circular_kernel_3/include/CGAL/Circular_kernel_3/Circular_arc_3.h $ // $Id: include/CGAL/Circular_kernel_3/Circular_arc_3.h b26b07a1242 $ // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // Author(s) : Monique Teillaud, Sylvain Pion, Pedro Machado, // Sebastien Loriot, Julien Hazebrouck, Damien Leroy // Partially supported by the IST Programme of the EU as a // STREP (FET Open) Project under Contract No IST-006413 // (ACS -- Algorithms for Complex Shapes) #ifndef CGAL_SPHERICAL_KERNEL_CIRCULAR_ARC_3_H #define CGAL_SPHERICAL_KERNEL_CIRCULAR_ARC_3_H #include #include #include #include namespace CGAL { namespace internal{ template < class SK > class Circular_arc_3 { typedef typename SK::Plane_3 Plane_3; typedef typename SK::Circle_3 Circle_3; typedef typename SK::Sphere_3 Sphere_3; typedef typename SK::Point_3 Point_3; typedef typename SK::Circular_arc_point_3 Circular_arc_point_3; typedef typename SK::Line_3 Line_3; typedef typename SK::FT FT; private: typedef boost::tuple Rep; typedef typename SK::template Handle::type Base; Base base; bool _full; // It is the sign of the cross product // of the vector (Center -> S) x (Center -> T) // it saves execution time for the has_on functor Sign _sign_cross_product; public: const Sphere_3& reference_sphere(){ return get_ref_sphere(get_pointee_or_identity(base).template get<0>()); }; Circular_arc_3() {} // The arc of circle goes from s to t in counterclockwise orientation // in relation to the normal vector N of the supporting plane // such that // if N.x != 0 then N.x > 0 // else if N.y != 0 -> N.y > 0 // else N.z > 0 // Interesting thing is that if _sign_cross_product is negative // the arc is the bigger one (angle > pi) Circular_arc_3(const Circle_3 &c, const Circular_arc_point_3 &s, const Circular_arc_point_3 &t) : _full(false) { // l must pass through s and t, and s != t // CGAL_kernel_precondition(SK().has_on_3_object()(c,s)); // CGAL_kernel_precondition(SK().has_on_3_object()(c,t)); CGAL_kernel_precondition(s != t); base = Rep(c,s,t); // we can optimize the computations of the sign (for the has_on functor), // by computing the vector s-c and t-s, in order to use them directly on // another compute_sign_of_cross_product function // we can save time computing the subtractions // the problem is: more memory space is needed _sign_cross_product = CGAL::SphericalFunctors::compute_sign_of_cross_product(s,t,c.center()); } Circular_arc_3(const Circle_3 &c, const Point_3 &s, const Circular_arc_point_3 &t) : _full(false) { // l must pass through s and t, and s != t CGAL_kernel_precondition(SK().has_on_3_object()(c,s)); CGAL_kernel_precondition(SK().has_on_3_object()(c,t)); CGAL_kernel_precondition(Circular_arc_point_3(s) != t); base = Rep(c,s,t); _sign_cross_product = CGAL::SphericalFunctors::compute_sign_of_cross_product(s,t,c.center()); } Circular_arc_3(const Circle_3 &c, const Circular_arc_point_3 &s, const Point_3 &t) : _full(false) { // l must pass through s and t, and s != t CGAL_kernel_precondition(SK().has_on_3_object()(c,s)); CGAL_kernel_precondition(SK().has_on_3_object()(c,t)); CGAL_kernel_precondition(s != Circular_arc_point_3(t)); base = Rep(c,s,t); _sign_cross_product = CGAL::SphericalFunctors::compute_sign_of_cross_product(s,t,c.center()); } Circular_arc_3(const Circle_3 &c, const Point_3 &s, const Point_3 &t) : _full(false) { // l must pass through s and t, and s != t CGAL_kernel_precondition(SK().has_on_3_object()(c,s)); CGAL_kernel_precondition(SK().has_on_3_object()(c,t)); CGAL_kernel_precondition(Circular_arc_point_3(s) != Circular_arc_point_3(t)); base = Rep(c,s,t); _sign_cross_product = CGAL::SphericalFunctors::compute_sign_of_cross_product(s,t,c.center()); } // This is the one of the two cases we want that s == t // that makes the is_full() correct and complete Circular_arc_3(const Circle_3 &c) : _full(true), _sign_cross_product(CGAL::ZERO) { const Plane_3 &p = c.supporting_plane(); if(is_zero(p.b()) && is_zero(p.c())) { const Circular_arc_point_3 v = SphericalFunctors::y_extremal_point(c,true); base = Rep(c,v,v); } else { const Circular_arc_point_3 v = SphericalFunctors::x_extremal_point(c,true); base = Rep(c,v,v); } } // This is the second case where we want that s == t // that makes the is_full() correct and complete Circular_arc_3(const Circle_3 &c,const Circular_arc_point_3& point) : base(Rep(c,point,point)),_full(true), _sign_cross_product(CGAL::ZERO) {CGAL_kernel_precondition(SK().has_on_3_object()(c,point));} Circular_arc_3(const Circle_3 &c, const Sphere_3 &s1, bool less_xyz_s1, const Sphere_3 &s2, bool less_xyz_s2) { typedef typename SK3_Intersection_traits::type result_type; std::vector sols1, sols2; // The spheres must not include the circle CGAL_kernel_precondition(!SK().has_on_3_object()(s1,c)); CGAL_kernel_precondition(!SK().has_on_3_object()(s2,c)); SK().intersect_3_object()(c, s1, std::back_inserter(sols1)); SK().intersect_3_object()(c, s2, std::back_inserter(sols2)); // l must intersect s1 and s2 CGAL_kernel_precondition(sols1.size() > 0); CGAL_kernel_precondition(sols2.size() > 0); const std::pair& pair1= *std::get >( &sols1[(sols1.size()==1)?(0):(less_xyz_s1?0:1)] ); const std::pair& pair2= *std::get >( &sols2[(sols2.size()==1)?(0):(less_xyz_s2?0:1)] ); // the source and target must be different CGAL_kernel_precondition(pair1.first != pair2.first); *this = Circular_arc_3(c, pair1.first, pair2.first); } Circular_arc_3(const Circle_3 &c, const Plane_3 &p1, bool less_xyz_p1, const Plane_3 &p2, bool less_xyz_p2) { typedef typename SK3_Intersection_traits::type result_type; std::vector sols1, sols2; // The planes must not include the circle CGAL_kernel_precondition(!SK().has_on_3_object()(p1,c)); CGAL_kernel_precondition(!SK().has_on_3_object()(p2,c)); SK().intersect_3_object()(c, p1, std::back_inserter(sols1)); SK().intersect_3_object()(c, p2, std::back_inserter(sols2)); // l must intersect s1 and s2 CGAL_kernel_precondition(sols1.size() > 0); CGAL_kernel_precondition(sols2.size() > 0); const std::pair& pair1= *std::get >( &sols1[(sols1.size()==1)?(0):(less_xyz_p1?0:1)] ); const std::pair& pair2= *std::get >( &sols2[(sols2.size()==1)?(0):(less_xyz_p2?0:1)] ); // the source and target must be different CGAL_kernel_precondition(pair1.first != pair2.first); *this = Circular_arc_3(c, pair1.first, pair2.first); } Circular_arc_3(const Point_3 &begin, const Point_3 &middle, const Point_3 &end) : _full(false) { CGAL_kernel_precondition(!typename SK::Collinear_3()(begin, middle, end)); const Circle_3 c = Circle_3(begin, middle, end); base = Rep(c,begin,end); _sign_cross_product = CGAL::SphericalFunctors::compute_sign_of_cross_product (begin,end,c.center()); } const Circle_3& supporting_circle() const { return get_pointee_or_identity(base).template get<0>(); } const Circular_arc_point_3& source() const { return get_pointee_or_identity(base).template get<1>(); } const Circular_arc_point_3& target() const { return get_pointee_or_identity(base).template get<2>(); } Plane_3 supporting_plane() const { return supporting_circle().supporting_plane(); } Point_3 center() const { return supporting_circle().center(); } FT squared_radius() const { return supporting_circle().squared_radius(); } Sphere_3 diametral_sphere() const { return supporting_circle().diametral_sphere(); } bool is_full() const { return _full; } Sign sign_cross_product() const { return _sign_cross_product; } double approximate_angle() const { if(is_full()) return 2.0*CGAL_PI; const double x1 = to_double(source().x()); const double y1 = to_double(source().y()); const double z1 = to_double(source().z()); const double x2 = to_double(target().x()); const double y2 = to_double(target().y()); const double z2 = to_double(target().z()); const double dx = x2-x1; const double dy = y2-y1; const double dz = z2-z1; const double d_sq = dx*dx + dy*dy + dz*dz; const double r_sq = to_double(squared_radius()); const double s = 0.5 * std::sqrt(d_sq / r_sq); double ap_ang; if(std::abs(s)<=1) { ap_ang = 2.0 * std::asin(s); } else { // We only allow a small rounding error CGAL_assertion(std::abs(s)<=1.0001); ap_ang = (s < 0) ? -CGAL_PI : CGAL_PI; } if(sign_cross_product() == NEGATIVE) return 2.0 * CGAL_PI - ap_ang; else return ap_ang; } double approximate_squared_length() const { const double ang = approximate_angle(); return ang * ang * to_double(squared_radius()); } // It is of course possible to increase the precision // maybe it will be done after CGAL::Bbox_3 bbox() const { return supporting_circle().bbox(); } bool operator==(const Circular_arc_3 &) const; bool operator!=(const Circular_arc_3 &) const; }; template < class SK > CGAL_KERNEL_INLINE bool Circular_arc_3::operator==(const Circular_arc_3 &t) const { if (CGAL::identical(base, t.base)) return true; return CGAL::SphericalFunctors::non_oriented_equal(*this, t); } template < class SK > CGAL_KERNEL_INLINE bool Circular_arc_3::operator!=(const Circular_arc_3 &t) const { return !(*this == t); } } } #endif