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) 2012-2013, IGN France. // Copyright (c) 2012-2024, Oslandia. // Copyright (c) 2024-2025, SFCGAL team. // SPDX-License-Identifier: LGPL-2.0-or-later #ifndef SFCGAL_GEOMETRY_H_ #define SFCGAL_GEOMETRY_H_ #include "SFCGAL/config.h" #include #include #include #include #include #include namespace CGAL { class Object; } /** * SRID type */ typedef uint32_t srid_t; namespace SFCGAL { /// @{ /// @privatesection class Geometry; class Point; class LineString; class Polygon; class GeometryCollection; class MultiPoint; class MultiLineString; class MultiPolygon; class Triangle; class TriangulatedSurface; class PolyhedralSurface; // not SFA, appears in GML/CityGML class Solid; // not SFA, appears in GML/CityGML class MultiSolid; class Envelope; class GeometryVisitor; class ConstGeometryVisitor; const uint32_t wkbSRID = 0x20000000; const uint32_t wkbM = 0x40000000; const uint32_t wkbZ = 0x80000000; /// @} end of private section /** * [OGC/SFA]8.2.3 "A common list of codes for geometric types" * * @todo solid and triangles as non OGC/SFA geometric types? * @warning codes for abstract classes and unimplemented classes are hidden * @warning code values have are important for WKB */ enum GeometryType { // TYPE_GEOMETRY = 0, //abstract TYPE_POINT = 1, TYPE_LINESTRING = 2, TYPE_POLYGON = 3, TYPE_MULTIPOINT = 4, TYPE_MULTILINESTRING = 5, TYPE_MULTIPOLYGON = 6, TYPE_GEOMETRYCOLLECTION = 7, // TYPE_CIRCULARSTRING = 8, // not yet supported // TYPE_COMPOUNDCURVE = 9, // not yet supported // TYPE_CURVEPOLYGON = 10, // not yet supported // TYPE_MULTICURVE = 11, //abstract // TYPE_MULTISURFACE = 12, //abstract // TYPE_CURVE = 13, //abstract // TYPE_SURFACE = 14, //abstract TYPE_POLYHEDRALSURFACE = 15, TYPE_TRIANGULATEDSURFACE = 16, TYPE_TRIANGLE = 17, //-- not official codes TYPE_SOLID = 101, TYPE_MULTISOLID = 102 }; /** * @brief coordinate types (XY, XYZ, XYM, etc.) * @see SFA 2.8.3 LineStringZ = 1003 ( coordinateType + geometryType) */ typedef enum { COORDINATE_XY = 0, COORDINATE_XYZ = 1000, COORDINATE_XYM = 2000, COORDINATE_XYZM = 3000 } CoordinateType; /** * @brief OGC/SFA based Geometry abstract class */ class SFCGAL_API Geometry { public: /** * @brief Default constructor. */ Geometry(); /** * @brief Copy constructor. */ Geometry(const Geometry &) = default; /** * @brief Copy assignemnt operator. */ Geometry & operator=(const Geometry &other) = default; /** * @brief Destructor. */ virtual ~Geometry() = default; /** * @brief Get a deep copy of the geometry */ virtual Geometry * clone() const = 0; /** * @brief [OGC/SFA]returns the geometry type * @warning use CamelCase (LineString, not LINESTRING) */ virtual std::string geometryType() const = 0; /** * @brief Returns a code corresponding to the type * @warning not standard */ virtual GeometryType geometryTypeId() const = 0; /** * [OGC/SFA]Dimension of the Geometry ( 0 : punctual, 1 : curve, ...) * @warning empty geometries provide the dimension corresponding to the object */ virtual int dimension() const = 0; /** * [OGC/SFA]returns the dimension of the coordinates * @pre suppose no mix of 2D/3D coordinates */ virtual int coordinateDimension() const = 0; /** * [OGC/SFA]test if geometry is empty */ virtual bool isEmpty() const = 0; /** * [OGC/SFA]test if geometry is 3d * @pre suppose no mix of 2D/3D coordinates */ virtual bool is3D() const = 0; /** * [OGC/SFA]test if geometry is measured (has an m) * @pre suppose no mix of M/!M points */ virtual bool isMeasured() const = 0; /** * @brief Drops the z coordinate of the geometry * @return TRUE if a Z value was present and has been removed * @pre suppose no mix of 2D/3D coordinates */ virtual auto dropZ() -> bool = 0; /** * @brief Drops the m coordinate of the geometry * @return TRUE if a M value was present and has been removed * @pre suppose no mix of M/!M points */ virtual auto dropM() -> bool = 0; /** * @brief Swaps the x and y coordinates of the geometry */ virtual auto swapXY() -> void = 0; /** * @brief Determines the coordinate dimension of a geometry * * @return CoordinateType The coordinate dimension (XY, XYZ, XYM, XYZM) */ auto getCoordinateType() const -> CoordinateType { bool hasZ = is3D(); bool hasM = isMeasured(); if (hasZ) { return hasM ? CoordinateType::COORDINATE_XYZM : CoordinateType::COORDINATE_XYZ; } else { return hasM ? CoordinateType::COORDINATE_XYM : CoordinateType::COORDINATE_XY; } } // virtual bool isSimple() const = 0 ; /** * Force the state of the validity flag. The validity flag allows to bypass * validity checks If the flag is true, it means the geometry is considered * valid If the flag is false, it means the validity state of the geometry is * unknown The flag is only changed for this geometry and not the internal * geometries. * @see propagateValidityFlag */ void forceValidityFlag(bool validity); /** Returns the validity flag */ bool hasValidityFlag() const; /** * [OGC/SFA]returns the WKT string * @param numDecimals extension specify fix precision output */ std::string asText(const int &numDecimals = -1) const; /** * [OGC/SFA]returns the WKB string */ std::string asWkb(boost::endian::order wkbOrder = boost::endian::order::native, bool asHex = false) const; /** * [OGC/SFA]Returns a polygon representing the BBOX of the geometry * @todo In order to adapt to 3D, would be better to define an "Envelope * type", otherway would lead to Polygon and PolyhedralSurface */ // std::unique_ptr< Geometry > envelope() const = 0 ; Envelope envelope() const; /** * @brief [OGC/SFA]Returns the boundary of the geometry */ virtual std::unique_ptr boundary() const; /** * @brief Computes the distance to an other geometry */ double distance(const Geometry &other) const; /** * @brief Computes the 3D distance to an other geometry */ double distance3D(const Geometry &other) const; //-- helpers /** * @brief round the geometry with a corresponding scale factor * @param scale the scale factor (1 corresponds to the nearest integer, 1000 * to a 0.001 tolerance) */ void round(const long &scale = 1); /** * Equality operator * @todo only compare coordinate points * @pre the two geometries must be valid */ auto almostEqual(const Geometry &, const double tolerance) const -> bool; /** * @brief [OGC/SFA]Gets the number of geometries in a collection of geometries * @warning 1 for Point, LineString, Polygon, PolyhedralSurface, Triangle, * TriangulatedSurface */ virtual size_t numGeometries() const; /** * @brief [OGC/SFA]Returns the n-th geometry * @warning *this for Point, LineString, Polygon, PolyhedralSurface, Triangle, * TriangulatedSurface */ virtual const Geometry & geometryN(size_t const &n) const; /** * @brief [OGC/SFA]Returns the n-th geometry * @warning *this for Point, LineString, Polygon, PolyhedralSurface, Triangle, * TriangulatedSurface */ virtual Geometry & geometryN(size_t const &n); /** * @brief [OGC/SFA]Sets the n-th geometry, starting at zero * @warning Does nothing for Point, LineString, Polygon, Triangle * TriangulatedSurface */ virtual void setGeometryN(const Geometry &geometry, size_t const &n); /** * @brief [OGC/SFA]Sets the n-th geometry, starting at zero * The ownership of the geometry is taken. The caller is not responsible * anymore of its deallocation. * @warning *this for GeometryCollection, PolyhedralSurface, * TriangulatedSurface */ virtual void setGeometryN(Geometry *geometry, size_t const &n); /** * @brief Tests if geometry is of "Derived" type given as template parameter * @warning not optimized (slow with dynamic_cast) */ template inline bool is() const { return dynamic_cast(this) != NULL; } /** * @brief Downcast to a "Derived" class * @warning performs check if boost assertions are enabled * @pre The cast must be doable */ template inline const Derived & as() const { BOOST_ASSERT(is()); return *static_cast(this); } /** * @brief Downcast to a "Derived" class * @warning performs check if boost assertions are enabled * @pre The cast must be doable */ template inline Derived & as() { BOOST_ASSERT(is()); return *static_cast(this); } /** * @brief [visitor]dispatch visitor */ virtual void accept(GeometryVisitor &visitor) = 0; /** * @brief [visitor]dispatch visitor */ virtual void accept(ConstGeometryVisitor &visitor) const = 0; /** * Serializer */ template void serialize(Archive & /*ar*/, const unsigned int /*version*/) { } /** * @brief Computes centroid of this geometry */ Point centroid() const; /** * @brief Computes 3D centroid of this geometry */ Point centroid3D() const; protected: bool validityFlag_ = false; }; /** * Equality operator * @todo only compare coordinate points * @pre the two geometries must be valid */ SFCGAL_API bool operator==(const Geometry &, const Geometry &); } // namespace SFCGAL #endif