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
// Boost.Geometry // Copyright (c) 2023 Adam Wulkiewicz, Lodz, Poland. // Copyright (c) 2015-2018 Oracle and/or its affiliates. // Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_GEOMETRY_FORMULAS_THOMAS_INVERSE_HPP #define BOOST_GEOMETRY_FORMULAS_THOMAS_INVERSE_HPP #include #include #include #include #include #include #include namespace boost { namespace geometry { namespace formula { /*! \brief The solution of the inverse problem of geodesics on latlong coordinates, Forsyth-Andoyer-Lambert type approximation with second order terms. \author See - Technical Report: PAUL D. THOMAS, MATHEMATICAL MODELS FOR NAVIGATION SYSTEMS, 1965 http://www.dtic.mil/docs/citations/AD0627893 - Technical Report: PAUL D. THOMAS, SPHEROIDAL GEODESICS, REFERENCE SYSTEMS, AND LOCAL GEOMETRY, 1970 http://www.dtic.mil/docs/citations/AD0703541 */ template < typename CT, bool EnableDistance, bool EnableAzimuth, bool EnableReverseAzimuth = false, bool EnableReducedLength = false, bool EnableGeodesicScale = false > class thomas_inverse { static const bool CalcQuantities = EnableReducedLength || EnableGeodesicScale; static const bool CalcAzimuths = EnableAzimuth || EnableReverseAzimuth || CalcQuantities; static const bool CalcFwdAzimuth = EnableAzimuth || CalcQuantities; static const bool CalcRevAzimuth = EnableReverseAzimuth || CalcQuantities; public: typedef result_inverse result_type; template static inline result_type apply(T1 const& lon1, T1 const& lat1, T2 const& lon2, T2 const& lat2, Spheroid const& spheroid) { result_type result; // coordinates in radians if ( math::equals(lon1, lon2) && math::equals(lat1, lat2) ) { return result; } CT const c0 = 0; CT const c1 = 1; CT const c2 = 2; CT const c4 = 4; CT const pi_half = math::pi() / c2; CT const f = formula::flattening(spheroid); CT const one_minus_f = c1 - f; // CT const tan_theta1 = one_minus_f * tan(lat1); // CT const tan_theta2 = one_minus_f * tan(lat2); // CT const theta1 = atan(tan_theta1); // CT const theta2 = atan(tan_theta2); CT const theta1 = math::equals(lat1, pi_half) ? lat1 : math::equals(lat1, -pi_half) ? lat1 : atan(one_minus_f * tan(lat1)); CT const theta2 = math::equals(lat2, pi_half) ? lat2 : math::equals(lat2, -pi_half) ? lat2 : atan(one_minus_f * tan(lat2)); CT const theta_m = (theta1 + theta2) / c2; CT const d_theta_m = (theta2 - theta1) / c2; CT const d_lambda = lon2 - lon1; CT const d_lambda_m = d_lambda / c2; CT const sin_theta_m = sin(theta_m); CT const cos_theta_m = cos(theta_m); CT const sin_d_theta_m = sin(d_theta_m); CT const cos_d_theta_m = cos(d_theta_m); CT const sin2_theta_m = math::sqr(sin_theta_m); CT const cos2_theta_m = math::sqr(cos_theta_m); CT const sin2_d_theta_m = math::sqr(sin_d_theta_m); CT const cos2_d_theta_m = math::sqr(cos_d_theta_m); CT const sin_d_lambda_m = sin(d_lambda_m); CT const sin2_d_lambda_m = math::sqr(sin_d_lambda_m); CT const H = cos2_theta_m - sin2_d_theta_m; CT const L = sin2_d_theta_m + H * sin2_d_lambda_m; CT const cos_d = c1 - c2 * L; CT const d = acos(cos_d); CT const sin_d = sin(d); CT const one_minus_L = c1 - L; if ( math::equals(sin_d, c0) || math::equals(L, c0) || math::equals(one_minus_L, c0) ) { return result; } CT const U = c2 * sin2_theta_m * cos2_d_theta_m / one_minus_L; CT const V = c2 * sin2_d_theta_m * cos2_theta_m / L; CT const X = U + V; CT const Y = U - V; CT const T = d / sin_d; CT const D = c4 * math::sqr(T); CT const E = c2 * cos_d; CT const A = D * E; CT const B = c2 * D; CT const C = T - (A - E) / c2; CT const f_sqr = math::sqr(f); CT const f_sqr_per_64 = f_sqr / CT(64); if BOOST_GEOMETRY_CONSTEXPR (EnableDistance) { CT const n1 = X * (A + C*X); CT const n2 = Y * (B + E*Y); CT const n3 = D*X*Y; CT const delta1d = f * (T*X-Y) / c4; CT const delta2d = f_sqr_per_64 * (n1 - n2 + n3); CT const a = get_radius<0>(spheroid); //result.distance = a * sin_d * (T - delta1d); result.distance = a * sin_d * (T - delta1d + delta2d); } if BOOST_GEOMETRY_CONSTEXPR (CalcAzimuths) { // NOTE: if both cos_latX == 0 then below we'd have 0 * INF // it's a situation when the endpoints are on the poles +-90 deg // in this case the azimuth could either be 0 or +-pi // but above always 0 is returned CT const F = c2*Y-E*(c4-X); CT const M = CT(32)*T-(CT(20)*T-A)*X-(B+c4)*Y; CT const G = f*T/c2 + f_sqr_per_64 * M; // TODO: // If d_lambda is close to 90 or -90 deg then tan(d_lambda) is big // and F is small. The result is not accurate. // In the edge case the result may be 2 orders of magnitude less // accurate than Andoyer's. CT const tan_d_lambda = tan(d_lambda); CT const Q = -(F*G*tan_d_lambda) / c4; CT const d_lambda_m_p = (d_lambda + Q) / c2; CT const tan_d_lambda_m_p = tan(d_lambda_m_p); CT const v = atan2(cos_d_theta_m, sin_theta_m * tan_d_lambda_m_p); CT const u = atan2(-sin_d_theta_m, cos_theta_m * tan_d_lambda_m_p); CT const pi = math::pi(); if BOOST_GEOMETRY_CONSTEXPR (CalcFwdAzimuth) { CT alpha1 = v + u; if (alpha1 > pi) { alpha1 -= c2 * pi; } result.azimuth = alpha1; } if BOOST_GEOMETRY_CONSTEXPR (CalcRevAzimuth) { CT alpha2 = pi - (v - u); if (alpha2 > pi) { alpha2 -= c2 * pi; } result.reverse_azimuth = alpha2; } } if BOOST_GEOMETRY_CONSTEXPR (CalcQuantities) { typedef differential_quantities quantities; quantities::apply(lon1, lat1, lon2, lat2, result.azimuth, result.reverse_azimuth, get_radius<2>(spheroid), f, result.reduced_length, result.geodesic_scale); } return result; } }; }}} // namespace boost::geometry::formula #endif // BOOST_GEOMETRY_FORMULAS_THOMAS_INVERSE_HPP