{"id":377420,"date":"2024-05-29T15:00:08","date_gmt":"2024-05-29T15:00:08","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=377420"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=377420","title":{"rendered":"<span>\u041f\u0438\u0448\u0435\u043c \u043f\u0441\u0435\u0432\u0434\u043e3D \u0434\u0432\u0438\u0436\u043e\u043a \u0432 Mindustry. \u041f\u0441\u0435\u0432\u0434\u043e\u0442\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0438\u043b\u0438 \u0434\u0432\u0430 \u0441 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439 D<\/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<h3>\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f<\/h3>\n<p>\u041a\u0430\u043a-\u0442\u043e \u0440\u0430\u0437, \u0433\u0443\u043b\u044f\u044f \u043f\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u043c \u044e\u0442\u0443\u0431\u0430, \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u0432\u0438\u0434\u0435\u043e \u043f\u0440\u043e \u043f\u0441\u0435\u0432\u0434\u043e-3D \u0438 \u0437\u0430\u0445\u043e\u0442\u0435\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0436\u0435. \u042d\u0442\u043e \u0431\u044b\u043b\u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u044f, \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043e\u043d\u0430 \u043a\u0440\u0438\u0432\u0435\u043d\u044c\u043a\u043e:\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/713\/ead\/3ca\/713ead3cac9f735dc60188b67318eb6b.jpg\" width=\"590\" height=\"819\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/713\/ead\/3ca\/713ead3cac9f735dc60188b67318eb6b.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u041f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0443\u0432\u0438\u0434\u0435\u043b \u043c\u043e\u0439 \u0434\u0440\u0443\u0433, \u0438 \u043c\u044b \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u0442\u043e\u0440\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/b02\/97f\/233\/b0297f233fa9a272448c7b39887ef870.jpg\" width=\"590\" height=\"1099\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b02\/97f\/233\/b0297f233fa9a272448c7b39887ef870.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0433\u043e\u0434\u0430 \u043e\u0442\u0434\u044b\u0445\u0430, \u0441\u043e\u0431\u0440\u0430\u0432 \u0443\u0436\u0435 \u0442\u0440\u0451\u0445 \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0443\u0441\u043f\u0435\u0445 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0432\u0438\u0436\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043b\u0443\u0447\u0448\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432\u0441\u0435\u0445 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445. \u041e\u0431 \u044d\u0442\u043e\u043c \u0438 \u0441\u0442\u0430\u0442\u044c\u044f.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/b4a\/66f\/36b\/b4a66f36b08f8918c928bba38b4e058c.jpg\" width=\"720\" height=\"1520\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b4a\/66f\/36b\/b4a66f36b08f8918c928bba38b4e058c.jpg\" data-blurred=\"true\"\/><\/figure>\n<h2>\u0427\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c<\/h2>\n<p><em>\u041f\u0441\u0435\u0432\u0434\u043e-3D<\/em> &#8212; \u044d\u0442\u043e \u0438\u0433\u0440\u043e\u0432\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u043e\u0435 \u0438\u0433\u0440\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u043e\u0439, \u0437\u0430 \u0441\u0447\u0451\u0442 \u0447\u0435\u0433\u043e \u043c\u0435\u043d\u0435\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0430 \u043a \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044f\u043c. \u0420\u0430\u043d\u044c\u0448\u0435, \u0432 \u044d\u043f\u043e\u0445\u0443 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0441\u0435\u0432\u0434\u043e-3D \u0431\u044b\u043b\u043e \u0432\u0430\u0436\u043d\u044b\u043c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 \u0438\u0433\u0440, \u0430 \u0441\u0435\u0439\u0447\u0430\u0441 &#8212; \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0441\u043a\u0438\u0439 \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436.\u00a0<\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b \u0431\u044b\u0441\u0442\u0440\u044b\u0435, \u043d\u043e \u0432 \u0442\u043e\u043c \u0436\u0435 mindustry <em>\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b<\/em> (\u0438\u0433\u0440\u043e\u0432\u044b\u0435 \u0431\u043b\u043e\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c) \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u043d\u0438\u0445 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u0441\u0435\u0432\u0434\u043e-3D \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439.<\/p>\n<h2>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 mindustry<\/h2>\n<p>\u0412 \u0438\u0433\u0440\u0435 mindustry \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u0433\u0440\u043e\u0432\u044b\u0435 \u0431\u043b\u043e\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c &#8212; <em>\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b<\/em>. \u041a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445, \u043e\u0434\u043d\u0430\u043a\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0432 \u0438\u0433\u0440\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430. <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0435 \u043a \u043d\u0435\u043c\u0443 \u0431\u043b\u043e\u043a\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0442\u0443\u0440\u0435\u043b\u044c, \u043a\u043d\u043e\u043f\u043a\u0430, \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. <\/p>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u044f \u043d\u0430 \u043d\u0438\u0445, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0441 \u044d\u0442\u0438\u0445 \u0431\u043b\u043e\u043a\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043a\u043b\/\u0432\u044b\u043a\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0438\u043b\u0438 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0435\u0433\u043e \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f. \u0415\u0449\u0451 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 mindusrty \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u043a\u043e\u0434\u0430:<\/p>\n<ol>\n<li>\n<p>\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435<\/p>\n<\/li>\n<li>\n<p>\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435<\/p>\n<\/li>\n<\/ol>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0435\u0441\u0442\u044c 2 \u0431\u0443\u0444\u0435\u0440\u0430:<\/p>\n<ol>\n<li>\n<p>\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439<\/p>\n<\/li>\n<li>\n<p>\u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439<\/p>\n<\/li>\n<\/ol>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/075\/3df\/3b5\/0753df3b51c3e45ccb5079734ce6b3bf.jpg\" width=\"669\" height=\"893\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/075\/3df\/3b5\/0753df3b51c3e45ccb5079734ce6b3bf.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>1. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>set<\/code> \u0437\u0430\u0434\u0430\u0451\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 (\u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0435\u0441\u0442\u044c \u0438 \u0438\u0445 \u043d\u0435 \u043d\u0430\u0434\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c):<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/ef9\/61e\/c50\/ef961ec503b57e982ff4ebfc2d61230a.jpg\" width=\"491\" height=\"248\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ef9\/61e\/c50\/ef961ec503b57e982ff4ebfc2d61230a.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>2. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>operation<\/code> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/6b9\/cfa\/0d6\/6b9cfa0d6100ee9dbbf67fc7a12c1051.jpg\" alt=\"\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f i \u0441\u0442\u0430\u043b\u0430 \u0440\u0430\u0432\u043d\u0430 188\" title=\"\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f i \u0441\u0442\u0430\u043b\u0430 \u0440\u0430\u0432\u043d\u0430 188\" width=\"504\" height=\"250\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6b9\/cfa\/0d6\/6b9cfa0d6100ee9dbbf67fc7a12c1051.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f i \u0441\u0442\u0430\u043b\u0430 \u0440\u0430\u0432\u043d\u0430 188<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/504\/214\/a8e\/504214a8e49cf7b7459170c9601b114e.jpg\" width=\"498\" height=\"463\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/504\/214\/a8e\/504214a8e49cf7b7459170c9601b114e.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>print<\/code> \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u0438\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432 \u0431\u0443\u0444\u0435\u0440 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 (\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u044f \u0435\u0433\u043e \u0432 \u0441\u0442\u0440\u043e\u043a\u0443):<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/564\/a4a\/025\/564a4a0255e26bf42c07b6d4352372b5.jpg\" alt=\"\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0440\u0430\u0432\u043d\u043e \u0441\u0442\u0440\u043e\u043a\u0435: \u00ab\u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438: 94.2\u00bb\" title=\"\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0440\u0430\u0432\u043d\u043e \u0441\u0442\u0440\u043e\u043a\u0435: \u00ab\u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438: 94.2\u00bb\" width=\"509\" height=\"612\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/564\/a4a\/025\/564a4a0255e26bf42c07b6d4352372b5.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0440\u0430\u0432\u043d\u043e \u0441\u0442\u0440\u043e\u043a\u0435: \u00ab\u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438: 94.2\u00bb<\/figcaption><\/div>\n<\/figure>\n<p>4. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>printFlush<\/code> \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0442\u0435\u043a\u0441\u0442 \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u0430, \u043e\u0431\u043d\u0443\u043b\u044f\u044f \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0432 <em>\u0431\u043b\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0443\u043a\u0430\u0436\u0435\u043c:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/cfc\/ca0\/4bb\/cfcca04bb1aa291ba5edd4b980342a0a.jpg\" alt=\"\" title=\"\" width=\"492\" height=\"682\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cfc\/ca0\/4bb\/cfcca04bb1aa291ba5edd4b980342a0a.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u041d\u043e \u0441\u043f\u0435\u0440\u0432\u0430 \u0435\u0433\u043e \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/613\/fc9\/b7d\/613fc9b7dadf167c1c6a2e12e87fc9dc.jpg\" width=\"427\" height=\"469\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/613\/fc9\/b7d\/613fc9b7dadf167c1c6a2e12e87fc9dc.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u041e\u043d \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c <code>message1<\/code>. \u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0432\u044b\u0432\u0435\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u0443\u0444\u0435\u0440\u0430 (\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043d\u043e\u0432\u043e, \u0432\u0435\u0434\u044c \u043a\u043e\u0434 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0446\u0438\u043a\u043b\u0435):<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/03a\/991\/558\/03a9915589773c4d69663645097939ce.jpg\" width=\"460\" height=\"509\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/03a\/991\/558\/03a9915589773c4d69663645097939ce.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443 <em>\u044f\u0447\u0435\u0439\u043a\u0443 \u043f\u0430\u043c\u044f\u0442\u0438<\/em>:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/d50\/2ee\/676\/d502ee67625f13b7146b346d9e6a5a43.jpg\" width=\"676\" height=\"377\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d50\/2ee\/676\/d502ee67625f13b7146b346d9e6a5a43.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u044f\u0447\u0435\u0439\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442, 64 \u044f\u0447\u0435\u0439\u043a\u0438 (\u043e\u0442 0 \u0434\u043e 63-\u0439 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e) \u0434\u043b\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0430 <code>number<\/code> (<code>double<\/code> \u0432 mindustry). <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>diameter<\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>write<\/code> \u0432 \u043d\u0443\u043b\u0435\u0432\u0443\u044e \u044f\u0447\u0435\u0439\u043a\u0443 \u0431\u043b\u043e\u043a\u0430 <code>cell1<\/code>: <\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/6cd\/781\/76f\/6cd78176ffb9468f912437b5cc5319e3.jpg\" alt=\"\u0412 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u0438\u0430\u043c\u0435\u0442\u0440\u0430 \u043d\u0430\u0448\u0435\u0439 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438\" title=\"\u0412 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u0438\u0430\u043c\u0435\u0442\u0440\u0430 \u043d\u0430\u0448\u0435\u0439 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438\" width=\"509\" height=\"827\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6cd\/781\/76f\/6cd78176ffb9468f912437b5cc5319e3.jpg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u0412 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u0438\u0430\u043c\u0435\u0442\u0440\u0430 \u043d\u0430\u0448\u0435\u0439 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438<\/figcaption><\/div>\n<\/figure>\n<p>6. \u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043c \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0435\u0433\u043e \u043a <em>\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0434\u0438\u0441\u043f\u043b\u0435\u044e<\/em> (88 \u043d\u0430 88 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439) \u0438 \u044f\u0447\u0435\u0439\u043a\u0435 \u043f\u0430\u043c\u044f\u0442\u0438:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/c47\/81a\/af1\/c4781aaf1d770baad01ad6bfaef92875.jpg\" width=\"705\" height=\"314\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c47\/81a\/af1\/c4781aaf1d770baad01ad6bfaef92875.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0435 \u0438 \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0435\u0433\u043e \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>diameter<\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>read<\/code>, \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u0438\u0430\u043c\u0435\u0442\u0440\u0430 \u043d\u0430 2 \u0438 \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0435\u0433\u043e \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>radius<\/code>. \u0414\u0430\u043b\u0435\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a <code>radius = diameter \/ 2<\/code> \u0438\u043b\u0438 <code>op div radius diameter 2<\/code>: <\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/11b\/70d\/13f\/11b70d13fdf2c43d4079fd316f3c36fe.jpg\" width=\"458\" height=\"346\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/11b\/70d\/13f\/11b70d13fdf2c43d4079fd316f3c36fe.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>7. \u0422\u0435\u043f\u0435\u0440\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>draw<\/code> \u043a\u0430\u043a <code>draw clear 0 0 0<\/code>, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u0443\u0444\u0435\u0440 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u043c\u0438 \u0441 \u0447\u0451\u0440\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/67c\/00d\/1c9\/67c00d1c9978a02c7d11aff03e9a6a2b.jpg\" width=\"505\" height=\"599\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/67c\/00d\/1c9\/67c00d1c9978a02c7d11aff03e9a6a2b.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0434\u0430\u0434\u0438\u043c \u0437\u0435\u043b\u0451\u043d\u044b\u0439 \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0444\u0438\u0433\u0443\u0440: <code>draw color 0 255 0 255<\/code><\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/cb6\/fcb\/510\/cb6fcb5105ab76559426ff0d1bac799f.jpg\" width=\"438\" height=\"595\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cb6\/fcb\/510\/cb6fcb5105ab76559426ff0d1bac799f.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0418 \u043d\u0430\u0440\u0438\u0441\u0443\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 24-\u0445 \u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a \u0440\u0430\u0434\u0438\u0443\u0441\u043e\u043c <code>radius<\/code> \u0432 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445 X: 44 Y:44 (\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0430 88 \u043d\u0430 88) \u043f\u043e\u0434 \u0443\u0433\u043b\u043e\u043c 0 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/8ce\/d2a\/671\/8ced2a67108cb531f04c56c83f6104fe.jpg\" width=\"575\" height=\"776\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8ce\/d2a\/671\/8ced2a67108cb531f04c56c83f6104fe.jpg\" data-blurred=\"true\"\/><\/figure>\n<ol start=\"8\">\n<li>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u044b\u0432\u0435\u0434\u0435\u043c \u0432\u0441\u0451 \u0438\u0437 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>drawFlush<\/code> \u0432 \u0434\u0438\u0441\u043f\u043b\u0435\u0439 <code>display1<\/code><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/19f\/002\/433\/19f00243361ec396b4e607f40d61a2bc.jpg\" width=\"572\" height=\"831\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/19f\/002\/433\/19f00243361ec396b4e607f40d61a2bc.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0418 \u0443\u0432\u0438\u0434\u0438\u043c:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/431\/faa\/3a2\/431faa3a223d2338b12dd99c7d70e66a.jpg\" width=\"721\" height=\"340\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/431\/faa\/3a2\/431faa3a223d2338b12dd99c7d70e66a.jpg\" data-blurred=\"true\"\/><\/figure>\n<\/li>\n<li>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043d\u0430\u0448 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043a <em>\u043a\u043d\u043e\u043f\u043a\u0435<\/em>:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/664\/b69\/c06\/664b69c06be3a4c83478258f5028b443.jpg\" alt=\"\" title=\"\" width=\"590\" height=\"298\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/664\/b69\/c06\/664b69c06be3a4c83478258f5028b443.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0418 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u043c \u0435\u0451 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 (\u0432\u043a\u043b\/\u0432\u044b\u043a\u043b) \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>sensor @enabled<\/code> \u0438 \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u0442\u0430\u0442\u0443\u0441 \u043a\u043d\u043e\u043f\u043a\u0438 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>status<\/code>. \u0414\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u043c \u0432 3-\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435: <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/39e\/2f2\/2f1\/39e2f22f1e0ee9c2467b5e833afc1c3f.jpg\" width=\"553\" height=\"960\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/39e\/2f2\/2f1\/39e2f22f1e0ee9c2467b5e833afc1c3f.jpg\" data-blurred=\"true\"\/><\/figure>\n<\/li>\n<li>\n<p> \u041d\u0438\u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>jump<\/code> \u0441 \u0443\u0441\u043b\u043e\u0432\u0438\u0435\u043c <code>status == 0<\/code> \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0435\u0451 \u043d\u0430 \u043f\u0440\u044b\u0436\u043e\u043a \u0432 7-\u044e \u0441\u0442\u0440\u043e\u043a\u0443.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/1fc\/2ed\/7f4\/1fc2ed7f446a3aa04965aa87bc3cc469.jpg\" width=\"575\" height=\"1048\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1fc\/2ed\/7f4\/1fc2ed7f446a3aa04965aa87bc3cc469.jpg\" data-blurred=\"true\"\/><\/figure>\n<\/li>\n<\/ol>\n<p>\u041a\u0430\u043a \u0432\u044b \u0443\u0436\u0435 \u043c\u043e\u0433\u043b\u0438 \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0434\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043a\u0430\u043a \u0431\u044b \u00ab<em>\u043f\u0440\u044b\u0433\u043d\u0443\u0442\u044c<\/em>\u00bb \u043d\u0430 7-\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>status<\/code> \u0440\u0430\u0432\u043d\u0430 \u043d\u0443\u043b\u044e (\u0442\u043e \u0435\u0441\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0430 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0430), \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u0434 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 24-\u0445 \u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/f95\/f16\/25a\/f95f1625af6bb158a579a5181da3eedb.jpg\" width=\"541\" height=\"250\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f95\/f16\/25a\/f95f1625af6bb158a579a5181da3eedb.jpg\" data-blurred=\"true\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/9bc\/aa1\/b12\/9bcaa1b128b6c36fd07c03fc241faa8a.jpg\" width=\"556\" height=\"256\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9bc\/aa1\/b12\/9bcaa1b128b6c36fd07c03fc241faa8a.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u0430 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f 1-\u0433\u043e \u0438 2-\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<p><code>diameter = 30<br \/>Pi = 3.14<br \/>perimeter = Pi * diameter<br \/>print \"\u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438: \"<br \/>print perimeter<br \/>printflush message1<br \/>write diameter to cell1 at 0<\/code><\/p>\n<p><code>read diameter = cell1 at 0<br \/>radius = diameter \/ 2<br \/>draw clear 0 0 0<br \/>status = @enabled in switch1<br \/>jump 7, if status == 0<br \/>draw color 0 255 0 255<br \/>draw linePoly 40 40 24 radius 0<br \/>drawflush display1<\/code><\/p>\n<p>11. \u0418 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430: <code>pack color<\/code><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/3b9\/865\/2db\/3b98652dbc310f917dcafca8ee274d47.jpg\" width=\"720\" height=\"611\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3b9\/865\/2db\/3b98652dbc310f917dcafca8ee274d47.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0414\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0441\u043e\u0435\u0434\u0435\u043d\u044f\u0435\u044f\u0442 4 \u0446\u0432\u0435\u0442\u0430 <code>RGBA<\/code> \u0432 \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e \u0442\u0438\u043f\u0430 <code>number<\/code> \u0412 \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0432\u0441\u0435 \u0446\u0432\u0435\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0447\u0438\u0441\u043b\u043e\u043c \u043e\u0442 0 \u0434\u043e 1<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/d79\/83e\/d29\/d7983ed29e99179f35971013bad120be.jpg\" width=\"720\" height=\"1043\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d79\/83e\/d29\/d7983ed29e99179f35971013bad120be.jpg\" data-blurred=\"true\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/4b8\/a38\/7da\/4b8a387daeb7b100aa167b3998254f80.jpg\" width=\"549\" height=\"379\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4b8\/a38\/7da\/4b8a387daeb7b100aa167b3998254f80.jpg\" data-blurred=\"true\"\/><\/figure>\n<h2>\u041a\u0430\u0440\u0442\u0430  <\/h2>\n<p>\u0421\u0430\u043c\u044b\u0439 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430\u0448\u0435\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430 &#8212; \u043a\u0430\u0440\u0442\u0430. \u041d\u0430 \u043a\u0430\u0440\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0438\u0433\u0440\u043e\u043a \u0438 \u0432\u0441\u0435 \u0431\u043b\u043e\u043a\u0438. \u041a\u0430\u0440\u0442\u0430 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 &#8212; <code>widthmap<\/code>, \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438 \u0448\u0438\u0440\u0438\u043d\u0443, \u0438 \u0434\u043b\u0438\u043d\u0443 \u043a\u0430\u0440\u0442\u044b (\u043a\u0430\u043a \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u043e\u043d\u0430 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u0430\u044f). \u041a\u0430\u0440\u0442\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0431\u043b\u043e\u043a\u043e\u0432 (\u043a\u0430\u043a <em>\u043c\u0430\u0439\u043d\u043a\u0440\u0430\u0444\u0442<\/em>, \u0442\u043e\u043b\u044c\u043a\u043e \u0432 2D), \u0435\u0441\u0442\u044c \u0431\u043b\u043e\u043a\u0438 \u0441\u0442\u0435\u043d, \u0432\u043e\u0437\u0434\u0443\u0445\u0430 \u0438 \u0442.\u0434. \u041a\u0430\u0440\u0442\u0443 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0447\u0438\u0441\u0435\u043b, \u0433\u0434\u0435 0 &#8212; \u044d\u0442\u043e \u0432\u043e\u0437\u0434\u0443\u0445, \u0430 \u0434\u0440\u0443\u0433\u043e\u0435 \u0447\u0438\u0441\u043b\u043e &#8212; \u0442\u0438\u043f \u0431\u043b\u043e\u043a\u0430\/\u0441\u0442\u0435\u043d\u044b. <\/p>\n<p>\u0412\u0441\u0435 \u0431\u043b\u043e\u043a\u0438 \u0438\u043c\u0435\u044e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 &#8212; <code>cell_size<\/code>. \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e <code>cell_size = 1<\/code>. \u0422\u0430\u043a\u0436\u0435 \u0431\u043b\u043e\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0446\u0435\u043b\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445 (\u043e\u043f\u044f\u0442\u044c \u0436\u0435, \u043a\u0430\u043a \u0438 \u0432 \u043c\u0430\u0439\u043d\u043a\u0440\u0430\u0444\u0442\u0435). <\/p>\n<p>\u041d\u0430 \u043a\u0430\u0440\u0442\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u0433\u0440\u043e\u043a. \u0418\u0433\u0440\u043e\u043a &#8212; \u044d\u0442\u043e \u0432\u044b\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u043d\u0430 \u0441\u0435\u0439 \u0440\u0430\u0437 \u043d\u0435\u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438, \u0442.\u043a. \u0438\u0433\u0440\u043e\u043a \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0435\u0442\u043e\u043a. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0445 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c <code>player_x<\/code>, <code>player_y<\/code> (\u0438\u043b\u0438 \u0436\u0435 <code>start_x<\/code>, <code>start_y<\/code>).<\/p>\n<p>\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u0430\u0440\u0442\u044b:<\/p>\n<p><code>[0] [1] [1] [1] [1] [1]\u00a0<br \/>[0] [1] [0] [0] [1] [1]\u00a0<br \/>[0] [1] [0] [0] [1] [1]\u00a0<br \/>[1] [1] [0] [0] [1] [0]\u00a0<br \/>[0] [0] [0] [1] [1] [0]\u00a0<br \/>[1] [1] [1] [1] [1] [0]<\/code><\/p>\n<p><em>\u043f\u043e\u043b\u0435 6 \u043d\u0430 6<\/em><\/p>\n<h2>\u041b\u0443\u0447<\/h2>\n<p>\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043f\u0441\u0435\u0432\u0434\u043e-3D? \u041f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0442 \u0438\u0433\u0440\u043e\u043a\u0430 \u043b\u0443\u0447\u0438 \u0438 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u043e\u0447\u043a\u0443 \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u043b\u0443\u0447\u0430 \u0441 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u0441\u0442\u0435\u043d\u043e\u0439. <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043f\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0435 <code>line_height = wall_height\/length_of_ray<\/code> \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0441\u043a\u0443 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 (\u0434\u0430\u043b\u0435\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 <code>line_height<\/code> \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u043e \u043d\u0430 <code>wall_height<\/code>).<\/p>\n<p>\u041b\u0443\u0447 \u2014 \u0432\u0430\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 3D \u0438\u043b\u0438 \u043f\u0441\u0435\u0432\u0434\u043e-3D \u0434\u0432\u0438\u0436\u043a\u043e\u0432. \u0421\u0430\u043c\u043e\u0433\u043e \u043b\u0443\u0447\u0430, \u043f\u043e \u0441\u0443\u0442\u0438, \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043b\u0438\u0448\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0435\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b. <\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043b\u0443\u0447\u0430 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 <code>ray_x<\/code> \u0438 <code>ray_y<\/code> (\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043b\u0443\u0447\u0430) \u0438 <code>ray_angle<\/code> (\u0443\u0433\u043e\u043b \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u0443\u0447\u0430). \u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u0434\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043b\u0443\u0447 \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a \u0431\u044b \u00ab\u0448\u0430\u0433\u0430\u0442\u044c\u00bb, \u0442\u043e \u0435\u0441\u0442\u044c \u0435\u0433\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f. <\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u043f\u0441\u0435\u0432\u0434\u043e-3D \u0434\u0432\u0438\u0436\u043a\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043b\u0443\u0447\u0430. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u043d \u0442\u0430\u043a: \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 <code>n<\/code> \u043d\u0430 <code>n<\/code> \u043a\u043b\u0435\u0442\u043e\u043a (\u043a\u0430\u0440\u0442\u0443), \u043a\u0430\u0436\u0434\u0430\u044f \u043a\u043b\u0435\u0442\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u0438\u0431\u043e \u0441\u0442\u0435\u043d\u043e\u0439, \u043b\u0438\u0431\u043e \u0432\u043e\u0437\u0434\u0443\u0445\u043e\u043c.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/b6f\/2a1\/a3a\/b6f2a1a3a4bf0a5650c13a9df3de430a.jpg\" width=\"360\" height=\"358\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b6f\/2a1\/a3a\/b6f2a1a3a4bf0a5650c13a9df3de430a.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0415\u0449\u0451 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u0433\u0440\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043b\u0443\u0447. \u041d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043b\u0443\u0447\u0430 \u2014 \u044d\u0442\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438\u0433\u0440\u043e\u043a\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u043b\u0443\u0447 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0434\u0432\u0430\u0436\u0434\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u0441 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0441\u0442\u0435\u043d\u043e\u0439. \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0447\u0442\u043e \u0438\u0433\u0440\u043e\u043a \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0438 \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u043a\u043b\u0435\u0442\u043e\u043a.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8ee\/251\/c7c\/8ee251c7c9f29aaef5c883e4e7fd3f7f.png\" width=\"714\" height=\"714\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8ee\/251\/c7c\/8ee251c7c9f29aaef5c883e4e7fd3f7f.png\"\/><\/figure>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434: \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u043b\u0438\u043d\u0443 \u043a\u043b\u0435\u0442\u043a\u0438 \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0435 Y <code>y_step = cell_size<\/code>. \u0428\u0430\u0433 \u043f\u043e X \u0442\u0443\u0442 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u0442\u0440\u0443\u0434\u043d\u043e \u043f\u0440\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0437\u043d\u0430\u044f, \u0447\u0442\u043e \u0442\u0430\u043d\u0433\u0435\u043d\u0441 \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043b\u0435\u0436\u0430\u0449\u0438\u0439 \u043a\u0430\u0442\u0435\u0442 \u043d\u0430 \u043f\u0440\u0438\u043b\u0435\u0436\u0430\u0449\u0438\u0439.\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043b\u044e\u0431\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u043c \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u043c, \u0433\u0434\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b X \u0438 Y \u2014 \u043a\u0430\u0442\u0435\u0442\u044b. <\/p>\n<p>\u041d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0442\u0430\u043d\u0433\u0435\u043d\u0441 \u0443\u0433\u043b\u0430 \u043b\u0443\u0447\u0430 \u2014 \u044d\u0442\u043e <code>y\/x<\/code> \u0438\u043b\u0438 \u0436\u0435 <code>y_step\/x_step<\/code>. \u041e\u0442\u0441\u044e\u0434\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 <code>x_step<\/code> (\u0448\u0430\u0433 \u043b\u0443\u0447\u0430 \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0435 X): <code>y_step\/x_step = tan(ray_angle) => x_step = y_step\/tan(ray_angle)<\/code>. <\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u0434\u0435\u043b\u0430\u044f \u0448\u0430\u0433, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043b\u0438 \u043b\u0443\u0447 \u0432 \u043a\u043b\u0435\u0442\u043a\u0435 \u0441\u043e \u0441\u0442\u0435\u043d\u043e\u0439, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0438\u043d\u0434\u0435\u043a\u0441 \u043a\u043b\u0435\u0442\u043a\u0438 \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u043b\u0443\u0447\u0430 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044f \u0435\u0433\u043e \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0438\u0437 \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043a\u0430\u0440\u0442\u044b.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/42d\/18d\/13c\/42d18d13ce274d1faf454b3a1e66958b.jpg\" width=\"720\" height=\"661\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/42d\/18d\/13c\/42d18d13ce274d1faf454b3a1e66958b.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0437\u0430\u0445\u043e\u0434\u0435 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0451 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e \u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c, \u043d\u043e \u0434\u043b\u044f X, \u0442\u043e \u0435\u0441\u0442\u044c <code>x_step = cell_size, y_step\/x_step = tan(ray_angle) => y_step = x_step * tan(ray_angle)<\/code>.\u00a0<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/551\/317\/11a\/55131711a83dcd23fc2ec7f965bbcb2b.jpg\" width=\"690\" height=\"661\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/551\/317\/11a\/55131711a83dcd23fc2ec7f965bbcb2b.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0410 \u0435\u0441\u043b\u0438 \u0438\u0433\u0440\u043e\u043a \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0435 \u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0438 \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u043a\u043b\u0435\u0442\u043e\u043a? \u0422\u0443\u0442 \u0442\u043e\u0436\u0435 \u043d\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043f\u043e Y \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c Y \u0446\u0435\u043b\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043b\u0443\u0447 \u0431\u044b\u043b \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0438\u043b\u0438 \u043d\u0438\u0436\u043d\u0435\u043c \u0431\u043e\u0440\u0442\u0438\u043a\u0435 \u043a\u043b\u0435\u0442\u043a\u0438.<\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u0443\u0447\u0430\u0439 \u0441 \u0432\u0435\u0440\u0445\u043d\u0438\u043c \u0431\u043e\u0440\u0442\u0438\u043a\u043e\u043c: Y \u0431\u0443\u0434\u0435\u0442 \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0431\u043e\u0440\u0442\u0438\u043a\u0435, \u0435\u0441\u043b\u0438 \u043c\u044b \u043e\u043a\u0440\u0443\u0433\u043b\u0438\u043c \u0435\u0433\u043e \u0432 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443, <code>new_y = ceil(ray_y)<\/code>. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 X. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f Y: <code>new_y - ray_y<\/code>. \u041e\u0442\u0441\u044e\u0434\u0430, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u043b\u044e\u0431\u0438\u043c\u043e\u0433\u043e \u0442\u0430\u043d\u0433\u0435\u043d\u0441\u0430, \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f X: <code>(new_y - ray_y) \/ tan(ray_angle)<\/code>. \u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043b\u0443\u0447\u0430 \u043f\u043e X (\u0432\u0435\u0434\u044c \u043f\u043e Y \u043c\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u043c). \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u0432 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 X \u043a \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e.<\/p>\n<p>\u0421\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 \u0442\u043e\u0436\u0435: <code>new_x = ray_x + (new_y - ray_y) \/ tan(ray_angle)<\/code>. \u0414\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0432\u043e\u0442 \u0444\u043e\u0440\u043c\u0443\u043b\u044b \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0441\u043b\u0443\u0447\u0430\u0435\u0432: <code>new_x = ceil(ray_x)<\/code>, <code>new_y = ray_y + (new_x - ray_x) \/ tan(ray_angle)<\/code>.<\/p>\n<p>\u041f\u043e \u0441\u043b\u043e\u0432\u0430\u043c, \u0441\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f, \u0440\u0438\u0441\u0443\u0435\u043c \u043f\u043e\u043b\u043e\u0441\u043a\u0443 \u0438&#8230; \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0432\u0435\u0434\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043b\u0438\u0448\u044c \u043e\u0434\u043d\u0430 \u043f\u043e\u043b\u043e\u0441\u043a\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/598\/e2d\/490\/598e2d49067dbe61a6902d874f091bc9.jpg\" width=\"720\" height=\"1371\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/598\/e2d\/490\/598e2d49067dbe61a6902d874f091bc9.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0414\u043b\u044f \u043f\u0441\u0435\u0432\u0434\u043e-3D \u0442\u0430\u043a\u0438\u0445 \u043f\u043e\u043b\u043e\u0441\u043e\u043a \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043e\u043a\u043e\u043b\u043e \u0441\u0442\u0430, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u0430\u044f \u043f\u043e\u043b\u043e\u0441\u043a\u0430 \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0443 \u043f\u0440\u043e\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0443 \u043b\u0443\u0447\u043e\u043c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/148\/f96\/361\/148f96361c47f23c44efba92362eca8e.jpg\" width=\"720\" height=\"1329\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/148\/f96\/361\/148f96361c47f23c44efba92362eca8e.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0423\u0433\u043e\u043b \u0432\u0441\u0435\u0445 \u043b\u0443\u0447\u0435\u0439 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u043d\u0430 ~1 \u0433\u0440\u0430\u0434\u0443\u0441, \u043d\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043a\u0430\u043a \u0443\u0433\u043e\u0434\u043d\u043e. \u0418 \u0432\u0443\u0430\u043b\u044f! &#8212; \u044d\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 3D. \u0422\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0442\u0430\u043a.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/ee6\/7a4\/581\/ee67a458147ef137031579a638d47040.jpg\" width=\"720\" height=\"1381\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ee6\/7a4\/581\/ee67a458147ef137031579a638d47040.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0410 \u043d\u0435 \u0442\u0430\u043a \u0442\u0443\u0442 \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u044d\u0444\u0444\u0435\u043a\u0442 \u0440\u044b\u0431\u044c\u0435\u0433\u043e \u0433\u043b\u0430\u0437\u0430. \u0427\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u044d\u0442\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0442\u0440\u0443\u0434\u043d\u043e: \u043d\u0443\u0436\u043d\u043e <code>length_of_ray = length_of_ray * cos(center_ray_angle - ray_angle)<\/code>, \u0433\u0434\u0435 <code>center_ray_angle<\/code> \u2014 \u044d\u0442\u043e \u0443\u0433\u043e\u043b \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0437\u0433\u043b\u044f\u0434\u0430 \u0438\u0433\u0440\u043e\u043a\u0430, \u0430 <code>ray_angle<\/code> \u2014 \u044d\u0442\u043e \u0443\u0433\u043e\u043b \u043b\u0443\u0447\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/2db\/2c8\/104\/2db2c8104c2d33b6a544114ceedd8514.jpg\" width=\"720\" height=\"1369\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2db\/2c8\/104\/2db2c8104c2d33b6a544114ceedd8514.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u041a\u043e\u0434: https:\/\/github.com\/xdettlaff\/mindustry-3d-engine\/tree\/main\/parts\/clean_ray.mlog<\/p>\n<h2>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0434\u0432\u0438\u0436\u043a\u0430<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0431\u043b\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/5de\/abc\/596\/5deabc596c739f2d0a9d1ef1de228369.jpg\" width=\"208\" height=\"112\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5de\/abc\/596\/5deabc596c739f2d0a9d1ef1de228369.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0412\u043e\u0442 \u0435\u0433\u043e \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434:<\/p>\n<p><code>widthmap = 13\u00a0 \/\/ \u0437\u0430\u0434\u0430\u0435\u043c \u0448\u0438\u0440\u0438\u043d\u0443 \u043a\u0430\u0440\u0442\u044b \u0432 13 \u0431\u043b\u043e\u043a\u043e\u0432 (\u043f\u043e\u0437\u0436\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043c\u0435\u043d\u044f\u0442\u044c \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435)<br \/>FOV = 100\u00a0 \/\/ \u0443\u0433\u043e\u043b \u043e\u0431\u0437\u043e\u0440\u0430<br \/>Sensitivity = 100\u00a0 \/\/ \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u0443\u0440\u0441\u043e\u0440\u0430<br \/>Stepsize = 0.333333333 \/\/ \u0434\u043b\u0438\u043d\u0430 \u0448\u0430\u0433\u0430<br \/>wall_height = 0.67 \/\/ \u0432\u044b\u0441\u043e\u0442\u0430 \u0441\u0442\u0435\u043d\u044b<br \/>AbsError = 0.001 \/\/ \u0440\u0443\u0434\u0438\u043c\u0435\u043d\u0442<br \/>cell_size = 1 \/\/ \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043b\u0435\u0442\u043a\u0438(\u043e\u043d \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u0435\u043d \u0435\u0434\u0438\u043d\u0438\u0446\u0435<br \/>texture_size = 7 \/\/ \u0448\u0438\u0440\u0438\u043d\u0430(\u0438 \u0434\u043b\u0438\u043d\u0430) \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445<br \/>shadow_k = 40 \/\/ \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0437\u0430\u0442\u0435\u043c\u043d\u0435\u043d\u0438\u044f shadow_distance = 2 \/\/ \u0440\u0430\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0442\u0435\u043d\u0438<br \/>max_shadow = 200 \/\/ \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430\u044f \u0442\u0435\u043d\u044c<br \/>write widthmap to cell1 at 0 \/\/ \u043d\u0438\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0435\u00a0<br \/>write texture_size to cell1 at 1<br \/>write Stepsize to cell1 at 10<br \/>write FOV to cell1 at 11<br \/>write Sensitivity to cell1 at 12<br \/>write cell_size to cell1 at 14<br \/>write wall_height to cell1 at 17<br \/>write shadow_k to cell1 at 19<br \/>write shadow_distance to cell1 at 20<br \/>write max_shadow to cell1 at 21<\/code><\/p>\n<p>\u041a\u043e\u0434: https:\/\/github.com\/xdettlaff\/mindustry-3d-engine\/tree\/main\/parts\/settings.mlog<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c <em>\u0431\u043b\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u0438<\/em> (\u043e\u043d \u0432\u043c\u0435\u0449\u0430\u0435\u0442 512 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439), <em>\u0433\u0438\u043f\u0435\u0440\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440<\/em> \u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0438\u0441\u043f\u043b\u0435\u0439.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/56c\/d20\/6ec\/56cd206ec830d1d51b752fe2f09f448f.jpg\" width=\"374\" height=\"248\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/56c\/d20\/6ec\/56cd206ec830d1d51b752fe2f09f448f.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0411\u043b\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0445\u0440\u0430\u043d\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u043a\u0430\u0440\u0442\u0443 \u0432 \u0432\u0438\u0434\u0435 \u0434\u0432\u0443\u0445\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441 \u044d\u0442\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0437\u043d\u0430\u044f X \u0438 Y \u0431\u043b\u043e\u043a\u0430 \u0438 \u0448\u0438\u0440\u0438\u043d\u0443 \u043a\u0430\u0440\u0442\u044b, \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0444\u043e\u0440\u043c\u0443\u043b\u0443 <code>i = y * widthmap + x<\/code>:<\/p>\n<p><code>i = y * widthmap<br \/>i = i + x<\/code>\u00a0<\/p>\n<p>\u0418\u043b\u0438<\/p>\n<p><code>op mul i y widthmap<br \/>op add i i x<\/code><\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443\u043b\u0443 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f X \u0438 Y \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443 i:<\/p>\n<p><code>x = i % widthmap<br \/>y = i \/\/ widthmap<\/code><\/p>\n<p>\u0418\u043b\u0438<\/p>\n<p><code>op mod x i widthmap<br \/>op idiv y i widthmap<\/code><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0447\u043d\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0434\u043b\u044f \u043c\u0438\u043d\u0438-\u043a\u0430\u0440\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435.<\/p>\n<p>\u041a\u043e\u0440\u043e\u0442\u043a\u043e \u043e \u043a\u043e\u0434\u0435:<\/p>\n<p>1. \u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0438\u0445 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435: \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0440\u0442\u044b, \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430, \u0432\u0435\u043a\u0442\u043e\u0440 \u0432\u0437\u0433\u043b\u044f\u0434\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 (\u043a\u043e\u0441\u0438\u043d\u0443\u0441 \u0438 \u0441\u0438\u043d\u0443\u0441), \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0438 \u0442.\u0434.<br \/>2. \u0417\u0430\u0434\u0430\u0451\u043c \u0442\u043e\u043b\u0449\u0438\u043d\u0443 \u0440\u0438\u0441\u0443\u0435\u043c\u043e\u0439 \u043b\u0438\u043d\u0438\u0438 \u0438 \u0441\u0442\u0438\u0440\u0430\u0435\u043c \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u043a\u0430\u0434\u0440.<br \/>3. \u0426\u0438\u043a\u043b \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0431\u043b\u043e\u043a\u043e\u0432 \u0438\u0437 \u0431\u0430\u043d\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 (\u0442\u0443\u0442 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u0441\u0442\u044b\u043b\u044c)<br \/>4. \u041e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430.<\/p>\n<p><em>\u0412\u0430\u0436\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <\/em><code>draw<\/code><em>, \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u0438 \u043b\u0438\u0448\u044c \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u0443\u0444\u0435\u0440, \u0430 \u0432\u043e\u0442 \u0443\u0436\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <\/em><code>drawflash<\/code><em> \u0437\u0430 \u0440\u0430\u0437 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0451 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u043f\u043e\u043c\u0435\u0445\u0430: \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u0444\u0438\u0433\u0443\u0440 (\u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 170) \u0438 \u0435\u0441\u043b\u0438 \u043e\u043d \u0437\u0430\u0431\u044c\u0451\u0442\u0441\u044f, \u0442\u043e \u043f\u0440\u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c \u0444\u0438\u0433\u0443\u0440, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u0432\u0440\u0435\u043c\u044f \u0432\u0441\u0451 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c. \u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0444\u0438\u0433\u0443\u0440 \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <\/em><code>dr<\/code><em>:<\/em><\/p>\n<p><code>read widthmap = cell1 at 0 \/\/ \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0431\u043b\u043e\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0438\u0445 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 (\u0442\u0443\u0442 \u0447\u0438\u0442\u0430\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0440\u0442\u044b)<br \/>\/\/ \u0442\u0443\u0442 \u0447\u0442\u043e - \u0442\u043e \u043d\u0435\u043d\u0443\u0436\u043d\u043e\u0435 \u0431\u044b\u043b\u043e<br \/>\/\/ \u0442\u0443\u0442 \u0447\u0442\u043e - \u0442\u043e \u043d\u0435\u043d\u0443\u0436\u043d\u043e\u0435 \u0431\u044b\u043b\u043e<br \/>read xperson = cell1 at 4 \/\/ \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438\u0433\u0440\u043e\u043a\u0430<br \/>read yperson = cell1 at 5<br \/>read cos = cell1 at 6 \/\/ \u043a\u043e\u0441\u0438\u043d\u0443\u0441 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0437\u0433\u043b\u044f\u0434\u0430<br \/>read sin = cell1 at 7 \/\/ \u0441\u0438\u043d\u0443\u0441 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0437\u0433\u043b\u044f\u0434\u0430<br \/>read xrect = cell18 at 8 \/\/ \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043a\u0430\u0440\u0442\u044b<br \/>read yrect = cell1 at 9<br \/>maxnum = widthmap ^ 2 \/\/ \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u043b\u043e\u043a\u043e\u0432 \u043d\u0430 \u0432\u0441\u0435\u0439 \u043a\u0430\u0440\u0442\u0435 (\u0442.\u043a \u043e\u043d\u0430 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u0430\u044f, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0437\u0432\u043e\u0434\u0438\u043c \u0432 \u043a\u0432\u0430\u0434\u0440\u0430\u0442 \u0435\u0435 \u0440\u0430\u0437\u043c\u0435\u0440)<br \/>mul = 88 \/ widthmap \/\/\u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445 \u043d\u0430 \u043c\u0438\u043d\u0438-\u043a\u0430\u0440\u0442\u0435<br \/>draw stroke 1 \/\/ \u0437\u0430\u0434\u0430\u0435\u043c \u0442\u043e\u043b\u0449\u0438\u043d\u0443 \u043b\u0438\u043d\u0438\u0438 \u0432 1 \u043f\u0438\u043a\u0441\u0435\u043b\u044c<br \/>draw clear 0 0 0 \/\/ \u043e\u0447\u0438\u0449\u0430\u0435\u043c \u044d\u043a\u0440\u0430\u043d \u0427\u0451\u0440\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c<br \/>i = 0 \/\/ \u0441\u0442\u0430\u0432\u0438\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0446\u0438\u043a\u043b\u0430 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438<br \/>dr = 0 \/\/ \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0444\u0438\u0433\u0443\u0440 \u0432 \u0431\u0443\u0444\u0435\u0440\u0435 \u043e\u0431\u043c\u0435\u043d\u0430<br \/>read status = bank1 at i \/\/ \u0447\u0438\u0442\u0430\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0431\u043b\u043e\u043a\u0430 \u0438\u0437 \u0431\u0430\u043d\u043a\u0430 \u043a\u0430\u0440\u0442\u044b (\u0432\u043e\u0437\u0434\u0443\u0445 \u0438\u043b\u0438 \u0441\u0442\u0435\u043d\u0430)<br \/>x = i % widthmap \/\/ \u0442\u0443\u0442 \u0444\u043e\u0440\u043c\u0443\u043b\u0430 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0431\u043b\u043e\u043a\u0430 \u0438\u0437 \u0435\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0432 \u0431\u043b\u043e\u043a\u0435 \u043f\u0430\u043c\u044f\u0442\u0438<br \/>y = i \/\/ widthmap\u00a0<br \/>x = x * mul \/\/ \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0431\u043b\u043e\u043a\u0430 \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435<br \/>y = y * mul<br \/>draw color 0 255 0 128 \/\/ \u0437\u0430\u0434\u0430\u0442\u044c \u0437\u0435\u043b\u0435\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0440\u0438\u0441\u0443\u044e\u0449\u0438\u043c\u0441\u044f \u0444\u0438\u0433\u0443\u0440\u0430\u043c \u0444\u0438\u0433\u0443\u0440\u0430\u043c<br \/>jump 24, if status == 0 \/\/ \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u0431\u043b\u043e\u043a \u0432\u043e\u0437\u0434\u0443\u0445\u0430, \u0442\u043e \u043c\u044b \u043f\u0435\u0440\u0435\u043f\u0440\u044b\u0433\u0438\u0432\u0430\u0435\u043c \u0447\u0430\u0441\u0442\u044c \u0441 \u0435\u0433\u043e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u043e\u0439<br \/>draw rect x y mul mul \/\/ \u0440\u0438\u0441\u0443\u0435\u043c \u0431\u043b\u043e\u043a<br \/>dr = dr + 2 \/\/ \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0444\u0438\u0433\u0443\u0440 \u043d\u0430 2(\u0442.\u043a \u043c\u044b 2 \u0440\u0430\u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 draw)<br \/>jump 27, if dr &lt; 170 \/\/ \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0435 \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 170 \u0444\u0438\u0433\u0443\u0440, \u0442\u043e \u043f\u0435\u0440\u0435\u043f\u0440\u044b\u0433\u0438\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u043d\u0443\u044e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435<br \/>drawflush display1 \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u0444\u0438\u0433\u0443\u0440\u044b<br \/>dr = 0 \/\/ \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0444\u0438\u0433\u0443\u0440<br \/>i = i + 1 \/\/ \u0434\u043e\u0431\u043e\u0432\u043b\u044f\u0435\u043c 1 \u043a \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0443 \u0446\u0438\u043a\u043b\u0430<br \/>jump 15, if i &lt; maxnum \/\/ \u043f\u0440\u044b\u0433\u0430\u0435\u043c \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u0446\u0438\u043a\u043b\u0430, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0438 \u0432\u0441\u0435 \u0431\u043b\u043e\u043a\u0438<br \/>x = xperson * mul \/\/ \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438\u0433\u0440\u043e\u043a\u0430 \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435<br \/>y = yperson * mul<br \/>cosm = cos * 255 \/\/ \u0432\u0435\u043a\u0442\u043e\u0440 \u0434\u043b\u0438\u043d\u043e\u0439 \u0432 255 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u043f\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0432\u0437\u0433\u043b\u044f\u0434\u0430 \u0438\u0433\u0440\u043e\u043a\u0430<br \/>sinm = sin * 255<br \/>xm = x + cosm \/\/ \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043a\u043e\u043d\u0446\u0430 \u043b\u0438\u043d\u0438\u0438 \u0432\u0437\u0433\u043b\u044f\u0434\u0430<br \/>ym = y + sinm<br \/>draw color 0 255 0 255 \/\/ \u0437\u0430\u0434\u0430\u0435\u043c \u0437\u0435\u043b\u0435\u043d\u044b\u0439 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 \u0446\u0432\u0435\u0442<br \/>draw poly x y 24 5 0 \/\/ \u0440\u0438\u0441\u0443\u0435\u043c \u043a\u0440\u0443\u0436\u043e\u0447\u0435\u043a(\u0438\u0433\u0440\u043e\u043a\u0430) \u0432 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445 \u0438\u0433\u0440\u043e\u043a\u0430<br \/>draw line x y xm ym \/\/ \u0440\u0438\u0441\u0443\u0435\u043c \u0434\u043b\u0438\u043d\u043d\u0443\u044e \u043b\u0438\u043d\u0438\u044e(\u0434\u043b\u0438\u043d\u043d\u0435\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430) \u0432\u0434\u043e\u043b\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0437\u0433\u043b\u044f\u0434\u0430 \u0438\u0433\u0440\u043e\u043a\u0430<br \/>x = xcross * mul<br \/>y = ycross * mul<br \/>draw color 255 0 0 255<br \/>draw poly x y 24 5 0<br \/>xrect = xrect * mul \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043a\u0430\u0440\u0442\u044b \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435<br \/>yrect = yrect * mul<br \/>draw stroke 3 \/\/ \u0442\u043e\u043b\u0449\u0438\u043d\u0430 \u043b\u0438\u043d\u0438\u0438 - 3<br \/>draw color 0 255 0 255 \/\/ \u0437\u0430\u0434\u0430\u0435\u043c \u0437\u0435\u043b\u0435\u043d\u044b\u0439 \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 \u0446\u0432\u0435\u0442<br \/>draw lineRect xrect yrect mul mul\u00a0 \u0440\u0438\u0441\u0443\u0435\u043c \u043d\u0435\u0437\u0430\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a \u0432 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043a\u0430\u0440\u0442\u044b<br \/>drawflush display1 \/\/ \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0432\u0441\u0451<\/code><\/p>\n<p>\u041a\u043e\u0434: https:\/\/github.com\/xdettlaff\/mindustry-3d-engine\/tree\/main\/parts\/drawmap.mlog<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u0448\u0430 \u043a\u0430\u0440\u0442\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0431\u043b\u043e\u043a\u043e\u0432 \u0432\u043e\u0437\u0434\u0443\u0445\u0430, \u0430 \u0438\u0433\u0440\u043e\u043a \u0441\u0442\u043e\u0438\u0442 \u0432 \u043d\u0443\u043b\u0435\u0432\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445 \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043f\u043e\u0434 \u0443\u0433\u043b\u043e\u043c 0\u00b0.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0435\u0449\u0451 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u0442\u0443\u0440\u0435\u043b\u044c \u0438 \u043f\u0430\u0440\u0443 \u043a\u043d\u043e\u043f\u043e\u043a:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/480\/dd8\/30a\/480dd830ad6f881fb5dad0bf2629317a.jpg\" width=\"476\" height=\"638\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/480\/dd8\/30a\/480dd830ad6f881fb5dad0bf2629317a.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0422\u0443\u0440\u0435\u043b\u044c \u0437\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432\u0432\u043e\u0434\u0430 \u0443\u0433\u043b\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0437\u0433\u043b\u044f\u0434\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 (\u044d\u0434\u0430\u043a\u0430\u044f \u043c\u044b\u0448\u043a\u0430), \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u0437\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043b\u0430\u0432\u043d\u043e \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0437\u0433\u043b\u044f\u0434\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430. \u041e\u0434\u043d\u0430\u043a\u043e, \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u044f \u0442\u0443\u0440\u0435\u043b\u044c, \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u043b\u0438\u0448\u044c \u043c\u0435\u0441\u0442\u043e, \u043a\u0443\u0434\u0430 \u043e\u043d\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0438 \u0441\u0442\u0440\u0435\u043b\u044f\u0435\u0442 \u043b\u0438 \u043e\u043d\u0430.<\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0447\u0442\u043e\u0431\u044b \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443, \u0438\u0433\u0440\u0430\u044e\u0449\u0435\u043c\u0443 \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435, \u0431\u044b\u043b\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043c\u0435\u0440\u0443 (\u043c\u0435\u043d\u044f\u0442\u044c \u0443\u0433\u043e\u043b \u0432\u0437\u0433\u043b\u044f\u0434\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 \u043e\u0442 1-\u0433\u043e \u043b\u0438\u0446\u0430), \u043d\u0443\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0443\u0433\u043e\u043b \u043c\u0435\u043d\u044f\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0441\u0442\u0440\u0435\u043b\u044c\u0431\u0435 \u0442\u0443\u0440\u0435\u043b\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0438\u0434\u0438\u0442 \u0438\u0433\u0440\u043e\u043a, \u0442\u043e \u0435\u0441\u0442\u044c \u043a\u043e\u0433\u0434\u0430 \u0438\u0433\u0440\u043e\u043a \u0437\u0430\u0436\u0430\u043b \u043f\u0430\u043b\u0435\u0446 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0438 \u043d\u0430\u0447\u0430\u043b \u0438\u043c \u0432\u0435\u0441\u0442\u0438, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d \u0443\u0433\u043e\u043b \u0432\u0437\u0433\u043b\u044f\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0440\u044b\u0432\u043a\u0430\u043c\u0438, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0436\u0430\u043b\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443, \u0441\u0438\u0434\u044f \u0432 \u0442\u0443\u0440\u0435\u043b\u0438. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b, \u0433\u0434\u0435 \u0438\u0433\u0440\u043e\u043a \u043d\u0430\u0447\u0430\u043b \u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b \u0441\u0442\u0440\u0435\u043b\u044c\u0431\u0443 \u0432 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u0437\u0430\u0436\u0430\u0442\u0438\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0437\u0433\u043b\u044f\u0434\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 \u0440\u0435\u0437\u043a\u043e \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c. \u0414\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u0444\u043b\u0430\u0433.<\/em><\/p>\n<p><em>\u0412 \u0440\u043e\u043b\u0438 \u0444\u043b\u0430\u0433\u0430 \u0443 \u043d\u0430\u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f. \u041a\u043e\u0433\u0434\u0430 \u0444\u043b\u0430\u0433 \u043f\u043e\u0434\u043d\u044f\u0442, \u0442\u043e \u043e\u043d\u0430 = 1, \u0435\u0441\u043b\u0438 \u043e\u043f\u0443\u0449\u0435\u043d, \u0442\u043e \u043e\u043d\u0430 = 0. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e 2 \u0444\u043b\u0430\u0433\u0430: \u0444\u043b\u0430\u0433 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0442\u0440\u0435\u043b\u044c\u0431\u044b (\u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430) \u0438 \u0444\u043b\u0430\u0433 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430 (\u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430).<\/em><\/p>\n<p><em>\u0414\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043d\u0430\u043c \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u0431\u044b\u043b\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043c\u0435\u0440\u0443.<\/em><\/p>\n<p>\u0412\u043e\u0442 \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430:<\/p>\n<p><code>read widthmap in cell1 at 0<br \/>read step in cell1 at 10\u00a0 \/\/ \u0434\u043b\u0438\u043d\u0430 \u0448\u0430\u0433\u0430 (\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f step)<br \/>read sensitivity = cell1 at 11\u00a0 \/\/ \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u0443\u0440\u0441\u043e\u0440\u0430<br \/>mul = 176 \/ widthmap<br \/>mul = 176 \/ widthmap<br \/>shoot = @shooting in arc1\u00a0 \/\/ \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u0442\u0430\u0442\u0443\u0441 \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430 \u0442\u0443\u0440\u0435\u043b\u0438 (\u0441\u0442\u0440\u0435\u043b\u044f\u0435\u0442 \u043d\u0435 \u0441\u0442\u0440\u0435\u043b\u044f\u0435\u0442) (1 \u0438\u043b\u0438 0) \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e shoot<br \/>jump 24, if shoot == false\u00a0 \/\/ \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0431\u043b\u043e\u043a \u043a\u043e\u0434\u0430 \u043d\u0438\u0436\u0435 \u0434\u043e 24 \u0441\u0442\u0440\u043e\u043a\u0438, \u0435\u0441\u043b\u0438 \u0442\u0443\u0440\u0435\u043b\u044c \u043d\u0435 \u0441\u0442\u0440\u0435\u043b\u044f\u0435\u0442 (\u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0438\u0439 \u0432\u044b\u0441\u0442\u0440\u0435\u043b)<br \/>shootX = @shootX in arc1\u00a0 \/\/ \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u0425 \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430 \u0442\u0443\u0440\u0435\u043b\u0438 \u0432 \u0431\u043b\u043e\u043a\u0430\u0445 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u041c\u0414<br \/>displayX = @x in arc1\u00a0 \/\/ \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u0425 \u0432 \u0431\u043b\u043e\u043a\u0430\u0445 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u041c\u0414<br \/>xcursor = shootX - displayX\u00a0 \/\/ \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430 \u0432 \u0431\u043b\u043e\u043a\u0430\u0445 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0438\u0441\u043f\u043b\u0435\u044f<br \/>op mul xcursor = xcursor * 29.33333\u00a0 \/\/ \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430 \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445 \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435<br \/>xcursor = xcursor + 88\u00a0 \/\/ \u0438\u0449\u0435\u043c\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430 \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0446\u0435\u043d\u0442\u0440\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f<br \/>xcursor = xcursor \/ -176\u00a0 \/\/ \u0434\u0435\u043b\u0438\u043c \u043d\u0430 -178<br \/>op mul xcursor = xcursor * sensitivity\u00a0 \/\/ \u0443\u043c\u043d\u043e\u0436\u0430\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 \u043d\u0430 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<br \/>jump 17, if startshoot != 0\u00a0 \/\/ \u0435\u0441\u043b\u0438 \u0444\u043b\u0430\u0433 startshoot (\u043c\u044b\u00a0 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043d\u0430\u0447\u0430\u043b\u0438 \u0441\u0442\u0440\u0435\u043b\u044f\u0442\u044c) \u043f\u043e\u0434\u043d\u044f\u0442, \u0442\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c 2 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0438\u0436\u0435<br \/>xstartcursor = xcursor\u00a0 \/\/ \u0437\u0430\u0434\u0430\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0441\u0442\u0440\u0435\u043b\u044c\u0431\u044b<br \/>startshoot = 1 \/\/ \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u0444\u043b\u0430\u0433<br \/>xcursor = xcursor - xstartcursor\u00a0 \/\/ \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0441\u0442\u0440\u0435\u043b\u044c\u0431\u044b<br \/>xcursor = xcursor + xcursorlast\u00a0 \/\/ \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u043e\u0447\u043a\u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0442\u0440\u0435\u043b\u044c\u0431\u044b \u043a \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430<br \/>cos = cos(xcursor)\u00a0 \/\/ \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0441\u0438\u043d\u0443\u0441 \u0438 \u043a\u043e\u0441\u0438\u043d\u0443\u0441 \u0443\u0433\u043b\u0430, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u0443\u0433\u043e\u043b - \u044d\u0442\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 xcursor<br \/>sin = sin(xcursor)<br \/>angle = xcursor<br \/>stopshoot = 0\u00a0 \/\/ \u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0444\u043b\u0430\u0433 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430(\u0432\u0435\u0434\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043a\u043e\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0441\u0442\u0440\u0435\u043b\u044c\u0431\u0430 \u0438\u0434\u0435\u0442)<br \/>jump 28\u00a0 \/\/ \u043f\u0435\u0440\u0435\u043f\u0440\u044b\u0433\u0438\u0432\u0430\u0435\u043c \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u0432 \u0444\u043b\u0430\u0433\u043e\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430<br \/>jump 28, if stopshoot != 0\u00a0 \/\/ \u0435\u0441\u043b\u0438 \u0444\u043b\u0430\u0433 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430 \u043e\u043f\u0443\u0449\u0435\u043d(\u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438 \u0441\u0442\u0440\u0435\u043b\u044c\u0431\u0443), \u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u043e\u0434 \u043d\u0438\u0436\u0435, \u0430 \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u043d\u044f\u0442 - \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c<br \/>xcursorlast = xcursor\u00a0 \/\/ \u0437\u0430\u0434\u0430\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430<br \/>stopshoot = 1\u00a0 \/\/ \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u0444\u043b\u0430\u0433 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0441\u0442\u0440\u0435\u043b\u0430<br \/>startshoot = 0\u00a0 \/\/ \u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0444\u043b\u0430\u0433 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0442\u0440\u0435\u043b\u044c\u0431\u044b<br \/>print \"buttons\"\u00a0 \/\/ \u0440\u0443\u0434\u0438\u043c\u0435\u043d\u0442<br \/>xstep = cos * step\u00a0 \/\/ \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0432\u0435\u043a\u0442\u043e\u0440 \u043e\u0434\u043d\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u0432\u043f\u0435\u0440\u0451\u0434<br \/>ystep = sin * step<br \/>read xperson = cell1 at 4\u00a0 \/\/ \u0447\u0438\u0442\u0430\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b\u00a0<br \/>read yperson = cell1 at 5<br \/>up = @enabled in switch1\u00a0 \/\/ \u0447\u0438\u0442\u0430\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432 \u043a\u043d\u043e\u043f\u043a\u0435 \"\u0432\u0432\u0435\u0440\u0445\"<br \/>jump 38, if up == false\u00a0 \/\/ \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435, \u0435\u0441\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0430 \u043d\u0435 \u043d\u0430\u0436\u0430\u0442\u0430<br \/>@enabled in switch1 = 0\u00a0 \/\/ \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443<br \/>xperson = xperson + xstep\u00a0 \/\/ \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 \u0432\u0435\u043a\u0442\u043e\u0440 \u0445\u043e\u0434\u044c\u0431\u044b \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430<br \/>yperson = yperson + ystep<br \/>left = @enabled in switch2\u00a0 \/\/ \u0434\u0430\u043b\u0435\u0435 \u0442\u0430\u043a\u0430\u044f \u0436\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043a\u0430\u043a \u0438 \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \"\u0432\u0432\u0435\u0440\u0445\"<br \/>jump 43, if left == false<br \/>xperson = xperson - ystep\u00a0 \/\/\u0442\u0443\u0442 \u043c\u044b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044f\u0435\u043c \u0437\u043d\u0430\u043a\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436 \u0434\u0432\u0438\u0433\u0430\u043b\u0441\u044f \u043d\u0435 \u0432\u043f\u0435\u0440\u0451\u0434, \u0430\u00a0<br \/>yperson = yperson + xstep<br \/>@enabled in switch2 = 0<br \/>right = @enabled in switch3\u00a0 \/\/ \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \"\"<br \/>jump 48 equal right false<br \/>xperson = xperson + ystep<br \/>yperson = yperson - xstep<br \/>@enabled in switch3 = 0<br \/>down = @enabled in switch4\u00a0 \/\/ \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \"\"<br \/>jump 53 equal down false<br \/>xperson = xperson - xstep<br \/>yperson = yperson - ystep<br \/>@enabled in switch4 = 0<br \/>START = @enabled in switch5\u00a0 \/\/ \u043a\u043d\u043e\u043f\u043a\u0430, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0430\u044f \u0437\u0430 \u0437\u0430\u043f\u0443\u0441\u043a (\u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0445\u0435\u043c\u044b) (\u0435\u0441\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u0430- \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 - \u0442\u043e \u043d\u0435\u0442, \u0435\u0441\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u043a\u043b. \u0432\u043a\u043b., \u0442\u043e \u043c\u044b \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0434\u0432\u0438\u0436\u043e\u043a)<br \/>jump 56, if down == 1\u00a0 \/\/ \u0437\u0430\u043f\u0438\u0448\u0435\u043c 0 \u0432 \u044f\u0447\u0435\u0439\u043a\u0443 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u0435\u0441\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0430 \"\u0441\u0442\u0430\u0440\u0442\" \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0430<br \/>write 0 to cell1 at 15<br \/>yperson = min(yperson, widthmap)\u00a0 \/\/ \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b<br \/>xperson = min(xperson, widthmap)<br \/>yperson = max(yperson, 0)<br \/>xperson = max(xperson, 0)<br \/>write xperson to cell1 at 4\u00a0 \/\/ \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435\u00a0 \u0432 \u044f\u0447\u0435\u0439\u043a\u0443<br \/>write yperson to cell1 at 5<br \/>write cos to cell1 at 6<br \/>write sin to cell1 at 7<br \/>write START ro cell1 at 16<br \/>angle = angle % 360<br \/>write angle to cell1 at 13<\/code><\/p>\n<p>\u041a\u043e\u0434: https:\/\/github.com\/xdettlaff\/mindustry-3d-engine\/tree\/main\/parts\/input.mlog<\/p>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0445\u043e\u0434\u0438\u0442\u044c \u043f\u043e \u043a\u0430\u0440\u0442\u0435 \u0438 \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043c\u0435\u0440\u0443<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043a\u0430\u0440\u0442\u044b, \u0434\u0430\u0431\u044b \u043b\u0435\u0433\u043a\u043e \u0435\u0451 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c 5 \u043a\u043d\u043e\u043f\u043e\u043a \u0438 \u0433\u0438\u043f\u0435\u0440\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/a0d\/ee6\/5ae\/a0dee65ae9f6c618b381499bd61fea7e.jpg\" width=\"488\" height=\"488\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a0d\/ee6\/5ae\/a0dee65ae9f6c618b381499bd61fea7e.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0435\u0433\u043e \u043a\u0430\u043a \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/4b7\/474\/32e\/4b747432eb4c3b8c5a6cf72d1797dab6.jpg\" width=\"544\" height=\"533\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4b7\/474\/32e\/4b747432eb4c3b8c5a6cf72d1797dab6.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u0418 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u043a\u0443\u0440\u0441\u043e\u0440 \u043f\u043e \u043c\u0438\u043d\u0438-\u043a\u0430\u0440\u0442\u0435 \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c\/\u0441\u0442\u0438\u0440\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0438.<\/p>\n<p><code>read widthmap = cell1 at 0<br \/>read xcell = cell1 at 8 \/\/ \u0447\u0438\u0442\u0430\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043a\u0443\u0440\u0441\u043e\u0440\u0430 (xcell \u0438 ycell)<br \/>read ycell = cell1 at 9<br \/>up = @enabled in switch1 \/\/ \u0434\u0430\u043b\u0435\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0438\u0437 4-\u0445 \u043a\u043d\u043e\u043f\u043e\u043a \u043f\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044e\u00a0<br \/>jump 7, if up == false<br \/>@enabled in switch1 = 0<br \/>ycell = ycell + 1<br \/>left = @enabled in switch2<br \/>jump 11, if left == false<br \/>xcell = xcell - 1<br \/>@enabled in switch2 = 0<br \/>right = @enabled in switch3<br \/>jump 15, if right == false<br \/>xcell = xcell + 1<br \/>@enabled in switch3 = 0<br \/>down = @enabled in switch4<br \/>jump 19, if down == false<br \/>ycell = ycell - 1<br \/>@enabled in switch4 = 0<br \/>status = @enabled in switch5 \/\/ \u044d\u0442\u0430 \u043a\u043d\u043e\u043f\u043a\u0430 \u043b\u0438\u0431\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043a\u043b\u0435\u0442\u043a\u0443 \u0432\u043e\u0437\u0434\u0443\u0445\u043e\u043c, \u043b\u0438\u0431\u043e \u0441\u0442\u0435\u043d\u043e\u0439<br \/>jump 22, if xcell >= 0 \/\/ \u0435\u0441\u043b\u0438 \u043a\u0443\u0440\u0441\u043e\u0440 \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u043f\u043e\u043b\u044f, \u0442\u043e \u043c\u044b \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c \u0432\u00a0<br \/>xcell = widthmap - 1<br \/>jump 24, if ycell >= 0<br \/>ycell = widthmap - 1<br \/>x = xcell % widthmap<br \/>y = ycell % widthmap<br \/>i = y * widthmap \/\/ \u0442\u0443\u0442 \u0444\u043e\u0440\u043c\u0443\u043b\u0430 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0432 \u0431\u0430\u043d\u043a\u0435 \u043a\u0430\u0440\u0442\u044b<br \/>i = i + x<br \/>write status to bank1 at i \/\/ \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 5\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043a\u0443\u0440\u0441\u043e\u0440\u043e\u043c \u0431\u043b\u043e\u043a<br \/>write x to cell1 at 8 \/\/ \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043a\u0443\u0440\u0441\u043e\u0440\u0430<br \/>write y to cell1 at 9<\/code><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0443:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/53e\/d25\/735\/53ed25735b7b6cd8ca3dbfa9cf6e78b5.gif\" width=\"1280\" height=\"592\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/53e\/d25\/735\/53ed25735b7b6cd8ca3dbfa9cf6e78b5.gif\"\/><\/figure>\n<p>\u041a\u043e\u0434: https:\/\/github.com\/xdettlaff\/mindustry-3d-engine\/tree\/main\/parts\/input_to_map.mlog<\/p>\n<h2>\u0420\u0438\u0441\u0443\u0435\u043c \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b<\/h2>\n<p>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043f\u0443\u043d\u043a\u0442\u0430\u0445 \u043c\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438, \u043a\u0430\u043a \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u043b\u0443\u0447\u0430 \u0441\u043e \u0441\u0442\u0435\u043d\u043e\u0439 (<code>ray_x<\/code> \u0438 <code>ray_y<\/code>). \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438 \u0444\u043e\u0440\u043c\u0443\u043b\u0443 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u044b\u0441\u043e\u0442\u044b \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u043f\u043e\u043b\u043e\u0441\u043a\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 (<code>wall_height<\/code> \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445). \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043b\u043e\u0441\u043a\u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0446\u0432\u0435\u0442\u0430, \u0430 \u0447\u0430\u0441\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u0441\u0442\u0435\u043d\u0435.<\/p>\n<p>\u0414\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0441\u0430\u043c\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 &#8212; \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430 \u0441\u0442\u0435\u043d\u044b. \u0414\u0430\u043d\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0431\u043b\u043e\u043a\u0430\u0445 \u043f\u0430\u043c\u044f\u0442\u0438. \u0423 \u043d\u0435\u0451 \u0435\u0441\u0442\u044c \u0448\u0438\u0440\u0438\u043d\u0430 \u0438 \u0432\u044b\u0441\u043e\u0442\u0430 \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445, \u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0435\u0435 \u0432 \u043e\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 &#8212; <code>texture_size<\/code>. \u0422\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043a\u0432\u0430\u0434\u0440\u0430\u0442, \u0442\u043e \u0438 \u0448\u0438\u0440\u0438\u043d\u0430, \u0438 \u0432\u044b\u0441\u043e\u0442\u0430 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u0421\u0430\u043c\u0438 \u043f\u0438\u043a\u0441\u0435\u043b\u0438 (\u0442\u043e\u0447\u043d\u0435\u0435 \u0438\u0445 \u0446\u0432\u0435\u0442\u0430) \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u0432 \u0431\u043b\u043e\u043a\u0430\u0445 \u043f\u0430\u043c\u044f\u0442\u0438 \u0442\u0430\u043a: \u0432 \u043e\u0434\u043d\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0435 \u0431\u043b\u043e\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f RGBa \u0446\u0432\u0435\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u044f, \u0437\u0430\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>pack color<\/code> \u0432 \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u2013 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u0443\u0440, \u0430 \u043d\u043e\u043c\u0435\u0440 \u044f\u0447\u0435\u0439\u043a\u0438 \u2014 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0440.<\/p>\n<p>\u041a\u0430\u043a \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u0432\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u2014 X \u0438 Y, \u043d\u043e \u043c\u0430\u0441\u0441\u0438\u0432 \u0442\u0435\u043a\u0441\u0442\u0443\u0440 \u2014 \u043e\u0434\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0439 (\u0432\u0435\u0434\u044c \u0431\u043b\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u0438 &#8212; \u044d\u0442\u043e \u043e\u0434\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432). \u041a\u0430\u043a \u0436\u0435 \u043d\u0430\u0439\u0442\u0438 \u0438\u043d\u0434\u0435\u043a\u0441 \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0442\u0435\u043a\u0441\u0442\u0443\u0440? \u0412\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e: X-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 \u2014 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u0430 Y \u2014 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440 \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0435.<\/p>\n<p>\u0412\u044b\u0441\u043e\u0442\u0430 \u0438 \u0448\u0438\u0440\u0438\u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0432\u043d\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>texture_size<\/code>, \u0438, \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043e\u043d\u0430 \u0440\u0430\u0432\u043d\u0430 4. \u041f\u0443\u0441\u043a\u0430\u0439 \u0432 \u043f\u0435\u0440\u0432\u044b\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0445 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043f\u0438\u043a\u0441\u0435\u043b\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0441\u043d\u0438\u0437\u0443 \u0432\u0432\u0435\u0440\u0445, \u0430 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u2014 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446, \u0432\u0435\u0434\u044c <code>texture_size = 4<\/code>.<\/p>\n<p>\u041e\u0442\u0441\u044e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0444\u043e\u0440\u043c\u0443\u043b\u0443 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430 i \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u043f\u0438\u043a\u0441\u0435\u043b\u044f: <code>i = Y * texture_size + X<\/code><\/p>\n<p>\u0410 \u043a\u0430\u043a \u0440\u0438\u0441\u0443\u0435\u0442\u0441\u044f-\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u0430?<\/p>\n<p>\u0420\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043e\u0441\u043a\u0430 \u043d\u0435\u043a\u043e\u0439 \u0432\u044b\u0441\u043e\u0442\u044b, \u0430 \u0434\u0430\u043b\u0435\u0435 \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c, \u043a\u0430\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0430\u043d\u043d\u0430\u044f \u043f\u043e\u043b\u043e\u0441\u043a\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u043b\u043e\u0441\u043a\u0438. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u044d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u043e: \u0435\u0441\u043b\u0438 \u043b\u0443\u0447 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438 \u0441\u043e \u0441\u0442\u0435\u043d\u043e\u0439 (\u0442\u043e \u0435\u0441\u0442\u044c <code>ray_x<\/code> \u0440\u0430\u0432\u0435\u043d \u0446\u0435\u043b\u043e\u043c\u0443 \u0447\u0438\u0441\u043b\u0443 \u0438\u043b\u0438 <code>ray_x % cell_ = 0<\/code>), \u0442\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0439 X \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u0431\u0443\u0434\u0435\u0442 <code>ceil(ray_y % cell_size) \u00d7 texture_size<\/code> (\u0433\u0434\u0435 <code>ceil()<\/code> \u2014 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435, <code>%<\/code> &#8212; \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043e\u0442 \u0434\u0435\u043b\u0435\u043d\u0438\u044f).<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u044c \u0437\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u043c. \u041a\u0430\u043a \u0443\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0432\u044b\u0441\u043e\u0442\u0430 \u0441\u0442\u0435\u043d\u044b \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445 \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435 \u2014 \u044d\u0442\u043e <code>wall_height<\/code>, \u0437\u043d\u0430\u0447\u0438\u0442, \u0432\u044b\u0441\u043e\u0442\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435: <code>pixel_height = wall_height \/ texture_size<\/code><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0439\u0434\u0451\u043c \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0435 \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0435\u043d\u0430 \u043f\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0435: <code>start_y = 88 \u2212 (wall_height \/ 2)<\/code> (\u0433\u0434\u0435 <code>88<\/code> &#8212; \u044d\u0442\u043e <code>176\/2<\/code>, \u0430 \u044d\u0442\u043e \u043a\u043e\u043b-\u0432\u043e \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u0432 \u0432\u044b\u0441\u043e\u0442\u0443 \u0443 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0433\u043e \u0434\u0438\u0441\u043f\u043b\u0435\u044f)<\/p>\n<p>\u0412\u044b\u0441\u043e\u0442\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438:<\/p>\n<p><code>pixel_height = wall_height \/ texture_size<\/code><\/p>\n<h2>\u0424\u0438\u043d\u0430\u043b<\/h2>\n<p>\u0421\u043e\u0435\u0434\u0438\u043d\u0438\u0432 \u0432\u0441\u0435 \u0447\u0430\u0441\u0442\u0438 \u043f\u0441\u0435\u0432\u0434\u043e-3D \u0434\u0432\u0438\u0436\u043a\u0430 \u0432\u043e\u0435\u0434\u0438\u043d\u043e, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u043e, \u0447\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0445\u0432\u0430\u0441\u0442\u0430\u0442\u044c\u0441\u044f, \u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e: \u043f\u0441\u0435\u0432\u0434\u043e-3D \u0434\u0432\u0438\u0436\u043e\u043a, \u0431\u044b\u0441\u0442\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0434\u0430\u0436\u0435 \u0432 \u0438\u0433\u0440\u0435.<\/p>\n<p>\u042d\u0442\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u043b\u0443\u0447\u0448\u0438\u0439 \u043f\u0441\u0435\u0432\u0434\u043e-3D, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0432\u0435\u0434\u044c \u0442\u0443\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u00ab\u0441\u043f\u0440\u0430\u0439\u0442\u044b\u00bb \u0438\u043b\u0438 \u0436\u0435 \u0443\u0431\u0440\u0430\u0442\u044c \u0440\u044b\u0431\u0438\u0439 \u0433\u043b\u0430\u0437 \u043d\u0430 100%, \u0430 \u043d\u0435 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e. \u041d\u043e \u0434\u0430\u0436\u0435 \u0442\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e.<\/p>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442: https:\/\/github.com\/xdettlaff\/mindustry-3d-engine<\/p>\n<\/p>\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\/articles\/817957\/\"> https:\/\/habr.com\/ru\/articles\/817957\/<\/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<h3>\u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f<\/h3>\n<p>\u041a\u0430\u043a-\u0442\u043e \u0440\u0430\u0437, \u0433\u0443\u043b\u044f\u044f \u043f\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u043c \u044e\u0442\u0443\u0431\u0430, \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u0432\u0438\u0434\u0435\u043e \u043f\u0440\u043e \u043f\u0441\u0435\u0432\u0434\u043e-3D \u0438 \u0437\u0430\u0445\u043e\u0442\u0435\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0436\u0435. \u042d\u0442\u043e \u0431\u044b\u043b\u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u044f, \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043e\u043d\u0430 \u043a\u0440\u0438\u0432\u0435\u043d\u044c\u043a\u043e:\u00a0<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0443\u0432\u0438\u0434\u0435\u043b \u043c\u043e\u0439 \u0434\u0440\u0443\u0433, \u0438 \u043c\u044b \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u0442\u043e\u0440\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0433\u043e\u0434\u0430 \u043e\u0442\u0434\u044b\u0445\u0430, \u0441\u043e\u0431\u0440\u0430\u0432 \u0443\u0436\u0435 \u0442\u0440\u0451\u0445 \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0443\u0441\u043f\u0435\u0445 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0432\u0438\u0436\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043b\u0443\u0447\u0448\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432\u0441\u0435\u0445 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445. \u041e\u0431 \u044d\u0442\u043e\u043c \u0438 \u0441\u0442\u0430\u0442\u044c\u044f.<\/p>\n<figure class=\"full-width\"><\/figure>\n<h2>\u0427\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c<\/h2>\n<p><em>\u041f\u0441\u0435\u0432\u0434\u043e-3D<\/em> &#8212; \u044d\u0442\u043e \u0438\u0433\u0440\u043e\u0432\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u043c\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u043e\u0435 \u0438\u0433\u0440\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u043e\u0439, \u0437\u0430 \u0441\u0447\u0451\u0442 \u0447\u0435\u0433\u043e \u043c\u0435\u043d\u0435\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0430 \u043a \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044f\u043c. \u0420\u0430\u043d\u044c\u0448\u0435, \u0432 \u044d\u043f\u043e\u0445\u0443 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0441\u0435\u0432\u0434\u043e-3D \u0431\u044b\u043b\u043e \u0432\u0430\u0436\u043d\u044b\u043c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 \u0438\u0433\u0440, \u0430 \u0441\u0435\u0439\u0447\u0430\u0441 &#8212; \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0441\u043a\u0438\u0439 \u0447\u0435\u043b\u043b\u0435\u043d\u0434\u0436.\u00a0<\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b \u0431\u044b\u0441\u0442\u0440\u044b\u0435, \u043d\u043e \u0432 \u0442\u043e\u043c \u0436\u0435 mindustry <em>\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b<\/em> (\u0438\u0433\u0440\u043e\u0432\u044b\u0435 \u0431\u043b\u043e\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c) \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u043d\u0438\u0445 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u0441\u0435\u0432\u0434\u043e-3D \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439.<\/p>\n<h2>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 mindustry<\/h2>\n<p>\u0412 \u0438\u0433\u0440\u0435 mindustry \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u0433\u0440\u043e\u0432\u044b\u0435 \u0431\u043b\u043e\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c &#8212; <em>\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b<\/em>. \u041a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445, \u043e\u0434\u043d\u0430\u043a\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0432 \u0438\u0433\u0440\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430. <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0435 \u043a \u043d\u0435\u043c\u0443 \u0431\u043b\u043e\u043a\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0442\u0443\u0440\u0435\u043b\u044c, \u043a\u043d\u043e\u043f\u043a\u0430, \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. <\/p>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u044f \u043d\u0430 \u043d\u0438\u0445, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0441 \u044d\u0442\u0438\u0445 \u0431\u043b\u043e\u043a\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043a\u043b\/\u0432\u044b\u043a\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0438\u043b\u0438 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0435\u0433\u043e \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f. \u0415\u0449\u0451 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 mindusrty \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u043a\u043e\u0434\u0430:<\/p>\n<ol>\n<li>\n<p>\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435<\/p>\n<\/li>\n<li>\n<p>\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435<\/p>\n<\/li>\n<\/ol>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0435\u0441\u0442\u044c 2 \u0431\u0443\u0444\u0435\u0440\u0430:<\/p>\n<ol>\n<li>\n<p>\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439<\/p>\n<\/li>\n<li>\n<p>\u0413\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439<\/p>\n<\/li>\n<\/ol>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>1. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>set<\/code> \u0437\u0430\u0434\u0430\u0451\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 (\u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0435\u0441\u0442\u044c \u0438 \u0438\u0445 \u043d\u0435 \u043d\u0430\u0434\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c):<\/p>\n<figure class=\"\"><\/figure>\n<p>2. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>operation<\/code> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e:<\/p>\n<figure class=\"\">\n<div><figcaption>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f i \u0441\u0442\u0430\u043b\u0430 \u0440\u0430\u0432\u043d\u0430 188<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438:<\/p>\n<figure class=\"\"><\/figure>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>print<\/code> \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u0438\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432 \u0431\u0443\u0444\u0435\u0440 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 (\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u044f \u0435\u0433\u043e \u0432 \u0441\u0442\u0440\u043e\u043a\u0443):<\/p>\n<figure class=\"\">\n<div><figcaption>\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0440\u0430\u0432\u043d\u043e \u0441\u0442\u0440\u043e\u043a\u0435: \u00ab\u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438: 94.2\u00bb<\/figcaption><\/div>\n<\/figure>\n<p>4. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>printFlush<\/code> \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0442\u0435\u043a\u0441\u0442 \u0438\u0437 \u0431\u0443\u0444\u0435\u0440\u0430, \u043e\u0431\u043d\u0443\u043b\u044f\u044f \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0432 <em>\u0431\u043b\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0443\u043a\u0430\u0436\u0435\u043c:<\/p>\n<figure class=\"\"><\/figure>\n<p>\u041d\u043e \u0441\u043f\u0435\u0440\u0432\u0430 \u0435\u0433\u043e \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c:<\/p>\n<figure class=\"\"><\/figure>\n<p>\u041e\u043d \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c <code>message1<\/code>. \u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0432\u044b\u0432\u0435\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u0443\u0444\u0435\u0440\u0430 (\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043d\u043e\u0432\u043e, \u0432\u0435\u0434\u044c \u043a\u043e\u0434 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0446\u0438\u043a\u043b\u0435):<\/p>\n<figure class=\"\"><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443 <em>\u044f\u0447\u0435\u0439\u043a\u0443 \u043f\u0430\u043c\u044f\u0442\u0438<\/em>:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u044f\u0447\u0435\u0439\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442, 64 \u044f\u0447\u0435\u0439\u043a\u0438 (\u043e\u0442 0 \u0434\u043e 63-\u0439 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e) \u0434\u043b\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u0430 <code>number<\/code> (<code>double<\/code> \u0432 mindustry). <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>diameter<\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>write<\/code> \u0432 \u043d\u0443\u043b\u0435\u0432\u0443\u044e \u044f\u0447\u0435\u0439\u043a\u0443 \u0431\u043b\u043e\u043a\u0430 <code>cell1<\/code>: <\/p>\n<figure class=\"\">\n<div><figcaption>\u0412 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u0438\u0430\u043c\u0435\u0442\u0440\u0430 \u043d\u0430\u0448\u0435\u0439 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438<\/figcaption><\/div>\n<\/figure>\n<p>6. \u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043c \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u0435\u0433\u043e \u043a <em>\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0434\u0438\u0441\u043f\u043b\u0435\u044e<\/em> (88 \u043d\u0430 88 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439) \u0438 \u044f\u0447\u0435\u0439\u043a\u0435 \u043f\u0430\u043c\u044f\u0442\u0438:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0435 \u0438 \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0435\u0433\u043e \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>diameter<\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>read<\/code>, \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u0438\u0430\u043c\u0435\u0442\u0440\u0430 \u043d\u0430 2 \u0438 \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0435\u0433\u043e \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>radius<\/code>. \u0414\u0430\u043b\u0435\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a <code>radius = diameter \/ 2<\/code> \u0438\u043b\u0438 <code>op div radius diameter 2<\/code>: <\/p>\n<figure class=\"\"><\/figure>\n<p>7. \u0422\u0435\u043f\u0435\u0440\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>draw<\/code> \u043a\u0430\u043a <code>draw clear 0 0 0<\/code>, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u0443\u0444\u0435\u0440 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u043c\u0438 \u0441 \u0447\u0451\u0440\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c:<\/p>\n<figure class=\"\"><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0434\u0430\u0434\u0438\u043c \u0437\u0435\u043b\u0451\u043d\u044b\u0439 \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0444\u0438\u0433\u0443\u0440: <code>draw color 0 255 0 255<\/code><\/p>\n<figure class=\"\"><\/figure>\n<p>\u0418 \u043d\u0430\u0440\u0438\u0441\u0443\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 24-\u0445 \u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a \u0440\u0430\u0434\u0438\u0443\u0441\u043e\u043c <code>radius<\/code> \u0432 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445 X: 44 Y:44 (\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0430 88 \u043d\u0430 88) \u043f\u043e\u0434 \u0443\u0433\u043b\u043e\u043c 0 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432:<\/p>\n<figure class=\"full-width\"><\/figure>\n<ol start=\"8\">\n<li>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u044b\u0432\u0435\u0434\u0435\u043c \u0432\u0441\u0451 \u0438\u0437 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>drawFlush<\/code> \u0432 \u0434\u0438\u0441\u043f\u043b\u0435\u0439 <code>display1<\/code><\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0418 \u0443\u0432\u0438\u0434\u0438\u043c:<\/p>\n<figure class=\"full-width\"><\/figure>\n<\/li>\n<li>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u043d\u0430\u0448 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043a <em>\u043a\u043d\u043e\u043f\u043a\u0435<\/em>:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0418 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u043c \u0435\u0451 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 (\u0432\u043a\u043b\/\u0432\u044b\u043a\u043b) \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>sensor @enabled<\/code> \u0438 \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u0442\u0430\u0442\u0443\u0441 \u043a\u043d\u043e\u043f\u043a\u0438 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>status<\/code>. \u0414\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u043c \u0432 3-\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435: <\/p>\n<figure class=\"full-width\"><\/figure>\n<\/li>\n<li>\n<p> \u041d\u0438\u0436\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>jump<\/code> \u0441 \u0443\u0441\u043b\u043e\u0432\u0438\u0435\u043c <code>status == 0<\/code> \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0435\u0451 \u043d\u0430 \u043f\u0440\u044b\u0436\u043e\u043a \u0432 7-\u044e \u0441\u0442\u0440\u043e\u043a\u0443.<\/p>\n<figure class=\"full-width\"><\/figure>\n<\/li>\n<\/ol>\n<p>\u041a\u0430\u043a \u0432\u044b \u0443\u0436\u0435 \u043c\u043e\u0433\u043b\u0438 \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0434\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043a\u0430\u043a \u0431\u044b \u00ab<em>\u043f\u0440\u044b\u0433\u043d\u0443\u0442\u044c<\/em>\u00bb \u043d\u0430 7-\u044e \u0441\u0442\u0440\u043e\u043a\u0443, \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>status<\/code> \u0440\u0430\u0432\u043d\u0430 \u043d\u0443\u043b\u044e (\u0442\u043e \u0435\u0441\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0430 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0430), \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u0434 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0443 24-\u0445 \u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430.<\/p>\n<figure class=\"full-width\"><\/figure>\n<figure class=\"full-width\"><\/figure>\n<p>\u0414\u0430\u043d\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u0430 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f 1-\u0433\u043e \u0438 2-\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<p><code>diameter = 30<br \/>Pi = 3.14<br \/>perimeter = Pi * diameter<br \/>print \"\u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440 \u043e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438: \"<br \/>print perimeter<br \/>printflush message1<br \/>write diameter to cell1 at 0<\/code><\/p>\n<p><code>read diameter = cell1 at 0<br \/>radius = diameter \/ 2<br \/>draw clear 0 0 0<br \/>status = @enabled in switch1<br \/>jump 7, if status == 0<br \/>draw color 0 255 0 255<br \/>draw linePoly 40 40 24 radius 0<br \/>drawflush display1<\/code><\/p>\n<p>11. \u0418 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430: <code>pack color<\/code><\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0414\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0441\u043e\u0435\u0434\u0435\u043d\u044f\u0435\u044f\u0442 4 \u0446\u0432\u0435\u0442\u0430 <code>RGBA<\/code> \u0432 \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e \u0442\u0438\u043f\u0430 <code>number<\/code> \u0412 \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0432\u0441\u0435 \u0446\u0432\u0435\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0447\u0438\u0441\u043b\u043e\u043c \u043e\u0442 0 \u0434\u043e 1<\/p>\n<figure class=\"full-width\"><\/figure>\n<figure class=\"full-width\"><\/figure>\n<h2>\u041a\u0430\u0440\u0442\u0430  <\/h2>\n<p>\u0421\u0430\u043c\u044b\u0439 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430\u0448\u0435\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430 &#8212; \u043a\u0430\u0440\u0442\u0430. \u041d\u0430 \u043a\u0430\u0440\u0442\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0438\u0433\u0440\u043e\u043a \u0438 \u0432\u0441\u0435 \u0431\u043b\u043e\u043a\u0438. \u041a\u0430\u0440\u0442\u0430 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 &#8212; <code>widthmap<\/code>, \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438 \u0448\u0438\u0440\u0438\u043d\u0443, \u0438 \u0434\u043b\u0438\u043d\u0443 \u043a\u0430\u0440\u0442\u044b (\u043a\u0430\u043a \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u043e\u043d\u0430 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u0430\u044f). \u041a\u0430\u0440\u0442\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0431\u043b\u043e\u043a\u043e\u0432 (\u043a\u0430\u043a <em>\u043c\u0430\u0439\u043d\u043a\u0440\u0430\u0444\u0442<\/em>, \u0442\u043e\u043b\u044c\u043a\u043e \u0432 2D), \u0435\u0441\u0442\u044c \u0431\u043b\u043e\u043a\u0438 \u0441\u0442\u0435\u043d, \u0432\u043e\u0437\u0434\u0443\u0445\u0430 \u0438 \u0442.\u0434. \u041a\u0430\u0440\u0442\u0443 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0447\u0438\u0441\u0435\u043b, \u0433\u0434\u0435 0 &#8212; \u044d\u0442\u043e \u0432\u043e\u0437\u0434\u0443\u0445, \u0430 \u0434\u0440\u0443\u0433\u043e\u0435 \u0447\u0438\u0441\u043b\u043e &#8212; \u0442\u0438\u043f \u0431\u043b\u043e\u043a\u0430\/\u0441\u0442\u0435\u043d\u044b. <\/p>\n<p>\u0412\u0441\u0435 \u0431\u043b\u043e\u043a\u0438 \u0438\u043c\u0435\u044e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 &#8212; <code>cell_size<\/code>. \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e <code>cell_size = 1<\/code>. \u0422\u0430\u043a\u0436\u0435 \u0431\u043b\u043e\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0446\u0435\u043b\u044b\u0445 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u0445 (\u043e\u043f\u044f\u0442\u044c \u0436\u0435, \u043a\u0430\u043a \u0438 \u0432 \u043c\u0430\u0439\u043d\u043a\u0440\u0430\u0444\u0442\u0435). <\/p>\n<p>\u041d\u0430 \u043a\u0430\u0440\u0442\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u0433\u0440\u043e\u043a. \u0418\u0433\u0440\u043e\u043a &#8212; \u044d\u0442\u043e \u0432\u044b\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u043d\u0430 \u0441\u0435\u0439 \u0440\u0430\u0437 \u043d\u0435\u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438, \u0442.\u043a. \u0438\u0433\u0440\u043e\u043a \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0435\u0442\u043e\u043a. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0445 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c <code>player_x<\/code>, <code>player_y<\/code> (\u0438\u043b\u0438 \u0436\u0435 <code>start_x<\/code>, <code>start_y<\/code>).<\/p>\n<p>\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u0430\u0440\u0442\u044b:<\/p>\n<p><code>[0] [1] [1] [1] [1] [1]\u00a0<br \/>[0] [1] [0] [0] [1] [1]\u00a0<br \/>[0] [1] [0] [0] [1] [1]\u00a0<br \/>[1] [1] [0] [0] [1] [0]\u00a0<br \/>[0] [0] [0] [1] [1] [0]\u00a0<br \/>[1] [1] [1] [1] [1] [0]<\/code><\/p>\n<p><em>\u043f\u043e\u043b\u0435 6 \u043d\u0430 6<\/em><\/p>\n<h2>\u041b\u0443\u0447<\/h2>\n<p>\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043f\u0441\u0435\u0432\u0434\u043e-3D? \u041f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0442 \u0438\u0433\u0440\u043e\u043a\u0430 \u043b\u0443\u0447\u0438 \u0438 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u043e\u0447\u043a\u0443 \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u043b\u0443\u0447\u0430 \u0441 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u0441\u0442\u0435\u043d\u043e\u0439. <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043f\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0435 <code>line_height = wall_height\/length_of_ray<\/code> \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0441\u043a\u0443 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 (\u0434\u0430\u043b\u0435\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 <code>line_height<\/code> \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u043e \u043d\u0430 <code>wall_height<\/code>).<\/p>\n<p>\u041b\u0443\u0447 \u2014 \u0432\u0430\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 3D \u0438\u043b\u0438 \u043f\u0441\u0435\u0432\u0434\u043e-3D \u0434\u0432\u0438\u0436\u043a\u043e\u0432. \u0421\u0430\u043c\u043e\u0433\u043e \u043b\u0443\u0447\u0430, \u043f\u043e \u0441\u0443\u0442\u0438, \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043b\u0438\u0448\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0435\u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b. <\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043b\u0443\u0447\u0430 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 <code>ray_x<\/code> \u0438 <code>ray_y<\/code> (\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043b\u0443\u0447\u0430) \u0438 <code>ray_angle<\/code> (\u0443\u0433\u043e\u043b \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u0443\u0447\u0430). \u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u0434\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u043b\u0443\u0447 \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a \u0431\u044b \u00ab\u0448\u0430\u0433\u0430\u0442\u044c\u00bb, \u0442\u043e \u0435\u0441\u0442\u044c \u0435\u0433\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f. <\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u043f\u0441\u0435\u0432\u0434\u043e-3D \u0434\u0432\u0438\u0436\u043a\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043b\u0443\u0447\u0430. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u043d \u0442\u0430\u043a: \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 <code>n<\/code> \u043d\u0430 <code>n<\/code> \u043a\u043b\u0435\u0442\u043e\u043a (\u043a\u0430\u0440\u0442\u0443), \u043a\u0430\u0436\u0434\u0430\u044f \u043a\u043b\u0435\u0442\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u0438\u0431\u043e \u0441\u0442\u0435\u043d\u043e\u0439, \u043b\u0438\u0431\u043e \u0432\u043e\u0437\u0434\u0443\u0445\u043e\u043c.<\/p>\n<figure class=\"\"><\/figure>\n<p>\u0415\u0449\u0451 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u0433\u0440\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043b\u0443\u0447. \u041d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043b\u0443\u0447\u0430 \u2014 \u044d\u0442\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438\u0433\u0440\u043e\u043a\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u043b\u0443\u0447 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0434\u0432\u0430\u0436\u0434\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u0441 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0441\u0442\u0435\u043d\u043e\u0439. \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0447\u0442\u043e \u0438\u0433\u0440\u043e\u043a \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0438 \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u043a\u043b\u0435\u0442\u043e\u043a.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u043e\u0445\u043e\u0434: \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u043b\u0438\u043d\u0443 \u043a\u043b\u0435\u0442\u043a\u0438 \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0435 Y <code>y_step = cell_size<\/code>. \u0428\u0430\u0433 \u043f\u043e X \u0442\u0443\u0442 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u0442\u0440\u0443\u0434\u043d\u043e \u043f\u0440\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0437\u043d\u0430\u044f, \u0447\u0442\u043e \u0442\u0430\u043d\u0433\u0435\u043d\u0441 \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043b\u0435\u0436\u0430\u0449\u0438\u0439 \u043a\u0430\u0442\u0435\u0442 \u043d\u0430 \u043f\u0440\u0438\u043b\u0435\u0436\u0430\u0449\u0438\u0439.\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043b\u044e\u0431\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u043c \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u043e\u043c, \u0433\u0434\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b X \u0438 Y \u2014 \u043a\u0430\u0442\u0435\u0442\u044b. <\/p>\n<p>\u041d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0442\u0430\u043d\u0433\u0435\u043d\u0441 \u0443\u0433\u043b\u0430 \u043b\u0443\u0447\u0430 \u2014 \u044d\u0442\u043e <code>y\/x<\/code> \u0438\u043b\u0438 \u0436\u0435 <code>y_step\/x_step<\/code>. \u041e\u0442\u0441\u044e\u0434\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0432\u0435\u0441\u0442\u0438 <code>x_step<\/code> (\u0448\u0430\u0433 \u043b\u0443\u0447\u0430 \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0435 X): <code>y_step\/x_step = tan(ray_angle) => x_step = y_step\/tan(ray_angle)<\/code>. <\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u0434\u0435\u043b\u0430\u044f \u0448\u0430\u0433, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043b\u0438 \u043b\u0443\u0447 \u0432 \u043a\u043b\u0435\u0442\u043a\u0435 \u0441\u043e \u0441\u0442\u0435\u043d\u043e\u0439, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0438\u043d\u0434\u0435\u043a\u0441 \u043a\u043b\u0435\u0442\u043a\u0438 \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u043b\u0443\u0447\u0430 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044f \u0435\u0433\u043e \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0438\u0437 \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043a\u0430\u0440\u0442\u044b.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0437\u0430\u0445\u043e\u0434\u0435 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0451 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e \u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c, \u043d\u043e \u0434\u043b\u044f X, \u0442\u043e \u0435\u0441\u0442\u044c <code>x_step = cell_size, y_step\/x_step = tan(ray_angle) => y_step = x_step * tan(ray_angle)<\/code>.\u00a0<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0410 \u0435\u0441\u043b\u0438 \u0438\u0433\u0440\u043e\u043a \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0435 \u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0438 \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u043a\u043b\u0435\u0442\u043e\u043a? \u0422\u0443\u0442 \u0442\u043e\u0436\u0435 \u043d\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u043f\u043e Y \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c Y \u0446\u0435\u043b\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043b\u0443\u0447 \u0431\u044b\u043b \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0438\u043b\u0438 \u043d\u0438\u0436\u043d\u0435\u043c \u0431\u043e\u0440\u0442\u0438\u043a\u0435 \u043a\u043b\u0435\u0442\u043a\u0438.<\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u0443\u0447\u0430\u0439 \u0441 \u0432\u0435\u0440\u0445\u043d\u0438\u043c \u0431\u043e\u0440\u0442\u0438\u043a\u043e\u043c: Y \u0431\u0443\u0434\u0435\u0442 \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0431\u043e\u0440\u0442\u0438\u043a\u0435, \u0435\u0441\u043b\u0438 \u043c\u044b \u043e\u043a\u0440\u0443\u0433\u043b\u0438\u043c \u0435\u0433\u043e \u0432 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443, <code>new_y = ceil(ray_y)<\/code>. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 X. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f Y: <code>new_y - ray_y<\/code>. \u041e\u0442\u0441\u044e\u0434\u0430, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u043b\u044e\u0431\u0438\u043c\u043e\u0433\u043e \u0442\u0430\u043d\u0433\u0435\u043d\u0441\u0430, \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f X: <code>(new_y - ray_y) \/ tan(ray_angle)<\/code>. \u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043b\u0443\u0447\u0430 \u043f\u043e X (\u0432\u0435\u0434\u044c \u043f\u043e Y \u043c\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u043c). \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u0432 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 X \u043a \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e.<\/p>\n<p>\u0421\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 \u0442\u043e\u0436\u0435: <code>new_x = ray_x + (new_y - ray_y) \/ tan(ray_angle)<\/code>. \u0414\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0432\u043e\u0442 \u0444\u043e\u0440\u043c\u0443\u043b\u044b \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0441\u043b\u0443\u0447\u0430\u0435\u0432: <code>new_x = ceil(ray_x)<\/code>, <code>new_y = ray_y + (new_x - ray_x) \/ tan(ray_angle)<\/code>.<\/p>\n<p>\u041f\u043e \u0441\u043b\u043e\u0432\u0430\u043c, \u0441\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f, \u0440\u0438\u0441\u0443\u0435\u043c \u043f\u043e\u043b\u043e\u0441\u043a\u0443 \u0438&#8230; \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0432\u0435\u0434\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043b\u0438\u0448\u044c \u043e\u0434\u043d\u0430 \u043f\u043e\u043b\u043e\u0441\u043a\u0430.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0414\u043b\u044f \u043f\u0441\u0435\u0432\u0434\u043e-3D \u0442\u0430\u043a\u0438\u0445 \u043f\u043e\u043b\u043e\u0441\u043e\u043a \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043e\u043a\u043e\u043b\u043e \u0441\u0442\u0430, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u0430\u044f \u043f\u043e\u043b\u043e\u0441\u043a\u0430 \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0443 \u043f\u0440\u043e\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043f\u043e \u043d\u043e\u043c\u0435\u0440\u0443 \u043b\u0443\u0447\u043e\u043c.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0423\u0433\u043e\u043b \u0432\u0441\u0435\u0445 \u043b\u0443\u0447\u0435\u0439 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u043d\u0430 ~1 \u0433\u0440\u0430\u0434\u0443\u0441, \u043d\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043a\u0430\u043a \u0443\u0433\u043e\u0434\u043d\u043e. \u0418 \u0432\u0443\u0430\u043b\u044f! &#8212; \u044d\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 3D. \u0422\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435 \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0442\u0430\u043a.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0410 \u043d\u0435 \u0442\u0430\u043a \u0442\u0443\u0442 \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u044d\u0444\u0444\u0435\u043a\u0442 \u0440\u044b\u0431\u044c\u0435\u0433\u043e \u0433\u043b\u0430\u0437\u0430. \u0427\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u044d\u0442\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0442\u0440\u0443\u0434\u043d\u043e: \u043d\u0443\u0436\u043d\u043e <code>length_of_ray = length_of_ray * cos(center_ray_angle - ray_angle)<\/code>, \u0433\u0434\u0435 <code>center_ray_angle<\/code> \u2014 \u044d\u0442\u043e \u0443\u0433\u043e\u043b \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0437\u0433\u043b\u044f\u0434\u0430 \u0438\u0433\u0440\u043e\u043a\u0430, \u0430 <code>ray_angle<\/code> \u2014 \u044d\u0442\u043e \u0443\u0433\u043e\u043b \u043b\u0443\u0447\u0430.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041a\u043e\u0434: https:\/\/github.com\/xdettlaff\/mindustry-3d-engine\/tree\/main\/parts\/clean_ray.mlog<\/p>\n<h2>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0434\u0432\u0438\u0436\u043a\u0430<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0431\u043b\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a.<\/p>\n<figure class=\"\"><\/figure>\n<p>\u0412\u043e\u0442 \u0435\u0433\u043e \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434:<\/p>\n<p><code>widthmap = 13\u00a0 \/\/ \u0437\u0430\u0434\u0430\u0435\u043c \u0448\u0438\u0440\u0438\u043d\u0443 \u043a\u0430\u0440\u0442\u044b \u0432 13 \u0431\u043b\u043e\u043a\u043e\u0432 (\u043f\u043e\u0437\u0436\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043c\u0435\u043d\u044f\u0442\u044c \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435)<br \/>FOV = 100\u00a0 \/\/ \u0443\u0433\u043e\u043b \u043e\u0431\u0437\u043e\u0440\u0430<br \/>Sensitivity = 100\u00a0 \/\/ \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u0443\u0440\u0441\u043e\u0440\u0430<br \/>Stepsize = 0.333333333 \/\/ \u0434\u043b\u0438\u043d\u0430 \u0448\u0430\u0433\u0430<br \/>wall_height = 0.67 \/\/ \u0432\u044b\u0441\u043e\u0442\u0430 \u0441\u0442\u0435\u043d\u044b<br \/>AbsError = 0.001 \/\/ \u0440\u0443\u0434\u0438\u043c\u0435\u043d\u0442<br \/>cell_size = 1 \/\/ \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043b\u0435\u0442\u043a\u0438(\u043e\u043d \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u0435\u043d \u0435\u0434\u0438\u043d\u0438\u0446\u0435<br \/>texture_size = 7 \/\/ \u0448\u0438\u0440\u0438\u043d\u0430(\u0438 \u0434\u043b\u0438\u043d\u0430) \u0442\u0435\u043a\u0441\u0442\u0443\u0440\u044b \u0432 \u043f\u0438\u043a\u0441\u0435\u043b\u044f\u0445<br \/>shadow_k = 40 \/\/<\/code><\/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-377420","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/377420","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=377420"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/377420\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=377420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=377420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=377420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}