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) 2024 Martin Davis * Copyright (C) 2024 Paul Ramsey * * 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. * **********************************************************************/ #pragma once #include #include #include #include #include #include // Forward declarations namespace geos { namespace algorithm { class BoundaryNodeRule; } namespace geom { class Geometry; } namespace noding { } namespace operation { namespace relateng { class TopologyPredicate; class TopologyComputer; class EdgeSegmentIntersector; } } } namespace geos { // geos. namespace operation { // geos.operation namespace relateng { // geos.operation.relateng using geos::geom::CoordinateXY; using geos::geom::Geometry; using geos::algorithm::BoundaryNodeRule; using geos::noding::MCIndexSegmentSetMutualIntersector; /** * Computes the value of topological predicates between two geometries based on the * Dimensionally-Extended 9-Intersection Model (DE-9IM). * Standard and custom topological predicates are provided by RelatePredicate. * * The RelateNG algorithm has the following capabilities: * * * Efficient short-circuited evaluation of topological predicates * (including matching custom DE-9IM matrix patterns) * * Optimized repeated evaluation of predicates against a single geometry * via cached spatial indexes (AKA "prepared mode") * * Robust computation (only point-local topology is required, * so invalid geometry topology does not cause failures) * * GeometryCollection inputs containing mixed types and overlapping polygons * are supported, using union semantics. * * Zero-length LineStrings are treated as being topologically identical to Points. * * Support for BoundaryNodeRule. * * See IntersectionMatrixPattern for a description of DE-9IM patterns. * * If not specified, the standard BoundaryNodeRule::MOD2_BOUNDARY_RULE is used. * * RelateNG operates in 2D only; it ignores any Z ordinates. * * This implementation replaces RelateOp and PreparedGeometry. * * FUTURE WORK * * * Support for a distance tolerance to provide "approximate" predicate evaluation * * @author Martin Davis * * @see RelateOp * @see PreparedGeometry */ class GEOS_DLL RelateNG { private: // Members const BoundaryNodeRule& boundaryNodeRule; RelateGeometry geomA; std::unique_ptr edgeMutualInt = nullptr; // Methods RelateNG(const Geometry* inputA, bool isPrepared, const BoundaryNodeRule& bnRule) : boundaryNodeRule(bnRule) , geomA(inputA, isPrepared, bnRule) {} RelateNG(const Geometry* inputA, bool isPrepared) : RelateNG(inputA, isPrepared, BoundaryNodeRule::getBoundaryRuleMod2()) {} bool hasRequiredEnvelopeInteraction(const Geometry* b, TopologyPredicate& predicate); bool finishValue(TopologyPredicate& predicate); void computePP(RelateGeometry& geomB, TopologyComputer& topoComputer); void computeAtPoints(RelateGeometry& geom, bool isA, RelateGeometry& geomTarget, TopologyComputer& topoComputer); bool computePoints(RelateGeometry& geom, bool isA, RelateGeometry& geomTarget, TopologyComputer& topoComputer); void computePoint(bool isA, const CoordinateXY* pt, RelateGeometry& geomTarget, TopologyComputer& topoComputer); bool computeLineEnds(RelateGeometry& geom, bool isA, RelateGeometry& geomTarget, TopologyComputer& topoComputer); /** * Compute the topology of a line endpoint. * Also reports if the line end is in the exterior of the target geometry, * to optimize testing multiple exterior endpoints. * * @param geom * @param isA * @param pt * @param geomTarget * @param topoComputer * @return true if the line endpoint is in the exterior of the target */ bool computeLineEnd(RelateGeometry& geom, bool isA, const CoordinateXY* pt, RelateGeometry& geomTarget, TopologyComputer& topoComputer); bool computeAreaVertex(RelateGeometry& geom, bool isA, RelateGeometry& geomTarget, TopologyComputer& topoComputer); bool computeAreaVertex(RelateGeometry& geom, bool isA, const LinearRing* ring, RelateGeometry& geomTarget, TopologyComputer& topoComputer); void computeAtEdges(RelateGeometry& geomB, TopologyComputer& topoComputer); void computeEdgesAll(std::vector& edgesB, const Envelope* envInt, EdgeSegmentIntersector& intersector); void computeEdgesMutual(std::vector& edgesB, const Envelope* envInt, EdgeSegmentIntersector& intersector); public: /** * Tests whether the topological relationship between two geometries * satisfies a topological predicate. * * @param a the A input geometry * @param b the B input geometry * @param pred the topological predicate * @return true if the topological relationship is satisfied */ static bool relate(const Geometry* a, const Geometry* b, TopologyPredicate& pred); /** * Tests whether the topological relationship between two geometries * satisfies a topological predicate, * using a given BoundaryNodeRule. * * @param a the A input geometry * @param b the B input geometry * @param pred the topological predicate * @param bnRule the Boundary Node Rule to use * @return true if the topological relationship is satisfied */ static bool relate(const Geometry* a, const Geometry* b, TopologyPredicate& pred, const BoundaryNodeRule& bnRule); /** * Tests whether the topological relationship to a geometry * matches a DE-9IM matrix pattern. * * @param a the A input geometry * @param b the B input geometry * @param imPattern the DE-9IM pattern to match * @return true if the geometries relationship matches the DE-9IM pattern * * @see IntersectionMatrixPattern */ static bool relate(const Geometry* a, const Geometry* b, const std::string& imPattern); /** * Computes the DE-9IM matrix * for the topological relationship between two geometries. * * @param a the A input geometry * @param b the B input geometry * @return the DE-9IM matrix for the topological relationship */ static std::unique_ptr relate(const Geometry* a, const Geometry* b); /** * Computes the DE-9IM matrix * for the topological relationship between two geometries. * * @param a the A input geometry * @param b the B input geometry * @param bnRule the Boundary Node Rule to use * @return the DE-9IM matrix for the relationship */ static std::unique_ptr relate(const Geometry* a, const Geometry* b, const BoundaryNodeRule& bnRule); /** * Creates a prepared RelateNG instance to optimize the * evaluation of relationships against a single geometry. * * @param a the A input geometry * @return a prepared instance */ static std::unique_ptr prepare(const Geometry* a); /** * Creates a prepared RelateNG instance to optimize the * computation of predicates against a single geometry, * using a given BoundaryNodeRule. * * @param a the A input geometry * @param bnRule the required BoundaryNodeRule * @return a prepared instance */ static std::unique_ptr prepare(const Geometry* a, const BoundaryNodeRule& bnRule); /** * Computes the DE-9IM matrix for the topological relationship to a geometry. * * @param b the B geometry to test against * @return the DE-9IM matrix */ std::unique_ptr evaluate(const Geometry* b); /** * Tests whether the topological relationship to a geometry * matches a DE-9IM matrix pattern. * * @param b the B geometry to test against * @param imPattern the DE-9IM pattern to match * @return true if the geometries' topological relationship matches the DE-9IM pattern * * @see IntersectionMatrixPattern */ bool evaluate(const Geometry* b, const std::string& imPattern); /** * Tests whether the topological relationship to a geometry * satisfies a topology predicate. * * @param b the B geometry to test against * @param predicate the topological predicate * @return true if the predicate is satisfied */ bool evaluate(const Geometry* b, TopologyPredicate& predicate); static bool intersects(const Geometry* a, const Geometry* b); static bool crosses(const Geometry* a, const Geometry* b); static bool disjoint(const Geometry* a, const Geometry* b); static bool touches(const Geometry* a, const Geometry* b); static bool within(const Geometry* a, const Geometry* b); static bool contains(const Geometry* a, const Geometry* b); static bool overlaps(const Geometry* a, const Geometry* b); static bool covers(const Geometry* a, const Geometry* b); static bool coveredBy(const Geometry* a, const Geometry* b); static bool equalsTopo(const Geometry* a, const Geometry* b); bool intersects(const Geometry* a); bool crosses(const Geometry* a); bool disjoint(const Geometry* a); bool touches(const Geometry* a); bool within(const Geometry* a); bool contains(const Geometry* a); bool overlaps(const Geometry* a); bool covers(const Geometry* a); bool coveredBy(const Geometry* a); bool equalsTopo(const Geometry* a); bool relate(const Geometry* a, const std::string& pat); std::unique_ptr relate(const Geometry* a); }; } // namespace geos.operation.relateng } // namespace geos.operation } // namespace geos