Advertisement
Guest User

Untitled

a guest
Mar 14th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. using System;
  2. using System.Drawing;
  3. using System.Windows.Forms;
  4.  
  5. namespace WindowsFormsApp1
  6. {
  7. public partial class Form1 : Form
  8. {
  9. public Form1()
  10. {
  11. InitializeComponent();
  12. }
  13. Graphics G; // Объект графики
  14.  
  15. PointF[] Arr = new PointF[] // Исходный массив точек
  16. {
  17.  
  18. new PointF(10,150),
  19. new PointF(5,50),
  20. new PointF(150,50),
  21. new PointF(140,140),
  22. new PointF(150,50),
  23. new PointF(150,50),
  24. new PointF(150,50),
  25.  
  26. };
  27. int Fuctorial(int n) // Функция вычисления факториала
  28. {
  29. int res = 1;
  30. for (int i = 1; i <= n; i++)
  31. res *= i;
  32. return res;
  33. }
  34. float polinom (int i, int n, float t)// Функция вычисления полинома Бернштейна
  35. {
  36. return (Fuctorial(n)/(Fuctorial(i) * Fuctorial(n - i)))* (float)Math.Pow(t, i) * (float)Math.Pow(1 - t, n - i);
  37. }
  38. void Draw()// Функция рисования кривой
  39. {
  40. int j = 0;
  41. float step = 0.01f;// Возьмем шаг 0.01 для большей точности
  42.  
  43. PointF[] result = new PointF[101];//Конечный массив точек кривой
  44. for (float t = 0; t < 1; t += step)
  45. {
  46. float ytmp = 0;
  47. float xtmp = 0;
  48. for (int i = 0; i < Arr.Length; i++)
  49. { // проходим по каждой точке
  50. float b = polinom(i, Arr.Length - 1, t); // вычисляем наш полином Берштейна
  51. xtmp += Arr[i].X * b; // записываем и прибавляем результат
  52. ytmp += Arr[i].Y * b;
  53. }
  54. result[j] = new PointF(xtmp, ytmp);
  55. j++;
  56.  
  57. }
  58. G.DrawLines(new Pen(Color.Red), result);// Рисуем полученную кривую Безье
  59. }
  60.  
  61. private void button1_Click(object sender, EventArgs e)
  62. {
  63. G = Graphics.FromHwnd(pictureBox1.Handle);
  64. G.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
  65. Draw();
  66. }
  67. }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement