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) 2009-2014 INRIA Sophia-Antipolis (France). // Copyright (c) 2010-2013 GeometryFactory Sarl (France). // All rights reserved. // // This file is part of CGAL (www.cgal.org). // // $URL: https://github.com/CGAL/cgal/blob/v6.1/SMDS_3/include/CGAL/tetrahedron_soup_to_triangulation_3.h $ // $Id: include/CGAL/tetrahedron_soup_to_triangulation_3.h b26b07a1242 $ // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // // Author(s) : Mael Rouxel-Labbé, Maxime Gimeno, Jane Tournois // //****************************************************************************** // File Description : //****************************************************************************** #ifndef CGAL_SMDS_3_TETRAHEDRON_SOUP_TO_C3T3_H #define CGAL_SMDS_3_TETRAHEDRON_SOUP_TO_C3T3_H #include #include #include #include #include #include #include #include namespace CGAL { /** \ingroup PkgSMDS3Functions * builds a 3D triangulation from a soup of tetrahedra. * * @tparam TetrahedronRange a model of `Range` whose value type is * a `Tetrahedron_3`. The point type of the tetrahedra must be convertible * to `Triangulation::Point` * @tparam Triangulation a 3D triangulation class that has * a vertex base model of `SimplicialMeshVertexBase_3` * and a cell base model of `SimplicialMeshCellBase_3` * * @param tets the set of finite tetrahedra of a valid CGAL triangulation. * Each element in the range is the geometric description of the * corresponding cell in the triangulation. * * @returns the 3D triangulation built from \p tets * * @post the output triangulation must be a triangulation of the convex hull of `tets` * * @sa @ref SMDS_3/tetrahedron_soup_to_c3t3_example.cpp * */ template Triangulation tetrahedron_soup_to_triangulation_3(const TetrahedronRange& tets) { using Tr = Triangulation; using Point = typename Tr::Point; Triangulation tr; std::vector points; std::vector > finite_cells; boost::unordered_map, typename Tr::Cell::Surface_patch_index> border_facets; boost::unordered_map p2i; CGAL_assertion_code( typename Triangulation::Geom_traits::Orientation_3 orientation = tr.geom_traits().orientation_3_object(); ); for (typename TetrahedronRange::value_type tet : tets) { CGAL_assertion(tet.orientation() == CGAL::POSITIVE); std::array cell; for (int i = 0; i < 4; ++i) { const Point& pi = tet[i]; if (p2i.find(pi) == p2i.end()) { points.push_back(pi); int index = static_cast(points.size() - 1); p2i.insert(std::make_pair(pi, index)); cell[i] = index; } else cell[i] = p2i.at(pi); } CGAL_assertion(orientation(points[cell[0]], points[cell[1]], points[cell[2]], points[cell[3]]) == CGAL::POSITIVE); finite_cells.push_back(cell); } typename Tr::Cell::Subdomain_index default_si(1); CGAL::SMDS_3::build_triangulation_one_subdomain(tr, points, finite_cells, default_si, border_facets, /*verbose = */false, /*replace_domain_0 = */false, /*allow_non_manifold =*/false); CGAL_assertion(CGAL::SMDS_3::internal::is_convex(tr)); return tr; } /** \ingroup PkgSMDS3Functions * builds a 3D triangulation from a soup of tetrahedra. * * @tparam PointRange a model of the concept `RandomAccessContainer` * whose value type is the point type. * The point type must be convertible to `Triangulation::Point`. * @tparam TetrahedronRange a model of the concept `RandomAccessContainer` whose * value type is a model of the concept `RandomAccessContainer` whose value type is `std::size_t` * @tparam Triangulation a 3D triangulation class that has * a vertex base model of `MeshVertexBase_3` * and a cell base model of `MeshCellBase_3` * @tparam NamedParameters a sequence of \ref bgl_namedparameters "Named Parameters" * * @param points points of the soup of tetrahedra * @param tets the set of finite tetrahedra of a valid CGAL triangulation. * Each element in the range describes a tetrahedron using the indices of the points * in `points`. * It must * describe a non self-intersecting set of tetrahedra, that cover the convex hull of the * corresponding point set. The tetrahedra must form a valid triangulation with each * pair of neighboring cells sharing exactly one triangle. Combinatorial validity and * validity of the geometric embedding are required. * * @param np an optional sequence of \ref bgl_namedparameters "Named Parameters" among the ones listed below * * \cgalNamedParamsBegin * \cgalParamNBegin{surface_facets} * \cgalParamDescription{each element in the range describes a surface facet using the indices of points * in `points` (indices 0 to 2), and the associated `Surface_patch_index` (index 3)} * \cgalParamType{a class model of `AssociativeContainer` * whose key type is model of `RandomAccessContainer` containing `int` * and mapped type is `Tr::Cell::Surface_patch_index`} * \cgalParamDefault{an empty `boost::unordered_map, typename Tr::Cell::Surface_patch_index>`} * \cgalParamExtra{to avoid copies of large data sets, this parameter can be passed using `std::cref`} * \cgalParamNEnd * \cgalParamNBegin{subdomain_indices} * \cgalParamDescription{each element in the range gives the * `Triangulation::Cell::Subdomain_index` corresponding to the tetrahedron (cell) * of same index in `tets`} * \cgalParamType{a class model of `RandomAccessContainer` whose value type * is `Triangulation::Cell::Subdomain_index`} * \cgalParamDefault{each finite cell of the output triangulation is * set to have `1` as `Subdomain_index`} * \cgalParamExtra{to avoid copies of large data sets, this parameter can be passed using `std::cref`} * \cgalParamNEnd *\cond SKIP_IN_MANUAL * \cgalParamNBegin{allow_non_manifold} * \cgalParamDescription{allows the construction of a triangulation with non-manifold edges * and non manifold vertices. The triangulation is invalid if this situation is met, * so it should be used only in advanced cases, and the triangulation will be hardly usable.} * \cgalParamType{bool} * \cgalParamDefault{false} * \cgalParamNEnd *\endcond * \cgalNamedParamsEnd * * @returns the 3D triangulation built from parameters * * @pre `points` contains each point only once * @post the output triangulation must be a triangulation of the convex hull of `points` * @post `is_valid()` returns `true` for the returned triangulation * * @sa \link Polygon_mesh_processing::polygon_soup_to_polygon_mesh() `CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh()` \endlink * @sa @ref SMDS_3/tetrahedron_soup_to_c3t3_example.cpp * */ template Triangulation tetrahedron_soup_to_triangulation_3(const PointRange& points, const TetrahedronRange& tets, const NamedParameters& np = parameters::default_values()) { using parameters::choose_parameter; using parameters::get_parameter; using parameters::get_parameter_reference; using Default_facet_map = boost::unordered_map, typename Triangulation::Cell::Surface_patch_index>; using Facet_map_ref_type = typename internal_np::Lookup_named_param_def< internal_np::surface_facets_t, NamedParameters, Default_facet_map>::reference; using Subdomain_index = typename Triangulation::Cell::Subdomain_index; using Default_subdomains = std::vector; using Subdomains_ref_type = typename internal_np::Lookup_named_param_def< internal_np::subdomain_indices_t, NamedParameters, Default_subdomains>::reference; Triangulation tr; Default_facet_map empty_map; Default_subdomains subdomain_indices(tets.size(), Subdomain_index(1)); const Facet_map_ref_type& facets = choose_parameter( get_parameter_reference(np, internal_np::surface_facets), empty_map); const Subdomains_ref_type& subdomains = choose_parameter( get_parameter_reference(np, internal_np::subdomain_indices), subdomain_indices); const bool non_manifold = choose_parameter( get_parameter(np, internal_np::allow_non_manifold), false); CGAL::SMDS_3::build_triangulation_with_subdomains_range(tr, points, tets, subdomains, facets, /*verbose = */false, /*replace_domain_0 = */false, non_manifold); CGAL_assertion(CGAL::SMDS_3::internal::is_convex(tr)); return tr; } } //namespace CGAL #endif // CGAL_SMDS_3_TETRAHEDRON_SOUP_TO_C3T3_H