Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.83 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. namespace Krzywe_B
  12. {
  13. public partial class Form1 : Form
  14. {
  15. private System.Drawing.Graphics g;
  16. private System.Drawing.Pen pen1 = new System.Drawing.Pen(Color.Blue, 2);
  17. private System.Drawing.Pen pen2 = new System.Drawing.Pen(Color.Red, 2);
  18. PointF P1 = new PointF();
  19. PointF P2 = new PointF();
  20. PointF P3 = new PointF();
  21. PointF P4 = new PointF();
  22. PointF P5 = new PointF();
  23. PointF P6 = new PointF();
  24. PointF P7 = new PointF();
  25.  
  26. PointF[] Points = new PointF[7];
  27.  
  28.  
  29. public Form1()
  30. {
  31. InitializeComponent();
  32. g = pictureBox1.CreateGraphics();
  33. P1.X = 0;
  34. P1.Y = 0;
  35. P2.X = 300;
  36. P2.Y = 0;
  37. P3.X = 150;
  38. P3.Y = 40;
  39. P4.X = 300;
  40. P4.Y = 300;
  41. Points[0] = P1;
  42. Points[1] = P2;
  43. Points[2] = P3;
  44. Points[3] = P4;
  45.  
  46. }
  47.  
  48. private void Form1_Load(object sender, EventArgs e)
  49. {
  50.  
  51. }
  52.  
  53. private void pictureBox1_Click(object sender, EventArgs e)
  54. {
  55.  
  56. }
  57. private void button1_Click(object sender, EventArgs e)
  58. {
  59.  
  60.  
  61. double startx = Points[0].X;
  62. double starty = Points[0].Y;
  63. double x, y;
  64. g.DrawBezier(pen2, P1.X, P1.Y, P2.X, P2.Y, P3.X, P3.Y, P4.X, P4.Y);
  65.  
  66. for (double t = 0; t < 1; t = t + 0.001)
  67. {
  68.  
  69. x = Math.Pow((1 - t), 3) * Points[0].X + 3 * t * (Math.Pow((1 - t), 2)) * Points[1].X + 3 * t * t * (1 - t) * Points[2].X + t * t * t * Points[3].X;
  70. y = Math.Pow((1 - t), 3) * Points[0].Y + 3 * t * (Math.Pow((1 - t), 2)) * Points[1].Y + 3 * t * t * (1 - t) * Points[2].Y + t * t * t * Points[3].Y;
  71. g.DrawLine(pen1, (int)startx, (int)starty, (int)x, (int)y);
  72. startx = x;
  73. starty = y;
  74.  
  75. }
  76.  
  77. for(int i =0; i < Points.Length; i++)
  78. {
  79. g.DrawEllipse(pen2, new RectangleF(Points[i].X, Points[i].Y, 3, 3));
  80. }
  81.  
  82.  
  83.  
  84. }
  85.  
  86. private void button2_Click(object sender, EventArgs e)
  87. {
  88. pictureBox1.Refresh();
  89. P1.X = 0;
  90. P1.Y = 0;
  91. P2.X = 200;
  92. P2.Y = 3;
  93. P3.X = 10;
  94. P3.Y = 200;
  95. P4.X = 300;
  96. P4.Y = 300;
  97.  
  98. double start = P1.X;
  99. double next = P2.Y;
  100. double x, y;
  101.  
  102. PointF R1 = new PointF();
  103. PointF R2 = new PointF();
  104. R1.X = P2.X - P1.X;
  105. R1.Y = P2.Y - P1.Y;
  106. R2.X = P4.X - P3.X;
  107. R2.Y = P4.Y - P3.Y;
  108.  
  109. for (double t = 0; t < 1; t = t + 0.001)
  110. {
  111. x = (2 * t * t * t - 3 * t * t + 1) * P1.X + (-2 * t * t * t + 3 * t * t) * P4.X + (t * t * t - 2 * t * t + t) * R1.X + (t * t * t - t * t) * R2.X;
  112. y = (2 * t * t * t - 3 * t * t + 1) * P1.Y + (-2 * t * t * t + 3 * t * t) * P4.Y + (t * t * t - 2 * t * t + t) * R1.Y + (t * t * t - t * t) * R2.Y;
  113. g.DrawLine(pen1, (int)start, (int)next, (int)x, (int)y);
  114. start = x;
  115. next = y;
  116.  
  117. }
  118. }
  119.  
  120.  
  121.  
  122.  
  123. private void button3_Click(object sender, EventArgs e)
  124. {
  125. PointF P1 = new PointF();
  126. PointF P2 = new PointF();
  127. P1.X = 20;
  128. P1.Y = 30;
  129. P2.X = 10;
  130. double Tx = P1.X;
  131. double Ty = P1.Y;
  132. double x = 100;
  133. double y = 120;
  134. double r = 50;
  135. double alfa = 0;
  136. double dalfa = (2 * Math.PI) / 100;
  137. pictureBox1.Refresh();
  138. for (int i = 0; i < 1000; i++)
  139. {
  140. g.DrawLine(pen1,
  141. (int)(r * Math.Cos(alfa + dalfa * i) + (x)),
  142. (int)(r * Math.Sin(alfa + dalfa * i) + (y)),
  143. (int)(r * Math.Cos(alfa + dalfa * (i + 1)) + (x)),
  144. (int)(r * Math.Sin(alfa + dalfa * (i + 1)) + (y))
  145. );
  146.  
  147. g.DrawLine(pen2,
  148. P2.X * (int)(r * Math.Cos(alfa + dalfa * i) + (x - Tx)),
  149. P2.X * (int)(r * Math.Sin(alfa + dalfa * i) + (y - Ty)),
  150. P2.X * (int)(r * Math.Cos(alfa + dalfa * (i + 1)) + (x - Tx)),
  151. P2.X * (int)(r * Math.Sin(alfa + dalfa * (i + 1)) + (y - Ty))
  152. );
  153. }
  154. }
  155. }
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement