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) 2018-2019 GeometryFactory (France). // All rights reserved. // // This file is part of CGAL (www.cgal.org). // // $URL: https://github.com/CGAL/cgal/blob/v6.1/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/smooth_shape.h $ // $Id: include/CGAL/Polygon_mesh_processing/smooth_shape.h b26b07a1242 $ // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // // Author(s) : Mael Rouxel-Labbé // Konstantinos Katrioplas (konst.katrioplas@gmail.com) #ifndef CGAL_POLYGON_MESH_PROCESSING_SMOOTH_SHAPE_H #define CGAL_POLYGON_MESH_PROCESSING_SMOOTH_SHAPE_H #include #if defined(CGAL_EIGEN3_ENABLED) #include #endif #include #include #include #ifdef CGAL_PMP_SMOOTHING_OUTPUT_INTERMEDIARY_STEPS #include #include #endif namespace CGAL { namespace Polygon_mesh_processing { /*! * \ingroup PMP_meshing_grp * * @brief smooths the overall shape of the mesh by using the mean curvature flow. * * The effect depends on the curvature of each area and on a time step which * represents the amount by which vertices are allowed to move. * The result conformally maps the initial surface to a sphere. * * @tparam TriangleMesh model of `MutableFaceGraph`. * @tparam FaceRange range of `boost::graph_traits::%face_descriptor`, * model of `Range`. Its iterator type is `ForwardIterator`. * @tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters" * * @param tmesh a polygon mesh with triangulated surface patches to be smoothed. * @param faces the range of triangular faces defining one or several surface patches to be smoothed. * @param time a time step that corresponds to the speed by which the surface is smoothed. * A larger time step results in faster convergence but details may be distorted to a larger extent * compared to more iterations with a smaller step. Typical values scale in the interval (1e-6, 1]. * @param np an optional sequence of \ref bgl_namedparameters "Named Parameters" among the ones listed below * * \cgalNamedParamsBegin * \cgalParamNBegin{number_of_iterations} * \cgalParamDescription{the number of iterations for the sequence of the smoothing iterations performed} * \cgalParamType{unsigned int} * \cgalParamDefault{`1`} * \cgalParamNEnd * * \cgalParamNBegin{vertex_is_constrained_map} * \cgalParamDescription{a property map containing the constrained-or-not status of each vertex of `tmesh`.} * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits::%vertex_descriptor` * as key type and `bool` as value type. It must be default constructible.} * \cgalParamDefault{a default property map where no vertex is constrained} * \cgalParamExtra{A constrained vertex cannot be modified at all during smoothing.} * \cgalParamNEnd * * \cgalParamNBegin{do_scale} * \cgalParamDescription{Whether to apply rescaling after smoothing. This is useful because * the mean curvature flow tends to shrink the surface.} * \cgalParamType{Boolean} * \cgalParamDefault{`true`} * \cgalParamExtra{Scaling can only be applied if the mesh is closed and if there is no more than * a single constrained vertex.} * \cgalParamExtra{If a vertex is constrained, it is the fixed point of the scaling, otherwise * the centroid is used.} * \cgalParamNEnd * * \cgalParamNBegin{vertex_point_map} * \cgalParamDescription{a property map associating points to the vertices of `tmesh`} * \cgalParamType{a class model of `ReadWritePropertyMap` with `boost::graph_traits::%vertex_descriptor` * as key type and `%Point_3` as value type} * \cgalParamDefault{`boost::get(CGAL::vertex_point, tmesh)`} * \cgalParamExtra{If this parameter is omitted, an internal property map for `CGAL::vertex_point_t` * must be available in `TriangleMesh`.} * \cgalParamNEnd * * \cgalParamNBegin{geom_traits} * \cgalParamDescription{an instance of a geometric traits class} * \cgalParamType{a class model of `Kernel`} * \cgalParamDefault{a \cgal Kernel deduced from the point type, using `CGAL::Kernel_traits`} * \cgalParamExtra{The geometric traits class must be compatible with the vertex point type.} * \cgalParamNEnd * * \cgalParamNBegin{sparse_linear_solver} * \cgalParamDescription{an instance of the sparse linear solver used for smoothing} * \cgalParamType{a class model of `SparseLinearAlgebraWithFactorTraits_d`} * \cgalParamDefault{if \ref thirdpartyEigen "Eigen" 3.2 (or greater) is available and * `CGAL_EIGEN3_ENABLED` is defined, then the following overload of `Eigen_solver_traits` * is provided as default value: * `CGAL::Eigen_solver_traits::%EigenType, Eigen::IncompleteLUT > >`} * \cgalParamNEnd * \cgalNamedParamsEnd * * @warning This function involves linear algebra, that is computed using non-exact, floating-point arithmetic. * * @see `angle_and_area_smoothing()` */ template void smooth_shape(const FaceRange& faces, TriangleMesh& tmesh, const double time, const NamedParameters& np = parameters::default_values()) { if(std::begin(faces) == std::end(faces)) return; typedef typename boost::graph_traits::vertex_descriptor vertex_descriptor; typedef typename GetGeomTraits::type GeomTraits; typedef typename GetVertexPointMap::type VertexPointMap; typedef typename internal_np::Lookup_named_param_def< internal_np::vertex_is_constrained_t, NamedParameters, Static_boolean_property_map >::type VCMap; using parameters::choose_parameter; using parameters::get_parameter; GeomTraits gt = choose_parameter(get_parameter(np, internal_np::geom_traits)); VertexPointMap vpmap = choose_parameter(get_parameter(np, internal_np::vertex_point), get_property_map(CGAL::vertex_point, tmesh)); VCMap vcmap = choose_parameter(get_parameter(np, internal_np::vertex_is_constrained), Static_boolean_property_map()); const unsigned int nb_iterations = choose_parameter(get_parameter(np, internal_np::number_of_iterations), 1); const bool scale_after_smoothing = choose_parameter(get_parameter(np, internal_np::do_scale), true); #if defined(CGAL_EIGEN3_ENABLED) #if EIGEN_VERSION_AT_LEAST(3,2,0) typedef typename Eigen::SparseMatrix Eigen_sparse_matrix; typedef typename Eigen::BiCGSTAB > Eigen_solver; typedef CGAL::Eigen_solver_traits Default_solver; #else typedef bool Default_solver;//compilation should crash //if no solver is provided and Eigen version < 3.2 #endif #else typedef bool Default_solver;//compilation should crash // if no solver is provided and Eigen version < 3.2 #endif #if defined(CGAL_EIGEN3_ENABLED) static_assert( (!std::is_same::type, bool>::value) || EIGEN_VERSION_AT_LEAST(3, 2, 0), "Eigen3 version 3.2 or later is required."); #else static_assert( (!std::is_same::type, bool>::value), "Eigen3 version 3.2 or later is required."); #endif typedef typename GetSolver::type Sparse_solver; typedef typename Sparse_solver::Matrix Eigen_matrix; typedef typename Sparse_solver::Vector Eigen_vector; Sparse_solver solver = choose_parameter(get_parameter(np, internal_np::sparse_linear_solver)); std::size_t n = vertices(tmesh).size(); Eigen_matrix A(n, n); Eigen_vector bx(n), by(n), bz(n), Xx(n), Xy(n), Xz(n); std::vector > stiffness; internal::Shape_smoother smoother(tmesh, vpmap, vcmap, scale_after_smoothing, gt); smoother.init_smoothing(faces); // For robustness reasons, the Laplacian coefficients are computed only once (only the mass // matrix is updated at every iteration). See Kazdhan et al. "Can Mean-Curvature Flow Be Made Non-Singular?". smoother.calculate_stiffness_matrix_elements(stiffness); for(unsigned int iter=0; iter void smooth_shape(TriangleMesh& tmesh, const double time, const CGAL_NP_CLASS& np = parameters::default_values()) { smooth_shape(faces(tmesh), tmesh, time, np); } /// \endcond } // Polygon_mesh_processing } // CGAL #endif // CGAL_POLYGON_MESH_PROCESSING_SMOOTH_SHAPE_H