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
/********************************************************************** * * GEOS - Geometry Engine Open Source * http://geos.osgeo.org * * Copyright (C) 2006 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under * the terms of the GNU Lesser General Public Licence as published * by the Free Software Foundation. * See the COPYING file for more information. * * ********************************************************************** * * Last port: algorithm/RayCrossingCounter.java rev. 1.2 (JTS-1.9) * **********************************************************************/ #pragma once #include #include #include #include // forward declarations namespace geos { namespace geom { class Coordinate; class CoordinateXY; class CoordinateSequence; class CircularArc; class Curve; } } namespace geos { namespace algorithm { /** \brief * Counts the number of segments crossed by a horizontal ray extending to the * right from a given point, in an incremental fashion. * * This can be used to determine whether a point lies in a polygonal geometry. * The class determines the situation where the point lies exactly on a segment. * When being used for Point-In-Polygon determination, this case allows * short-circuiting the evaluation. * * This class handles polygonal geometries with any number of shells and holes. * The orientation of the shell and hole rings is unimportant. * In order to compute a correct location for a given polygonal geometry, * it is essential that **all** segments are counted which * * - touch the ray * - lie in in any ring which may contain the point * * The only exception is when the point-on-segment situation is detected, in * which case no further processing is required. * The implication of the above rule is that segments which can be a priori * determined to *not* touch the ray (i.e. by a test of their bounding box or * Y-extent) do not need to be counted. This allows for optimization by indexing. * * @author Martin Davis */ class GEOS_DLL RayCrossingCounter { private: const geom::CoordinateXY& point; std::size_t crossingCount; // true if the test point lies on an input segment bool isPointOnSegment; // Declare type as noncopyable RayCrossingCounter(const RayCrossingCounter& other) = delete; RayCrossingCounter& operator=(const RayCrossingCounter& rhs) = delete; public: /** \brief * Determines the [Location](@ref geom::Location) of a point in a ring. * * This method is an exemplar of how to use this class. * * @param p the point to test * @param ring an array of Coordinates forming a ring * @return the location of the point in the ring */ static geom::Location locatePointInRing(const geom::CoordinateXY& p, const geom::CoordinateSequence& ring); /// Semantically equal to the above, just different args encoding static geom::Location locatePointInRing(const geom::CoordinateXY& p, const std::vector& ring); static geom::Location locatePointInRing(const geom::CoordinateXY& p, const geom::Curve& ring); RayCrossingCounter(const geom::CoordinateXY& p_point) : point(p_point), crossingCount(0), isPointOnSegment(false) { } /** \brief * Counts a segment * * @param p1 an endpoint of the segment * @param p2 another endpoint of the segment */ void countSegment(const geom::CoordinateXY& p1, const geom::CoordinateXY& p2); void countArc(const geom::CoordinateXY& p1, const geom::CoordinateXY& p2, const geom::CoordinateXY& p3); /** \brief * Counts all segments or arcs in the sequence */ void processSequence(const geom::CoordinateSequence& seq, bool isLinear); /** \brief * Reports whether the point lies exactly on one of the supplied segments. * * This method may be called at any time as segments are processed. * If the result of this method is `true`, no further segments need * be supplied, since the result will never change again. * * @return `true` if the point lies exactly on a segment */ bool isOnSegment() const { return isPointOnSegment; } /** \brief * Gets the [Location](@ref geom::Location) of the point relative to * the ring, polygon or multipolygon from which the processed * segments were provided. * * This method only determines the correct location * if **all** relevant segments must have been processed. * * @return the Location of the point */ geom::Location getLocation() const; /** \brief * Tests whether the point lies in or on the ring, polygon or * multipolygon from which the processed segments were provided. * * This method only determines the correct location if **all** relevant * segments must have been processed. * * @return `true` if the point lies in or on the supplied polygon */ bool isPointInPolygon() const; std::size_t getCount() const { return crossingCount; }; static bool shouldCountCrossing(const geom::CircularArc& arc, const geom::CoordinateXY& q); static std::array pointsIntersectingHorizontalRay(const geom::CircularArc& arc, const geom::CoordinateXY& origin); }; } // geos::algorithm } // geos