{"id":405870,"date":"2024-06-29T18:34:49","date_gmt":"2024-06-29T18:34:49","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=405870"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=405870","title":{"rendered":"<span>\u041a\u0440\u0438\u0432\u044b\u0435 \u0438 \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0442\u0435\u043c\u0430 \u0441\u0442\u0430\u0442\u044c\u0438 &#8212; \u043a\u0440\u0438\u0432\u044b\u0435, \u0438\u0445 \u0440\u0430\u0437\u0431\u043e\u0440, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438 \u043a\u0430\u043a \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0433\u0435\u0439\u043c\u0434\u0435\u0432.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e \u043a\u0440\u0438\u0432\u044b\u0435 \u0411\u0435\u0437\u044c\u0435.<\/p>\n<hr\/>\n<h2>\u041a\u0440\u0438\u0432\u0430\u044f \u0411\u0435\u0437\u044c\u0435<\/h2>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/963\/6f9\/328\/9636f932866b56c7b0ed7a6125d11b35.png\" alt=\"\" title=\"\" width=\"764\" height=\"592\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/963\/6f9\/328\/9636f932866b56c7b0ed7a6125d11b35.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0432\u0430\u0441 \u043f\u0440\u043e \u043d\u0438\u0445 \u0441\u043b\u044b\u0448\u0430\u043b. \u0418\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u043e\u0432\u0441\u044e\u0434\u0443, \u0434\u0430\u0436\u0435 \u0448\u0440\u0438\u0444\u0442\u044b \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u044d\u043a\u0440\u0430\u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u0438\u043c \u043a\u0440\u0438\u0432\u044b\u043c. \u0411\u0435\u0437 \u044d\u0442\u0438\u0445 \u043a\u0440\u0438\u0432\u044b\u0445 \u0443 \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u043e\u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043d\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0445 \u0438 \u043f\u043b\u0430\u0432\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439, \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u044b\u043b\u043e \u0431\u044b \u0432 \u0440\u0430\u0437\u044b \u0431\u043e\u043b\u044c\u0448\u0435. \u041d\u043e \u043a\u0430\u043a \u0436\u0435 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u043c?<\/p>\n<p>\u042d\u0442\u0438 \u043a\u0440\u0438\u0432\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432, \u043d\u043e \u043b\u0438\u0448\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<ol>\n<li>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u0447\u0435\u043a. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443\u043b\u0443 \u0432\u0438\u0434\u0430 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P_0 * (1-t)^n + a * P_1 * (1-t)^(n-1) * t + \u2026 + P_n * t^n\" alt=\"P_0 * (1-t)^n + a * P_1 * (1-t)^(n-1) * t + \u2026 + P_n * t^n\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3cd\/656\/8f5\/3cd6568f5a6095690c1c8073ab8c0944.svg\" width=\"470\" height=\"26\"\/>. \u0414\u043b\u044f \u0442\u0440\u0435\u0445 \u0442\u043e\u0447\u0435\u043a \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0431\u0443\u0434\u0443\u0442 1 2 1, \u0434\u043b\u044f \u0447\u0435\u0442\u044b\u0440\u0435\u0445 1 3 3 1, \u0434\u043b\u044f \u043f\u044f\u0442\u0438 1 4 6 4 1 \u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0435 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"(a+b)^n\" alt=\"(a+b)^n\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/709\/24b\/a51\/70924ba51bc6090e7d147e66309c6076.svg\" width=\"68\" height=\"22\"\/> \u0438\u043b\u0438 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"101^n\" alt=\"101^n\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/703\/43e\/ca0\/70343eca069f9ee8222017bef381b2e7.svg\" width=\"40\" height=\"18\"\/>, \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u043b\u0435\u0439 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0447\u0438\u0441\u043b\u0430 \u043d\u0435 \u201c\u043d\u0430\u0441\u043b\u0430\u0438\u0432\u0430\u043b\u0438\u0441\u044c\u201d.<\/p>\n<\/li>\n<li>\n<p>\u0410 \u0432\u043e\u0442 \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u0447\u0435\u043a? \u0414\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0435\u043a\u0430 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\frac{n!}{k!*(n-k)!}\" alt=\"\\frac{n!}{k!*(n-k)!}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dd8\/a26\/207\/dd8a262071150e9d48289d4536bb689d.svg\" width=\"108\" height=\"49\"\/>.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u0435\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 &#8212; \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u041f\u043e\u043b\u0435\u043c \u0434\u0435 \u041a\u0430\u0441\u0442\u0435\u043b\u044c\u0436\u043e. \u0412 \u044d\u0442\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u043c\u044b \u0434\u0435\u043b\u0438\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0440\u0435\u0437\u043e\u043a \u0432 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 t:(1-t) \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u0442\u043e\u0447\u043a\u0430.<\/p>\n<\/li>\n<\/ol>\n<p>\u0418\u0442\u0430\u043a, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435 \u043c\u0435\u0442\u043e\u0434\u044b:<\/p>\n<pre><code class=\"cs\">public struct Bezier { private static float pow(float f, int n) { float r = 1; for (int i = 0; i &lt; n; i++) r *= f; return f; }  public static Vector3 first(Vector3[] points, float t) { List&lt;int[]> ks = new List&lt;int[]>() { new int[2] { 1, 1 }, new int[3] { 1, 2, 1 }, new int[4] { 1, 3, 3, 1 }, new int[5] { 1, 4, 6, 4, 1 }, new int[6] { 1, 5, 10, 10, 5, 1 }, new int[7] { 1, 6, 15, 20, 15, 6, 1 } }; if (points.Length == 0 || points.Length > ks.Count + 1) return 0; if (points.Length == 1) return points[0]; Vector3 p = new Vector3(); for (int i = 0; i &lt; points.Length; i++) p += pow(t, points.Length - 1 - i) * pow(1 - t, i) * ks[points.Length - 2][i] * points[i]; return p; }  public static Vector3 second(Vector3[] points, float t) { Vector3 p = Vector3(); for(int i = 0; i &lt; points.Length; i++) { int u = 1, d = 1; for(int j = 1; j &lt; points.Length  - i; j++) { u *= (j + i); d *= j; } p += pow(t, points.Length - 1 - i) * pow(1 - t, i) * (int)(u \/ d) * points[i]; } return p; }  public static Vector3 third(Vector3[] points, float t) { Vector3[] temp = points; Vector3[] temp1 = new Vector3[points.Length - 1]; while (true) { for (int i = 1; i &lt; temp.Length; i++) temp1[i - 1] = temp[i - 1] * t + temp[i] * (1 - t); if (temp1.Length == 1) break; temp = temp1; temp1 = new Vector3[temp.Length - 1]; } return temp1[0]; } } <\/code><\/pre>\n<p>\u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0441\u0430\u043c\u044b\u0439 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 &#8212; \u043f\u0435\u0440\u0432\u044b\u0439, \u043d\u043e \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0442\u043e\u0447\u0435\u043a. \u0415\u043c\u0443 \u0443\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0442\u0440\u0435\u0442\u0438\u0439, \u043d\u043e \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0442\u043e\u0447\u0435\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b. \u0421\u0432\u043e\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 x-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 y-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443. \u0421\u0430\u043c\u044b\u0439 \u044f\u0440\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0438 &#8212; \u0441\u043f\u043b\u0430\u0439\u043d \u041b\u0430\u0433\u0440\u0430\u043d\u0436\u0430, \u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0441\u0432\u043e\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b. \u0418 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043c\u043d\u043e\u0433\u043e\u0447\u043b\u0435\u043d \u041b\u0430\u0433\u0440\u0430\u043d\u0436\u0430 \u0432\u044b\u0434\u0430\u0435\u0442 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u043a\u0440\u0438\u0432\u0443\u044e \u043f\u0440\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u043e\u0447\u043a\u0430\u0445.<\/p>\n<p>\u0427\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044f? \u042d\u0442\u043e \u043a\u0440\u0438\u0432\u0430\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u0440\u0438\u0432\u044b\u0435 \u0411\u0435\u0437\u044c\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0435\u0439, \u044d\u0442\u043e \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u044f!<\/p>\n<hr\/>\n<h2>\u041f\u0435\u0440\u0432\u0430\u044f \u043a\u0440\u0438\u0432\u0430\u044f<\/h2>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/559\/cab\/ff8\/559cabff832ba69427093f5e826fb716.png\" width=\"764\" height=\"592\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/559\/cab\/ff8\/559cabff832ba69427093f5e826fb716.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0418\u0442\u0430\u043a, \u043a\u0430\u043a \u044f \u043f\u0440\u0438\u0448\u0435\u043b \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u043c\u0435\u0442\u043e\u0434\u0443 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0438. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u0435\u0431\u0435 \u043a\u0440\u0438\u0432\u0443\u044e. \u0427\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c? \u0412 \u0443\u043c\u0435 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u0435\u0442 \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e \u0441\u0433\u043b\u0430\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u0440\u0430\u044f\u043c\u0438. \u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u043a\u0440\u0438\u0432\u0443\u044e? \u0414\u043b\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u0444\u043e\u0440\u043c\u0443\u043b\u0430:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"y_{01} (x)=y_0+\\frac{(y_1-y_0)*(x-x_0)}{x_1-x_0}=\\frac{y_0*(x_1-x)+y_1*(x-x_0)}{x_1-x_0}\" alt=\"y_{01} (x)=y_0+\\frac{(y_1-y_0)*(x-x_0)}{x_1-x_0}=\\frac{y_0*(x_1-x)+y_1*(x-x_0)}{x_1-x_0}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/061\/a64\/731\/061a64731382557aaefff3507cf091de.svg\" width=\"564\" height=\"48\"\/><\/p>\n<p>\u0414\u043b\u044f \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u044f, \u0443 \u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043d\u043e \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043e\u0442\u0440\u0435\u0437\u043a\u0430 \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043e\u0442\u0440\u0435\u0437\u043a\u0430. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0444\u043e\u0440\u043c\u0443\u043b\u0430: <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"y(x)=\\frac{y_{01}(x)*(x_2-x)^2+y_{23}(x)*(x-x_1)^2}{2(x_2-x)^2+2(x-x_1)^2}+\\frac{y_{12}(x)}{2}\" alt=\"y(x)=\\frac{y_{01}(x)*(x_2-x)^2+y_{23}(x)*(x-x_1)^2}{2(x_2-x)^2+2(x-x_1)^2}+\\frac{y_{12}(x)}{2}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fc7\/b1e\/465\/fc7b1e465aeed7bdb2d5619987248513.svg\" width=\"475\" height=\"53\"\/><\/p>\n<p>\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043a\u0440\u0438\u0432\u0443\u044e \u043d\u0430 \u043e\u0442\u0440\u0435\u0437\u043a\u0435 1-2. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 desmos \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439. \u0415\u0441\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0448\u0442\u0440\u0438\u0445. \u041f\u043e\u0440\u0430\u0437\u043c\u044b\u0441\u043b\u0438\u0432, \u044f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u043a\u0440\u0438\u0432\u0430\u044f, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0430\u044f \u0437\u0430 \u043b\u0438\u043d\u0435\u0439\u043d\u0443\u044e \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044e \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u0440\u0435\u0437\u043a\u0430, \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u043b\u0438\u044f\u0442\u044c \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u043a \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u044b \u043a \u043a\u043e\u043d\u0446\u0443. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043f\u0430\u0440\u0430\u0431\u043e\u043b\u0430, \u0442\u043e \u0435\u0441\u0442\u044c <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"(x-x_1)*(x_2-x_1)\" alt=\"(x-x_1)*(x_2-x_1)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/743\/54e\/ab7\/74354eab753462d11bfeff02ad5b379f.svg\" width=\"168\" height=\"22\"\/>. \u041a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0443\u043b\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0435\u0449\u0435 \u043b\u0443\u0447\u0448\u0435:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"y(x)=\\frac{y_{01}(x)*(x_2-x)^2+2*y_{12}(x)*(x_2-x)*(x-x_1)+y_{23}(x)*(x-x_1)^2}{2*(x_2-x_1)^2}+\\frac{y_{12}(x)}{2}\" alt=\"y(x)=\\frac{y_{01}(x)*(x_2-x)^2+2*y_{12}(x)*(x_2-x)*(x-x_1)+y_{23}(x)*(x-x_1)^2}{2*(x_2-x_1)^2}+\\frac{y_{12}(x)}{2}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c45\/76e\/8a5\/c4576e8a51f2d323ff63a53f811577c6.svg\" width=\"757\" height=\"53\"\/><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u0435\u043d \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c:<\/p>\n<pre><code class=\"cs\">public struct MCurve { private static float yab(Vector2 a, Vector2 b, float x) => (a.y * (b.x - x) + b.y * (x - a.x)) \/ (b.x - a.x);  public static float first(Vector2[] points, float x) { int i = 0; for (; i &lt; points.Length - 1; i++) if (points[i].x &lt;= x &amp;&amp; points[i+1].x >= x) break; return (yab(points[(i == 0 ? 0 : i-1)], points[i], x)*(points[i+1].x-x)*(points[i+1].x-x)+2*yab(points[i], points[i+1], x)*(points[i+1].x-x)(x-points[i].x)+yab(points[i+1], points[(i == points.Length - 1 ? i : i+1)], x)*(x-points[i].x)*(x-points[i].x))\/(2*(points[i+1].x-points[i].x)*(points[i+1].x-points[i].x) + yab(points[i], points[i+1], x) \/ 2; } } <\/code><\/pre>\n<p>\u041d\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043e\u0442\u0440\u0435\u0437\u043a\u0435 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0442\u043e\u0447\u043a\u0430\u043c\u0438, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0432\u0441\u0435\u0433\u043e \u0447\u0435\u0442\u044b\u0440\u0435 \u0442\u043e\u0447\u043a\u0438. \u041c\u043e\u044f \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0433\u043e\u0440\u0434\u043e\u0441\u0442\u044c &#8212; \u0434\u0440\u0443\u0433\u0430\u044f \u043a\u0440\u0438\u0432\u0430\u044f. \u041e\u043d\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u043b\u044c\u0448\u0435, \u043d\u0435\u0436\u0435\u043b\u0438 \u044d\u0442\u0430, \u043d\u043e \u044d\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u0433\u043e. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0436\u0435 \u044f \u043f\u0440\u043e \u043d\u0435\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443.<\/p>\n<hr\/>\n<h2>\u0412\u0442\u043e\u0440\u0430\u044f \u043a\u0440\u0438\u0432\u0430\u044f<\/h2>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/70a\/bf9\/05c\/70abf905c04eeb5909da109e3f1cd0ff.png\" width=\"764\" height=\"592\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/70a\/bf9\/05c\/70abf905c04eeb5909da109e3f1cd0ff.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0434\u0443\u043c\u0430\u0432, \u043a\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u043e\u0447\u043a\u0438, \u044f \u043f\u0440\u0438\u0448\u0435\u043b \u0432 \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0447\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 X \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f X \u0442\u043e\u0447\u043a\u0438, \u0442\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0435:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"y(x)=\\frac{\\frac{y_1}{x-x_1}+\\frac{y_2}{x-x_2}+...}{\\frac{1}{x-x+1}+\\frac{1}{x-x2}+...}\" alt=\"y(x)=\\frac{\\frac{y_1}{x-x_1}+\\frac{y_2}{x-x_2}+...}{\\frac{1}{x-x+1}+\\frac{1}{x-x2}+...}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/764\/4d3\/3b8\/7644d33b8c510e7b0279382f0273b41e.svg\" width=\"223\" height=\"64\"\/><\/p>\n<p>\u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0438\u0434, \u043c\u044b \u0436\u0435 \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430 0, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0430\u044f \u0444\u043e\u0440\u043c\u0443\u043b\u0430:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"y(x)=\\frac{\\sum_{i=0}^{n} y_i*(\\prod_{j=0}^{i-1} x-x_j)*(\\prod_{j=i+1}^{n} x_j - x)}{\\sum_{i=0}^{n} (\\prod_{j=0}^{i-1} x-x_j)*(\\prod_{j=i+1}^{n} x_j - x)}\" alt=\"y(x)=\\frac{\\sum_{i=0}^{n} y_i*(\\prod_{j=0}^{i-1} x-x_j)*(\\prod_{j=i+1}^{n} x_j - x)}{\\sum_{i=0}^{n} (\\prod_{j=0}^{i-1} x-x_j)*(\\prod_{j=i+1}^{n} x_j - x)}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/773\/104\/829\/773104829bc03e766dd412b4579139fc.svg\" width=\"419\" height=\"66\"\/><\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u044d\u0442\u0443 \u0444\u043e\u0440\u043c\u0443\u043b\u0443 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 desmos, \u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0435 \u0442\u043e\u0447\u043a\u0438 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043a\u0440\u0438\u0432\u0443\u044e, \u043d\u043e \u0438 \u043d\u0435\u0442 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432 \u043a\u0430\u043a \u0441 \u043c\u043d\u043e\u0433\u043e\u0447\u043b\u0435\u043d\u043e\u043c \u041b\u0430\u0433\u0440\u0430\u043d\u0436\u0430. \u041a\u0440\u0438\u0432\u0430\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u0447\u0435\u043d\u044c \u0433\u043b\u0430\u0434\u043a\u043e \u0438 \u043f\u0440\u0438\u044f\u0442\u043d\u0430 \u0433\u043b\u0430\u0437\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u044e \u043c\u043d\u043e\u0433\u043e\u0447\u043b\u0435\u043d\u0443 \u041b\u0430\u0433\u0440\u0430\u043d\u0436\u0430, \u0430 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u043a\u0440\u0438\u0432\u0443\u044e, \u043c\u043e\u044f \u043a\u0440\u0438\u0432\u0430\u044f \u043b\u0443\u0447\u0448\u0435 \u043c\u043d\u043e\u0433\u043e\u0447\u043b\u0435\u043d\u0430 \u041b\u0430\u0433\u0440\u0430\u043d\u0436\u0430. \u0418 \u043e\u043d\u0430 \u0438\u043c\u0435\u0435\u0442 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0435\u043d\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0437\u0430 \u043e\u0434\u0438\u043d \u0446\u0438\u043a\u043b. \u0412 \u043a\u043e\u0434\u0435 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">public struct MCurve { private static float yab(Vector2 a, Vector2 b, float x) => (a.y * (b.x - x) + b.y * (x - a.x)) \/ (b.x - a.x);  public static float first(Vector2[] points, float x) { int i = 0; for (; i &lt; points.Length - 1; i++) if (points[i].x &lt;= x &amp;&amp; points[i+1].x >= x) break; return (yab(points[(i == 0 ? 0 : i-1)], points[i], x)*(points[i+1].x-x)*(points[i+1].x-x)+2*yab(points[i], points[i+1], x)*(points[i+1].x-x)(x-points[i].x)+yab(points[i+1], points[(i == points.Length - 1 ? i : i+1)], x)*(x-points[i].x)*(x-points[i].x))\/(2*(points[i+1].x-points[i].x)*(points[i+1].x-points[i].x) + yab(points[i], points[i+1], x) \/ 2; }  public static float second(Vector2[] points, float x) { float b = 0; float y = 0; for (int i = 0; i &lt; points.Length; i++) { k = 1; for (int j = 0; j &lt; i; j++) k *= (x - points[i].x); for (int j = i + 1; j > points.Length; j++) k *= (points[i].x - x); y += points[i].y * k; b += k; } return y \/ b; } }  <\/code><\/pre>\n<p>\u0412 \u0433\u0435\u0439\u043c\u0434\u0435\u0432\u0435 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044f: \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u0440\u0435\u043b\u044c\u0435\u0444\u0430. \u0421\u0430\u043c \u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0435\u0439 \u0435\u0449\u0435 \u0438 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u043d\u043e \u0441\u0430\u043c\u0443\u044e \u0432\u0430\u0436\u043d\u0443\u044e \u0440\u043e\u043b\u044c \u043e\u043d\u0430 \u0438\u0433\u0440\u0430\u043b\u0430 \u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u0440\u0440\u0435\u0439\u043d\u0430. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0438 \u0438\u043b\u0438 \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u0438, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043b\u044e\u0431\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0442\u043e\u0447\u0435\u043a &#8212; \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0441\u0434\u0435\u043b\u0430\u044e\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u043e \u0433\u043b\u0430\u0434\u043a\u043e \u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u043e.<\/p>\n<p>\u0412\u0435\u0441\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u043a\u043e\u0434 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Unity, \u0434\u043b\u044f \u0447\u0438\u0441\u0442\u043e\u0433\u043e c# \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b Vector3 \u0438 Vector2, \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c float \u043d\u0430 double \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438.<\/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\/661437\/\"> https:\/\/habr.com\/ru\/articles\/661437\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442!<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0442\u0435\u043c\u0430 \u0441\u0442\u0430\u0442\u044c\u0438 &#8212; \u043a\u0440\u0438\u0432\u044b\u0435, \u0438\u0445 \u0440\u0430\u0437\u0431\u043e\u0440, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438 \u043a\u0430\u043a \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0433\u0435\u0439\u043c\u0434\u0435\u0432.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e \u043a\u0440\u0438\u0432\u044b\u0435 \u0411\u0435\u0437\u044c\u0435.<\/p>\n<hr\/>\n<h2>\u041a\u0440\u0438\u0432\u0430\u044f \u0411\u0435\u0437\u044c\u0435<\/h2>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0432\u0430\u0441 \u043f\u0440\u043e \u043d\u0438\u0445 \u0441\u043b\u044b\u0448\u0430\u043b. \u0418\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u043e\u0432\u0441\u044e\u0434\u0443, \u0434\u0430\u0436\u0435 \u0448\u0440\u0438\u0444\u0442\u044b \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u044d\u043a\u0440\u0430\u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u0438\u043c \u043a\u0440\u0438\u0432\u044b\u043c. \u0411\u0435\u0437 \u044d\u0442\u0438\u0445 \u043a\u0440\u0438\u0432\u044b\u0445 \u0443 \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u043e\u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043d\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0445 \u0438 \u043f\u043b\u0430\u0432\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439, \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u044b\u043b\u043e \u0431\u044b \u0432 \u0440\u0430\u0437\u044b \u0431\u043e\u043b\u044c\u0448\u0435. \u041d\u043e \u043a\u0430\u043a \u0436\u0435 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u043c?<\/p>\n<p>\u042d\u0442\u0438 \u043a\u0440\u0438\u0432\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432, \u043d\u043e \u043b\u0438\u0448\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<ol>\n<li>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u0447\u0435\u043a. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443\u043b\u0443 \u0432\u0438\u0434\u0430 . \u0414\u043b\u044f \u0442\u0440\u0435\u0445 \u0442\u043e\u0447\u0435\u043a \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0431\u0443\u0434\u0443\u0442 1 2 1, \u0434\u043b\u044f \u0447\u0435\u0442\u044b\u0440\u0435\u0445 1 3 3 1, \u0434\u043b\u044f \u043f\u044f\u0442\u0438 1 4 6 4 1 \u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445. \u0418\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0435  \u0438\u043b\u0438 , \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u043b\u0435\u0439 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0447\u0438\u0441\u043b\u0430 \u043d\u0435 \u201c\u043d\u0430\u0441\u043b\u0430\u0438\u0432\u0430\u043b\u0438\u0441\u044c\u201d.<\/p>\n<\/li>\n<li>\n<p>\u0410 \u0432\u043e\u0442 \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u0447\u0435\u043a? \u0414\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0435\u043a\u0430 .<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u0435\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 &#8212; \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u041f\u043e\u043b\u0435\u043c \u0434\u0435 \u041a\u0430\u0441\u0442\u0435\u043b\u044c\u0436\u043e. \u0412 \u044d\u0442\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u043c\u044b \u0434\u0435\u043b\u0438\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0440\u0435\u0437\u043e\u043a \u0432 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 t:(1-t) \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u0442\u043e\u0447\u043a\u0430.<\/p>\n<\/li>\n<\/ol>\n<p>\u0418\u0442\u0430\u043a, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435 \u043c\u0435\u0442\u043e\u0434\u044b:<\/p>\n<pre><code class=\"cs\">public struct Bezier { private static float pow(float f, int n) { float r = 1; for (int i = 0; i &lt; n; i++) r *= f; return f; }  public static Vector3 first(Vector3[] points, float t) { List&lt;int[]> ks = new List&lt;int[]>() { new int[2] { 1, 1 }, new int[3] { 1, 2, 1 }, new int[4] { 1, 3, 3, 1 }, new int[5] { 1, 4, 6, 4, 1 }, new int[6] { 1, 5, 10, 10, 5, 1 }, new int[7] { 1, 6, 15, 20, 15, 6, 1 } }; if (points.Length == 0 || points.Length > ks.Count + 1) return 0; if (points.Length == 1) return points[0]; Vector3 p = new Vector3(); for (int i = 0; i &lt; points.Length; i++) p += pow(t, points.Length - 1 - i) * pow(1 - t, i) * ks[points.Length - 2][i] * points[i]; return p; }  public static Vector3 second(Vector3[] points, float t) { Vector3 p = Vector3(); for(int i = 0; i &lt; points.Length; i++) { int u = 1, d = 1; for(int j = 1; j &lt; points.Length  - i; j++) { u *= (j + i); d *= j; } p += pow(t, points.Length - 1 - i) * pow(1 - t, i) * (int)(u \/ d) * points[i]; } return p; }  public static Vector3 third(Vector3[] points, float t) { Vector3[] temp = points; Vector3[] temp1 = new Vector3[points.Length - 1]; while (true) { for (int i = 1; i &lt; temp.Length; i++) temp1[i - 1] = temp[i - 1] * t + temp[i] * (1 - t); if (temp1.Length == 1) break; temp = temp1; temp1 = new Vector3[temp.Length - 1]; } return temp1[0]; } } <\/code><\/pre>\n<p>\u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0441\u0430\u043c\u044b\u0439 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 &#8212; \u043f\u0435\u0440\u0432\u044b\u0439, \u043d\u043e \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0442\u043e\u0447\u0435\u043a. \u0415\u043c\u0443 \u0443\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0442\u0440\u0435\u0442\u0438\u0439, \u043d\u043e \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0442\u043e\u0447\u0435\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b. \u0421\u0432\u043e\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 x-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 y-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443. \u0421\u0430\u043c\u044b\u0439 \u044f\u0440\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0438 &#8212; \u0441\u043f\u043b\u0430\u0439\u043d \u041b\u0430\u0433\u0440\u0430\u043d\u0436\u0430, \u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0441\u0432\u043e\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b. \u0418 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043c\u043d\u043e\u0433\u043e\u0447\u043b\u0435\u043d \u041b\u0430\u0433\u0440\u0430\u043d\u0436\u0430 \u0432\u044b\u0434\u0430\u0435\u0442 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u043a\u0440\u0438\u0432\u0443\u044e \u043f\u0440\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u043e\u0447\u043a\u0430\u0445.<\/p>\n<p>\u0427\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044f? \u042d\u0442\u043e \u043a\u0440\u0438\u0432\u0430\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u0432\u0441\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u0440\u0438\u0432\u044b\u0435 \u0411\u0435\u0437\u044c\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0435\u0439, \u044d\u0442\u043e \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u044f!<\/p>\n<hr\/>\n<h2>\u041f\u0435\u0440\u0432\u0430\u044f \u043a\u0440\u0438\u0432\u0430\u044f<\/h2>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0418\u0442\u0430\u043a, \u043a\u0430\u043a \u044f \u043f\u0440\u0438\u0448\u0435\u043b \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u043c\u0435\u0442\u043e\u0434\u0443 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0438. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u0435\u0431\u0435 \u043a\u0440\u0438\u0432\u0443\u044e. \u0427\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c? \u0412 \u0443\u043c\u0435 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u0435\u0442 \u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e \u0441\u0433\u043b\u0430\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u0440\u0430\u044f\u043c\u0438. \u041a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u043a\u0440\u0438\u0432\u0443\u044e? \u0414\u043b\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u0444\u043e\u0440\u043c\u0443\u043b\u0430:<\/p>\n<p>\u0414\u043b\u044f \u0441\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u044f, \u0443 \u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043d\u043e \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043e\u0442\u0440\u0435\u0437\u043a\u0430 \u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043e\u0442\u0440\u0435\u0437\u043a\u0430. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0444\u043e\u0440\u043c\u0443\u043b\u0430: <\/p>\n<p>\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043a\u0440\u0438\u0432\u0443\u044e \u043d\u0430 \u043e\u0442\u0440\u0435\u0437\u043a\u0435 1-2. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 desmos \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439. \u0415\u0441\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0448\u0442\u0440\u0438\u0445. \u041f\u043e\u0440\u0430\u0437\u043c\u044b\u0441\u043b\u0438\u0432, \u044f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u043a\u0440\u0438\u0432\u0430\u044f, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0430\u044f \u0437\u0430 \u043b\u0438\u043d\u0435\u0439\u043d\u0443\u044e \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044e \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u0440\u0435\u0437\u043a\u0430, \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u043b\u0438\u044f\u0442\u044c \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0430\u0447\u0430\u043b\u0430 \u043a \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u044b \u043a \u043a\u043e\u043d\u0446\u0443. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043f\u0430\u0440\u0430\u0431\u043e\u043b\u0430, \u0442\u043e \u0435\u0441\u0442\u044c . \u041a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0443\u043b\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0435\u0449\u0435 \u043b\u0443\u0447\u0448\u0435:<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u0435\u043d \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c:<\/p>\n<pre><code class=\"cs\">public struct MCurve { private static float yab(Vector2 a, Vector2 b, float x) => (a.y * (b.x - x) + b.y * (x - a.x)) \/ (b.x - a.x);  public static float first(Vector2[] points, float x) { int i = 0; for (; i &lt; points.Length - 1; i++) if (points[i].x &lt;= x &amp;&amp; points[i+1].x >= x) break; return (yab(points[(i == 0 ? 0 : i-1)], points[i], x)*(points[i+1].x-x)*(points[i+1].x-x)+2*yab(points[i], points[i+1], x)*(points[i+1].x-x)(x-points[i].x)+yab(points[i+1], points[(i == points.Length - 1 ? i : i+1)], x)*(x-points[i].x)*(x-points[i].x))\/(2*(points[i+1].x-points[i].x)*(points[i+1].x-points[i].x) + yab(points[i], points[i+1], x) \/ 2; } } <\/code><\/pre>\n<p>\u041d\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043e\u0442\u0440\u0435\u0437\u043a\u0435 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0442\u043e\u0447\u043a\u0430\u043c\u0438, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0432\u0441\u0435\u0433\u043e \u0447\u0435\u0442\u044b\u0440\u0435 \u0442\u043e\u0447\u043a\u0438. \u041c\u043e\u044f \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0433\u043e\u0440\u0434\u043e\u0441\u0442\u044c &#8212; \u0434\u0440\u0443\u0433\u0430\u044f \u043a\u0440\u0438\u0432\u0430\u044f. \u041e\u043d\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u043b\u044c\u0448\u0435, \u043d\u0435\u0436\u0435\u043b\u0438 \u044d\u0442\u0430, \u043d\u043e \u044d\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u0433\u043e. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0436\u0435 \u044f \u043f\u0440\u043e \u043d\u0435\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443.<\/p>\n<hr\/>\n<h2>\u0412\u0442\u043e\u0440\u0430\u044f \u043a\u0440\u0438\u0432\u0430\u044f<\/h2>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0434\u0443\u043c\u0430\u0432, \u043a\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u043e\u0447\u043a\u0438, \u044f \u043f\u0440\u0438\u0448\u0435\u043b \u0432 \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0447\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430 X \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f X \u0442\u043e\u0447\u043a\u0438, \u0442\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0435:<\/p>\n<p>\u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0438\u0434, \u043c\u044b \u0436\u0435 \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430 0, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0430\u044f \u0444\u043e\u0440\u043c\u0443\u043b\u0430:<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u044d\u0442\u0443 \u0444\u043e\u0440\u043c\u0443\u043b\u0443 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 desmos, \u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0435 \u0442\u043e\u0447\u043a\u0438 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043a\u0440\u0438\u0432\u0443\u044e, \u043d\u043e \u0438 \u043d\u0435\u0442 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432 \u043a\u0430\u043a \u0441 \u043c\u043d\u043e\u0433\u043e\u0447\u043b\u0435\u043d\u043e\u043c \u041b\u0430\u0433\u0440\u0430\u043d\u0436\u0430. \u041a\u0440\u0438\u0432\u0430\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u0447\u0435\u043d\u044c \u0433\u043b\u0430\u0434\u043a\u043e \u0438 \u043f\u0440\u0438\u044f\u0442\u043d\u0430 \u0433\u043b\u0430\u0437\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u044e \u043c\u043d\u043e\u0433\u043e\u0447\u043b\u0435\u043d\u0443 \u041b\u0430\u0433\u0440\u0430\u043d\u0436\u0430, \u0430 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u043a\u0440\u0438\u0432\u0443\u044e, \u043c\u043e\u044f \u043a\u0440\u0438\u0432\u0430\u044f \u043b\u0443\u0447\u0448\u0435 \u043c\u043d\u043e\u0433\u043e\u0447\u043b\u0435\u043d\u0430 \u041b\u0430\u0433\u0440\u0430\u043d\u0436\u0430. \u0418 \u043e\u043d\u0430 \u0438\u043c\u0435\u0435\u0442 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0435\u043d\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0437\u0430 \u043e\u0434\u0438\u043d \u0446\u0438\u043a\u043b. \u0412 \u043a\u043e\u0434\u0435 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cs\">public struct MCurve { private static float yab(Vector2 a, Vector2 b, float x) => (a.y * (b.x - x) + b.y * (x - a.x)) \/ (b.x - a.x);  public static float first(Vector2[] points, float x) { int i = 0; for (; i &lt; points.Length - 1; i++) if (points[i].x &lt;= x &amp;&amp; points[i+1].x >= x) break; return (yab(points[(i == 0 ? 0 : i-1)], points[i], x)*(points[i+1].x-x)*(points[i+1].x-x)+2*yab(points[i], points[i+1], x)*(points[i+1].x-x)(x-points[i].x)+yab(points[i+1], points[(i == points.Length - 1 ? i : i+1)], x)*(x-points[i].x)*(x-points[i].x))\/(2*(points[i+1].x-points[i].x)*(points[i+1].x-points[i].x) + yab(points[i], points[i+1], x) \/ 2; }  public static float second(Vector2[] points, float x) { float b = 0; float y = 0; for (int i = 0; i &lt; points.Length; i++) { k = 1; for (int j = 0; j &lt; i; j++) k *= (x - points[i].x); for (int j = i + 1; j > points.Length; j++) k *= (points[i].x - x); y += points[i].y * k; b += k; } return y \/ b; } }  <\/code><\/pre>\n<p>\u0412 \u0433\u0435\u0439\u043c\u0434\u0435\u0432\u0435 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u044f: \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u0440\u0435\u043b\u044c\u0435\u0444\u0430. \u0421\u0430\u043c \u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0435\u0439 \u0435\u0449\u0435 \u0438 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u043d\u043e \u0441\u0430\u043c\u0443\u044e \u0432\u0430\u0436\u043d\u0443\u044e \u0440\u043e\u043b\u044c \u043e\u043d\u0430 \u0438\u0433\u0440\u0430\u043b\u0430 \u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u0440\u0440\u0435\u0439\u043d\u0430. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u043e\u043b\u044f\u0446\u0438\u0438 \u0438\u043b\u0438 \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u0438, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043b\u044e\u0431\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0442\u043e\u0447\u0435\u043a &#8212; \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0441\u0434\u0435\u043b\u0430\u044e\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u043e \u0433\u043b\u0430\u0434\u043a\u043e \u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u043e.<\/p>\n<p>\u0412\u0435\u0441\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u043a\u043e\u0434 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Unity, \u0434\u043b\u044f \u0447\u0438\u0441\u0442\u043e\u0433\u043e c# \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b Vector3 \u0438 Vector2, \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c float \u043d\u0430 double \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438.<\/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\/661437\/\"> https:\/\/habr.com\/ru\/articles\/661437\/<\/a><br \/><\/br><\/br><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-405870","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/405870","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=405870"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/405870\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=405870"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=405870"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=405870"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}