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
// // SPDX-License-Identifier: BSD-3-Clause // Copyright Contributors to the OpenEXR Project. // // // Functions for computing reference frames. // #ifndef INCLUDED_IMATHFRAME_H #define INCLUDED_IMATHFRAME_H #include "ImathNamespace.h" IMATH_INTERNAL_NAMESPACE_HEADER_ENTER /// @cond Doxygen_Suppress template class Vec3; template class Matrix44; /// @endcond /// /// @{ /// @name Functions for computing reference frames /// /// These methods compute a set of reference frames, defined by their /// transformation matrix, along a curve. It is designed so that the /// array of points and the array of matrices used to fetch these /// routines don't need to be ordered as the curve. /// /// A typical usage would be : /// /// m[0] = IMATH_INTERNAL_NAMESPACE::firstFrame( p[0], p[1], p[2] ); /// for( int i = 1; i < n - 1; i++ ) /// { /// m[i] = IMATH_INTERNAL_NAMESPACE::nextFrame( m[i-1], p[i-1], p[i], t[i-1], t[i] ); /// } /// m[n-1] = IMATH_INTERNAL_NAMESPACE::lastFrame( m[n-2], p[n-2], p[n-1] ); /// /// See Graphics Gems I for the underlying algorithm. template Matrix44 constexpr firstFrame ( const Vec3&, // First point const Vec3&, // Second point const Vec3&) IMATH_NOEXCEPT; // Third point template Matrix44 constexpr nextFrame ( const Matrix44&, // Previous matrix const Vec3&, // Previous point const Vec3&, // Current point Vec3&, // Previous tangent Vec3&) IMATH_NOEXCEPT; // Current tangent template Matrix44 constexpr lastFrame ( const Matrix44&, // Previous matrix const Vec3&, // Previous point const Vec3&) IMATH_NOEXCEPT; // Last point /// /// Compute the first reference frame along a curve. /// /// This function returns the transformation matrix to the reference /// frame defined by the three points `pi`, `pj` and `pk`. Note that /// if the two vectors <`pi`,`pj`> and <`pi`,`pk`> are colinears, an /// arbitrary twist value will be choosen. /// /// Throw `std::domain_error` if `pi` and `pj` are equal. /// /// @param pi /// First point /// @param pj /// Second point /// @param pk /// Third point /// template Matrix44 constexpr firstFrame ( const Vec3& pi, // first point const Vec3& pj, // secont point const Vec3& pk) IMATH_NOEXCEPT // third point { Vec3 t = pj - pi; t.normalizeExc (); Vec3 n = t.cross (pk - pi); n.normalize (); if (n.length () == 0.0f) { Vec3 v (0.0, 0.0, 0.0); int i = fabs (t.x) < fabs (t.y) ? 0 : 1; if (fabs (t.z) < fabs (t[i])) i = 2; v[i] = 1.0; n = t.cross (v); n.normalize (); } Vec3 b = t.cross (n); Matrix44 M; M[0][0] = t.x; M[0][1] = t.y; M[0][2] = t.z; M[0][3] = 0.0; M[1][0] = n.x; M[1][1] = n.y; M[1][2] = n.z; M[1][3] = 0.0; M[2][0] = b.x; M[2][1] = b.y; M[2][2] = b.z; M[2][3] = 0.0; M[3][0] = pi.x; M[3][1] = pi.y; M[3][2] = pi.z; M[3][3] = 1.0; return M; } /// /// Compute the next reference frame along a curve. /// /// This function returns the transformation matrix to the next reference /// frame defined by the previously computed transformation matrix and the /// new point and tangent vector along the curve. /// /// @param Mi /// The previous matrix /// @param pi /// The previous point /// @param pj /// The current point /// @param ti /// The previous tangent vector /// @param tj /// The current tangent vector template Matrix44 constexpr nextFrame ( const Matrix44& Mi, // Previous matrix const Vec3& pi, // Previous point const Vec3& pj, // Current point Vec3& ti, // Previous tangent vector Vec3& tj) IMATH_NOEXCEPT // Current tangent vector { Vec3 a (0.0, 0.0, 0.0); /// Rotation axis. T r = 0.0; // Rotation angle. if (ti.length () != 0.0 && tj.length () != 0.0) { ti.normalize (); tj.normalize (); T dot = ti.dot (tj); // // This is *really* necessary : // if (dot > 1.0) dot = 1.0; else if (dot < -1.0) dot = -1.0; r = acosf (dot); a = ti.cross (tj); } if (a.length () != 0.0 && r != 0.0) { Matrix44 R; R.setAxisAngle (a, r); Matrix44 Tj; Tj.translate (pj); Matrix44 Ti; Ti.translate (-pi); return Mi * Ti * R * Tj; } else { Matrix44 Tr; Tr.translate (pj - pi); return Mi * Tr; } } /// /// Compute the last reference frame along a curve. /// /// This function returns the transformation matrix to the last reference /// frame defined by the previously computed transformation matrix and the /// last point along the curve. /// /// @param Mi /// The previous matrix /// @param pi /// The previous point /// @param pj /// The last point template Matrix44 constexpr lastFrame ( const Matrix44& Mi, // Previous matrix const Vec3& pi, // Previous point const Vec3& pj) IMATH_NOEXCEPT // Last point { Matrix44 Tr; Tr.translate (pj - pi); return Mi * Tr; } /// @} IMATH_INTERNAL_NAMESPACE_HEADER_EXIT #endif // INCLUDED_IMATHFRAME_H