{"id":347059,"date":"2023-03-21T15:02:28","date_gmt":"2023-03-21T15:02:28","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=347059"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=347059","title":{"rendered":"<span>\u0410\u043d\u0430\u043b\u0438\u0437 STL \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Python<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c (\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435\u043c). \u0418 \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0440\u043e\u043b\u044c \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0430\u044e\u0442 3D-\u043f\u0440\u0438\u043d\u0442\u0435\u0440\u044b \u0438 3D-\u0441\u043a\u0430\u043d\u0435\u0440\u044b (\u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435, \u043b\u0430\u0437\u0435\u0440\u043d\u044b\u0435). \u041d\u0430 \u0432\u0445\u043e\u0434 \u0432 3D-\u043f\u0440\u0438\u043d\u0442\u0435\u0440\u044b \u043f\u043e\u0434\u0430\u044e\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 *.stl \u2013 STL \u043c\u043e\u0434\u0435\u043b\u044c, \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0438\u0437 3D-\u0441\u043a\u0430\u043d\u0435\u0440\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 *.stl. \u041c\u043e\u0434\u0435\u043b\u044c \u0444\u043e\u0440\u043c\u0430\u0442\u0430 *.stl \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0442\u0440\u0438\u0430\u043d\u0433\u0443\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u043a\u0443, \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u0432. \u0414\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u043f\u043e STL \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u0438\u0437 STL \u0442\u0432\u0435\u0440\u0434\u043e\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0435\u0434\u0438\u043d\u0443\u044e \u0442\u0440\u0438\u0430\u043d\u0433\u0443\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438.<\/p>\n<p>\u0412  \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\u0445 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 STL, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Geomatix Design X, Wrap, NX \u0438 \u0434\u0440., \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e STL  \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438. \u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 1 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 STL  \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u0435\u043a\u0446\u0438\u0438 \u043b\u043e\u043f\u0430\u0442\u043e\u043a \u0441\u043e\u043f\u043b\u043e\u0432\u043e\u0433\u043e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0430 (\u0447\u0430\u0441\u0442\u044c \u0433\u0430\u0437\u043e\u0432\u043e\u0439 \u0442\u0443\u0440\u0431\u0438\u043d\u044b). <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/e14\/b8e\/b05\/e14b8eb05504b35be96a1073c514d1eb.jpg\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 1 \u2013 \u0421\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043e\u0431\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0441\u0435\u043a\u0446\u0438\u0438 \u043b\u043e\u043f\u0430\u0442\u043e\u043a \" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 1 \u2013 \u0421\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043e\u0431\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0441\u0435\u043a\u0446\u0438\u0438 \u043b\u043e\u043f\u0430\u0442\u043e\u043a \" width=\"2003\" height=\"650\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e14\/b8e\/b05\/e14b8eb05504b35be96a1073c514d1eb.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 1 \u2013 \u0421\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043e\u0431\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0441\u0435\u043a\u0446\u0438\u0438 \u043b\u043e\u043f\u0430\u0442\u043e\u043a <\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c\u043e\u043c \u041f\u041e, \u043e\u0434\u043d\u0430\u043a\u043e, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043c\u043d\u043e\u0439 \u043d\u0430 Python \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u044f STL \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438.    <\/p>\n<h3>\u041a\u0440\u0430\u0442\u043a\u043e \u043e\u0431 STL <\/h3>\n<p>\u0414\u043b\u044f \u0442\u0440\u0438\u0430\u043d\u0433\u0443\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 \u0432\u0432\u0435\u0434\u0451\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0430\u0442\u0440\u0438\u0446, \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u0443\u044e\u0449\u0438\u0445 \u0435\u0451: <strong>V<\/strong><sub>g\u00d73 <\/sub>\u2013\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u0435\u0440\u0448\u0438\u043d \u0441\u0435\u0442\u043a\u0438 stl-\u043c\u043e\u0434\u0435\u043b\u0438, <strong>F<\/strong><sub>m\u00d73<\/sub>\u00a0\u2013\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0439 \u0432\u0435\u0440\u0448\u0438\u043d \u0432 \u0444\u0430\u0441\u0435\u0442\u044b (\u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 <strong>F<\/strong><sub>a<\/sub>, <strong>F<\/strong><sub>b<\/sub>, <strong>F<\/strong><sub>c<\/sub>), <strong>N<\/strong><sub>m\u00d73<\/sub>\u00a0\u2013\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u0444\u0430\u0441\u0435\u0442. \u041a\u0430\u0436\u0434\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0432 \u0442\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u043e\u043c \u0435\u0432\u043a\u043b\u0438\u0434\u043e\u0432\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u044d\u043a\u0441\u0442\u0440\u0435\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043a\u0440\u0438\u0432\u0438\u0437\u043d <em>k<sub>min<\/sub><\/em>\u00a0\u0438 <em>k<sub>max<\/sub><\/em>, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0433\u043b\u0430\u0432\u043d\u044b\u043c\u0438 [1]. \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0437\u043d \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043e \u043d\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0445, \u0438 \u0434\u043b\u044f \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 STL, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0443\u0441\u043e\u0447\u043d\u043e-\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439, \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439. \u0414\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0435\u0449\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0432\u0435\u043a\u0430 \u0431\u044b\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b [2, 3, 4]. \u0412 \u043c\u043e\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044f \u043e\u043f\u0438\u0440\u0430\u043b\u0441\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 [3] \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043a\u0440\u0438\u0432\u0438\u0437\u043d. \u0412 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u043d\u0435\u0439, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u043d\u043e\u044e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c. <\/p>\n<h2>\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438   <\/h2>\n<p>\u0411\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 stl-\u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0430 \u0440\u044f\u0434 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 2.   <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/6ec\/536\/ce4\/6ec536ce4cdf08b23f791a48968c7fd5.jpg\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 2 \u2013 \u042d\u0442\u0430\u043f\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 stl \" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 2 \u2013 \u042d\u0442\u0430\u043f\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 stl \" width=\"1148\" height=\"452\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6ec\/536\/ce4\/6ec536ce4cdf08b23f791a48968c7fd5.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 2 \u2013 \u042d\u0442\u0430\u043f\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 stl <\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u043f\u0440\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445 stl \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0431\u044b\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b [3]. \u0422\u0435\u043d\u0437\u043e\u0440 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0430\u043c\u0438\u0445 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d (\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0442\u0435\u043d\u0437\u043e\u0440\u0430) \u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d (\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0442\u0435\u043d\u0437\u043e\u0440\u0430). \u041f\u0440\u0438\u0432\u0435\u0434\u0451\u043c \u043a\u0440\u0430\u0442\u043a\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0442\u0435\u043d\u0437\u043e\u0440\u0430.<\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0433\u0440\u0430\u043d\u0435\u0439 \u0444\u0430\u0441\u0435\u0442 (\u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0438\u0445 \u0432 \u0432\u0438\u0434\u0435 \u043c\u0430\u0442\u0440\u0438\u0446):<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\begin{matrix}\\mathbf{E_{1}}=\\mathbf{V_{F_a}}-\\mathbf{V_{F_b}};&amp;\\mathbf{E_{2}}=\\mathbf{V_{F_b}}-\\mathbf{V_{F_c}};&amp;\\mathbf{E_{3}}=\\mathbf{V_{F_c}}-\\mathbf{V_{F_a}}.\\end{matrix}\" alt=\"\\begin{matrix}\\mathbf{E_{1}}=\\mathbf{V_{F_a}}-\\mathbf{V_{F_b}};&amp;\\mathbf{E_{2}}=\\mathbf{V_{F_b}}-\\mathbf{V_{F_c}};&amp;\\mathbf{E_{3}}=\\mathbf{V_{F_c}}-\\mathbf{V_{F_a}}.\\end{matrix}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d46\/7ec\/45a\/d467ec45aabc88bb0d490131ae3893ff.svg\" width=\"494\" height=\"24\"\/><\/p>\n<p>\u0412\u0435\u043a\u0442\u043e\u0440\u0430 \u0433\u0440\u0430\u043d\u0435\u0439 \u043d\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u0421 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u0430\u0442\u0440\u0438\u0446\u044b <strong>N<\/strong><sub>m\u00d73<\/sub>\u00a0\u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0430\u0441\u0435\u0442\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u0440\u0438 \u0443\u0433\u043b\u0430 \u0444\u0430\u0441\u0435\u0442\u044b, \u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u0438\u0437 \u0432\u0435\u0440\u0448\u0438\u043d\u044b, \u043a\u0430\u043a \u0430\u0440\u043a\u043a\u043e\u0441\u0438\u043d\u0443\u0441 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f: <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\begin{matrix}\\alpha_1=arccos\\left(\\overrightarrow{e_{1}}  \\cdot \\left(\\overrightarrow{-e_{3}}\\right)\\right);&amp;\\alpha_2=arccos\\left(\\overrightarrow{e_{2}}  \\cdot \\left(\\overrightarrow{-e_{1}}\\right)\\right);&amp;\\alpha_3=arccos\\left(\\overrightarrow{e_{3}}  \\cdot \\left(\\overrightarrow{-e_{2}}\\right)\\right).\\end{matrix}\" alt=\"\\begin{matrix}\\alpha_1=arccos\\left(\\overrightarrow{e_{1}}  \\cdot \\left(\\overrightarrow{-e_{3}}\\right)\\right);&amp;\\alpha_2=arccos\\left(\\overrightarrow{e_{2}}  \\cdot \\left(\\overrightarrow{-e_{1}}\\right)\\right);&amp;\\alpha_3=arccos\\left(\\overrightarrow{e_{3}}  \\cdot \\left(\\overrightarrow{-e_{2}}\\right)\\right).\\end{matrix}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/211\/8c7\/d45\/2118c7d452ca8eb77105b6f3a6cf8d72.svg\" width=\"722\" height=\"39\"\/>\u041d\u043e\u0440\u043c\u0430\u043b\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0430\u0441\u0435\u0442\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0433\u0440\u0430\u043d\u0435\u0439 \u0444\u0430\u0441\u0435\u0442\u044b. <\/p>\n<p>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 <strong>N<\/strong><sub>x<\/sub>, <strong>N<\/strong><sub>y<\/sub>, <strong>N<\/strong><sub>z<\/sub>\u00a0\u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043a\u0430\u043a \u0441\u0443\u043c\u043c\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u0444\u0430\u0441\u0435\u0442\u044b \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0443\u0433\u043b\u0430. \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043d\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f. <\/p>\n<p>\u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043c\u0430\u0442\u0440\u0438\u0446 \u043f\u043e\u0432\u043e\u0440\u0430\u0442\u0430 \u0434\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u2013 <strong>Mr<\/strong><sub>3\u00d73<\/sub>\u00a0, \u0442\u0430\u043a \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0438\u043c\u0435\u043b\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b [-1, 0, 0]. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{Mr^{inv}_{3x3}}\" alt=\"\\mathbf{Mr^{inv}_{3x3}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/895\/9f5\/b3e\/8959f5b3ed1234bba6dc1318dc6acdf8.svg\" width=\"56\" height=\"25\"\/> \u0434\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0445 \u043d\u043e\u043c\u0435\u0440\u043e\u0432 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0448\u0438\u043d \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u2013 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u044d\u0442\u0438\u0445 \u0432\u0435\u0440\u0448\u0438\u043d <strong>V<\/strong><sub>n\u00d73<\/sub>. \u0421 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u043c\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043e\u043d\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0440\u0435\u0431\u0440\u0430\u043c\u0438, \u0432\u0442\u043e\u0440\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d \u0441\u043e\u0441\u0435\u0434\u044f\u043c\u0438 \u0432\u0435\u0440\u0448\u0438\u043d \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u0414\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0432\u0435\u0440\u0448\u0438\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 <strong>F<\/strong><sub>m\u00d73<\/sub>.    <\/p>\n<p>\u0412\u0435\u0440\u0448\u0438\u043d\u044b \u0432 \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446<strong> V<\/strong><sub>n\u00d73<\/sub> \u0438<sub> <\/sub><strong>Mr<\/strong><sub>3\u00d73<\/sub>. \u0414\u043b\u044f \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u043f\u043e\u043b\u0438\u043d\u043e\u043c\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438: <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"f\\left(x,y\\right)=a \\cdot x^{2}+b \\cdot y^{2} + c \\cdot x \\cdot y + d \\cdot x + e \\cdot y + g\" alt=\"f\\left(x,y\\right)=a \\cdot x^{2}+b \\cdot y^{2} + c \\cdot x \\cdot y + d \\cdot x + e \\cdot y + g\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/47f\/6fa\/14c\/47f6fa14cb93e83b59a7b901f170f0e5.svg\" width=\"420\" height=\"25\"\/>   , \u0433\u0434\u0435 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"x, y, f\\left(x,y\\right)\" alt=\"x, y, f\\left(x,y\\right)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/747\/bbf\/dca\/747bbfdca2b346d7d8438c5989f8d0b6.svg\" width=\"0\" height=\"0\"\/>\u2013 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0432\u0435\u0440\u0448\u0438\u043d \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u0438. \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430:<\/p>\n<p> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{H} =  \\begin{bmatrix}  2 \\cdot a &amp; c\\\\ c &amp; 2 \\cdot b \\end{bmatrix}\" alt=\"\\mathbf{H} =  \\begin{bmatrix}  2 \\cdot a &amp; c\\\\ c &amp; 2 \\cdot b \\end{bmatrix}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a5a\/62f\/ad6\/a5a62fad692e3d721944f88c4768011c.svg\" width=\"154\" height=\"49\"\/>   .<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"k_{min}\" alt=\"k_{min}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a53\/ed0\/fed\/a53ed0feda265431f7f29536d01b1bf5.svg\" width=\"37\" height=\"20\"\/>\u0438 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"k_{max}\" alt=\"k_{max}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d6e\/275\/290\/d6e2752908ebf0e895074e19627b7f14.svg\" width=\"39\" height=\"20\"\/>(\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b) \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\overrightarrow{i_{min}}\" alt=\"\\overrightarrow{i_{min}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8fe\/1c7\/4b4\/8fe1c74b41206416a755f30251289143.svg\" width=\"35\" height=\"32\"\/>   \u0438 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\overrightarrow{i_{max}}\" alt=\"\\overrightarrow{i_{max}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/44f\/ac9\/f26\/44fac9f26a5918a67d9981adc0d39d4d.svg\" width=\"37\" height=\"32\"\/>\u0442\u0435\u043d\u0437\u043e\u0440\u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d. <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"k_{min}= \\left(2 \\cdot a - 2 \\cdot b - t_{mp}\\right)\" alt=\"k_{min}= \\left(2 \\cdot a - 2 \\cdot b - t_{mp}\\right)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2a5\/d5b\/1e0\/2a5d5b1e09a449aeb67e137d0c288681.svg\" width=\"218\" height=\"23\"\/>, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"k_{max}= \\left(2 \\cdot a - 2 \\cdot b + t_{mp}\\right)\" alt=\"k_{max}= \\left(2 \\cdot a - 2 \\cdot b + t_{mp}\\right)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0cb\/120\/80d\/0cb12080deca31cbb55108ae8b2c0545.svg\" width=\"220\" height=\"23\"\/>, \u0433\u0434\u0435 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"t_{mp}= \\sqrt{\\left(2 \\cdot a - 2 \\cdot b \\right)^2+4 \\cdot c^2}\" alt=\"t_{mp}= \\sqrt{\\left(2 \\cdot a - 2 \\cdot b \\right)^2+4 \\cdot c^2}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b9c\/d80\/606\/b9cd80606cd160b609c0457a113733ce.svg\" width=\"250\" height=\"39\"\/>. <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\overrightarrow{i_{max}}= \\begin{bmatrix} 0 &amp; 2 \\cdot c &amp; 2 \\cdot b - 2 \\cdot a + t_{mp} \\end{bmatrix}  \\cdot \\mathbf{Mr^{inv}_{3x3}}\" alt=\"\\overrightarrow{i_{max}}= \\begin{bmatrix} 0 &amp; 2 \\cdot c &amp; 2 \\cdot b - 2 \\cdot a + t_{mp} \\end{bmatrix}  \\cdot \\mathbf{Mr^{inv}_{3x3}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4ce\/b45\/c01\/4ceb45c0142a807d2e505529f9dfcd89.svg\" width=\"370\" height=\"34\"\/>, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\overrightarrow{i_{min}}\" alt=\"\\overrightarrow{i_{min}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1cf\/8fb\/cdd\/1cf8fbcdd218f5070de4960a40e45050.svg\" width=\"35\" height=\"32\"\/> \u043e\u0440\u0442\u043e\u0433\u043e\u043d\u0430\u043b\u0435\u043d <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\overrightarrow{i_{max}}\" alt=\"\\overrightarrow{i_{max}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e2b\/03e\/05c\/e2b03e05c56d06b9f4939d424dbaf3d1.svg\" width=\"37\" height=\"32\"\/>. <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\overrightarrow{i_{min}}\" alt=\"\\overrightarrow{i_{min}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/755\/2f4\/1a3\/7552f41a32e479d0c91b22a297b03424.svg\" width=\"35\" height=\"32\"\/>\u0438 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\overrightarrow{i_{max}}\" alt=\"\\overrightarrow{i_{max}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8c8\/204\/d61\/8c8204d6185a6c55268d293d5d977bdf.svg\" width=\"37\" height=\"32\"\/>  \u043d\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f.<\/p>\n<p>\u041d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0430\u0441\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0435\u0440\u0448\u0438\u043d \u0441\u0435\u0442\u043a\u0438 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"k_{min}\" alt=\"k_{min}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/24a\/11e\/e23\/24a11ee2356d4ed44783e10c5002b221.svg\" width=\"37\" height=\"20\"\/> \u0438 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"k_{max}\" alt=\"k_{max}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4be\/593\/90e\/4be59390eee925cb2d8651f2abae9dc1.svg\" width=\"39\" height=\"20\"\/>. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0435\u0440\u0448\u0438\u043d \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u043c\u0435\u0442\u043e\u0434\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u0431\u0435\u0437 \u0443\u0447\u0438\u0442\u0435\u043b\u044f \u2013 \u043c\u0435\u0442\u043e\u0434\u0435 k-\u0441\u0440\u0435\u0434\u043d\u0438\u0445. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c k-\u0441\u0440\u0435\u0434\u043d\u0438\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0432 \u043d\u0435\u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043c\u043d\u043e\u0433\u043e\u043c\u0435\u0440\u043d\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 [5]. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u0434\u0432\u0443\u0445 \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0438\u044f\u0445: 1) \u00ab\u0446\u0435\u043d\u0442\u0440 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u00bb \u2014 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0441\u0435\u0445 \u0442\u043e\u0447\u0435\u043a, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0445\u0441\u044f \u043a \u044d\u0442\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 2) \u043a\u0430\u0436\u0434\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0431\u043b\u0438\u0436\u0435 \u043a \u0446\u0435\u043d\u0442\u0440\u0443 \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0447\u0435\u043c \u043a \u0446\u0435\u043d\u0442\u0440\u0430\u043c \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432. \u0412 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435 (\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439) \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u044f\u0432\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u0434\u0430\u0442\u044c \u0440\u0430\u0432\u043d\u044b\u043c \u0447\u0435\u0442\u044b\u0440\u0451\u043c.<\/p>\n<p>\u041d\u0430 \u0442\u0440\u0435\u0442\u044c\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u0438 \u0444\u0430\u0441\u0435\u0442\u044b. \u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0444\u0430\u0441\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0443\u0436\u0435 \u043f\u043e \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044e \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445 \u0444\u0430\u0441\u0435\u0442\u0430. \u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0432\u044b\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0444\u0430\u0441\u0435\u0442\u044b, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 \u0438 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u044e\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u043f\u0443\u0441\u043a \u043d\u0430 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0443, \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430. \u0422\u0430\u043a\u0438\u0435 \u0444\u0430\u0441\u0435\u0442\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c\u0438 (\u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u043c\u0438\u0441\u044f \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443) [6]. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0444\u0430\u0441\u0435\u0442\u044b \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0435:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\begin{cases}  k^\u0444_{min} = \\frac{1}{3}\\sum_{i=1}^{3} {k^i_{min}}\\\\  k^\u0444_{max} = \\frac{1}{3}\\sum_{i=1}^{3} {k^i_{max}} \\end{cases}\" alt=\"\\begin{cases}  k^\u0444_{min} = \\frac{1}{3}\\sum_{i=1}^{3} {k^i_{min}}\\\\  k^\u0444_{max} = \\frac{1}{3}\\sum_{i=1}^{3} {k^i_{max}} \\end{cases}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/703\/13a\/dc0\/70313adc0b7891dad594fe6a54aab2a3.svg\" width=\"190\" height=\"65\"\/><\/p>\n<p>\u0433\u0434\u0435 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"k^\u0444_{min}\" alt=\"k^\u0444_{min}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0ef\/e66\/8d7\/0efe668d7bff88ac4c47c9494bb6622d.svg\" width=\"37\" height=\"31\"\/>, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"k^\u0444_{max}\" alt=\"k^\u0444_{max}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8a6\/82d\/330\/8a682d330d3755cb42bf3d829ffe72b3.svg\" width=\"39\" height=\"28\"\/>\u2013 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b \u0444\u0430\u0441\u0435\u0442\u044b; <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"k^i_{min}\" alt=\"k^i_{min}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2f0\/154\/76f\/2f015476f787be97678d0a8a711badb1.svg\" width=\"37\" height=\"25\"\/>, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"k^i_{max}\" alt=\"k^i_{max}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7a3\/829\/5ed\/7a38295ed1a7232d4f06aa54f59c25cf.svg\" width=\"39\" height=\"22\"\/> \u2013 \u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b <em>i<\/em>-\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0444\u0430\u0441\u0435\u0442\u044b. <\/p>\n<p>\u0414\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0434\u043e\u043f\u0443\u0441\u043a\u0443 \u043d\u0430 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0443 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"T_{k}\" alt=\"T_{k}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fcf\/348\/d13\/fcf348d13ce73f5b89109a9bc0beb7b9.svg\" width=\"20\" height=\"20\"\/> \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u0435\u0442\u0430\u043b\u0438, \u0438\u043b\u0438 \u0437\u0430\u0434\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e.         <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u043d\u0435\u0435 \u0441\u043b\u0443\u0447\u0430\u044f, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0435\u0449\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0442\u0438\u043f\u0430 \u0444\u0430\u0441\u0435\u0442 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0430\u043c \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445. \u0411\u0443\u0434\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u0440\u0448\u0438\u043d\u0443 \u00ab\u043e\u0441\u0442\u0440\u043e\u0439\u00bb, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0434\u043e\u043f\u0443\u0441\u043a \u043d\u0430 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0443 \u0432\u0441\u0435\u0445 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439. \u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 3 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043a \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u043c\u0441\u044f \u0447\u0435\u0442\u044b\u0440\u0435\u043c \u0433\u0440\u0443\u043f\u043f\u0430\u043c \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u00ab\u043e\u0441\u0442\u0440\u044b\u0445 \u0432\u0435\u0440\u0448\u0438\u043d\u00bb.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/6a0\/a02\/a7e\/6a0a02a7e736446368e4e82d289acb0c.jpg\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 3 \u2013 \u0412\u0438\u0434\u044b \u0444\u0430\u0441\u0435\u0442 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u043a\u0440\u0438\u0432\u0438\u0437\u043d: \u0430) \u0432\u0441\u0435 \u0442\u0440\u0438 \u00ab\u043e\u0441\u0442\u0440\u044b\u0435\u00bb \u0432\u0435\u0440\u0448\u0438\u043d\u044b; \u0431) \u0434\u0432\u0435 \u00ab\u043e\u0441\u0442\u0440\u044b\u0435\u00bb \u0432\u0435\u0440\u0448\u0438\u043d\u044b; \u0432) \u043e\u0434\u043d\u0430 \u00ab\u043e\u0441\u0442\u0440\u0430\u044f\u00bb \u0432\u0435\u0440\u0448\u0438\u043d\u0430; \u0433) \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043d\u0435 \u00ab\u043e\u0441\u0442\u0440\u044b\u0435\u00bb \u0438 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u0440\u0430\u0437\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c   \" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 3 \u2013 \u0412\u0438\u0434\u044b \u0444\u0430\u0441\u0435\u0442 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u043a\u0440\u0438\u0432\u0438\u0437\u043d: \u0430) \u0432\u0441\u0435 \u0442\u0440\u0438 \u00ab\u043e\u0441\u0442\u0440\u044b\u0435\u00bb \u0432\u0435\u0440\u0448\u0438\u043d\u044b; \u0431) \u0434\u0432\u0435 \u00ab\u043e\u0441\u0442\u0440\u044b\u0435\u00bb \u0432\u0435\u0440\u0448\u0438\u043d\u044b; \u0432) \u043e\u0434\u043d\u0430 \u00ab\u043e\u0441\u0442\u0440\u0430\u044f\u00bb \u0432\u0435\u0440\u0448\u0438\u043d\u0430; \u0433) \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043d\u0435 \u00ab\u043e\u0441\u0442\u0440\u044b\u0435\u00bb \u0438 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u0440\u0430\u0437\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c   \" width=\"1496\" height=\"456\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6a0\/a02\/a7e\/6a0a02a7e736446368e4e82d289acb0c.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 3 \u2013 \u0412\u0438\u0434\u044b \u0444\u0430\u0441\u0435\u0442 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u043a\u0440\u0438\u0432\u0438\u0437\u043d: \u0430) \u0432\u0441\u0435 \u0442\u0440\u0438 \u00ab\u043e\u0441\u0442\u0440\u044b\u0435\u00bb \u0432\u0435\u0440\u0448\u0438\u043d\u044b; \u0431) \u0434\u0432\u0435 \u00ab\u043e\u0441\u0442\u0440\u044b\u0435\u00bb \u0432\u0435\u0440\u0448\u0438\u043d\u044b; \u0432) \u043e\u0434\u043d\u0430 \u00ab\u043e\u0441\u0442\u0440\u0430\u044f\u00bb \u0432\u0435\u0440\u0448\u0438\u043d\u0430; \u0433) \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043d\u0435 \u00ab\u043e\u0441\u0442\u0440\u044b\u0435\u00bb \u0438 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u0440\u0430\u0437\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c   <\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u0444\u0430\u0441\u0435\u0442 (\u0440\u0438\u0441\u0443\u043d\u043e\u043a 3, \u0430) \u0432\u0441\u0435 \u0442\u0440\u0438 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0444\u0430\u0441\u0435\u0442\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u00ab\u043e\u0441\u0442\u0440\u044b\u043c\u0438\u00bb. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0430 \u0444\u0430\u0441\u0435\u0442\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435 \u043f\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e (3). \u0414\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0444\u0430\u0441\u0435\u0442 \u043f\u043e \u043a\u043b\u0430\u0441\u0441\u0430\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0441\u0447\u0435\u0442 \u0435\u0432\u043a\u043b\u0438\u0434\u043e\u0432\u044b\u0445 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0444\u0430\u0441\u0435\u0442\u044b \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u0446\u0435\u043d\u0442\u0440\u043e\u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"d\\left(\\overrightarrow{k^\u0444},\\overrightarrow{k^{i}_c}\\right)= \\sqrt{\\left(k^\u0444_{min}-k^i_{\u0446min}\\right)^2+\\left(k^\u0444_{min}-k^i_{\u0446min}\\right)^2}\" alt=\"d\\left(\\overrightarrow{k^\u0444},\\overrightarrow{k^{i}_c}\\right)= \\sqrt{\\left(k^\u0444_{min}-k^i_{\u0446min}\\right)^2+\\left(k^\u0444_{min}-k^i_{\u0446min}\\right)^2}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1bd\/0bf\/cbf\/1bd0bfcbfbe6e2ffd95632b06eeb9c81.svg\" width=\"433\" height=\"61\"\/><\/p>\n<p>\u0433\u0434\u0435 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\overrightarrow{k^{i}_{\u0446}}= \\left\\{ k^{i}_{\u0446min},k^{i}_{\u0446max} \\right\\}\" alt=\"\\overrightarrow{k^{i}_{\u0446}}= \\left\\{ k^{i}_{\u0446min},k^{i}_{\u0446max} \\right\\}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/12d\/eb1\/5fc\/12deb15fcfb37eb9bf25e9f23df58de1.svg\" width=\"168\" height=\"43\"\/>\u2013 \u0432\u0435\u043a\u0442\u043e\u0440 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d <em>i<\/em>-\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<\/p>\n<p>\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0432\u043a\u043b\u0438\u0434\u043e\u0432\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 (4) \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e. \u041a\u0440\u0438\u0432\u0438\u0437\u043d\u0430 \u0444\u0430\u0441\u0435\u0442\u044b \u043f\u0440\u0438\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a \u0432\u0435\u043a\u0442\u043e\u0440\u0443 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430.<\/p>\n<p>\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u0444\u0430\u0441\u0435\u0442 (\u0440\u0438\u0441\u0443\u043d\u043e\u043a 3, \u0431) \u0434\u0432\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u00ab\u043e\u0441\u0442\u0440\u044b\u043c\u0438\u00bb. \u041a\u0440\u0438\u0432\u0438\u0437\u043d\u0430 \u0444\u0430\u0441\u0435\u0442\u044b \u043f\u0440\u0438\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0435 \u043d\u0435 \u00ab\u043e\u0441\u0442\u0440\u043e\u0439\u00bb \u0432\u0435\u0440\u0448\u0438\u043d\u044b, \u0444\u0430\u0441\u0435\u0442\u0430 \u043e\u0442\u0445\u043e\u0434\u0438\u0442 \u0432 \u043a\u043b\u0430\u0441\u0441 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b.<\/p>\n<p>\u0412 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u0444\u0430\u0441\u0435\u0442 (\u0440\u0438\u0441\u0443\u043d\u043e\u043a 3, \u0432) \u043e\u0434\u043d\u0430 \u0432\u0435\u0440\u0448\u0438\u043d\u0430 \u00ab\u043e\u0441\u0442\u0440\u0430\u044f\u00bb. \u0412 \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u0442\u0430\u043a\u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430: \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0434\u0432\u0435 \u0444\u0430\u0441\u0435\u0442\u044b \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443; \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0434\u0432\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u0440\u0430\u0437\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u0430\u043c. \u0412 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0430 \u0444\u0430\u0441\u0435\u0442\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e (2), \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u0443\u0447\u0430\u0432\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0435 \u00ab\u043e\u0441\u0442\u0440\u044b\u0435\u00bb \u0432\u0435\u0440\u0448\u0438\u043d\u044b. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043a\u0430\u043a \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 (\u0440\u0438\u0441\u0443\u043d\u043e\u043a 3, \u0430).<\/p>\n<p>\u0412 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u0444\u0430\u0441\u0435\u0442  (\u0440\u0438\u0441\u0443\u043d\u043e\u043a 3, \u0433) \u043d\u0435\u0442 \u00ab\u043e\u0441\u0442\u0440\u044b\u0445\u00bb \u0432\u0435\u0440\u0448\u0438\u043d, \u043d\u043e \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u0440\u0430\u0437\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u0430\u043c.  \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u0438 \u043a \u0442\u043e\u043c\u0443 \u0438\u043b\u0438 \u0438\u043d\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e  \u043f\u0435\u0440\u0432\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 (\u0440\u0438\u0441\u0443\u043d\u043e\u043a 3, \u0430).<\/p>\n<p> \u0427\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u043c \u044d\u0442\u0430\u043f\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0444\u0430\u0441\u0435\u0442. \u0412 \u043d\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0444\u0430\u0441\u0435\u0442\u044b \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f (\u0440\u0430\u0437\u0440\u0430\u0441\u0442\u0430\u044e\u0442\u0441\u044f) \u0434\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u043e\u0432 \u0444\u0430\u0441\u0435\u0442. \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u0433\u0434\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0430\u0441\u0435\u0442\u0430. \u0415\u0441\u043b\u0438 \u043f\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0439 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0430 \u0438\u0437 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0444\u0430\u0441\u0435\u0442\u044b \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u044e\u0442 \u043d\u0435\u043a\u0443\u044e \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\varepsilon\" alt=\"\\varepsilon\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6be\/b75\/482\/6beb754826322f1e8df11a1ae4319224.svg\" width=\"9\" height=\"12\"\/>, \u0431\u043b\u0438\u0437\u043a\u0443\u044e \u043a 0, \u0442\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\overrightarrow{m_{u}}= \\left\\{ k^{\u0444}_{min},k^{\u0444}_{max} \\right\\}\" alt=\"\\overrightarrow{m_{u}}= \\left\\{ k^{\u0444}_{min},k^{\u0444}_{max} \\right\\}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/caa\/490\/523\/caa49052362497f5ce290dde4219e0d8.svg\" width=\"164\" height=\"38\"\/> \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u043a\u0440\u0438\u0432\u0438\u0437\u043d. \u0415\u0441\u043b\u0438 \u043e\u0431\u0435 \u0431\u043b\u0438\u0437\u043a\u0438 \u043a 0, \u0442\u043e \u0432\u0438\u0434\u0438\u043c\u043e \u0438\u043c\u0435\u0435\u0442 \u043c\u0435\u0441\u0442\u043e \u043f\u043b\u043e\u0441\u043a\u0438\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a (\u043f\u043b\u043e\u0441\u043a\u0430\u044f \u0433\u0440\u0430\u043d\u044c), \u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0441\u0435\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\overrightarrow{m_{\u043e\u0431}}=\\overrightarrow{m_{\u0444}}\" alt=\"\\overrightarrow{m_{\u043e\u0431}}=\\overrightarrow{m_{\u0444}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2fb\/8ec\/c25\/2fb8ecc25c366ec37571cd8585f8211f.svg\" width=\"88\" height=\"33\"\/>. \u0414\u043e\u043f\u0443\u0441\u043a \u043d\u0430 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"T_{k}\" alt=\"T_{k}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/074\/dc5\/457\/074dc5457ec42950e91e68caa336d19e.svg\" width=\"20\" height=\"20\"\/>\u0432 \u0443\u0433\u043b\u043e\u0432\u043e\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0442\u0430\u043a \u0436\u0435 \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0441\u043c\u0435\u0436\u043d\u044b\u0435 \u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0438 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0438\u0445 \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u0435\u0442\u0440\u0438\u043a\u043e\u0439 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u0442 \u0434\u043e\u043f\u0443\u0441\u043a\u0430. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0438\u0441\u043a \u0432\u0441\u0435\u0445 \u0444\u0430\u0441\u0435\u0442, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0438\u0445 \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u0435\u0442\u0440\u0438\u043a\u043e\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443 \u0434\u043e\u043f\u0443\u0441\u043a\u0430 (\u0434\u043b\u044f \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u044d\u0432\u043a\u043b\u0438\u0434\u043e\u0432\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e (4); \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432).<\/p>\n<p>\u0418\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c \u0434\u043e\u043f\u0443\u0441\u043a\u0435 \u0444\u0430\u0441\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u044b\u0431\u043e\u0440 \u0444\u0430\u0441\u0435\u0442, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u043e\u0431\u0449\u0438\u043c\u0438 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u043c\u0438. <\/p>\n<p>\u0417\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0438\u043c \u044d\u0442\u0430\u043f\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0444\u0430\u0441\u0435\u0442. \u0426\u0435\u043b\u044c\u044e \u044d\u0442\u0430\u043f\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f: 1) \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0447\u0440\u0435\u0437\u043c\u0435\u0440\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0435\u0439 \u043d\u0430 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435; 2) \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u043e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b \u043f\u043e\u0441\u043b\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u0435\u0440\u0448\u0438\u043d \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u044d\u0442\u0430\u043f\u0435. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441\u043c\u0435\u0436\u043d\u044b\u0445 \u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u0444\u0430\u0441\u0435\u0442, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430. \u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u0432\u0437\u044f\u0442\u0430 \u0438\u0437 \u0440\u0430\u0431\u043e\u0442\u044b [6]. <\/p>\n<p>\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0431\u044b\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0443\u0436\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0443\u0447\u0430\u0441\u0442\u043a\u043e\u043c \u0432 \u0432\u0438\u0434\u0435 \u0433\u0440\u0430\u0444\u0430 \u0441\u043c\u0435\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 (RAG), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u043f\u0440\u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 [7].<\/p>\n<p>\u0412\u044b\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0441 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043f\u043b\u043e\u0449\u0430\u0434\u044c\u044e. \u0417\u0430\u0442\u0435\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0449\u0430\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430 (\u0433\u0440\u0430\u0444 \u0441\u043c\u0435\u0436\u043d\u043e\u0441\u0442\u0438) \u0441 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u043c\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u043c\u0438 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u044c\u044e \u0438 \u0441\u043e\u0441\u0435\u0434\u044f\u043c\u0438 \u043f\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0435:<\/p>\n<p>    <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"D_{ij}=DC_{ij} \\times N_{ij} \\times S_{ij}\" alt=\"D_{ij}=DC_{ij} \\times N_{ij} \\times S_{ij}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5fb\/d22\/675\/5fbd226755be830a2d526fd6d74b1417.svg\" width=\"195\" height=\"22\"\/>,<\/p>\n<p>\u0433\u0434\u0435  <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"DC_{ij} = \\begin{Vmatrix} \\overrightarrow{k_{i}} - \\overrightarrow{k_{ij}} \\end{Vmatrix}+ \\begin{Vmatrix} \\overrightarrow{k_{j}}-\\overrightarrow{k_{ij}} \\end{Vmatrix}\" alt=\"DC_{ij} = \\begin{Vmatrix} \\overrightarrow{k_{i}} - \\overrightarrow{k_{ij}} \\end{Vmatrix}+ \\begin{Vmatrix} \\overrightarrow{k_{j}}-\\overrightarrow{k_{ij}} \\end{Vmatrix}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/134\/060\/b80\/134060b8094a393056eb53dce0854504.svg\" width=\"275\" height=\"35\"\/>\u2013 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0435 \u043c\u0435\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u043c\u0438, \u0440\u0430\u0432\u043d\u043e\u0435 \u0441\u0443\u043c\u043c\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0443\u0447\u0430\u0441\u0442\u043a\u043e\u0432 \u0438 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b \u0438\u0445 \u0433\u0440\u0430\u043d\u0438\u0446\u044b;  <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"N_{ij} =min \\left( P_{i}, P_{k} \\right)\/P_{ij}\" alt=\"N_{ij} =min \\left( P_{i}, P_{k} \\right)\/P_{ij}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0f3\/51e\/3e3\/0f351e3e3714c4f78ce7c239c5fa7558.svg\" width=\"193\" height=\"23\"\/>\u2013 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u0439 \u043a\u0430\u043a \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u043e\u0432 \u0433\u0440\u0430\u043d\u0438\u0446 \u0434\u0432\u0443\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u043a \u0434\u043b\u0438\u043d\u0435 \u0438\u0445 \u043e\u0431\u0449\u0435\u0439 \u0433\u0440\u0430\u043d\u0438\u0446\u044b;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"S_{ij}\" alt=\"S_{ij}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/948\/68e\/cc1\/94868ecc1733ac7e312df6c412ad7ba5.svg\" width=\"24\" height=\"22\"\/>\u2013 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0433\u043b\u043e\u0449\u0435\u043d\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u0435\u043b\u0438\u0447\u0438\u043d \u043f\u043b\u043e\u0449\u0430\u0434\u0435\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"A_{i}\" alt=\"A_{i}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/952\/962\/3d9\/9529623d9d8cebe4fc2e26e9df7e853d.svg\" width=\"21\" height=\"20\"\/>, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"A_{j}\" alt=\"A_{j}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fd6\/3b0\/816\/fd63b0816dcecd5e7ca6ade86cab7b70.svg\" width=\"22\" height=\"22\"\/> \u0438 \u0434\u043e\u043f\u0443\u0441\u043a\u0430 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"A_{min}\" alt=\"A_{min}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b55\/ccf\/814\/b55ccf8142f9a76c4a17433bf6f1f3a7.svg\" width=\"41\" height=\"20\"\/>:<\/p>\n<p>  <img class=\"formula inline\" source=\"S_{ij} = \\begin{cases} \\begin{matrix} \\varepsilon, &amp; \u0435\u0441\u043b\u0438 &amp; A_{i}&lt;A_{min} &amp; \u0438\u043b\u0438 &amp; A_{j}&lt;A_{min},\\\\ 1, &amp; \u0435\u0441\u043b\u0438 &amp; A_{i}>A_{min} &amp; \u0438 &amp; A_{j}>A_{min}. \\end{matrix} \\end{cases}&#187; alt=&#187;S_{ij} = \\begin{cases} \\begin{matrix} \\varepsilon, &amp; \u0435\u0441\u043b\u0438 &amp; A_{i}&lt;A_{min} &amp; \u0438\u043b\u0438 &amp; A_{j}&lt;A_{min},\\\\ 1, &amp; \u0435\u0441\u043b\u0438 &amp; A_{i}>A_{min} &amp; \u0438 &amp; A_{j}>A_{min}. \\end{matrix} \\end{cases}&#187; src=&#187;https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0f3\/f03\/b64\/0f3f03b6407141d02d9d59afe7c9562c.svg&#187; width=&#187;417&#8243; height=&#187;61&#8243;\/><\/p>\n<p>\u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0434\u043e\u043f\u0443\u0441\u043a\u043e\u043c \u043d\u0430 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0432\u0435\u043d \u0434\u043e\u043f\u0443\u0441\u043a\u0430 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"T_{k}\" alt=\"T_{k}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2e2\/959\/ba9\/2e2959ba90ad98dfb7b39fb023ce7cdb.svg\" width=\"20\" height=\"20\"\/>, \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u043d\u043e\u043c\u0443 \u043d\u0430 \u043f\u043e\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442. \u0415\u0441\u043b\u0438 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430, \u0442\u043e \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e \u0432\u0441\u0435\u043c \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u043c, \u043e\u0442 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u043a \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0435\u043c\u0443, \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044f \u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u043a\u0438. \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 <strong>F<\/strong><sub>c<\/sub>\u00a0(\u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 \u0444\u0430\u0441\u0435\u0442 \u0442\u0435\u043b\u0430 <strong>F<\/strong><sub>m\u00d73<\/sub>).   <\/p>\n<h2>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043d\u0430 Python   <\/h2>\n<p>\u042f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u043b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430 Python \u0432\u0435\u0440\u0441\u0438\u0438 3.8.8. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u044f\u0434\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438: trimesh \u0432\u0435\u0440\u0441\u0438\u0438 3.19.4; vedo \u0432\u0435\u0440\u0441\u0438\u0438 2023.4.3; numpy \u0432\u0435\u0440\u0441\u0438\u0438 1.22.4 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439; matplotlib 3.3.0 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438; scipy 1.6.2 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432 \u0432 \u0444\u0430\u0439\u043b\u044b \u0444\u043e\u0440\u043c\u0430\u0442\u0430 *.mat; scikit-learn \u0432\u0435\u0440\u0441\u0438\u0438 0.24.2 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 <a href=\"https:\/\/github.com\/vadimpechenin\/segmentation_method_of_stl_objects_2020.git\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/vadimpechenin\/segmentation_method_of_stl_objects_2020.git<\/a>.<\/p>\n<p>\u0414\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0439<br \/> \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u0435\u0442\u043a\u0435 STL \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0445 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e<br \/> \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u043a\u043b\u0430\u0441\u0441 Mesh_class.<\/p>\n<pre><code>class Mesh_class():     \"\"\"\u041a\u043b\u0430\u0441\u0441 slt-\u043e\u0431\u044a\u0435\u043a\u0442\u0430\"\"\"     def __init__(self,num_vertices,num_faces):         self.num_vertices = num_vertices         self.num_faces = num_faces         self.vertices =0         self.faces = 0         self.normals =0         self.Cmin = 0         self.Cmax = 0         #\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043e\u0439 \u0441\u0435\u0442\u043a\u0438         # \u0412 \u0432\u0438\u0434\u0435 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0441 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u043c\u0430\u0442\u0440\u0438\u0446\u0430\u043c\u0438         # \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0444\u0430\u0441\u0435\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432         self.surface_seg = 0         # \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u0444\u0430\u0441\u0435\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432         self.surfaceNormal_seg = 0         # \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0444\u0430\u0441\u0435\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432         self.surfaceCurve_seg = 0         # \u0412 \u0432\u0438\u0434\u0435 \u043c\u0430\u0442\u0440\u0438\u0446         # \u041f\u043b\u043e\u0449\u0430\u0434\u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432         self.area_segments = 0         # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0444\u0430\u0441\u0435\u0442 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435         self.num_segments = 0         # \u041e\u0431\u0449\u0430\u044f \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430         self.curve_of_segments = 0         # \u0427\u0438\u0441\u043b\u043e, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0435 \u0437\u0430 \u0446\u0432\u0435\u0442 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430         self.color_segments = 0         # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432         self.struct_seg = 0 <\/code><\/pre>\n<p>\u0414\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u043a\u043b\u0430\u0441\u0441 Main_variables. \u0412 \u043a\u043b\u0430\u0441\u0441\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 pl_zagr, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0430\u044f \u0437\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u044d\u0442\u0430\u043f\u043e\u0432; \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 pl, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0439 \u0437\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u044d\u0442\u0430\u043f\u043e\u0432; \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 curvature_tolerance \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b \u0434\u043e\u043f\u0443\u0441\u043a\u0430 \u043d\u0430 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0443 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 angle_tolerance, \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b \u0434\u043e\u043f\u0443\u0441\u043a\u0430 \u043d\u0430 \u0443\u0433\u043e\u043b(\u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435\u043c \u043f\u043b\u043e\u0441\u043a\u0438\u0445 \u0433\u0440\u0430\u043d\u0435\u0439).<\/p>\n<pre><code>class Main_variables():     \"\"\"\u041a\u043b\u0430\u0441\u0441, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\"\"\"     def __init__(self):         self.pl_zagr = np.array([0, 0, 0, 0, 0])         \"\"\" \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u0430\u043f\u043e\u0432 1-5             1 \u044d\u0442\u0430\u043f - \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b stl             2 \u044d\u0442\u0430\u043f - \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438             3 \u044d\u0442\u0430\u043f - \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0435\u0440\u0448\u0438\u043d \u043f\u043e \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0435, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0444\u0430\u0441\u0435\u0442             4 \u044d\u0442\u0430\u043f - \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0444\u0430\u0441\u0435\u0442              5 \u044d\u0442\u0430\u043f - \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0444\u0430\u0441\u0435\u0442             6 \u044d\u0442\u0430\u043f - \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u0435\u0437 \u043c\u0435\u043b\u043a\u0438\u0445 \u0434\u0435\u0442\u0430\u043b\u0435\u0439\"\"\"         self.pl = np.array([0, 0, 0, 1, 1, 1])  # \u041f\u0440\u043e\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u044d\u0442\u0430\u043f\u043e\u0432 1-5         self.pl_sphere_cyl = np.array([5, 1])  # 1 - \u043a\u0430\u043a\u0430\u044f \u0441\u0435\u0440\u0438\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u043c\u0435\u043d\u0442\u043e\u0432; 2 - \u0432\u0438\u0434 \u0438\u0437 \u0441\u0435\u0440\u0438\u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432         self.pl_klast = 1  # \u043a\u0430\u043a\u043e\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, k-mean \u0438\u043b\u0438 DBSCAN         self.curvature_tolerance = 0.6  # \u0434\u043e\u043f\u0443\u0441\u043a \u043d\u0430 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0443 \u043f\u0440\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438         self.angleTolerance = 30         self.path_file = 'D:\\\\PYTHON\\\\Programms\\\\Segmentation_ex_2\\\\Segmentation_stl_py_2020\\\\results\\\\'<\/code><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043c\u043f\u043e\u0440\u0442 \u043c\u0430\u0442\u0440\u0438\u0446, \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u0443\u044e\u0449\u0438\u0445 STL. \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 Import_stl_data, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 import_data. \u0414\u043b\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 load \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 trimesh. \u0412 Mesh_class \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u044f\u00a0 num_vertices, num_faces, vertices, faces , normal.\u00a0\u00a0 \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b struct_seg, num_segments \u0438 color_segmetns \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0437\u0430\u0434\u0430\u043d\u044b \u0432 \u0432\u0438\u0434\u0435 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0445 \u043c\u0430\u0442\u0440\u0438\u0446 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430. \u041c\u0430\u0442\u0440\u0438\u0446\u0430 surface_seg \u0437\u0430\u0434\u0430\u043d\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430, \u0432 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b faces.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0435\u0442\u043a\u0443, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u0438\u0437 5232 \u0432\u0435\u0440\u0448\u0438\u043d \u0438 10460 \u0433\u0440\u0430\u043d\u0435\u0439. \u041a\u043e\u0434 \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0438\u0436\u0435 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 trimesh). <\/p>\n<pre><code>def plot_stl_color(struct_seg,num_segments, surface_seg,vertices):     # https:\/\/pydoc.net\/trimesh\/2.22.26\/trimesh.visual\/     #https:\/\/pypi.org\/project\/trimesh\/     \"\"\"\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0440\u0438\u0441\u043e\u0432\u043a\u0438 stl \u043e\u0431\u044a\u0435\u043a\u0442\u0430\"\"\"     # struct_seg - \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0443\u0447\u0430\u0441\u0442\u043a\u043e\u0432 (\u0435\u0441\u043b\u0438 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 1)     # num_segments - \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0444\u0430\u0441\u0435\u0442     # surface_seg - \u0444\u0430\u0441\u0435\u0442\u044b, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a     # vertices - \u043e\u0431\u0449\u0438\u0439 \u043d\u0430\u0431\u043e\u0440 \u0432\u0435\u0440\u0448\u0438\u043d \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438     if (1 == 1):         # C \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0431\u0438\u0431\u043b\u0435\u043e\u0442\u0435\u043a\u0438 trimesh         for j in range(struct_seg.shape[0]):             for i in range(num_segments.shape[0]):                 faces = copy.deepcopy(surface_seg[j][i][0])                 meshFromTrimesh = trimesh.Trimesh(vertices=vertices,                                        faces=faces,                                        process=False)                 # \u0415\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u043e\u0434\u0438\u043d                 if (struct_seg.shape[0] == 1) &amp; (num_segments.shape[0] == 1):                     meshFromTrimesh.visual.face_colors = [200, 200, 250]                       else:                     facet = range(faces.shape[0])                     meshFromTrimesh.visual.face_colors[facet] = trimesh.visual.random_color()          meshFromTrimesh.show()<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 4. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f27\/aac\/84a\/f27aac84af2547413fe2f5861d332c4d.png\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 4 \u2013 \u0417\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u0430\u044f STL \u043c\u043e\u0434\u0435\u043b\u044c   \" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 4 \u2013 \u0417\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u0430\u044f STL \u043c\u043e\u0434\u0435\u043b\u044c   \" width=\"1170\" height=\"827\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f27\/aac\/84a\/f27aac84af2547413fe2f5861d332c4d.png\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 4 \u2013 \u0417\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u0430\u044f STL \u043c\u043e\u0434\u0435\u043b\u044c   <\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0441\u0444\u0435\u0440 \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0434\u0438\u0430\u043c\u0435\u0442\u0440\u0430, \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0438\u0437 \u043d\u0438\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0441\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0441\u0442\u0430 \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0421 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 scipy.io \u2013 savemat \u0438 loadmat \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u044d\u0442\u0430\u043f\u043e\u0432 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 \u0432 \u0444\u0430\u0439\u043b\u044b *.mat, \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u0430\u0442\u0440\u0438\u0446 \u0447\u0438\u0441\u0435\u043b.   <\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0441\u0435\u0442\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u044d\u0442\u0430\u043f\u0430\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d. <\/p>\n<pre><code>def patchcurvature_2014(mesh):     #1. \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0435\u0440\u0448\u0438\u043d     num_vertices=mesh.vertices.shape[0]     # 2. \u0420\u0430\u0441\u0447\u0435\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445     normals_in_vertices = patchnormals(mesh)     # 3. \u0420\u0430\u0441\u0447\u0435\u0442 \u043c\u0430\u0442\u0440\u0438\u0446 \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439     M = np.zeros([3, 3, num_vertices])     Minv = np.zeros([3, 3, num_vertices])     for i in range(num_vertices):         M[:,:, i], Minv[:,:, i]=VectorRotationMatrix(normals_in_vertices[i,:])      # 4. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043e\u0441\u0435\u0434\u0435\u0439 \u0432\u0441\u0435\u0445 \u0432\u0435\u0440\u0448\u0438\u043d     neighbours_of_vetres=vertex_neighbours(mesh)     # \u041f\u0435\u0440\u0435\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b     min_curvature = np.zeros([num_vertices, 1])     max_curvature = np.zeros([num_vertices, 1])     Dir1 = np.zeros([num_vertices, 3])     Dir2 = np.zeros([num_vertices, 3])     for i in range(num_vertices):         # \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0435\u0434\u0435\u0439 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u0435\u0439.         idx_1_2_ring=np.array(neighbours_of_vetres[i])         neighbours_of_vetres_1_2_ring=np.array([]).astype(int)         for j in idx_1_2_ring:             c=np.array(neighbours_of_vetres[int(j)])             neighbours_of_vetres_1_2_ring = np.append(neighbours_of_vetres_1_2_ring,c)         neighbours_of_vetres_1_2_ring=np.unique(neighbours_of_vetres_1_2_ring)         vert_no_rot=mesh.vertices[neighbours_of_vetres_1_2_ring,:]         # \u0412\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0448\u0438\u043d, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c [-1 0 0]         c=Minv[:,:,i]         vert_rot=np.dot(vert_no_rot, Minv[:,:,i])         f , x, y = vert_rot[:, 0], vert_rot[:, 1], vert_rot[:, 2]         # \u0412\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0430\u0441\u0435\u0442\u044b \u0432 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438         # f(x,y) = ax^2 + by^2 + cxy + dx + ey + f         function_of_curve = np.array([x[:]** 2, y[:]** 2, x[:]*y[:], x[:], y[:], np.ones([vert_rot.shape[0]])]).T         abcdef=np.linalg.lstsq(function_of_curve,f)         a, b, c = abcdef[0][0], abcdef[0][1], abcdef[0][2]         # \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0413\u0435\u0441\u0441\u0438\u0430\u043d\u0430         # H =  [2*a c;c 2*b]         Dxx, Dxy, Dyy  = 2 * a, c, 2 * b         min_curvature[i], max_curvature[i], I1, I2 = eig2(Dxx, Dxy, Dyy)         dir1 = np.dot(np.array([0, I1[0], I1[1]]), M[:, :, i])         dir2 = np.dot(np.array([0, I2[0], I2[1]]), M[:, :, i])         Dir1[i,:]=dir1 \/ (dir1[0] ** 2 + dir1[1] ** 2 + dir1[2] ** 2) ** (0.5)         Dir2[i,:]=dir2 \/ (dir2[0] ** 2 + dir2[1] ** 2 + dir2[2] ** 2) ** (0.5)      return Dir1, Dir2, min_curvature, max_curvature  def patchnormals(mesh):     # \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u0442\u0440\u0438\u0430\u043d\u0433\u0443\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438.     # \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f patchnormals_double, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0449\u0430\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u0432\u0441\u0435\u0445 \u0433\u0440\u0430\u043d\u0435\u0439, \u0430 \u0437\u0430\u0442\u0435\u043c \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u0432\u0435\u0440\u0448\u0438\u043d \u043f\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044f\u043c     # \u0433\u0440\u0430\u043d\u0435\u0439, \u0432\u0437\u0432\u0435\u0448\u0435\u043d\u043d\u044b\u043c \u043f\u043e \u0443\u0433\u043b\u0430\u043c \u0433\u0440\u0430\u043d\u0435\u0439     Nx, Ny, Nz = patchnormals_double(mesh.faces[:, 0], mesh.faces[:, 1],                                      mesh.faces[:, 2], mesh.vertices[:, 0].astype('float32'),                                      mesh.vertices[:, 1].astype('float32'), mesh.vertices[:, 2].astype('float32'))     normals_in_vertices = np.zeros([Nx.shape[0], 3])     normals_in_vertices[:, 0]=Nx     normals_in_vertices[:, 1]=Ny     normals_in_vertices[:, 2]=Nz     return normals_in_vertices  def patchnormals_double(Fa,Fb,Fc,Vx,Vy,Vz):     # \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445 stl     vertices = np.zeros([Vx.shape[0], 3])     vertices[:, 0]=Vx     vertices[:, 1]=Vy     vertices[:, 2]=Vz     # 1. \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0433\u0440\u0430\u043d\u0435\u0439     e1 = vertices[Fa,:]-vertices[Fb,:]     e2 = vertices[Fb,:]-vertices[Fc,:]     e3 = vertices[Fc,:]-vertices[Fa,:]     # \u041d\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432      e1_norm = np.array([e1[:,0] \/ (e1[:, 0] ** 2 + e1[:, 1] ** 2 + e1[:, 2] ** 2)** (0.5),                        e1[:, 1] \/ (e1[:, 0] ** 2 + e1[:, 1] ** 2 + e1[:, 2] ** 2) ** (0.5),                        e1[:, 2] \/ (e1[:, 0] ** 2 + e1[:, 1] ** 2 + e1[:, 2] ** 2) ** (0.5)]).T     e2_norm =np.array([e2[:,0] \/ (e2[:, 0] ** 2 + e2[:, 1] ** 2 + e2[:, 2] ** 2)** (0.5),                        e2[:,1] \/ (e2[:, 0] ** 2 + e2[:, 1] ** 2 + e2[:, 2] ** 2) ** (0.5),                        e2[:,2] \/ (e2[:, 0] ** 2 + e2[:, 1] ** 2 + e2[:, 2] ** 2) ** (0.5)]).T     e3_norm = np.array([e3[:,0] \/ (e3[:, 0] ** 2 + e3[:, 1] ** 2 + e3[:, 2] ** 2)** (0.5),                        e3[:,1] \/ (e3[:, 0] ** 2 + e3[:, 1] ** 2 + e3[:, 2] ** 2) ** (0.5),                        e3[:,2] \/ (e3[:, 0] ** 2 + e3[:, 1] ** 2 + e3[:, 2] ** 2) ** (0.5)]).T     # 2. \u0420\u0430\u0441\u0447\u0435\u0442 \u0443\u0433\u043b\u0430 \u0444\u0430\u0441\u0435\u0442, \u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u0438\u0437 \u0432\u0435\u0440\u0448\u0438\u043d     # \u0440\u0430\u0432\u043d\u043e\u0441\u0438\u043b\u044c\u043d\u043e np.multiply(e1_norm.T,-e3_norm.T)==e1_norm.T*(-e3_norm.T)     Angle = np.array([np.arccos(np.sum(np.multiply(e1_norm.T,-e3_norm.T),axis=0)),                         np.arccos(np.sum(np.multiply(e2_norm.T,-e1_norm.T),axis=0)),                       np.arccos(np.sum(np.multiply(e3_norm.T,-e2_norm.T),axis=0))]).T     # 3. \u0420\u0430\u0441\u0447\u0435\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u0433\u0440\u0430\u043d\u0435\u0439     normals_of_faces=np.cross(e1,e3)     # 4. \u0420\u0430\u0441\u0447\u0435\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445     normals_in_vertices = np.zeros([Vx.shape[0], 3])     for i in range(Fa.shape[0]):         normals_in_vertices[Fa[i],:]=normals_in_vertices[Fa[i],:]+normals_of_faces[i,:]*Angle[i, 0]         normals_in_vertices[Fb[i],:]=normals_in_vertices[Fb[i],:]+normals_of_faces[i,:]*Angle[i, 1]         normals_in_vertices[Fc[i],:]=normals_in_vertices[Fc[i],:]+normals_of_faces[i,:]*Angle[i, 2]     eps=1\/10000000000000000     V_norm = (normals_in_vertices[:, 0] ** 2 + normals_in_vertices[:, 1] ** 2 +               normals_in_vertices[:, 2] ** 2) ** (0.5) + eps     Nx = normals_in_vertices[:, 0] \/ V_norm     Ny = normals_in_vertices[:, 1] \/ V_norm     Nz = normals_in_vertices[:, 2] \/ V_norm     return Nx, Ny, Nz  def VectorRotationMatrix(normals_in_vertices):     # \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0435\u0439     v = (normals_in_vertices.T) \/ (np.sum(normals_in_vertices**2))**(0.5)     k = np.array([random.random() for i in range(3)])     l = np.array([k[1] * v[2] - k[2] * v[1], k[2] * v[0] - k[0] * v[2], k[0] * v[1] - k[1] * v[0]])     l = l \/ (np.sum(l ** 2))**(0.5)     k = np.array([l[1] * v[2] - l[2] * v[1], l[2] * v[0] - l[0] * v[2], l[0] * v[1] - l[1] * v[0]])     k = k \/ (np.sum(k ** 2))**(0.5)     Minv = np.array([v, l, k]).T     M = np.linalg.inv(Minv)     return M, Minv  def vertex_neighbours(mesh):     # \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043f\u043e\u0438\u0441\u043a \u0432\u0441\u0435\u0445 \u0444\u0430\u0441\u0435\u0442-\u0441\u043e\u0441\u0435\u0434\u0435\u0439 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0444\u0430\u0441\u0435\u0442 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438.     neighbours_of_vetres = vertex_neighbours_double(mesh.faces[:, 0], mesh.faces[:, 1],                                      mesh.faces[:, 2], mesh.vertices[:, 0],                                      mesh.vertices[:, 1], mesh.vertices[:, 2])     return neighbours_of_vetres  def vertex_neighbours_double(Fa,Fb,Fc,Vx,Vy,Vz):     faces = np.array([Fa, Fb, Fc]).T     vertex= np.array([Vx, Vy, Vz]).T     # \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u043e\u0441\u0435\u0434\u0435\u0439 \u0432\u0435\u0440\u0448\u0438\u043d     neighbours_of_vetres = []     for r in range(vertex.shape[0]):         neighbours_of_vetres.append([])     # \u041f\u0440\u043e\u0439\u0442\u0438\u0441\u044c \u043f\u043e \u0432\u0441\u0435\u043c \u0444\u0430\u0441\u0435\u0442\u0430\u043c     for i in range(faces.shape[0]):         # \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u0441\u0435\u0434\u0435\u0439 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0444\u0430\u0441\u0435\u0442\u044b \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0441\u0435\u0434\u0435\u0439.         neighbours_of_vetres[faces[i, 0]].append(faces[i, 1])         neighbours_of_vetres[faces[i, 0]].append(faces[i, 2])         neighbours_of_vetres[faces[i, 1]].append(faces[i, 2])         neighbours_of_vetres[faces[i, 1]].append(faces[i, 0])         neighbours_of_vetres[faces[i, 2]].append(faces[i, 0])         neighbours_of_vetres[faces[i, 2]].append(faces[i, 1])     # \u041f\u0435\u0440\u0435\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u0438 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 (\u041f\u043e\u0432\u043e\u0440\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0443 \u0444\u0430\u0441\u0435\u0442)     for i in range(vertex.shape[0]):         Pneighf=neighbours_of_vetres[i]         Pneig = []         if (len(Pneighf)==0):            pass         else:             for x in Pneighf:                 if x not in Pneig:                     Pneig.append(x)         neighbours_of_vetres[i] = Pneig     return neighbours_of_vetres  def eig2(Dxx, Dxy, Dyy):     # | Dxx  Dxy |     # |          |     # | Dxy  Dyy |     # \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432     tmp = ((Dxx - Dyy)** 2 + 4 * Dxy**2)**(0.5)     v2x, v2y = 2 * Dxy, Dyy - Dxx + tmp     # \u041d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f     mag = (v2x** 2 + v2y** 2)**(0.5)     if (mag != 0):         v2x = v2x \/ mag         v2y = v2y \/ mag     # \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u043e\u0440\u0442\u043e\u0433\u043e\u043d\u0430\u043b\u044c\u043d\u044b     v1x = -copy.deepcopy(v2y)     v1y = copy.deepcopy(v2x)     # \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439     mu1 = (0.5 * (Dxx + Dyy + tmp))     mu2 = (0.5 * (Dxx + Dyy - tmp))     #  \u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e abs (Lambda1) &lt; abs(Lambda2)     if (abs(mu1) &lt; abs(mu2)):         min_curvature = mu1         max_curvature = mu2         I2 = np.array([v1x, v1y])         I1 = np.array([v2x, v2y])     else:         min_curvature = mu2         max_curvature = mu1         I2 = np.array([v2x, v2y])         I1 = np.array([v1x, v1y])     return min_curvature, max_curvature, I1, I2<\/code><\/pre>\n<p>\u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 5 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0441\u0435\u0442\u043a\u0438.   <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/332\/157\/155\/3321571559c0c75173605e7730d5e651.png\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 5 \u2013 \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445 \u0441\u0435\u0442\u043a\u0438   \" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 5 \u2013 \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445 \u0441\u0435\u0442\u043a\u0438   \" width=\"1800\" height=\"892\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/332\/157\/155\/3321571559c0c75173605e7730d5e651.png\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 5 \u2013 \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445 \u0441\u0435\u0442\u043a\u0438   <\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0438 \u0442\u0440\u0435\u0442\u0438\u0439 \u044d\u0442\u0430\u043f\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u044b \u0432 \u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0435\u0440\u0448\u0438\u043d \u043f\u043e \u0434\u0432\u0443\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u0430 KMeans \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 scikit-learn. <\/p>\n<pre><code>def klastering_vetices_of_mesh_by_curvature_tensor(mesh,pl_zagr,pl,pl_sphere_cyl,path_file,curvature_tolerance):     # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432     N_clusters=sff.num_of_klasters(pl_sphere_cyl)     X = np.zeros([mesh.Cmin.shape[0], 2])      # \u041d\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438     Cmin1, Cmax1 = copy.deepcopy(mesh.Cmin), copy.deepcopy(mesh.Cmax)     min_max_Cmin = np.array([np.mean(mesh.Cmin) - np.std(mesh.Cmin), np.mean(mesh.Cmin) + np.std(mesh.Cmin)])     min_max_Cmax = np.array([np.mean(mesh.Cmax) - np.std(mesh.Cmax), np.mean(mesh.Cmax) + np.std(mesh.Cmax)])      for i in range(mesh.Cmin.shape[0]):         if Cmin1[i] > min_max_Cmin[1]:             Cmin1[i] = min_max_Cmin[1]         elif Cmin1[i] &lt; min_max_Cmin[0]:             Cmin1[i] = min_max_Cmin[0]         if Cmax1[i] > min_max_Cmax[1]:             Cmax1[i] = min_max_Cmax[1]         elif Cmax1[i] &lt; min_max_Cmax[0]:             Cmax1[i] = min_max_Cmax[0]      X[:, 0], X[:, 1] = copy.deepcopy(Cmin1[:, 0]), copy.deepcopy(Cmax1[:, 0])      if (pl_zagr[2] == 1):          from sklearn.cluster import KMeans         kmeans = KMeans(n_clusters=N_clusters)         kmeans.fit(X)         idx_K = kmeans.predict(X)         centers = kmeans.cluster_centers_          # 2. \u0412\u044b\u044f\u0432\u043b\u044f\u0435\u043c \u0437\u0435\u0440\u043d\u0430 (\u043f\u043e \u0434\u0432\u0443\u043c \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0430\u043c)         massiv_face_klast = np.full((mesh.faces.shape[0], 1), -1)         curvature_null = np.array([np.amax(mesh.Cmin) + 100, np.amax(mesh.Cmax) + 100])         curvature_face_klast = np.full((mesh.faces.shape[0], 2), curvature_null)         curvature_mean = np.zeros([N_clusters, 2])         for j in range(centers.shape[0]):             w = idx_K[mesh.faces[:, 0]]             idx_K_1, = np.where(idx_K[mesh.faces[:, 0]] == j)             idx_K_2, = np.where(idx_K[mesh.faces[:, 1]] == j)             idx_K_3, = np.where(idx_K[mesh.faces[:, 2]] == j)             # 2. intersection             C1 = np.intersect1d(idx_K_1, idx_K_2)             C2 = np.intersect1d(idx_K_2, idx_K_3)             C3 = np.intersect1d(C1, C2)              if C3.shape[0] > 0:                 massiv_face_klast[C3, 0] = j                 curvature_face_klast[C3, 0], curvature_face_klast[C3, 1] = mesh.Cmin[mesh.faces[C3, 0], 0], \\                                                                            mesh.Cmax[mesh.faces[C3, 0], 0]                 curvature_mean[j, :] = np.mean(curvature_face_klast[C3, :], axis=0)         # \u0412\u044b\u044f\u0432\u043b\u044f\u0435\u043c \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0438\u0445         id, = np.where(curvature_face_klast[:, 0] == curvature_null[0])         # \u041c\u0430\u0441\u0441\u0438\u0432 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0441\u043c\u0435\u0448\u0430\u043d\u043d\u044b\u0445 \u0433\u0440\u0430\u043d\u0435\u0439         f_K_1, f_K_2 = np.zeros((id.shape[0], 3)), np.zeros((id.shape[0], 3))         f_K_1[:, 0], f_K_1[:, 1], f_K_1[:, 2] = copy.deepcopy(mesh.Cmin[mesh.faces[id, 0], 0]), \\                                                 copy.deepcopy(mesh.Cmin[mesh.faces[id, 1], 0]), \\                                                 copy.deepcopy(mesh.Cmin[mesh.faces[id, 2], 0])         f_K_2[:, 0], f_K_2[:, 1], f_K_2[:, 2] = copy.deepcopy(mesh.Cmax[mesh.faces[id, 0], 0]), \\                                                 copy.deepcopy(mesh.Cmax[mesh.faces[id, 1], 0]), \\                                                 copy.deepcopy(mesh.Cmax[mesh.faces[id, 2], 0])         # \u041d\u0443\u043b\u0435\u0432\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432         f_K_1_null, f_K_2_null = np.zeros((id.shape[0], 3)), np.zeros((id.shape[0], 3))         idx_K_1_f1, idx_K_1_f_alt1 = np.where(abs(f_K_1[:, 0]) > curvature_tolerance), \\                                      np.where(abs(f_K_1[:, 0]) &lt;= curvature_tolerance)         idx_K_2_f1, idx_K_2_f_alt1 = np.where(abs(f_K_1[:, 1]) > curvature_tolerance), \\                                      np.where(abs(f_K_1[:, 1]) &lt;= curvature_tolerance)         idx_K_3_f1, idx_K_3_f_alt1 = np.where(abs(f_K_1[:, 2]) > curvature_tolerance), \\                                      np.where(abs(f_K_1[:, 2]) &lt;= curvature_tolerance)         idx_K_1_f2, idx_K_1_f_alt2 = np.where(abs(f_K_2[:, 0]) > curvature_tolerance), \\                                      np.where(abs(f_K_2[:, 0]) &lt;= curvature_tolerance)         idx_K_2_f2, idx_K_2_f_alt2 = np.where(abs(f_K_2[:, 1]) > curvature_tolerance), \\                                      np.where(abs(f_K_2[:, 1]) &lt;= curvature_tolerance)         idx_K_3_f2, idx_K_3_f_alt2 = np.where(abs(f_K_2[:, 2]) > curvature_tolerance), \\                                      np.where(abs(f_K_2[:, 2]) &lt;= curvature_tolerance)         # \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 union         idx_K_1_f, idx_K_1_f_alt = np.union1d(idx_K_1_f1, idx_K_1_f2), np.union1d(idx_K_1_f_alt1, idx_K_1_f_alt2)         idx_K_2_f, idx_K_2_f_alt = np.union1d(idx_K_2_f1, idx_K_2_f2), np.union1d(idx_K_2_f_alt1, idx_K_2_f_alt2)         idx_K_3_f, idx_K_3_f_alt = np.union1d(idx_K_3_f1, idx_K_3_f2), np.union1d(idx_K_3_f_alt1, idx_K_3_f_alt2)          f_K_2_null[idx_K_1_f, 0] = curvature_null[1]         f_K_2_null[idx_K_2_f, 1] = curvature_null[1]         f_K_2_null[idx_K_3_f, 2] = curvature_null[1]         # \u0418\u0449\u0435\u043c \u0433\u0434\u0435 2 \u043e\u0441\u0442\u0440\u044b\u0445 \u0433\u0440\u0430\u043d\u0438, \u0438\u043b\u0438 1, \u0438\u043b\u0438 0         # \u0414\u0435\u043b\u0430\u0435\u043c \u0441\u0432\u0435\u0440\u0442\u043a\u0443 \u043c\u0430\u0442\u0440\u0438\u0446\u044b, \u0438\u0449\u0435\u043c \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u0441 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u043c\u0438         f_K_2_null_svertka = np.sum(f_K_2_null, axis=1)         # 3 \u043e\u0441\u0442\u0440\u044b\u0445 \u0432\u0435\u0440\u0448\u0438\u043d\u044b         id_3_versh = np.where(f_K_2_null_svertka == 3 * (curvature_null[1]))         # 2 \u043e\u0441\u0442\u0440\u044b\u0445 \u0432\u0435\u0440\u0448\u0438\u043d\u044b         id_2_versh = np.where(f_K_2_null_svertka == 2 * (curvature_null[1]))         # 1 \u043e\u0441\u0442\u0440\u0430\u044f \u0432\u0435\u0440\u0448\u0438\u043d\u0430         id_1_versh = np.where(f_K_2_null_svertka == (curvature_null[1]))         # 0 \u043e\u0441\u0442\u0440\u044b\u0445 \u0432\u0435\u0440\u0448\u0438\u043d         id_0_versh = np.where(f_K_2_null_svertka == 0)         # \u041f\u043e\u0438\u0441\u043a \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u0432         # \u041d\u0443\u043b\u0435\u0432\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u043d\u0435 \u043e\u0441\u0442\u0440\u044b\u0445 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u043c\u0438 \u0432 \u0444\u0430\u0441\u0435\u0442\u0430\u0445 \u0441 \u043e\u0441\u0442\u0440\u044b\u043c\u0438 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u043c\u0438         f_K_1_null2, f_K_2_null2 = np.zeros((id.shape[0], 3)), np.zeros((id.shape[0], 3))         # \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 3 \u043e\u0441\u0442\u0440\u044b\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b         f_K_1_null3, f_K_2_null3 = np.zeros((id.shape[0], 3)), np.zeros((id.shape[0], 3))         # \u0421\u0432\u0435\u0440\u0442\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 1 \u0447\u0438\u0441\u043b\u043e         f_K_1_null_svertka, f_K_2_null_svertka = np.zeros((id.shape[0], 1)), np.zeros((id.shape[0], 1))         # \u041c\u0430\u0442\u0440\u0438\u0446\u0430 \u0440\u0430\u0437\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430         delt_kriv = np.zeros((id.shape[0], centers.shape[0]))          # \u043c\u0430\u0441\u0441\u0438\u0432 \u043a\u0440\u0438\u0432\u0438\u0437\u043d         f_K_1_null2[idx_K_1_f_alt, 0] = mesh.Cmin[mesh.faces[id[idx_K_1_f_alt], 0], 0]         f_K_1_null2[idx_K_2_f_alt, 1] = mesh.Cmin[mesh.faces[id[idx_K_2_f_alt], 1], 0]         f_K_1_null2[idx_K_3_f_alt, 2] = mesh.Cmin[mesh.faces[id[idx_K_3_f_alt], 2], 0]         f_K_2_null2[idx_K_1_f_alt, 0] = mesh.Cmax[mesh.faces[id[idx_K_1_f_alt], 0], 0]         f_K_2_null2[idx_K_2_f_alt, 1] = mesh.Cmax[mesh.faces[id[idx_K_2_f_alt], 1], 0]         f_K_2_null2[idx_K_3_f_alt, 2] = mesh.Cmax[mesh.faces[id[idx_K_3_f_alt], 2], 0]          f_K_1_null3[idx_K_1_f, 0] = mesh.Cmin[mesh.faces[id[idx_K_1_f], 0], 0]         f_K_1_null3[idx_K_2_f, 1] = mesh.Cmin[mesh.faces[id[idx_K_2_f], 1], 0]         f_K_1_null3[idx_K_3_f, 2] = mesh.Cmin[mesh.faces[id[idx_K_3_f], 2], 0]         f_K_2_null3[idx_K_1_f, 0] = mesh.Cmax[mesh.faces[id[idx_K_1_f], 0], 0]         f_K_2_null3[idx_K_2_f, 1] = mesh.Cmax[mesh.faces[id[idx_K_2_f], 1], 0]         f_K_2_null3[idx_K_3_f, 2] = mesh.Cmax[mesh.faces[id[idx_K_3_f], 2], 0]          # 0 \u0441\u043b\u0443\u0447\u0430\u0439, 3 \u043e\u0441\u0442\u0440\u044b\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b (\u0441\u0443\u0434\u044f \u0438\u043b\u0438 \u043f\u043e 1 \u0438\u043b\u0438 \u043f\u043e 2 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0435)         if (len(id_3_versh[0]) > 0):             f_K_1_null_svertka[id_3_versh, 0] = np.sum(f_K_1_null3[id_3_versh[0], :], axis=1) \/ 3             f_K_2_null_svertka[id_3_versh, 0] = np.sum(f_K_2_null3[id_3_versh[0], :], axis=1) \/ 3             for j in range(centers.shape[0]):                 delt_kriv[id_3_versh, j] = ((f_K_1_null_svertka[id_3_versh, 0] -                                              np.full((1, len(id_3_versh[0])), centers[j, 0])) ** 2 +                                             (f_K_1_null_svertka[id_3_versh, 0] -                                              np.full((1, len(id_3_versh[0])), centers[j, 1])) ** 2) ** 0.5              num_center_of_sharp = np.argmin(delt_kriv[id_3_versh[0], :], axis=1).T             massiv_face_klast[id[id_3_versh], 0] = num_center_of_sharp.T             curvature_face_klast[id[id_3_versh], 0] = f_K_1_null_svertka[id_3_versh, 0]             curvature_face_klast[id[id_3_versh], 1] = f_K_2_null_svertka[id_3_versh, 0]          # 1 \u0441\u043b\u0443\u0447\u0430\u0439, 2 \u043e\u0441\u0442\u0440\u044b\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b         if (len(id_2_versh[0]) > 0):             f_K_1_null_svertka[id_2_versh, 0] = np.sum(f_K_1_null3[id_2_versh[0], :], axis=1)             f_K_2_null_svertka[id_2_versh, 0] = np.sum(f_K_2_null3[id_2_versh[0], :], axis=1)             for j in range(centers.shape[0]):                 delt_kriv[id_2_versh, j] = ((f_K_1_null_svertka[id_2_versh, 0] -                                              np.full((1, len(id_2_versh[0])), centers[j, 0])) ** 2 +                                             (f_K_1_null_svertka[id_2_versh, 0] -                                              np.full((1, len(id_2_versh[0])), centers[j, 1])) ** 2) ** 0.5             num_center_of_sharp = np.argmin(delt_kriv[id_2_versh[0], :], axis=1).T             massiv_face_klast[id[id_2_versh], 0] = num_center_of_sharp.T             curvature_face_klast[id[id_2_versh], 0] = f_K_1_null_svertka[id_2_versh, 0]             curvature_face_klast[id[id_2_versh], 1] = f_K_2_null_svertka[id_2_versh, 0]          # 2 \u0441\u043b\u0443\u0447\u0430\u0439, 1 \u043e\u0441\u0442\u0440\u044b\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b         if (len(id_1_versh[0]) > 0):             f_K_1_null_svertka[id_1_versh, 0] = np.sum(f_K_1_null3[id_1_versh[0], :], axis=1)             f_K_2_null_svertka[id_1_versh, 0] = np.sum(f_K_2_null3[id_1_versh[0], :], axis=1)             for j in range(centers.shape[0]):                 delt_kriv[id_1_versh, j] = ((f_K_1_null_svertka[id_1_versh, 0] -                                              np.full((1, len(id_1_versh[0])), centers[j, 0])) ** 2 +                                             (f_K_1_null_svertka[id_1_versh, 0] -                                              np.full((1, len(id_1_versh[0])), centers[j, 1])) ** 2) ** 0.5             num_center_of_sharp = np.argmin(delt_kriv[id_1_versh[0], :], axis=1).T             massiv_face_klast[id[id_1_versh], 0] = num_center_of_sharp.T             curvature_face_klast[id[id_1_versh], 0] = f_K_1_null_svertka[id_1_versh, 0]             curvature_face_klast[id[id_1_versh], 1] = f_K_2_null_svertka[id_1_versh, 0]          # 3 \u0441\u043b\u0443\u0447\u0430\u0439, 0 \u043e\u0441\u0442\u0440\u044b\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b         if (len(id_0_versh[0]) > 0):             f_K_1_null_svertka[id_0_versh, 0] = np.sum(f_K_1_null3[id_0_versh[0], :], axis=1)             f_K_2_null_svertka[id_0_versh, 0] = np.sum(f_K_2_null3[id_0_versh[0], :], axis=1)             for j in range(centers.shape[0]):                 delt_kriv[id_0_versh, j] = ((f_K_1_null_svertka[id_0_versh, 0] -                                              np.full((1, len(id_0_versh[0])), centers[j, 0])) ** 2 +                                             (f_K_1_null_svertka[id_0_versh, 0] -                                              np.full((1, len(id_0_versh[0])), centers[j, 1])) ** 2) ** 0.5             num_center_of_sharp = np.argmin(delt_kriv[id_0_versh[0], :], axis=1).T             massiv_face_klast[id[id_0_versh], 0] = num_center_of_sharp.T             curvature_face_klast[id[id_0_versh], 0] = f_K_1_null_svertka[id_0_versh, 0]             curvature_face_klast[id[id_0_versh], 1] = f_K_2_null_svertka[id_0_versh, 0] # \u0412\u044b\u0432\u043e\u0434 \u0440\u0435\u0448\u0435\u043d\u0438\u044f return idx_K, centers, massiv_face_klast, curvature_face_klast, curvature_mean<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 6.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/813\/887\/4bd\/8138874bd65caf0facc0758073396ecc.png\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 6 \u2013 \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 4 \u043a\u043b\u0430\u0441\u0441\u0430\" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 6 \u2013 \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 4 \u043a\u043b\u0430\u0441\u0441\u0430\" width=\"647\" height=\"595\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/813\/887\/4bd\/8138874bd65caf0facc0758073396ecc.png\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 6 \u2013 \u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 4 \u043a\u043b\u0430\u0441\u0441\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u042d\u0442\u0430\u043f \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 Pre_segmentation_faces.    <\/p>\n<pre><code>def func_calculate_pre_segmentation(self):     # \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 slt \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f     name_safe = sff.name_of_results(self.pl_sphere_cyl) + '_stage_3'     save_dict={} #\u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0441 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438     if self.pl_zagr[3] == 1:         curveTolerance, angleTolerance = sff.tolerances_for_segmentation(self.pl_sphere_cyl, self.mesh)         massiv_face_klast_all=copy.deepcopy(self.massiv_face_klast)         faces_all = copy.deepcopy(self.mesh.faces)         normals_all = copy.deepcopy(self.mesh.normals)         curvature_face_klast_all = copy.deepcopy(self.curvature_face_klast)         ko = 1 # \u0417\u0430\u043f\u0438\u0441\u044c \u0434\u043b\u044f \u0446\u0432\u0435\u0442\u0430         i = -1         struct_seg=np.array([])         surface_seg=[]         surfaceNormal_seg=[]         surfaceCurve_seg = []         area_segments=np.array([])         num_segments=np.array([])         color_segments=np.array([])         curve_of_segments1 = np.array([])         # 3.1 \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b         t=()         for j in range(self.centers.shape[0]):             # \u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430             if  (np.size(massiv_face_klast_all)>0):                 id = np.where((massiv_face_klast_all[:, 0]) == j)                 length_of_num_segments=len(id[0])             while (length_of_num_segments>0):                 i += 1                 #\u041f\u043e\u0434\u0445\u043e\u0434 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u0430                 if (1==0):                     msize = len(id[0])                     idx = np.random.permutation(msize)                     firstpart = id[0][idx[0]]                 else:                     #\u041f\u043e\u0434\u0445\u043e\u0434 \u0431\u043b\u0438\u0437\u043e\u0441\u0442\u0438 \u043a \u0446\u0435\u043d\u0442\u0440\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 (\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0437\u0435\u0440\u043d\u0443)                     array_for_first=((curvature_face_klast_all[id, 0]-                                       np.full((len(id[0]),1),self.centers[j, 0])) ** 2 +                                      (curvature_face_klast_all[id, 1] -                                       np.full((len(id[0]), 1),self.centers[j, 1])) ** 2) **(0.5)                     min_idx = np.argmin(array_for_first)                     firstpart=id[0][min_idx]                 targetPoint = self.mesh.vertices[faces_all[firstpart, 0],:]                 targetVector = curvature_face_klast_all[firstpart,:]                 targetVector2 = normals_all[firstpart,:]                 if (abs(curvature_face_klast_all[firstpart, 0]) > 0.005) or \\                     ((abs(curvature_face_klast_all[firstpart, 1]) > 0.005)):                     surface, surfaceNormal,surfaceCurve = sff.ExtractSurface_by_curve_2020_2_curves(                                                             self.mesh.vertices, faces_all,                                                             normals_all, curvature_face_klast_all,                                                             targetPoint, targetVector, curveTolerance,0                                                             )                 else:                     surface, surfaceNormal, surfaceCurve = sff.ExtractSurface_by_curve_2020_2_curves_norm(                                                             self.mesh.vertices, faces_all,                                                             normals_all, curvature_face_klast_all,                                                             targetPoint, targetVector, curveTolerance,                                                             targetVector2,angleTolerance,0                                                             )                     if (surface.size==0):                         surface, surfaceNormal, surfaceCurve = sff.ExtractSurface_by_curve_2020_2_curves(                             self.mesh.vertices, faces_all,                             normals_all, curvature_face_klast_all,                             targetPoint, targetVector, curveTolerance, 0                         )                  # \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0437 \u043e\u0431\u0449\u0435\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430                 massiv_face_klast_all, faces_all, \\                 normals_all, curvature_face_klast_all=sff.facet_exception(                                                         massiv_face_klast_all, faces_all, normals_all,                                                         curvature_face_klast_all, surface                                                         )                 if massiv_face_klast_all.shape[0]>0:                     id=np.where((massiv_face_klast_all[:, 0]) == j)                     length_of_num_segments = len(id[0])                 else:                     id=()                     length_of_num_segments = len(id)                 # \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u0443\u0441\u043a\u043e\u0432                 surface_seg.append([])                 surface_seg[i].append(surface)                 surfaceNormal_seg.append([])                 surfaceNormal_seg[i].append(surfaceNormal)                 surfaceCurve_seg.append([])                 surfaceCurve_seg[i].append(surfaceCurve)                 #\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044c                 save_dict['surface_seg' + str(i)] = surface_seg[i]                 save_dict['surfaceNormal_seg' + str(i)] = surfaceNormal_seg[i]                 save_dict['surfaceCurve_seg' + str(i)] = surfaceCurve_seg[i]                 #\u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043f\u043b\u043e\u0449\u0430\u0434\u0435\u0439                 area=sff.stl_Area_segment(self.mesh.vertices.T,surface.T)                 area_segments = np.append(area_segments, area)                 # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0444\u0430\u0441\u0435\u0442 \u0432 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435                 num_segments = np.append(num_segments, surface.shape[0])                 # \u041f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0434\u043b\u044f \u0446\u0432\u0435\u0442\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430                 color_segments=np.append(color_segments, ko)                 # \u041a\u0440\u0438\u0432\u0438\u0437\u043d\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430                 curve_of_segments1=np.append(curve_of_segments1, targetVector)                 ko=ko+1                 print('\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0444\u0430\u0441\u0435\u0442 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438: '+ str(massiv_face_klast_all.shape[0])+                       '; \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u043e: '+str(np.sum(num_segments))+'; \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0444\u0430\u0441\u0435\u0442 \u0440\u0430\u0441\u0447\u0435\u0442\u043d\u043e:'+                       str(self.mesh.faces.shape[0]-np.sum(num_segments)))         if ko > 1:             struct_seg1 = num_segments.shape[0]             curve_of_segments = np.zeros([num_segments.shape[0],2])             for numerate in range(num_segments.shape[0]):                 curve_of_segments[numerate,:] = curve_of_segments1[0+numerate*2:1+numerate*2]         else:             struct_seg1 = 0             curve_of_segments=np.array([])         struct_seg=np.append(struct_seg, struct_seg1)<\/code><\/pre>\n<p>\u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 7 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/531\/a30\/ab0\/531a30ab0ccb7129fa7e258e59c8520e.png\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 7 \u2013 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438   \" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 7 \u2013 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438   \" width=\"554\" height=\"604\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/531\/a30\/ab0\/531a30ab0ccb7129fa7e258e59c8520e.png\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 7 \u2013 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438   <\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0444\u0430\u0441\u0435\u0442 \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439. \u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0438\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u044d\u0442\u0430\u043f \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d \u043a\u043b\u0430\u0441\u0441 Final_segmentation_faces.   <\/p>\n<pre><code>class Final_segmentation_faces():     \"\"\"\u041a\u043b\u0430\u0441\u0441 \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0444\u0430\u0441\u0435\u0442\"\"\"     def __init__(self,stl_pre_segment,mesh):         self.pre = stl_pre_segment         self.mesh = mesh      def func_calculate_final_segmentation(self):         # \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 slt \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f         name_safe = sff.name_of_results(self.pre.pl_sphere_cyl) + '_stage_4'         save_dict = {}  # \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0441 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438         if self.pre.pl_zagr[4] == 1:             mesh_pre = copy.deepcopy(self.pre.mesh)             curveTolerance, angleTolerance = sff.tolerances_for_segmentation(self.pre.pl_sphere_cyl, mesh_pre)             # \u041a\u0440\u0438\u0442\u0435\u0440\u0438\u0439 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043b\u043e\u0449\u0430\u0434\u0438             # \u041e\u0431\u0449\u0430\u044f \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u0432\u0441\u0435\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432             Area_of_segments_total = sff.stl_Area_segment(mesh_pre.vertices.T, mesh_pre.faces.T)             nm = np.round(self.pre.massiv_face_klast.shape[0] \/ mesh_pre.struct_seg[0] * 0.2)             eps = 1E-5             Toleranse_area = Area_of_segments_total \/ self.pre.massiv_face_klast.shape[0] * nm             Tolerance_of_curve_in_merging = curveTolerance             # \u041e\u0431\u0449\u0438\u0439 \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440             faces_perimetr, deameter_max = sff.perimeter_and_diametr_calculation(mesh_pre.vertices, mesh_pre.faces)             # \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u0435\u0440\u0448\u0438\u043d \u0441\u0435\u0442\u043a\u0438, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0442\u043e\u0447\u043a\u0430 - \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u0430\u044f \u043e\u0442 \u0441\u0435\u0442\u043a\u0438             vertices1=np.zeros([mesh_pre.vertices.shape[0]+1,3])             vertices1=np.vstack((mesh_pre.vertices, np.array([np.mean(mesh_pre.vertices,axis=0) + deameter_max * 1E+3])))             # \u041d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442             struct_seg1=copy.deepcopy(mesh_pre.struct_seg)             area_segments1 = copy.deepcopy(mesh_pre.area_segments)             num_segm_counter=copy.deepcopy(mesh_pre.struct_seg[0])             while (num_segm_counter>1):                 max_index_Area = np.argmax(area_segments1)                 surface_search = copy.deepcopy(mesh_pre.surface_seg[max_index_Area])                 counter = 1                 while (counter == 1):                     counter = 0                     num_cor=np.arange(mesh_pre.struct_seg[0])                     num_cor=np.delete(num_cor, num_cor[max_index_Area])                     print(str(num_segm_counter))                     for idx_of_segm in range(mesh_pre.struct_seg[0] - 1):                         # \u041f\u043e\u0438\u0441\u043a \u043e\u0431\u0449\u0435\u0439 \u0433\u0440\u0430\u043d\u0438\u0446\u044b                         if (area_segments1[0,num_cor[idx_of_segm]] > 0):                             surface_search2=copy.deepcopy(mesh_pre.surface_seg[num_cor[idx_of_segm]])                             surface_search2_uniq =np.unique(np.vstack((np.array([surface_search2[:, 0]]),                                                                       np.array([surface_search2[:, 1]]),                                                                       np.array([surface_search2[:, 2]]))),                                                            return_index=False, return_inverse=False,                                                            return_counts=False, axis=None)                             surface_search1_uniq = np.unique(np.vstack((np.array([surface_search[:, 0]]),                                                                       np.array([surface_search[:, 1]]),                                                                       np.array([surface_search[:, 2]]))),                                                            return_index=False, return_inverse=False,                                                            return_counts=False, axis=None)                             F_massiv_boundary = np.intersect1d(surface_search1_uniq, surface_search2_uniq)                             if (F_massiv_boundary.shape[0]) > 2:                                 # \u0441\u0440\u0435\u0434\u043d\u0438\u0435 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b \u0433\u0440\u0430\u043d\u0438\u0446\u044b                                 c_mean_boundaru = np.array([np.mean(self.pre.curvature_face_klast[F_massiv_boundary,0]),                                                             np.mean(self.pre.curvature_face_klast[F_massiv_boundary, 1])])                                 # \u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435                                 DC=np.abs(((mesh_pre.curve_of_segments[max_index_Area,0]-c_mean_boundaru[0])**2+                                            (mesh_pre.curve_of_segments[max_index_Area,1]-c_mean_boundaru[1])**2)**0.5-                                           ((mesh_pre.curve_of_segments[num_cor[idx_of_segm],0]-c_mean_boundaru[0])**2+                                            (mesh_pre.curve_of_segments[num_cor[idx_of_segm],1]-c_mean_boundaru[1])**2)**0.5)                                  if ((area_segments1[0, num_cor[idx_of_segm]] &lt; Toleranse_area) or                                         (area_segments1[0, max_index_Area] &lt; Toleranse_area)) or \\                                         ((area_segments1[0, num_cor[idx_of_segm]] &lt; Toleranse_area) and                                         (area_segments1[0, max_index_Area] &lt; Toleranse_area)):                                     D = DC * eps                                 else:                                     D = copy.deepcopy(DC)                                 # \u041f\u043e\u0438\u0441\u043a \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043e\u0431\u0449\u0435\u0439 \u0433\u0440\u0430\u043d\u0438\u0446\u044b                                 # 2. \u0414\u0435\u043b\u0430\u0435\u043c \u043e\u0442\u0432\u0435\u0442\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0444\u0430\u0441\u0435\u0442\u0443 (\u0438\u0437 \u043e\u0431\u0449\u0435\u0439 \u0432\u044b\u0447\u0438\u0442\u0430\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0435)                                 f_surface_search_sympathetic, \\                                 f_surface_search_sympathetic1= copy.deepcopy(mesh_pre.faces), \\                                 copy.deepcopy(mesh_pre.faces)                                 f_surface_search_sympathetic = sff.facet_exception_lite(f_surface_search_sympathetic,                                                                                       surface_search)                                 f_surface_search_sympathetic1 = sff.facet_exception_lite(f_surface_search_sympathetic1,                                                                                         surface_search2)                                 # 3.  \u041f\u043e\u0438\u0441\u043a \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0432\u0435\u0440\u0448\u0438\u043d \u0441 \u043e\u0431\u0449\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439, \u0442.\u0435. \u0433\u0440\u0430\u043d\u0438\u0446                                 boundary_surface_poisk = sff.boundary_intersection(surface_search,                                                                                f_surface_search_sympathetic)                                 boundary_surface_poisk1 = sff.boundary_intersection(surface_search2,                                                                                f_surface_search_sympathetic)                                 # 4. \u041c\u0430\u0442\u0440\u0438\u0446\u044b \u0441 v1(end+1,:) \u0432\u0435\u0440\u0448\u0438\u043d\u043e\u0439                                 surface_search_boundary = np.full((surface_search.shape[0], 3), vertices1.shape[0]-1)                                 surface_search_boundary1 = np.full((surface_search2.shape[0], 3), vertices1.shape[0]-1)                                 surface_search_boundary_common = np.full((surface_search2.shape[0], 3), vertices1.shape[0]-1)                                 # 5. \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043d\u0435 0                                 # \u0411\u043e\u043b\u044c\u0448\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c                                 surface_search_boundary = sff.filling_in_common_vertices(surface_search_boundary,                                                                                          surface_search,                                                                                      boundary_surface_poisk)                                 surface_search_boundary1 = sff.filling_in_common_vertices(surface_search_boundary1,                                                                                          surface_search2,                                                                                          boundary_surface_poisk1)                                 surface_search_boundary_common = sff.filling_in_common_vertices(surface_search_boundary_common,                                                                                          surface_search2,                                                                                          F_massiv_boundary)                                 # 6. \u041c\u0430\u0442\u0440\u0438\u0446\u044b \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 vertices1                                 P_surface_search_boundary_matrix = sff.search_matrix_compilation(vertices1,                                                                                         surface_search_boundary)                                 P_surface_search_boundary_matrix1 = sff.search_matrix_compilation(vertices1,                                                                                         surface_search_boundary1)                                 P_surface_search_boundary_matrix_common = sff.search_matrix_compilation(vertices1,                                                                                         surface_search_boundary_common)                                 # 7. \u041e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0445 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0438                                 # \u043f\u043e\u0438\u0441\u043a \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u043e\u0432                                 idx = np.where(P_surface_search_boundary_matrix[:,0] > deameter_max)                                 P_surface_search_boundary_matrix[idx,0] = 0                                 P_surface_search= np.sum(P_surface_search_boundary_matrix)                                 idx = np.where(P_surface_search_boundary_matrix1[:,0] > deameter_max)                                 P_surface_search_boundary_matrix1[idx, 0] = 0                                 P_surface_search1 = np.sum(P_surface_search_boundary_matrix1)                                 idx = np.where(P_surface_search_boundary_matrix_common[:,0] > deameter_max)                                 P_surface_search_boundary_matrix_common[idx, 0] = 0                                 P_boundary = np.sum(P_surface_search_boundary_matrix_common)                                 if P_boundary>0:                                     D *= np.min([P_surface_search, P_surface_search1]) \/ P_boundary                                 else:                                     D *= np.min([P_surface_search, P_surface_search1])                                  if abs(mesh_pre.curve_of_segments[max_index_Area,0]) &lt; 0.005 or \\                                     abs(mesh_pre.curve_of_segments[max_index_Area,1]) &lt; 0.005:                                     #\u041c\u0430\u0441\u0441\u0438\u0432\u044b \u0433\u0440\u0430\u043d\u0438\u0446                                     if (idx_of_segm==109):                                         g=0                                     array_boundary=sff.creating_an_array_of_borders(surface_search,F_massiv_boundary)                                     norm_boundary=copy.deepcopy(mesh_pre.surfaceNormal_seg[max_index_Area][array_boundary,:])                                     array_boundary1 = sff.creating_an_array_of_borders(surface_search2, F_massiv_boundary)                                     norm_boundary_symp = copy.deepcopy(mesh_pre.surfaceNormal_seg[num_cor[idx_of_segm]][array_boundary1,:])                                     norm_boundary1=np.zeros([1,3])                                     norm_boundary_symp1 = np.zeros([1, 3])                                     if len(array_boundary) > 1:                                         for i in range(3):                                             norm_boundary1[0,i] = np.mean(norm_boundary[:,i])                                     else:                                         norm_boundary1=copy.deepcopy(norm_boundary)                                     if len(array_boundary1) > 1:                                         for i in range(3):                                             norm_boundary_symp1[0,i] = np.mean(norm_boundary_symp[:,i])                                     else:                                         norm_boundary_symp1 = copy.deepcopy(norm_boundary_symp)                                     angles2 = np.arccos(np.sum((norm_boundary1* np.full((norm_boundary1.shape[0],3),                                                                 norm_boundary_symp1)),axis=1))\/np.pi*180                                     if (angles2 > angleTolerance):                                         D = Tolerance_of_curve_in_merging * 2                                  # \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c                                 if (D &lt; Tolerance_of_curve_in_merging):                                     # \u041f\u043e\u0433\u043b\u043e\u0449\u0435\u043d\u0438\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430                                     surface_search = np.vstack((surface_search, surface_search2))                                     mesh_pre.surface_seg[max_index_Area] = copy.deepcopy(surface_search)                                     # \u041e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u043e\u0433\u043b\u043e\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430                                     struct_seg1 -= 1                                     # \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0444\u0430\u0441\u0435\u0442 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438                                     #del  mesh_pre.surface_seg[num_cor[idx_of_segm]]                                     mesh_pre.surface_seg[num_cor[idx_of_segm]] = np.array([])                                     # \u041d\u043e\u0440\u043c\u0430\u043b\u0438 \u0444\u0430\u0441\u0435\u0442 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438                                     normal_search = np.vstack((mesh_pre.surfaceNormal_seg[max_index_Area],                                                                mesh_pre.surfaceNormal_seg[num_cor[idx_of_segm]]))                                     mesh_pre.surfaceNormal_seg[max_index_Area] = copy.deepcopy(normal_search)                                     #np.append(mesh_pre.surfaceNormal_seg[max_index_Area],                                     #    mesh_pre.surfaceNormal_seg[num_cor[idx_of_segm]])                                      mesh_pre.surfaceNormal_seg[num_cor[idx_of_segm]] = np.array([])                                     # \u041a\u0440\u0438\u0432\u0438\u0437\u043d\u044b \u0444\u0430\u0441\u0435\u0442 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439                                     curve_search = np.vstack((mesh_pre.surfaceCurve_seg[max_index_Area],                                                                mesh_pre.surfaceCurve_seg[num_cor[idx_of_segm]]))                                     mesh_pre.surfaceCurve_seg[max_index_Area] = copy.deepcopy(curve_search)                                     #np.append(mesh_pre.surfaceCurve_seg[max_index_Area],                                     #    mesh_pre.surfaceCurve_seg[num_cor[idx_of_segm]])                                     mesh_pre.surfaceCurve_seg[num_cor[idx_of_segm]] = np.array([])                                     # \u041f\u043b\u043e\u0449\u0430\u0434\u044c \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438                                     area_segments1[0,num_cor[idx_of_segm]] = 0                                     # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435                                     mesh_pre.num_segments[max_index_Area] += mesh_pre.num_segments[num_cor[idx_of_segm]]                                     mesh_pre.num_segments[num_cor[idx_of_segm]] = 0                                     # \u0426\u0432\u0435\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u0443\u0431\u0438\u0440\u0430\u0435\u043c                                     mesh_pre.color_segments[0,num_cor[idx_of_segm]] = 0                                     # \u041a\u0440\u0438\u0432\u0438\u0437\u043d\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430                                     mesh_pre.curve_of_segments[num_cor[idx_of_segm], 0] = 0                                     mesh_pre.curve_of_segments[num_cor[idx_of_segm], 1] = 0                                     num_cor[idx_of_segm]=-1                                     num_segm_counter -= 1                                     if counter==0:                                         counter = 1                         else:                             pass                 area_segments1[0,max_index_Area] = 0                 num_segm_counter -= 1             # \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043d\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445             struct_seg=np.array([])             surface_seg=[]             surfaceNormal_seg=[]             surfaceCurve_seg = []             area_segments=np.array([])             num_segments=np.array([])             color_segments=np.array([])             curve_of_segments = np.array([])             idx = np.where(mesh_pre.num_segments[:] > 0)             if len(idx[0]) > 0:                 for j in range(len(idx[0])):                     surface_seg.append([])                     surface = mesh_pre.surface_seg[idx[0][j]]                     surface_seg[j] = copy.deepcopy(surface)                     surfaceNormal_seg.append([])                     surfaceNormal = mesh_pre.surfaceNormal_seg[idx[0][j]]                     surfaceNormal_seg[j] = copy.deepcopy(surfaceNormal)                     surfaceCurve_seg.append([])                     surfaceCurve = mesh_pre.surfaceCurve_seg[idx[0][j]]                     surfaceCurve_seg[j] = copy.deepcopy(surfaceCurve)                     #\u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043f\u043b\u043e\u0449\u0430\u0434\u0435\u0439                     area=sff.stl_Area_segment(mesh_pre.vertices.T,surface.T)                     area_segments = np.append(area_segments, area)                     # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0444\u0430\u0441\u0435\u0442 \u0432 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435                     num_segments = np.append(num_segments, mesh_pre.num_segments[idx[0][j]])                     # \u041f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0434\u043b\u044f \u0446\u0432\u0435\u0442\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430                     color_segments = np.append(color_segments, j+1)                     # \u041a\u0440\u0438\u0432\u0438\u0437\u043d\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430                     curve_of_segments = np.append(curve_of_segments, mesh_pre.curve_of_segments[idx[0][j]])                     # \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044c                     save_dict['surface_seg' + str(j)] = surface_seg[j]                     save_dict['surfaceNormal_seg' + str(j)] = surfaceNormal_seg[j]                     save_dict['surfaceCurve_seg' + str(j)] = surfaceCurve_seg[j]             struct_seg1=num_segments.shape[0]             save_dict['area_segments'] = area_segments             save_dict['num_segments'] = num_segments             save_dict['curve_of_segments'] = curve_of_segments             save_dict['color_segments'] = color_segments             save_dict['struct_seg'] = struct_seg1             scipy.io.savemat(self.pre.path_file + name_safe + '.mat', save_dict)             struct_seg=np.append(struct_seg, struct_seg1)<\/code><\/pre>\n<p>\u0418\u0442\u043e\u0433 \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 8.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/04a\/665\/182\/04a665182c6d413645fd94fa8c5aa90b.png\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 8 \u2013 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438   \" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 8 \u2013 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438   \" width=\"490\" height=\"674\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/04a\/665\/182\/04a665182c6d413645fd94fa8c5aa90b.png\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 8 \u2013 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438   <\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u0441\u0435 \u0436\u0435 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0441\u0435\u0442\u044b \u043d\u0430 \u0441\u0442\u044b\u043a\u0430\u0445 \u0433\u0440\u0430\u043d\u0435\u0439, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0438\u0445 \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0438 \u043d\u0435\u0440\u0435\u0437\u043a\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b. \u0412 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432, \u0434\u043e\u043f\u0443\u0441\u043a\u0438 \u043d\u0430 \u0443\u0433\u043e\u043b \u0438 \u043d\u0430 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438. \u0412\u0441\u0435 \u043e\u043d\u0438 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. <\/p>\n<p>\u0414\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u00ab\u0431\u043e\u0435\u0432\u044b\u0445\u00bb \u0441\u0435\u0442\u043a\u0430\u0445 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0432 \u043a\u043e\u0434, \u0447\u0442\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c.<\/p>\n<h2>\u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<ol>\n<li>\n<p> \u0420\u043e\u0434\u0436\u0435\u0440\u0441, \u0414. \u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u044b \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \/ \u0414. \u0420\u043e\u0434\u0436\u0435\u0440\u0441, \u0414\u0436. \u0410\u0434\u0430\u043c\u0441. \u2013 \u041c\u043e\u0441\u043a\u0432\u0430 : \u041c\u0438\u0440, 2001. \u2013 604 c.<\/p>\n<\/li>\n<li>\n<p>Cohen-Steiner, D. Restricted Delaunay triangulations and normal cycle \/ D. Cohen-Steiner, J. Morvan \/\/ 19th Annu. ACM Sympos. Comput. Geom. \u2013 2003. \u2013 P. 312-321.<\/p>\n<\/li>\n<li>\n<p>Discrete Differential-Geometry Operators for Triangulated 2-Manifolds \/ M. Meyer, M. Desbrun, P. Schr\u00f6der, H. Barr \/\/ International Workshop on Visualization and Mathematics, Berlin, Germany. \u2013 2002. \u2013 P.35-37.<\/p>\n<\/li>\n<li>\n<p>Taubin, G. Estimating the Tensor of Curvature of a Surface from a Polyhedral Approximation \/ G. Taubin \/\/ Fifth International Conference on Computer Vision. \u2013 1995. \u2013 P. 902-907.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0430\u043d\u0434\u0435\u0440 \u041f\u043b\u0430\u0441 \u0414\u0436. Python \u0434\u043b\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u041d\u0430\u0443\u043a\u0430 \u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \/ \u041f\u043b\u0430\u0441 \u0414\u0436. \u0412\u0430\u043d\u0434\u0435\u0440. \u2013 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433 : \u041f\u0438\u0442\u0435\u0440, 2018. \u2013 516 c.<\/p>\n<\/li>\n<li>\n<p>Guillaume, L. A new curvature tensor based segmentation method for optimized triangulated CAD \/ L. Guillaume, D. Florent, Baskurt Atilla \/\/ Comput. Aided Des. \u2013 2005. \u2013 Vol. 37. \u2013 P. 975-987.<\/p>\n<\/li>\n<li>\n<p>Schettini, R. A Segmentation Algorithm For Color Images \/ R. Schettini \/\/ Pattern Recognition Letters. \u2013 1993. \u2013 Vol. 14. \u2013 P. 499-506.<\/p>\n<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/div>\n<p> <!----> <!----><\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/723786\/\"> https:\/\/habr.com\/ru\/post\/723786\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435 \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c (\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435\u043c). \u0418 \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0440\u043e\u043b\u044c \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0430\u044e\u0442 3D-\u043f\u0440\u0438\u043d\u0442\u0435\u0440\u044b \u0438 3D-\u0441\u043a\u0430\u043d\u0435\u0440\u044b (\u043e\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435, \u043b\u0430\u0437\u0435\u0440\u043d\u044b\u0435). \u041d\u0430 \u0432\u0445\u043e\u0434 \u0432 3D-\u043f\u0440\u0438\u043d\u0442\u0435\u0440\u044b \u043f\u043e\u0434\u0430\u044e\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 *.stl \u2013 STL \u043c\u043e\u0434\u0435\u043b\u044c, \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0438\u0437 3D-\u0441\u043a\u0430\u043d\u0435\u0440\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 *.stl. \u041c\u043e\u0434\u0435\u043b\u044c \u0444\u043e\u0440\u043c\u0430\u0442\u0430 *.stl \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0442\u0440\u0438\u0430\u043d\u0433\u0443\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u043a\u0443, \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u0432. \u0414\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0438 \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u043f\u043e STL \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u0438\u0437 STL \u0442\u0432\u0435\u0440\u0434\u043e\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0435\u0434\u0438\u043d\u0443\u044e \u0442\u0440\u0438\u0430\u043d\u0433\u0443\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438.<\/p>\n<p>\u0412  \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\u0445 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 STL, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Geomatix Design X, Wrap, NX \u0438 \u0434\u0440., \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e STL  \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438. \u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 1 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 STL  \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u0435\u043a\u0446\u0438\u0438 \u043b\u043e\u043f\u0430\u0442\u043e\u043a \u0441\u043e\u043f\u043b\u043e\u0432\u043e\u0433\u043e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u0430 (\u0447\u0430\u0441\u0442\u044c \u0433\u0430\u0437\u043e\u0432\u043e\u0439 \u0442\u0443\u0440\u0431\u0438\u043d\u044b). <\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 1 \u2013 \u0421\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043e\u0431\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0441\u0435\u043a\u0446\u0438\u0438 \u043b\u043e\u043f\u0430\u0442\u043e\u043a <\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c\u043e\u043c \u041f\u041e, \u043e\u0434\u043d\u0430\u043a\u043e, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043c\u043d\u043e\u0439 \u043d\u0430 Python \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u044f STL \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438.    <\/p>\n<h3>\u041a\u0440\u0430\u0442\u043a\u043e \u043e\u0431 STL <\/h3>\n<p>\u0414\u043b\u044f \u0442\u0440\u0438\u0430\u043d\u0433\u0443\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 \u0432\u0432\u0435\u0434\u0451\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0430\u0442\u0440\u0438\u0446, \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u0443\u044e\u0449\u0438\u0445 \u0435\u0451: <strong>V<\/strong><sub>g\u00d73 <\/sub>\u2013\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u0435\u0440\u0448\u0438\u043d \u0441\u0435\u0442\u043a\u0438 stl-\u043c\u043e\u0434\u0435\u043b\u0438, <strong>F<\/strong><sub>m\u00d73<\/sub>\u00a0\u2013\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0439 \u0432\u0435\u0440\u0448\u0438\u043d \u0432 \u0444\u0430\u0441\u0435\u0442\u044b (\u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 <strong>F<\/strong><sub>a<\/sub>, <strong>F<\/strong><sub>b<\/sub>, <strong>F<\/strong><sub>c<\/sub>), <strong>N<\/strong><sub>m\u00d73<\/sub>\u00a0\u2013\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u0444\u0430\u0441\u0435\u0442. \u041a\u0430\u0436\u0434\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0432 \u0442\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u043e\u043c \u0435\u0432\u043a\u043b\u0438\u0434\u043e\u0432\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u044d\u043a\u0441\u0442\u0440\u0435\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043a\u0440\u0438\u0432\u0438\u0437\u043d <em>k<sub>min<\/sub><\/em>\u00a0\u0438 <em>k<sub>max<\/sub><\/em>, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0433\u043b\u0430\u0432\u043d\u044b\u043c\u0438 [1]. \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0437\u043d \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043e \u043d\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u043d\u044b\u0445, \u0438 \u0434\u043b\u044f \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 STL, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0443\u0441\u043e\u0447\u043d\u043e-\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439, \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439. \u0414\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0435\u0449\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0432\u0435\u043a\u0430 \u0431\u044b\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b [2, 3, 4]. \u0412 \u043c\u043e\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044f \u043e\u043f\u0438\u0440\u0430\u043b\u0441\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 [3] \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043a\u0440\u0438\u0432\u0438\u0437\u043d. \u0412 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u043d\u0435\u0439, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u043d\u043e\u044e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c. <\/p>\n<h2>\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438   <\/h2>\n<p>\u0411\u043b\u043e\u043a-\u0441\u0445\u0435\u043c\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 stl-\u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0430 \u0440\u044f\u0434 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 2.   <\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 2 \u2013 \u042d\u0442\u0430\u043f\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 stl <\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u043f\u0440\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445 stl \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0431\u044b\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b [3]. \u0422\u0435\u043d\u0437\u043e\u0440 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0430\u043c\u0438\u0445 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d (\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0442\u0435\u043d\u0437\u043e\u0440\u0430) \u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d (\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u0442\u0435\u043d\u0437\u043e\u0440\u0430). \u041f\u0440\u0438\u0432\u0435\u0434\u0451\u043c \u043a\u0440\u0430\u0442\u043a\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0442\u0435\u043d\u0437\u043e\u0440\u0430.<\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0433\u0440\u0430\u043d\u0435\u0439 \u0444\u0430\u0441\u0435\u0442 (\u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0438\u0445 \u0432 \u0432\u0438\u0434\u0435 \u043c\u0430\u0442\u0440\u0438\u0446):<\/p>\n<p>\u0412\u0435\u043a\u0442\u043e\u0440\u0430 \u0433\u0440\u0430\u043d\u0435\u0439 \u043d\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u0421 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u0430\u0442\u0440\u0438\u0446\u044b <strong>N<\/strong><sub>m\u00d73<\/sub>\u00a0\u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0430\u0441\u0435\u0442\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u0440\u0438 \u0443\u0433\u043b\u0430 \u0444\u0430\u0441\u0435\u0442\u044b, \u0432\u0438\u0434\u0438\u043c\u044b\u0445 \u0438\u0437 \u0432\u0435\u0440\u0448\u0438\u043d\u044b, \u043a\u0430\u043a \u0430\u0440\u043a\u043a\u043e\u0441\u0438\u043d\u0443\u0441 \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f: \u041d\u043e\u0440\u043c\u0430\u043b\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0430\u0441\u0435\u0442\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0433\u0440\u0430\u043d\u0435\u0439 \u0444\u0430\u0441\u0435\u0442\u044b. <\/p>\n<p>\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 <strong>N<\/strong><sub>x<\/sub>, <strong>N<\/strong><sub>y<\/sub>, <strong>N<\/strong><sub>z<\/sub>\u00a0\u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043a\u0430\u043a \u0441\u0443\u043c\u043c\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u0444\u0430\u0441\u0435\u0442\u044b \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0443\u0433\u043b\u0430. \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043d\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f. <\/p>\n<p>\u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043c\u0430\u0442\u0440\u0438\u0446 \u043f\u043e\u0432\u043e\u0440\u0430\u0442\u0430 \u0434\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u2013 <strong>Mr<\/strong><sub>3\u00d73<\/sub>\u00a0, \u0442\u0430\u043a \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0438\u043c\u0435\u043b\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b [-1, 0, 0]. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u043c\u0430\u0442\u0440\u0438\u0446\u044b  \u0434\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0445 \u043d\u043e\u043c\u0435\u0440\u043e\u0432 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0448\u0438\u043d \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u2013 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u044d\u0442\u0438\u0445 \u0432\u0435\u0440\u0448\u0438\u043d <strong>V<\/strong><sub>n\u00d73<\/sub>. \u0421 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u043c\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043e\u043d\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0440\u0435\u0431\u0440\u0430\u043c\u0438, \u0432\u0442\u043e\u0440\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d \u0441\u043e\u0441\u0435\u0434\u044f\u043c\u0438 \u0432\u0435\u0440\u0448\u0438\u043d \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u0414\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0432\u0435\u0440\u0448\u0438\u043d \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 <strong>F<\/strong><sub>m\u00d73<\/sub>.    <\/p>\n<p>\u0412\u0435\u0440\u0448\u0438\u043d\u044b \u0432 \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0446<strong> V<\/strong><sub>n\u00d73<\/sub> \u0438<sub> <\/sub><strong>Mr<\/strong><sub>3\u00d73<\/sub>. \u0414\u043b\u044f \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u043f\u043e\u043b\u0438\u043d\u043e\u043c\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438:    , \u0433\u0434\u0435 \u2013 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0432\u0435\u0440\u0448\u0438\u043d \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u0438. \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430:<\/p>\n<p>    .<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0438 (\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b) \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b    \u0438 \u0442\u0435\u043d\u0437\u043e\u0440\u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d. , , \u0433\u0434\u0435 . ,  \u043e\u0440\u0442\u043e\u0433\u043e\u043d\u0430\u043b\u0435\u043d . \u0438   \u043d\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f.<\/p>\n<p>\u041d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0430\u0441\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0435\u0440\u0448\u0438\u043d \u0441\u0435\u0442\u043a\u0438 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d  \u0438 . \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0435\u0440\u0448\u0438\u043d \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u043c\u0435\u0442\u043e\u0434\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u0431\u0435\u0437 \u0443\u0447\u0438\u0442\u0435\u043b\u044f \u2013 \u043c\u0435\u0442\u043e\u0434\u0435 k-\u0441\u0440\u0435\u0434\u043d\u0438\u0445. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c k-\u0441\u0440\u0435\u0434\u043d\u0438\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0432 \u043d\u0435\u043c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043c\u043d\u043e\u0433\u043e\u043c\u0435\u0440\u043d\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 [5]. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u0434\u0432\u0443\u0445 \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0438\u044f\u0445: 1) \u00ab\u0446\u0435\u043d\u0442\u0440 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u00bb \u2014 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0441\u0435\u0445 \u0442\u043e\u0447\u0435\u043a, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0445\u0441\u044f \u043a \u044d\u0442\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 2) \u043a\u0430\u0436\u0434\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0431\u043b\u0438\u0436\u0435 \u043a \u0446\u0435\u043d\u0442\u0440\u0443 \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0447\u0435\u043c \u043a \u0446\u0435\u043d\u0442\u0440\u0430\u043c \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432. \u0412 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435 (\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439) \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u044f\u0432\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u0434\u0430\u0442\u044c \u0440\u0430\u0432\u043d\u044b\u043c \u0447\u0435\u0442\u044b\u0440\u0451\u043c.<\/p>\n<p>\u041d\u0430 \u0442\u0440\u0435\u0442\u044c\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u0438 \u0444\u0430\u0441\u0435\u0442\u044b. \u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0444\u0430\u0441\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0443\u0436\u0435 \u043f\u043e \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044e \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445 \u0444\u0430\u0441\u0435\u0442\u0430. \u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b \u0432\u044b\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0444\u0430\u0441\u0435\u0442\u044b, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 \u0438 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u044e\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u043f\u0443\u0441\u043a \u043d\u0430 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0443, \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430. \u0422\u0430\u043a\u0438\u0435 \u0444\u0430\u0441\u0435\u0442\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c\u0438 (\u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u043c\u0438\u0441\u044f \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443) [6]. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0444\u0430\u0441\u0435\u0442\u044b \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0435:<\/p>\n<p>\u0433\u0434\u0435 , \u2013 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b \u0444\u0430\u0441\u0435\u0442\u044b; ,  \u2013 \u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b <em>i<\/em>-\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0444\u0430\u0441\u0435\u0442\u044b. <\/p>\n<p>\u0414\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u0434\u043e\u043f\u0443\u0441\u043a\u0443 \u043d\u0430 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0443  \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043f\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u0435\u0442\u0430\u043b\u0438, \u0438\u043b\u0438 \u0437\u0430\u0434\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e.         <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u043d\u0435\u0435 \u0441\u043b\u0443\u0447\u0430\u044f, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0435\u0449\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0442\u0438\u043f\u0430 \u0444\u0430\u0441\u0435\u0442 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0430\u043c \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445. \u0411\u0443\u0434\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u0435\u0440\u0448\u0438\u043d\u0443 \u00ab\u043e\u0441\u0442\u0440\u043e\u0439\u00bb, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0434\u043e\u043f\u0443\u0441\u043a \u043d\u0430 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0443 \u0432\u0441\u0435\u0445 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439. \u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 3 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043e \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043a \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u043c\u0441\u044f \u0447\u0435\u0442\u044b\u0440\u0435\u043c \u0433\u0440\u0443\u043f\u043f\u0430\u043c \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u00ab\u043e\u0441\u0442\u0440\u044b\u0445 \u0432\u0435\u0440\u0448\u0438\u043d\u00bb.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 3 \u2013 \u0412\u0438\u0434\u044b \u0444\u0430\u0441\u0435\u0442 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c \u043a\u0440\u0438\u0432\u0438\u0437\u043d: \u0430) \u0432\u0441\u0435 \u0442\u0440\u0438 \u00ab\u043e\u0441\u0442\u0440\u044b\u0435\u00bb \u0432\u0435\u0440\u0448\u0438\u043d\u044b; \u0431) \u0434\u0432\u0435 \u00ab\u043e\u0441\u0442\u0440\u044b\u0435\u00bb \u0432\u0435\u0440\u0448\u0438\u043d\u044b; \u0432) \u043e\u0434\u043d\u0430 \u00ab\u043e\u0441\u0442\u0440\u0430\u044f\u00bb \u0432\u0435\u0440\u0448\u0438\u043d\u0430; \u0433) \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043d\u0435 \u00ab\u043e\u0441\u0442\u0440\u044b\u0435\u00bb \u0438 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u0440\u0430\u0437\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c   <\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u0444\u0430\u0441\u0435\u0442 (\u0440\u0438\u0441\u0443\u043d\u043e\u043a 3, \u0430) \u0432\u0441\u0435 \u0442\u0440\u0438 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0444\u0430\u0441\u0435\u0442\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u00ab\u043e\u0441\u0442\u0440\u044b\u043c\u0438\u00bb. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0430 \u0444\u0430\u0441\u0435\u0442\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435 \u043f\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e (3). \u0414\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0444\u0430\u0441\u0435\u0442 \u043f\u043e \u043a\u043b\u0430\u0441\u0441\u0430\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0430\u0441\u0447\u0435\u0442 \u0435\u0432\u043a\u043b\u0438\u0434\u043e\u0432\u044b\u0445 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0444\u0430\u0441\u0435\u0442\u044b \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u0446\u0435\u043d\u0442\u0440\u043e\u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432:<\/p>\n<p>\u0433\u0434\u0435 \u2013 \u0432\u0435\u043a\u0442\u043e\u0440 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d <em>i<\/em>-\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430.<\/p>\n<\/p>\n<p>\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0432\u043a\u043b\u0438\u0434\u043e\u0432\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 (4) \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e. \u041a\u0440\u0438\u0432\u0438\u0437\u043d\u0430 \u0444\u0430\u0441\u0435\u0442\u044b \u043f\u0440\u0438\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a \u0432\u0435\u043a\u0442\u043e\u0440\u0443 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430.<\/p>\n<p>\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u0444\u0430\u0441\u0435\u0442 (\u0440\u0438\u0441\u0443\u043d\u043e\u043a 3, \u0431) \u0434\u0432\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u00ab\u043e\u0441\u0442\u0440\u044b\u043c\u0438\u00bb. \u041a\u0440\u0438\u0432\u0438\u0437\u043d\u0430 \u0444\u0430\u0441\u0435\u0442\u044b \u043f\u0440\u0438\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0435 \u043d\u0435 \u00ab\u043e\u0441\u0442\u0440\u043e\u0439\u00bb \u0432\u0435\u0440\u0448\u0438\u043d\u044b, \u0444\u0430\u0441\u0435\u0442\u0430 \u043e\u0442\u0445\u043e\u0434\u0438\u0442 \u0432 \u043a\u043b\u0430\u0441\u0441 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b.<\/p>\n<p>\u0412 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u0444\u0430\u0441\u0435\u0442 (\u0440\u0438\u0441\u0443\u043d\u043e\u043a 3, \u0432) \u043e\u0434\u043d\u0430 \u0432\u0435\u0440\u0448\u0438\u043d\u0430 \u00ab\u043e\u0441\u0442\u0440\u0430\u044f\u00bb. \u0412 \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u0442\u0430\u043a\u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430: \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0434\u0432\u0435 \u0444\u0430\u0441\u0435\u0442\u044b \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443; \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0434\u0432\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u0440\u0430\u0437\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u0430\u043c. \u0412 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0430 \u0444\u0430\u0441\u0435\u0442\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e (2), \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u0443\u0447\u0430\u0432\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0435 \u00ab\u043e\u0441\u0442\u0440\u044b\u0435\u00bb \u0432\u0435\u0440\u0448\u0438\u043d\u044b. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043a\u0430\u043a \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 (\u0440\u0438\u0441\u0443\u043d\u043e\u043a 3, \u0430).<\/p>\n<p>\u0412 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 \u0444\u0430\u0441\u0435\u0442  (\u0440\u0438\u0441\u0443\u043d\u043e\u043a 3, \u0433) \u043d\u0435\u0442 \u00ab\u043e\u0441\u0442\u0440\u044b\u0445\u00bb \u0432\u0435\u0440\u0448\u0438\u043d, \u043d\u043e \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u0440\u0430\u0437\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u0430\u043c.  \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u0438 \u043a \u0442\u043e\u043c\u0443 \u0438\u043b\u0438 \u0438\u043d\u043e\u043c\u0443 \u043a\u043b\u0430\u0441\u0441\u0443 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e  \u043f\u0435\u0440\u0432\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u0435 (\u0440\u0438\u0441\u0443\u043d\u043e\u043a 3, \u0430).<\/p>\n<p> \u0427\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u043c \u044d\u0442\u0430\u043f\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0444\u0430\u0441\u0435\u0442. \u0412 \u043d\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0444\u0430\u0441\u0435\u0442\u044b \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f (\u0440\u0430\u0437\u0440\u0430\u0441\u0442\u0430\u044e\u0442\u0441\u044f) \u0434\u043e \u0443\u0447\u0430\u0441\u0442\u043a\u043e\u0432 \u0444\u0430\u0441\u0435\u0442. \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u0433\u0434\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0430\u0441\u0435\u0442\u0430. \u0415\u0441\u043b\u0438 \u043f\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0439 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0430 \u0438\u0437 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0444\u0430\u0441\u0435\u0442\u044b \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u044e\u0442 \u043d\u0435\u043a\u0443\u044e \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443 , \u0431\u043b\u0438\u0437\u043a\u0443\u044e \u043a 0, \u0442\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f  \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u043a\u0440\u0438\u0432\u0438\u0437\u043d. \u0415\u0441\u043b\u0438 \u043e\u0431\u0435 \u0431\u043b\u0438\u0437\u043a\u0438 \u043a 0, \u0442\u043e \u0432\u0438\u0434\u0438\u043c\u043e \u0438\u043c\u0435\u0435\u0442 \u043c\u0435\u0441\u0442\u043e \u043f\u043b\u043e\u0441\u043a\u0438\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a (\u043f\u043b\u043e\u0441\u043a\u0430\u044f \u0433\u0440\u0430\u043d\u044c), \u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0441\u0435\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 . \u0414\u043e\u043f\u0443\u0441\u043a \u043d\u0430 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u0432 \u0443\u0433\u043b\u043e\u0432\u043e\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0442\u0430\u043a \u0436\u0435 \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0441\u043c\u0435\u0436\u043d\u044b\u0435 \u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0438 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0438\u0445 \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u0435\u0442\u0440\u0438\u043a\u043e\u0439 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u0442 \u0434\u043e\u043f\u0443\u0441\u043a\u0430. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0438\u0441\u043a \u0432\u0441\u0435\u0445 \u0444\u0430\u0441\u0435\u0442, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0438\u0445 \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u0435\u0442\u0440\u0438\u043a\u043e\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u043d\u043e\u0440\u043c\u0430\u043b\u0438 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443 \u0434\u043e\u043f\u0443\u0441\u043a\u0430 (\u0434\u043b\u044f \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u044d\u0432\u043a\u043b\u0438\u0434\u043e\u0432\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e (4); \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043a\u0430\u043b\u044f\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432).<\/p>\n<p>\u0418\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c \u0434\u043e\u043f\u0443\u0441\u043a\u0435 \u0444\u0430\u0441\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u044b\u0431\u043e\u0440 \u0444\u0430\u0441\u0435\u0442, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u043e\u0431\u0449\u0438\u043c\u0438 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u043c\u0438. <\/p>\n<p>\u0417\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0438\u043c \u044d\u0442\u0430\u043f\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0444\u0430\u0441\u0435\u0442. \u0426\u0435\u043b\u044c\u044e \u044d\u0442\u0430\u043f\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f: 1) \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u0435 \u0447\u0440\u0435\u0437\u043c\u0435\u0440\u043d\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0435\u0439 \u043d\u0430 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435; 2) \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u043e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b \u043f\u043e\u0441\u043b\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u0435\u0440\u0448\u0438\u043d \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u044d\u0442\u0430\u043f\u0435. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441\u043c\u0435\u0436\u043d\u044b\u0445 \u043e\u0434\u043d\u043e\u0440\u043e\u0434\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u0444\u0430\u0441\u0435\u0442, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430. \u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u0432\u0437\u044f\u0442\u0430 \u0438\u0437 \u0440\u0430\u0431\u043e\u0442\u044b [6]. <\/p>\n<p>\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0431\u044b\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0443\u0436\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0443\u0447\u0430\u0441\u0442\u043a\u043e\u043c \u0432 \u0432\u0438\u0434\u0435 \u0433\u0440\u0430\u0444\u0430 \u0441\u043c\u0435\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 (RAG), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u043f\u0440\u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 [7].<\/p>\n<p>\u0412\u044b\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0441 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043f\u043b\u043e\u0449\u0430\u0434\u044c\u044e. \u0417\u0430\u0442\u0435\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0449\u0430\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u0430 (\u0433\u0440\u0430\u0444 \u0441\u043c\u0435\u0436\u043d\u043e\u0441\u0442\u0438) \u0441 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u043c\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u043c\u0438 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u044c\u044e \u0438 \u0441\u043e\u0441\u0435\u0434\u044f\u043c\u0438 \u043f\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0435:<\/p>\n<p>    ,<\/p>\n<p>\u0433\u0434\u0435  \u2013 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u0435 \u043c\u0435\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u043c\u0438, \u0440\u0430\u0432\u043d\u043e\u0435 \u0441\u0443\u043c\u043c\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u043a\u0440\u0438\u0432\u0438\u0437\u043d \u0443\u0447\u0430\u0441\u0442\u043a\u043e\u0432 \u0438 \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b \u0438\u0445 \u0433\u0440\u0430\u043d\u0438\u0446\u044b;  <\/p>\n<p>\u2013 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u0439 \u043a\u0430\u043a \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u043e\u0432 \u0433\u0440\u0430\u043d\u0438\u0446 \u0434\u0432\u0443\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u043a \u0434\u043b\u0438\u043d\u0435 \u0438\u0445 \u043e\u0431\u0449\u0435\u0439 \u0433\u0440\u0430\u043d\u0438\u0446\u044b;<\/p>\n<p>\u2013 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0433\u043b\u043e\u0449\u0435\u043d\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u0435\u043b\u0438\u0447\u0438\u043d \u043f\u043b\u043e\u0449\u0430\u0434\u0435\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 ,  \u0438 \u0434\u043e\u043f\u0443\u0441\u043a\u0430 :<\/p>\n<p>  A_{min} &amp; \u0438 &amp; A_{j}>A_{min}. \\end{matrix} \\end{cases}&#187; alt=&#187;S_{ij} = \\begin{cases} \\begin{matrix} \\varepsilon, &amp; \u0435\u0441\u043b\u0438 &amp; A_{i}&lt;A_{min} &amp; \u0438\u043b\u0438 &amp; A_{j}&lt;A_{min},\\\\ 1, &amp; \u0435\u0441\u043b\u0438 &amp;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-347059","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/347059","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=347059"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/347059\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=347059"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=347059"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=347059"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}