{"id":329576,"date":"2022-02-14T15:03:38","date_gmt":"2022-02-14T15:03:38","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=329576"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=329576","title":{"rendered":"<span>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 hexapod \u0441 \u043d\u0443\u043b\u044f (\u0447\u0430\u0441\u0442\u044c 12) \u2014 \u043d\u043e\u0432\u043e\u0435 \u044f\u0434\u0440\u043e \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/648019\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/t0\/7r\/if\/t07rifiydq4y5hgonhvn74fes6i.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/t0\/7r\/if\/t07rifiydq4y5hgonhvn74fes6i.jpeg\" data-blurred=\"true\"\/><\/div>\n<p><\/a><br \/>  \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u0435\u0439 \u043d\u0430\u0437\u0430\u0434 \u0432 \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0443\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430, \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f. \u0420\u0430\u043d\u044c\u0448\u0435 \u044d\u0442\u043e \u0431\u044b\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0432 \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0435\u043b\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 MPU6050. \u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0441\u0430\u043c\u0430 \u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0438\u0440\u0443\u0435\u0442 \u0443\u0433\u043b\u044b \u043d\u0430\u043a\u043b\u043e\u043d\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u2014 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u044f \u0431\u0443\u0434\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044e \u043a \u043d\u0435\u0440\u043e\u0432\u043d\u043e\u0441\u0442\u044f\u043c. \u0412 \u044d\u0442\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0443\u0436\u0435 \u0432\u0435\u0434\u0443\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (\u0434\u0430\u0442\u0447\u0438\u043a\u0438 \u043a\u0430\u0441\u0430\u043d\u0438\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 \u0442\u0435\u043d\u0437\u043e\u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432), \u043d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0448\u0430\u0433\u0430.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u044f\u0434\u0440\u0430 \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434\u0430 \u0438 \u043a\u0430\u043a\u0438\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0451. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f, \u0438 \u044f \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043b \u043e\u043a\u043e\u043b\u043e 80% \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044c \u044f\u0432\u043d\u043e\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0442\u043e\u0447\u0435\u043a \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u2014 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0412\u0441\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435. \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u0432\u0430\u0441 \u0436\u0434\u0451\u0442 \u0444\u043e\u0442\u043e \u0438 \u0432\u0438\u0434\u0435\u043e.<a name=\"habracut\"><\/a><\/p>\n<p>  <a href=\"https:\/\/github.com\/NeoProg2013\/AIWM_hexapod\">Github AIWM Hexapod<\/a><\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u042d\u0442\u0430\u043f\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\"><a href=\"https:\/\/habr.com\/ru\/post\/424867\/\">\u0427\u0430\u0441\u0442\u044c 1 \u2014 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/a><br \/>  <a href=\"https:\/\/habr.com\/ru\/post\/424905\/\">\u0427\u0430\u0441\u0442\u044c 2 \u2014 \u0441\u0431\u043e\u0440\u043a\u0430<\/a><br \/>  <a href=\"https:\/\/habr.com\/ru\/post\/436748\/\">\u0427\u0430\u0441\u0442\u044c 3 \u2014 \u043a\u0438\u043d\u0435\u043c\u0430\u0442\u0438\u043a\u0430<\/a><br \/>  <a href=\"https:\/\/habr.com\/ru\/post\/444070\/\">\u0427\u0430\u0441\u0442\u044c 4 \u2014 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/a><br \/>  <a href=\"https:\/\/habr.com\/ru\/post\/448058\/\">\u0427\u0430\u0441\u0442\u044c 5 \u2014 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430<\/a><br \/>  <a href=\"https:\/\/habr.com\/ru\/post\/478812\/\">\u0427\u0430\u0441\u0442\u044c 6 \u2014 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 3D \u043f\u0435\u0447\u0430\u0442\u044c<\/a><br \/>  <a href=\"https:\/\/habr.com\/ru\/post\/457882\/\">\u0427\u0430\u0441\u0442\u044c 7 \u2014 \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u0440\u043f\u0443\u0441, \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0435 \u041f\u041e \u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b \u043e\u0431\u0449\u0435\u043d\u0438\u044f<\/a><br \/>  <a href=\"https:\/\/habr.com\/ru\/post\/493304\/\">\u0427\u0430\u0441\u0442\u044c 8 \u2014 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u0430\u044f \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f<\/a><br \/>  <a href=\"https:\/\/habr.com\/ru\/post\/507762\/\">\u0427\u0430\u0441\u0442\u044c 9 \u2014 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 1.00<\/a><br \/>  <a href=\"https:\/\/habr.com\/ru\/post\/543620\/\">\u0427\u0430\u0441\u0442\u044c 10 \u2014 \u0434\u0430\u0442\u0447\u0438\u043a\u0438 \u043a\u0430\u0441\u0430\u043d\u0438\u044f<\/a><br \/>  <a href=\"https:\/\/habr.com\/ru\/post\/567034\/\">\u0427\u0430\u0441\u0442\u044c 11 \u2014 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/a><br \/>  <b>\u0427\u0430\u0441\u0442\u044c 12 \u2014 \u043d\u043e\u0432\u043e\u0435 \u044f\u0434\u0440\u043e \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f<\/b>  <\/div>\n<\/p><\/div>\n<p>  <\/p>\n<h2><font color=\"#3AC1EF\">\u258d \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/font><\/h2>\n<p>  \u0410 \u043f\u043e\u0447\u0435\u043c\u0443 \u044f\u0434\u0440\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c? \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u043e:<\/p>\n<pre><code class=\"cpp\">{0}, \/\/ Destination points is not use for TRAJECTORY_XZ_ADV_Y_CONST { TRAJECTORY_XZ_ADV_Y_CONST, TRAJECTORY_XZ_ADV_Y_SINUS, TRAJECTORY_XZ_ADV_Y_CONST, TRAJECTORY_XZ_ADV_Y_SINUS, TRAJECTORY_XZ_ADV_Y_CONST, TRAJECTORY_XZ_ADV_Y_SINUS}, { TIME_DIR_DIRECT, TIME_DIR_REVERSE, TIME_DIR_DIRECT, TIME_DIR_REVERSE, TIME_DIR_DIRECT, TIME_DIR_REVERSE }, {{-115, LIMB_DOWN_Y, 70}, {-135, LIMB_DOWN_Y, 0}, {-115, LIMB_DOWN_Y, -70}, {115, LIMB_DOWN_Y, 70}, {135, LIMB_DOWN_Y, 0}, {115, LIMB_DOWN_Y, -70}}, .motion_time = MTIME_MID_VALUE, .time_stop = MTIME_MAX_VALUE, .time_update = MTIME_NO_UPDATE, .speed = 0 <\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0443\u0441\u043e\u043a \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0438 \u0442\u0430\u043a \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442. \u0412 \u0442\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438 \u043a \u043b\u0430\u043d\u0434\u0448\u0430\u0444\u0442\u0443, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043e\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0449\u0438\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f. \u041d\u0443 \u0438, \u0435\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e, \u0442\u043e \u043c\u0435\u043d\u044f \u0443\u0436\u0435 \u0442\u043e\u0448\u043d\u0438\u0442 \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430.<\/p>\n<p>  \u0421\u0430\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u042f \u0435\u0433\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u043b \u0432 8 \u0447\u0430\u0441\u0442\u0438. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u043f\u043e\u043c\u043d\u044e \u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<ul>\n<li>curvature \u2014 \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438 [-1000; 1000];<\/li>\n<li>distance \u2014 \u0434\u043b\u0438\u043d\u0430 \u0448\u0430\u0433\u0430. \u0413\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u043a\u043e\u0440\u043f\u0443\u0441\u0430. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e [-115; 115], \u0442.\u0435. \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0448\u0430\u0433 \u2014 \u044d\u0442\u043e 11.5 \u0441\u043c;<\/li>\n<li>speed \u2014 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f [0; 100].<\/li>\n<\/ul>\n<p>  \u0412 \u043a\u043e\u043d\u0446\u0435 \u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u043e \u0447\u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u044d\u0442\u043e \u0440\u0430\u0437\u0434\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u0414\u0430\u043b\u044c\u0448\u0435 \u044f \u043a\u0440\u0430\u0442\u043a\u043e \u043d\u0430\u043f\u0438\u0448\u0443 \u0441\u0432\u043e\u0438 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043b\u0435\u0433\u0447\u0435 \u043e\u0441\u043e\u0437\u043d\u0430\u0442\u044c \u0432\u0441\u044e \u043c\u0430\u0433\u0438\u044e. \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u044b\u0440\u043d\u0443\u0442\u044c \u0432 \u043d\u043e\u0432\u0443\u044e \u0438\u0434\u0435\u044e.<\/p>\n<h2><font color=\"#3AC1EF\">\u258d Pre-build<\/font><\/h2>\n<p>  \u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0432\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u00ab\u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u043e\u0447\u043a\u0438\u00bb \u0438 \u0438\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043d\u0430\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b. \u042d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0436\u0451\u0441\u0442\u043a\u043e \u0432\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435. \u0418\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u0438 \u0442\u043e\u0447\u043a\u0438 \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434 \u0441\u0442\u0430\u0432\u0438\u0442 \u0441\u0432\u043e\u0438 \u043d\u043e\u0433\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0430\u0447\u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u044f. \u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434\u0430 (\u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043d\u043e\u0433, \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442 \u0446\u0435\u043d\u0442\u0440\u0430 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435). \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e:<\/p>\n<pre><code class=\"cpp\">static const v3d_t limbs_base_pos[] = {     {-115, 0, 70}, {-135, 0, 0}, {-115, 0, -70}, \/\/ Left side     { 115, 0, 70}, { 135, 0, 0}, { 115, 0, -70}  \/\/ Right side };<\/code><\/pre>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 Y \u0443 \u0432\u0441\u0435\u0445 \u0442\u043e\u0447\u0435\u043a \u0440\u0430\u0432\u043d\u0430 \u043d\u0443\u043b\u044e \u0438 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c. \u041c\u043e\u044f \u0438\u0434\u0435\u044f \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0432\u044f\u0437\u0430\u0442\u044c \u0432\u0441\u044f\u043a\u0438\u0435 \u043d\u0430\u043a\u043b\u043e\u043d\u044b, \u0441\u0434\u0432\u0438\u0433\u0438 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043b\u044e\u0431\u044b\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u043e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u043e\u0447\u0435\u043a. \u0422\u043e \u0435\u0441\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0431\u0443\u0434\u0435\u0442 \u0434\u0443\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0440\u043e\u0432\u043d\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0442\u0430\u043a. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043e\u0442\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0446\u0435\u043d\u0442\u0440\u0430 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u0441\u0435\u0440\u044b\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u044b \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0442\u043e\u0447\u043a\u0438. \u0421\u0442\u043e\u0438\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0438 \u0432\u0441\u0451 \u0440\u0443\u0445\u043d\u0435\u0442.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/lr\/8p\/me\/lr8pmermbozjyskx7_di1ckf1dq.png\" data-width=\"400\"\/><\/div>\n<p>  <\/p>\n<h2><font color=\"#3AC1EF\">\u258d \u0421 \u0447\u0435\u0433\u043e \u0432\u0441\u0451 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c<\/font><\/h2>\n<p>  \u0425\u043c, \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0435\u043c\u043b\u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e, \u043d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0437\u0430\u0439\u0442\u0438 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0437\u0435\u043c\u043b\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434\u0430.<\/p>\n<p>  \u0415\u0441\u0442\u044c \u0437\u0435\u043c\u043b\u044f\\\u043f\u043e\u043b\\\u0430\u0441\u0444\u0430\u043b\u044c\u0442\\\u043d\u0435\u0432\u0430\u0436\u043d\u043e (\u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0437\u0435\u043c\u043b\u044f) \u0438 \u0435\u0441\u0442\u044c \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434. \u0413\u0435\u043a\u0441\u0430\u043f\u043e\u0434 \u0432\u0441\u0442\u0430\u043b \u043d\u0430 \u043d\u043e\u0433\u0438 \u0438 \u0441\u0432\u043e\u0438\u043c \u0432\u0435\u0441\u043e\u043c \u043f\u0440\u043e\u0434\u0430\u0432\u0438\u043b \u044f\u043c\u043a\u0438 \u043d\u0430 \u0437\u0435\u043c\u043b\u0435, \u0442.\u0435. \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044e \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u043d\u0430 \u0437\u0435\u043c\u043b\u044e. \u0423\u0431\u0438\u0440\u0430\u0435\u043c \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434\u0430 \u0438 \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f?<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/of\/-6\/i_\/of-6i_yw2cbqjohlxanwzwfjlfk.png\" data-width=\"300\"\/><\/div>\n<p>  \u041c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0448\u0435\u0441\u0442\u044c \u0442\u043e\u0447\u0435\u043a \u0438 \u043d\u0430\u0448\u0435 \u043f\u0435\u0440\u0432\u043e\u0435 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u2014 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/ba5\/b6c\/3d1\/ba5b6c3d14633437101d47325cb77afc.svg\" alt=\"$n_x (x - x_0) + n_y (y - y_0) + n_z (z - z_0) = 0$\" data-tex=\"display\"\/><\/p>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u044e\u0442 2 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438:<\/p>\n<ul>\n<li>(x0,y0,z0) \u2014 \u0442\u043e\u0447\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043b\u0435\u0436\u0438\u0442 \u043d\u0430 \u044d\u0442\u043e\u0439 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438;<\/li>\n<li>(nx,ny,nz) \u2014 \u0432\u0435\u043a\u0442\u043e\u0440, \u043f\u0435\u0440\u043f\u0435\u043d\u0434\u0438\u043a\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 (\u043d\u043e\u0440\u043c\u0430\u043b\u044c).<\/li>\n<\/ul>\n<p>  \u042d\u0442\u043e \u0438 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0448\u0438 \u043d\u043e\u0432\u044b\u0435 \u0440\u044b\u0447\u0430\u0433\u0438 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u043f\u0440\u0438\u043c\u0435\u043c, \u0447\u0442\u043e \u0442\u043e\u0447\u043a\u0430 \u0438 \u043d\u0430\u0447\u0430\u043b\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435. \u041e\u043f\u0443\u0441\u0442\u0438\u043c \u043f\u043e\u043a\u0430 \u0442\u043e\u0447\u043a\u0443 \u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u044c. \u0427\u0442\u043e \u0431\u0443\u0434\u0435\u0442, \u0435\u0441\u043b\u0438 \u0435\u0451 \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u0435\u0439? \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c, \u043e\u043d\u0438 \u0432\u0435\u0434\u044c \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u043f\u0435\u043d\u0434\u0438\u043a\u0443\u043b\u044f\u0440\u043d\u044b.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/qh\/pq\/bl\/qhpqblku5n6btdeyg3fkepi_wos.gif\" data-width=\"300\"\/><\/div>\n<p>  \u0425\u043e\u0440\u043e\u0448\u043e. \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434\u0430 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u0446\u0435\u043d\u0442\u0440\u0430 \u043a\u043e\u0440\u043f\u0443\u0441\u0430:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/vm\/nj\/jm\/vmnjjmbbcgn6ljork1ohsfkztgq.png\"\/><\/div>\n<p>  \u0418 \u043f\u043e\u0432\u0435\u0440\u043d\u0451\u043c \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/y8\/2b\/qu\/y82bquamo3h9rc3tbtan89swtbs.png\"\/><\/div>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b X \u0438 Z \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u043d\u0430\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b, \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0438\u0445 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u043e \u043e\u0441\u0438 Y. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 Y, \u043c\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c \u0432\u0441\u0435 \u043d\u043e\u0433\u0438 \u0440\u0430\u0437\u043e\u043c \u0432 \u043d\u0443\u0436\u043d\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d30\/6b5\/31a\/d306b531a94618225e13fb7381b9d3b9.svg\" alt=\"$y = -(n_x(x - x_0) + n_z(z - z_0))\/ n_y + y_0$\" data-tex=\"display\"\/><\/p>\n<p>  \u0422\u0435\u043b\u043e \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434\u0430 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435, \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u2014 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0432\u0438\u0433\u0430\u0435\u043c \u0437\u0435\u043c\u043b\u044e \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0432\u044b\u0441\u043e\u0442\u0443 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u043d\u0430 \u043d\u0435\u0451 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430 (\u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043b\u043e\u0436\u043a\u0430), \u0444\u043e\u043d\u0430\u0440\u0438\u043a\u0430 \u0438 \u043b\u0438\u0441\u0442\u0430 \u0431\u0443\u043c\u0430\u0433\u0438. \u0415\u0441\u043b\u0438 \u0432\u0437\u044f\u0442\u044c \u043b\u043e\u0436\u043a\u0443 \u0438 \u043f\u043e\u0441\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0451 \u0444\u043e\u043d\u0430\u0440\u0438\u043a\u043e\u043c \u0441\u0432\u0435\u0440\u0445\u0443, \u0442\u043e \u043d\u0430 \u043b\u0438\u0441\u0442\u0435 \u0431\u0443\u0434\u0435\u0442 \u0435\u0451 \u0442\u0435\u043d\u044c \u2014 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u043b\u043e\u0436\u043a\u0438 \u043d\u0430 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u043a\u043b\u043e\u043d\u044f\u0442\u044c \u043b\u0438\u0441\u0442 \u0431\u0443\u043c\u0430\u0433\u0438, \u0442\u043e \u0432\u044b\u0441\u043e\u0442\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0445 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u043a\u043e\u0433\u0434\u0430 \u043b\u0438\u0441\u0442 \u043b\u0435\u0436\u0430\u043b \u0440\u043e\u0432\u043d\u043e), \u043d\u043e \u043b\u043e\u0436\u043a\u0430 \u043d\u0435 \u0434\u0432\u0438\u0433\u0430\u043b\u0430\u0441\u044c. \u041f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435 \u043c\u0435\u043d\u044f, \u043c\u0438\u0441\u0442\u0435\u0440 \u0410\u043d\u0434\u0435\u0440\u0441\u043e\u043d?<\/p>\n<p>  \u0423\u0436\u0435 \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043d\u0438\u0436\u0435. \u041d\u0430\u043a\u043b\u043e\u043d\u044f\u0435\u043c \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u043f\u043e \u043e\u0441\u0438 \u0425 \u043d\u0430 15 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432 \u0438 \u0432\u0440\u0430\u0449\u0430\u0435\u043c \u0435\u0451 \u0432\u043e\u043a\u0440\u0443\u0433 \u043e\u0441\u0438 Y. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u043e! \u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u043e\u0436\u043d\u043e, \u043d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043a\u0440\u0443\u0442\u0438\u043b\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c. \u041d\u0430 \u0432\u0438\u0434\u0435\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u043a\u043b\u043e\u043d\u044b \u043a\u043e\u0440\u043f\u0443\u0441\u0430.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u0438\u0434\u0435\u043e \u04452<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/61f96f564615593b75e24863\" data-style=\"\" id=\"61f96f564615593b75e24863\" width=\"\"><\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/61f96f56f61f533babdf308f\" data-style=\"\" id=\"61f96f56f61f533babdf308f\" width=\"\"><\/div>\n<\/div>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0449\u0443\u043f\u0430\u0435\u043c \u0442\u043e\u0447\u043a\u0443 (x0,y0,z0) \u0438\u0437 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438. \u042d\u0442\u0430 \u0442\u043e\u0447\u043a\u0430, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u043d\u0430\u043a\u043b\u043e\u043d\u043e\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430\u043a\u043b\u043e\u043d\u043e\u043c \u043a\u043e\u0440\u043f\u0443\u0441\u0430, \u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u043e\u0447\u043a\u0438 \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0435\u0433\u043e \u0432\u044b\u0441\u043e\u0442\u043e\u0439 \u2014 \u0434\u0432\u0438\u0433\u0430\u0435\u043c \u0437\u0435\u043c\u043b\u044e \u0432\u0432\u0435\u0440\u0445\/\u0432\u043d\u0438\u0437.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/ut\/sk\/fk\/utskfkqkxazwogq3jjdcsu-46ac.gif\"\/><\/div>\n<p>  \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434\u0443 \u0432\u0441\u0442\u0430\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u043e\u0433\u0438 \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0432\u044b\u0441\u043e\u0442\u0443 \u0442\u0435\u043b\u0430 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u0438\u0434\u0435\u043e<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/61f2a0cc4615593b75e2484b\" data-style=\"\" id=\"61f2a0cc4615593b75e2484b\" width=\"\"><\/div>\n<\/div>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0421 Y \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0439 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c, \u043d\u043e \u043a\u0430\u043a \u0431\u044b\u0442\u044c \u0441 X \u0438 Z? \u0410 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0442\u043e\u0447\u043a\u0438, \u043f\u0443\u0441\u0442\u044c \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u043e\u0447\u043a\u043e\u0439, \u0430 \u0446\u0435\u043d\u0442\u0440\u043e\u043c \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438. \u0415\u0441\u043b\u0438 \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u043b\u043e\u0436\u043a\u0435, \u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u0430 \u0444\u043e\u043d\u0430\u0440\u0438\u043a\u0430 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043e \u043a \u0446\u0435\u043d\u0442\u0440\u0443 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u044f \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c, \u043c\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c \u0438 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u043e\u0447\u0435\u043a. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u044d\u0442\u043e \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u0435\u0435<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/ej\/y7\/vt\/ejy7vtjm_ftujwq6iaozf7iwcsk.gif\"\/><\/div>\n<p>  \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0440\u0430\u0441\u0447\u0451\u0442\u043e\u0432 \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f, \u0442.\u043a. \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043a \u0431\u0430\u0437\u043e\u0432\u044b\u043c \u0442\u043e\u0447\u043a\u0430\u043c. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u043f\u043e \u043e\u0441\u044f\u043c X \u0438 Z \u2014 \u0443\u0445, \u043c\u044b \u043e\u043f\u044f\u0442\u044c \u0434\u0432\u0438\u0433\u0430\u0435\u043c \u0437\u0435\u043c\u043b\u044e. \u0418 \u0432\u043e\u0442 \u043a\u0430\u043a\u0438\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0441\u0434\u0432\u0438\u0433\u043e\u043c \u0446\u0435\u043d\u0442\u0440\u0430 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 (\u0432\u0438\u0434\u0435\u043e \u043d\u0438\u0436\u0435).  <\/p>\n<blockquote><p><i>\u041a\u0441\u0442\u0430\u0442\u0438, \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0432\u0438\u0434\u0435\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0443\u043f\u0451\u0440\u043b\u043e\u0441\u044c \u0432 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u2014 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043d \u043d\u0435 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u043e\u0448\u0438\u0431\u043a\u0443 \u0438 \u043c\u0438\u0433\u0430\u0435\u0442 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430\u043c\u0438. \u042d\u0442\u043e \u043a\u0430\u043a \u0431\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u00ab\u041f\u0430\u0440\u0435\u043d\u044c, \u0447\u0442\u043e \u0442\u044b \u0442\u0432\u043e\u0440\u0438\u0448\u044c \u0441\u043e \u043c\u043d\u043e\u0439?\u00bb<\/i><\/p><\/blockquote>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u0438\u0434\u0435\u043e \u04453<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/61f96f576ea11f3bbbaf21a0\" data-style=\"\" id=\"61f96f576ea11f3bbbaf21a0\" width=\"\"><\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/61f96f57122cc8f6386969af\" data-style=\"\" id=\"61f96f57122cc8f6386969af\" width=\"\"><\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/61f2a2264615593b75e2484c\" data-style=\"\" id=\"61f2a2264615593b75e2484c\" width=\"\"><\/div>\n<\/div>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0410 \u0432\u043e\u0442 \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c, \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u0443\u044f \u043d\u0430\u043a\u043b\u043e\u043d \u0438 \u0441\u0434\u0432\u0438\u0433 \u2014 \u0433\u0435\u043a\u0441 \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u043c\u0435\u0435\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u0431\u043e\u043b\u0443. \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0437\u0434\u043e\u0440\u043e\u0432\u043e.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u0438\u0434\u0435\u043e<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/61f2a0cdabb378f6450d1bd8\" data-style=\"\" id=\"61f2a0cdabb378f6450d1bd8\" width=\"\"><\/div>\n<\/div>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0412 \u0446\u0435\u043b\u043e\u043c, \u0432\u0441\u044f \u0438\u0434\u0435\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u041c\u043d\u0435 \u0432 \u0442\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0434\u0443\u043c\u0430\u0442\u044c\u0441\u044f. \u042f \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0430\u0442\u044c \u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0438 \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0435\u043c\u043b\u0438, \u043d\u043e \u043a\u0430\u043a-\u0442\u043e \u043d\u0435 \u043f\u043e\u0448\u043b\u043e, \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435.<\/p>\n<h2><font color=\"#3AC1EF\">\u258d \u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e<\/font><\/h2>\n<p>  \u041e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043d\u043e \u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043e\u0449\u043d\u044b\u0439. \u0412\u043d\u0443\u0442\u0440\u0438 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u043d\u0435 \u043e\u0434\u043d\u0430, \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0445 2: \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f. \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0431\u043b\u043e\u043a\u043e\u043c \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438 (MPU6050) \u0438 \u044f\u0434\u0440\u043e\u043c \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f (\u0432\u044b\u0441\u043e\u0442\u0430 \u043a\u043e\u0440\u043f\u0443\u0441\u0430), \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434\u043e\u043c. \u0414\u0430\u043b\u044c\u0448\u0435 \u0432 \u044f\u0434\u0440\u0435 \u044d\u0442\u0438 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u0443 \u043f\u0443\u0442\u0451\u043c \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0439 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u043d\u0430\u043a\u043b\u043e\u043d\u0435\u043d\u0430 \u043d\u0430 30 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432, \u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u043d\u0430 -30, \u0442\u043e \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434 \u0432 \u0438\u0442\u043e\u0433\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u043e\u044f\u0442\u044c \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u0431\u0435\u0437 \u0443\u043a\u043b\u043e\u043d\u0430.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/8j\/j1\/5p\/8jj15pi35ykt0i2x68qs2z6zvg0.png\"\/><\/div>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043a\u043e\u043b\u044c \u0443\u0433\u043e\u0434\u043d\u043e \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438 \u0432 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435. \u041a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u0443\u044f \u0438\u0445, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u0443\u0436\u043d\u0443\u044e \u043d\u0430\u043c \u043c\u0430\u0433\u0438\u044e. \u041f\u0440\u043e\u0441\u0442\u043e, \u043d\u0435 \u043f\u0440\u0430\u0432\u0434\u0430 \u043b\u0438?<\/p>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u043e\u0432\u043e\u0433\u043e \u044f\u0434\u0440\u0430 \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0438 \u043e\u0442\u0432\u0435\u0442\u0438\u043c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u043f\u043e\u0447\u0435\u043c\u0443 \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434 \u043f\u043b\u0430\u0432\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u0432\u043e\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f?\u00bb.<\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044f \u0432\u0437\u044f\u043b \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u044f. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 (\u0442\u043e\u0447\u043a\u0430 \u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c) \u0438 \u0446\u0435\u043b\u0435\u0432\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0434\u0430\u0451\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c. \u041c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0437\u044f\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430 1 \u0446\u0438\u043a\u043b \u2014 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0440\u0435\u0437\u043a\u043e. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u044c \u0432 \u043d\u0443\u0436\u043d\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u0448\u0430\u0433\u0430\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0446\u0438\u043a\u043b.<\/p>\n<pre><code class=\"cpp\">\/\/\/ *************************************************************************** \/\/\/ @brief  Move surface on step \/\/\/ @param  src_p: source surface point pos \/\/\/ @param  dst_p: destination surface point pos \/\/\/ @param  src_r: source surface rotation \/\/\/ @param  dst_r: destination surface rotation \/\/\/ @param  max_step: max step for move \/\/\/ @return true - surface already reached destination pos, false - otherwise \/\/\/ *************************************************************************** bool mm_move_surface(p3d_t* src_p, const p3d_t* dst_p, r3d_t* src_r, const r3d_t* dst_r, float max_step) {     float diff[6] = { 0 };     diff[0] = dst_p->x - src_p->x;     diff[1] = dst_p->y - src_p->y;     diff[2] = dst_p->z - src_p->z;     diff[3] = dst_r->x - src_r->x;     diff[4] = dst_r->y - src_r->y;     diff[5] = dst_r->z - src_r->z;      \/\/ Search max diff     float max_diff_abs = fabs(diff[0]);     for (int i = 1; i &lt; sizeof(diff) \/ sizeof(diff[0]); ++i) {         if (isless(max_diff_abs, fabs(diff[i]))) {             max_diff_abs = fabs(diff[i]);         }     }      \/\/ Move completed?     if (max_diff_abs &lt; FLT_EPSILON) {         return true;     }      \/\/ Constrain step for add remainder     if (isless(max_diff_abs, max_step)) {         max_step = max_diff_abs;     }      \/\/ Add step     src_p->x += max_step * (diff[0] \/ max_diff_abs);     src_p->y += max_step * (diff[1] \/ max_diff_abs);     src_p->z += max_step * (diff[2] \/ max_diff_abs);     src_r->x += max_step * (diff[3] \/ max_diff_abs);     src_r->y += max_step * (diff[4] \/ max_diff_abs);     src_r->z += max_step * (diff[5] \/ max_diff_abs);          \/\/ Constrain surface rotation angles value     if (isgreater(fabs(src_r->x), 360.0f)) {         src_r->x += -360.0f;     }     if (isgreater(fabs(src_r->y), 360.0f)) {         src_r->y += -360.0f;     }     if (isgreater(fabs(src_r->z), 360.0f)) {         src_r->z += -360.0f;     }     return false; } <\/code><\/pre>\n<p>  \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439. \u041c\u044b \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0432\u0438\u0433\u0430\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438 \u0443\u0433\u043b\u044b \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0448\u0430\u0433, \u0430 \u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043d\u0438\u0446\u0435 \u043c\u0435\u0436\u0434\u0443 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0448\u0430\u0433\u0430. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u0443\u0433\u043b\u044b \u043d\u0430\u043a\u043b\u043e\u043d\u0430 \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u0434\u0443\u0442 \u0432 \u0441\u0432\u043e\u0439 \u043f\u0443\u043d\u043a\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e. \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043d\u0435 \u0442\u0430\u043a\u0438\u043c\u0438, \u043a\u0430\u043a\u0438\u043c\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c.<\/p>\n<p>  \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0435\u0441\u0442\u044c \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0438 \u0434\u043b\u044f \u0442\u043e\u0447\u043a\u0438. \u041f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u043c\u044b\u0441\u043b\u0430 \u043d\u0435\u0442, \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0442\u0430\u043c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435.<\/p>\n<p>  \u0420\u0430\u043d\u0435\u0435 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u0432\u044f\u0437\u0430\u043d \u043e\u0442 \u043d\u0430\u043a\u043b\u043e\u043d\u043e\u0432 \u0438 \u0441\u0434\u0432\u0438\u0433\u043e\u0432 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438. \u041c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u0410 \u043a\u0430\u043a \u0436\u0435 \u043e\u043d\u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f?\u00bb. \u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u043a\u043b\u043e\u043d\u044b \u0438 \u0441\u0434\u0432\u0438\u0433\u0438 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b (\u043a\u043e\u0434 \u043d\u0438\u0436\u0435), \u0442\u043e \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0445 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043a \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u043e\u0441\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f.<\/p>\n<pre><code class=\"cpp\">bool mm_surface_calculate_offsets(limb_t* limbs, const p3d_t* surface_point, const r3d_t* surface_rotate) {     v3d_t n = {0, 1, 0};     float x = 0;     float y = 0;     float z = 0;      \/\/ Rotate normal by axis X     float surface_x_rotate_rad = DEG_TO_RAD(surface_rotate->x);     y = n.y * cosf(surface_x_rotate_rad) + n.z * sinf(surface_x_rotate_rad);     z = n.y * sinf(surface_x_rotate_rad) - n.z * cosf(surface_x_rotate_rad);     n.y = y;     n.z = z;      \/\/ Rotate normal by axis Z     float surface_z_rotate_rad = DEG_TO_RAD(surface_rotate->z);     x = n.x * cosf(surface_z_rotate_rad) - n.y * sinf(surface_z_rotate_rad);     y = n.x * sinf(surface_z_rotate_rad) + n.y * cosf(surface_z_rotate_rad);     n.x = x;     n.y = y;      \/\/ Rotate normal by axis Y     float surface_y_rotate_rad = DEG_TO_RAD(surface_rotate->y);     x =  n.x * cosf(surface_y_rotate_rad) + n.z * sinf(surface_y_rotate_rad);     z = -n.x * sinf(surface_y_rotate_rad) + n.z * cosf(surface_y_rotate_rad);     n.x = x;     n.z = z;      \/\/ For avoid divide by zero     if (fabs(n.y) &lt; FLT_EPSILON) {         return false;     }      \/\/ Nx(x - x0) + Ny(y - y0) + Nz(z - 0z) = 0     \/\/ y = (-Nx(x - x0) - Nz(z - z0)) \/ Ny + y0     for (int32_t i = 0; i &lt; SUPPORT_LIMBS_COUNT; ++i) {         limbs[i].surface_offsets.x = surface_point->x;         limbs[i].surface_offsets.z = surface_point->z;         limbs[i].surface_offsets.y = -(n.x * (limbs[i].pos.x - surface_point->x) + n.z * (limbs[i].pos.z - surface_point->z)) \/ n.y + surface_point->y;     }     return true; } <\/code><\/pre>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0439.<\/p>\n<pre><code class=\"cpp\">         float x = limbs[i].pos.x + limbs[i].surface_offsets.x; float y = limbs[i].pos.y + limbs[i].surface_offsets.y; float z = limbs[i].pos.z + limbs[i].surface_offsets.z; \/\/ \/\/ \u0414\u0430\u043b\u044c\u0448\u0435 \u0438\u0434\u0443\u0442 \u0440\u0430\u0441\u0447\u0451\u0442\u044b \u043a\u0438\u043d\u0435\u043c\u0430\u0442\u0438\u043a\u0438 \/\/ <\/code><\/pre>\n<p>  \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043d\u043e \u0438 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e.<\/p>\n<p>  \u041d\u0443 \u0432\u043e\u0442 \u043c\u044b \u0438 \u043f\u043e\u0434\u043e\u0448\u043b\u0438 \u043a \u043c\u0430\u0448\u0438\u043d\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 (\u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043a\u043b\u0438\u043a\u0430\u0431\u0435\u043b\u044c\u043d\u043e):<\/p>\n<p>  <a href=\"https:\/\/hsto.org\/webt\/jd\/pl\/yl\/jdplyly-gxc0ovoqraqlhc9bj0i.png\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/jd\/pl\/yl\/jdplyly-gxc0ovoqraqlhc9bj0i.png\"\/><\/div>\n<p><\/a>\u041c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e \u00abscript\u00bb. \u041d\u043e \u043a\u0430\u043a \u0442\u0430\u043a? \u041c\u044b \u0436\u0435 \u0445\u043e\u0442\u0438\u043c \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. \u0418\u0445 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0440\u0430\u0442\u044c, \u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0442\u0435\u043b\u043e\u043c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0434\u0436\u043e\u0439\u0441\u0442\u0438\u043a\u0430 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435. \u0425\u043e\u0442\u0438\u043c \u043c\u044b \u044d\u0442\u043e\u0433\u043e? \u0414\u0443\u043c\u0430\u044e \u043d\u0435\u0442.<\/p>\n<p>  \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0442\u0435\u043b\u0430 \u043f\u043e \u0434\u0432\u0443\u043c \u043e\u0441\u044f\u043c \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e:<\/p>\n<pre><code class=\"cpp\">static void xy_rotate_init(motion_t* motion) {     common_init(motion);     motion->surface_rotate.x = 15; } static void xy_rotate_exec(motion_t* motion) {     motion->surface_rotate.y = 361;     motion->cfg.speed = 60; } <\/code><\/pre>\n<p>  \u0412\u0441\u0451 \u0447\u0435\u0441\u0442\u043d\u043e \u2014 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0438 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0439\/\u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439. \u0422\u0443\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0445\u0430\u043a \u044f\u0434\u0440\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f 361 \u0433\u0440\u0430\u0434\u0443\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043e\u0442 0 \u2014 360 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432. \u0422\u0430\u043a\u043e\u0435 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438.<\/p>\n<p>  \u0415\u0449\u0451 \u043f\u0440\u0438\u043c\u0435\u0440 \u2014 \u043d\u0430\u043a\u043b\u043e\u043d\u044b \u0432 \u0443\u0433\u043b\u044b. \u0422\u0430\u043a\u043e\u0435 \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0443\u0434\u043e\u0431\u043d\u0435\u0435, \u0447\u0435\u043c \u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0436\u043e\u0439\u0441\u0442\u0438\u043a \ud83d\ude42<\/p>\n<pre><code class=\"cpp\">static void square_exec(motion_t* motion) {     static uint8_t loop = 0;     switch (loop++) {     case 0:         motion->surface_rotate.x = 15;         motion->surface_rotate.z = 15;         break;     case 1:         motion->surface_rotate.x = -15;         motion->surface_rotate.z = -15;         break;     case 2:         motion->surface_rotate.x = -15;         motion->surface_rotate.z = 15;         break;     case 3:         motion->surface_rotate.x = 15;         motion->surface_rotate.z = -15;         loop = 0;         break;     } } <\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0412\u0438\u0434\u0435\u043e<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/61f96f57ad041b3b9bfdc93d\" data-style=\"\" id=\"61f96f57ad041b3b9bfdc93d\" width=\"\"><\/div>\n<\/div>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0421 \u043f\u043e\u043b\u043d\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u043d\u0430 GitHub (\u0441\u0441\u044b\u043b\u043a\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438), \u0432\u0435\u0442\u043a\u0430 step_detection. \u042f\u0434\u0440\u043e \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 firmware\/ControlBoard\/MainMCU\/src\/motion-core\/*.<\/p>\n<h2><font color=\"#3AC1EF\">\u258d \u0427\u0442\u043e \u043d\u0430\u0441\u0447\u0451\u0442 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438 \u043a \u043b\u0430\u043d\u0434\u0448\u0430\u0444\u0442\u0443?<\/font><\/h2>\n<p>  \u0421 \u043d\u043e\u0432\u044b\u043c \u044f\u0434\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u043e\u0433\u0443 \u0434\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u0442\u0447\u0438\u043a\u0430 \u043a\u0430\u0441\u0430\u043d\u0438\u044f. \u041d\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u044f \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0443\u043c\u0430\u044e \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043b\u0430\u0442\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u041a\u0441\u0442\u0430\u0442\u0438, \u043f\u0440\u043e\u0448\u043b\u044b\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0442\u0435\u043d\u0437\u043e\u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043d\u0435 \u043e\u0447\u0435\u043d\u044c. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u043c\u0435\u044e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u0440\u043e\u0441 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u0430\u0440\u0442\u0438\u0438. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430\u0439\u0442\u0438 6 \u0442\u0435\u043d\u0437\u043e\u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432 \u0441 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u043f\u043e\u0445\u043e\u0436\u0438\u043c\u0438 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430\u043c\u0438 \u043a\u0440\u0430\u0439\u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0438\u0445 \u0432 \u043f\u043e\u043b\u044c\u0437\u0443 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043a\u043d\u043e\u043f\u043e\u043a (\u0447\u0443\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442).<\/p>\n<h2><font color=\"#3AC1EF\">\u258d \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0436\u0435\u043b\u0435\u0437\u0435<\/font><\/h2>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0430\u0442\u0447\u0438\u043a\u0438 \u043a\u0430\u0441\u0430\u043d\u0438\u044f, \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043b\u0430\u0442\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f (\u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0435\u0451 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u044b\u0432\u0430\u0442\u044c). \u0420\u0435\u0448\u0438\u043b \u0440\u0430\u0441\u043f\u0430\u044f\u0442\u044c MPU6050 \u043d\u0430 \u0441\u0430\u043c\u043e\u0439 \u043f\u043b\u0430\u0442\u0435, \u0430 \u043d\u0435 \u0442\u044f\u043d\u0443\u0442\u044c \u043f\u0440\u043e\u0432\u043e\u0434\u0430. \u0421\u0434\u0435\u043b\u0430\u043d\u043e \u044d\u0442\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437-\u0437\u0430 \u0431\u043e\u043b\u0435\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0430 \u043f\u043b\u0430\u0442\u044b, \u0434\u0430 \u0438 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u0432 \u0442\u043e\u0436\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u043e.<\/p>\n<p>  \u0423\u0431\u0440\u0430\u043b \u0432\u0442\u043e\u0440\u043e\u0439 \u041c\u041a \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u0435\u043b\u0435\u043c \u043f\u043e\u0440\u0442\u043e\u0432 \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430 PCA9555PW. \u041a\u0440\u0443\u0442\u0430\u044f \u0448\u0442\u0443\u043a\u0430, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u0440\u0442\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f (\u0432\u0445\u043e\u0434\/\u0432\u044b\u0445\u043e\u0434) \u0438 \u0435\u0441\u0442\u044c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u0443\u0440\u043e\u0432\u043d\u044f \u043d\u0430 \u0432\u0445\u043e\u0434\u0430\u0445. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a \u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u043d\u0435 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435 (\u0432 \u0445\u043e\u0440\u043e\u0448\u0435\u043c \u0441\u043c\u044b\u0441\u043b\u0435).<\/p>\n<p>  \u0415\u0449\u0451 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0434\u0435\u0444\u0438\u0446\u0438\u0442\u0430 \u0447\u0438\u043f\u043e\u0432 (\u043d\u0443 \u0438\u043b\u0438 \u0444\u0430\u0437\u044b \u043b\u0443\u043d\u044b) \u0438\u0437 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u043e\u0432 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u043f\u0440\u043e\u043f\u0430\u043b \u043c\u043e\u0439 \u041c\u041a STM32F373RCT6, \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0442.\u043a. \u043f\u0440\u043e\u0446-\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439. \u041d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u043f\u043e\u0434 \u043d\u043e\u0432\u043e\u0435 \u0436\u0435\u043b\u0435\u0437\u043e, \u0445\u043e\u0440\u043e\u0448\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u043f\u0430\u0441. \u0414\u0430 \u0438 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 373 \u0441\u0435\u0440\u0438\u044f \u043f\u043e\u0434\u043e\u0440\u043e\u0436\u0430\u043b\u0430 \u0432 4 \u0440\u0430\u0437\u0430, \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0442 \u0441\u043b\u043e\u0432.<\/p>\n<p>  \u0412\u043e\u0442 \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u043e\u0432\u0430\u044f \u043f\u043b\u0430\u0442\u0430 (\u0441\u0432\u0435\u0440\u0445\u0443) \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441\u043e \u0441\u0442\u0430\u0440\u043e\u0439 (\u0441\u043d\u0438\u0437\u0443):<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/an\/1d\/mh\/an1dmhysvna5l6ta1g4bgmam1qq.png\"\/><\/div>\n<p>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0442\u0435, \u043a\u0442\u043e \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c, \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u0433\u0435\u043a\u0441 \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0435\u043b\u044b\u0439. \u041a\u043e\u0440\u043f\u0443\u0441 \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u043f\u0435\u0447\u0430\u0442\u0430\u043d \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043d\u0442\u0435\u0440\u0430 \u0441\u043e \u0441\u0442\u043e\u043b\u043e\u043c 400\u0445400, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u044b\u043c.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0424\u043e\u0442\u043e (\u0442\u0440\u0430\u0444\u0438\u043a)<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/-h\/_k\/ja\/-h_kjarawgkmlylxczspxotew90.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/-h\/_k\/ja\/-h_kjarawgkmlylxczspxotew90.jpeg\" data-blurred=\"true\"\/><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/ww\/mx\/vt\/wwmxvt8h_zv6w8pnowmcrg9nsnk.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/ww\/mx\/vt\/wwmxvt8h_zv6w8pnowmcrg9nsnk.jpeg\" data-blurred=\"true\"\/><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/_i\/si\/gq\/_isigqcr7x7ylf1bqdycvoubcew.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/_i\/si\/gq\/_isigqcr7x7ylf1bqdycvoubcew.jpeg\" data-blurred=\"true\"\/><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/ao\/9k\/7h\/ao9k7hyhmqg01njpcpub61aswgi.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/ao\/9k\/7h\/ao9k7hyhmqg01njpcpub61aswgi.jpeg\" data-blurred=\"true\"\/><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/yi\/zr\/xg\/yizrxgaiyjzv72eslch8akesety.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/yi\/zr\/xg\/yizrxgaiyjzv72eslch8akesety.jpeg\" data-blurred=\"true\"\/><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/bt\/cn\/mm\/btcnmmghgcbowd0ba5sbj5uojha.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/bt\/cn\/mm\/btcnmmghgcbowd0ba5sbj5uojha.jpeg\" data-blurred=\"true\"\/><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/qg\/4w\/kr\/qg4wkrakwhp_jqmxloa8fczfbuu.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/qg\/4w\/kr\/qg4wkrakwhp_jqmxloa8fczfbuu.jpeg\" data-blurred=\"true\"\/><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/ng\/uh\/kr\/nguhkrgjkovyqpf8ujhguqldrtw.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/ng\/uh\/kr\/nguhkrgjkovyqpf8ujhguqldrtw.jpeg\" data-blurred=\"true\"\/><\/div>\n<p>  <\/div>\n<\/p><\/div>\n<p>  <\/p>\n<h2><font color=\"#3AC1EF\">\u258d \u041d\u0443 \u0438 \u0447\u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435<\/font><\/h2>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c. \u0413\u0435\u043a\u0441\u0430\u043f\u043e\u0434 \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u043c\u0435\u0435\u0442 \u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0433\u043e\u043b\u043e\u0432\u043e\u0439 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0432\u044b\u0441\u043e\u0442\u0443 \u0448\u0430\u0433\u0430 \u0438 \u043a\u043b\u0438\u0440\u0435\u043d\u0441 \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434\u0430, \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u0438 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438 \u043a \u043b\u0430\u043d\u0434\u0448\u0430\u0444\u0442\u0443. \u041d\u043e \u0435\u0441\u0442\u044c \u0438 \u043c\u0438\u043d\u0443\u0441\u044b \u2014 \u043e\u043d \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0441\u0442\u0443\u0447\u0430\u0442\u044c \u0432 \u0434\u0432\u0435\u0440\u044c \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043d\u043e\u0433. \u0412\u0441\u0435 6 \u043d\u043e\u0433 \u0442\u0435\u043f\u0435\u0440\u044c \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. <\/p>\n<p>  \u0410 \u0447\u0442\u043e \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432 \u0438\u0442\u043e\u0433\u0435:<\/p>\n<ul>\n<li>curvature \u2014 \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u043a\u0440\u0438\u0432\u0438\u0437\u043d\u044b \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438 [-1000; 1000];<\/li>\n<li>distance \u2014 \u0434\u043b\u0438\u043d\u0430 \u0448\u0430\u0433\u0430. \u0413\u0440\u0430\u043d\u0438\u0446\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u043a\u043e\u0440\u043f\u0443\u0441\u0430. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e [-115; 115], \u0442.\u0435. \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0448\u0430\u0433 \u2014 \u044d\u0442\u043e 11.5 \u0441\u043c;<\/li>\n<li>speed \u2014 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f [0; 100];<\/li>\n<li>(x0,y0,z0) \u2014 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0446\u0435\u043d\u0442\u0440\u0430 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438;<\/li>\n<li>(nx,ny,nz) \u2014 \u0443\u0433\u043b\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c (0; 1; 0).<\/li>\n<\/ul>\n<p>  \u0412\u0441\u0451 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u043e \u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442, \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0439, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e \u0445\u043b\u0430\u043c\u0430.<\/p>\n<p>  \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0443\u0436\u0435 \u0445\u043e\u0434\u0438\u0442\u044c \u043f\u043e \u043d\u0435\u0440\u043e\u0432\u043d\u044b\u043c \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044f\u043c. \u0412\u0441\u0435\u043c \u0441\u043f\u0430\u0441\u0438\u0431\u043e! \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e.<\/p>\n<p>  <a href=\"http:\/\/ruvds.com\/ru-rub?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=Neoprog&amp;utm_content=razrabotka_hexapod_s_nulya_chast_12_novoe_yadro_peredvizheniya\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/webt\/ou\/g5\/kh\/oug5kh6sjydt9llengsiebnp40w.png\"\/><\/a><\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/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\/company\/ruvds\/blog\/648019\/\"> https:\/\/habr.com\/ru\/company\/ruvds\/blog\/648019\/<\/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_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/648019\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/t0\/7r\/if\/t07rifiydq4y5hgonhvn74fes6i.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/t0\/7r\/if\/t07rifiydq4y5hgonhvn74fes6i.jpeg\" data-blurred=\"true\"\/><\/div>\n<p><\/a><br \/>  \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u0435\u0439 \u043d\u0430\u0437\u0430\u0434 \u0432 \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434\u0435 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0443\u0433\u043e\u043b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430, \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f. \u0420\u0430\u043d\u044c\u0448\u0435 \u044d\u0442\u043e \u0431\u044b\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0432 \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0435\u043b\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430 \u043d\u0430 \u0431\u0430\u0437\u0435 MPU6050. \u041f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0441\u0430\u043c\u0430 \u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0438\u0440\u0443\u0435\u0442 \u0443\u0433\u043b\u044b \u043d\u0430\u043a\u043b\u043e\u043d\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u2014 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u044f \u0431\u0443\u0434\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044e \u043a \u043d\u0435\u0440\u043e\u0432\u043d\u043e\u0441\u0442\u044f\u043c. \u0412 \u044d\u0442\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0443\u0436\u0435 \u0432\u0435\u0434\u0443\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (\u0434\u0430\u0442\u0447\u0438\u043a\u0438 \u043a\u0430\u0441\u0430\u043d\u0438\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 \u0442\u0435\u043d\u0437\u043e\u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432), \u043d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0448\u0430\u0433\u0430.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u044f\u0434\u0440\u0430 \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0433\u0435\u043a\u0441\u0430\u043f\u043e\u0434\u0430 \u0438 \u043a\u0430\u043a\u0438\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0451. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f, \u0438 \u044f \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043b \u043e\u043a\u043e\u043b\u043e 80% \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044c \u044f\u0432\u043d\u043e\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0442\u043e\u0447\u0435\u043a \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u2014 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0412\u0441\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435. \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430, \u0432\u0430\u0441 \u0436\u0434\u0451\u0442 \u0444\u043e\u0442\u043e \u0438 \u0432\u0438\u0434\u0435\u043e.<\/p>\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-329576","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/329576","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=329576"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/329576\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=329576"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=329576"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=329576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}