Advertisement
Guest User

Untitled

a guest
Apr 19th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.79 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 WindowsFormsApp8
  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.Red, 1);
  17.  
  18.  
  19.         public Form1()
  20.         {
  21.             InitializeComponent();
  22.             g = pictureBox1.CreateGraphics();
  23.         }
  24.  
  25.         private void Form1_Load(object sender, EventArgs e)
  26.         {
  27.  
  28.         }
  29.  
  30.         private void button1_Click(object sender, EventArgs e)
  31.         {
  32.             g = pictureBox1.CreateGraphics();
  33.  
  34.             double X1, Y1, X2, Y2, X3, Y3, X4, Y4;
  35.             Double.TryParse(P1X.Text, out X1);
  36.             Double.TryParse(P1Y.Text, out Y1);
  37.             Double.TryParse(P2X.Text, out X2);
  38.             Double.TryParse(P2Y.Text, out Y2);
  39.             Double.TryParse(P3X.Text, out X3);
  40.             Double.TryParse(P3Y.Text, out Y3);
  41.             Double.TryParse(P4X.Text, out X4);
  42.             Double.TryParse(P4Y.Text, out Y4);
  43.  
  44.             double Xp = X1, Yp = Y1;
  45.             for (double t = 0; t < 1; t += 0.01)
  46.             {
  47.                 double x = Math.Pow(1 - t, 3) * X1 + 3 * t * Math.Pow(1 - t, 2) * X2 + 3 * t * t * (1 - t) * X3 + Math.Pow(t, 3) * X4;
  48.                 double y = Math.Pow(1 - t, 3) * Y1 + 3 * t * Math.Pow(1 - t, 2) * Y2 + 3 * t * t * (1 - t) * Y3 + Math.Pow(t, 3) * Y4;
  49.                 g.DrawLine(pen1, (float)Xp, (float)Yp, (float)x, (float)y);
  50.                 Xp = x; Yp = y;
  51.             }
  52.  
  53.  
  54.  
  55.         }
  56.  
  57.         private void pictureBox1_Click(object sender, EventArgs e)
  58.         {
  59.  
  60.         }
  61.  
  62.         private void button2_Click(object sender, EventArgs e)
  63.         {
  64.             double X1, Y1, X2, Y2, X3, Y3, X4, Y4;
  65.             Double.TryParse(P1X.Text, out X1);
  66.             Double.TryParse(P1Y.Text, out Y1);
  67.             Double.TryParse(P2X.Text, out X2);
  68.             Double.TryParse(P2Y.Text, out Y2);
  69.             Double.TryParse(P3X.Text, out X3);
  70.             Double.TryParse(P3Y.Text, out Y3);
  71.             Double.TryParse(P4X.Text, out X4);
  72.             Double.TryParse(P4Y.Text, out Y4);
  73.  
  74.             double Xp = X1, Yp = Y1;
  75.             for (double t = 0; t < 1; t += 0.01)
  76.             {
  77.                 double x = (2 * t * t * t - 3 * t * t + 1) * X1 + (-2 * t * t * t + 3 * t * t) * X4 + (t * t * t - 2 * t * t + t) * X2 + (t * t * t - t * t) * X3;
  78.                 double y = (2 * t * t * t - 3 * t * t + 1) * Y1 + (-2 * t * t * t + 3 * t * t) * Y4 + (t * t * t - 2 * t * t + t) * Y2 + (t * t * t - t * t) * Y3;
  79.                 g.DrawLine(pen1, (float)Xp, (float)Yp, (float)x, (float)y);
  80.                 Xp = x; Yp = y;
  81.             }
  82.         }
  83.  
  84.         private void button3_Click(object sender, EventArgs e)
  85.         {
  86.  
  87.             double[,] tab = new double[8, 2];
  88.  
  89.             tab[0, 0] = 0;
  90.             tab[0, 1] = 0;
  91.  
  92.             tab[1, 0] = 0;
  93.             tab[1, 1] = 200;
  94.  
  95.             tab[2, 0] = 100;
  96.             tab[2, 1] = 0;
  97.  
  98.             tab[3, 0] = 100;
  99.             tab[3, 1] = 200;
  100.  
  101.             tab[4, 0] = 200;
  102.             tab[4, 1] = 0;
  103.  
  104.             tab[5, 0] = 200;
  105.             tab[5, 1] = 200;
  106.  
  107.             tab[6, 0] = 300;
  108.             tab[6, 1] = 0;
  109.  
  110.             tab[7, 0] = 300;
  111.             tab[7, 1] = 200;
  112.  
  113.  
  114.  
  115.             double xx, yy, x, y;
  116.             int i = 0;
  117.             double t = 0;
  118.             xx = Math.Pow((1 - t), 3) * tab[i, 0] / 6 + (3 * Math.Pow(t, 3) - 6 * Math.Pow(t, 2) + 4) * tab[i + 1, 0] / 6 + (-3 * Math.Pow(t, 3) + 3 * Math.Pow(t, 2) + 3 * t + 1) * tab[i + 2, 0] / 6 + Math.Pow(t, 3) * tab[i + 3, 0] / 6;
  119.             yy = Math.Pow((1 - t), 3) * tab[i, 1] / 6 + (3 * Math.Pow(t, 3) - 6 * Math.Pow(t, 2) + 4) * tab[i + 1, 1] / 6 + (-3 * Math.Pow(t, 3) + 3 * Math.Pow(t, 2) + 3 * t + 1) * tab[i + 2, 1] / 6 + Math.Pow(t, 3) * tab[i + 3, 1] / 6;
  120.  
  121.             for (i = 1; i < 4; i++)
  122.             {
  123.                 for (t = 0.001; t < 1; t = t + 0.001)
  124.                 {
  125.                     x = Math.Pow((1 - t), 3) * tab[i, 0] / 6 + (3 * Math.Pow(t, 3) - 6 * Math.Pow(t, 2) + 4) * tab[i + 1, 0] / 6 + (-3 * Math.Pow(t, 3) + 3 * Math.Pow(t, 2) + 3 * t + 1) * tab[i + 2, 0] / 6 + Math.Pow(t, 3) * tab[i + 3, 0] / 6;
  126.                     y = Math.Pow((1 - t), 3) * tab[i, 1] / 6 + (3 * Math.Pow(t, 3) - 6 * Math.Pow(t, 2) + 4) * tab[i + 1, 1] / 6 + (-3 * Math.Pow(t, 3) + 3 * Math.Pow(t, 2) + 3 * t + 1) * tab[i + 2, 1] / 6 + Math.Pow(t, 3) * tab[i + 3, 1] / 6;
  127.                     g.DrawLine(pen1, (float)(xx), (float)(yy), (float)(x), (float)(y));
  128.                     xx = x;
  129.                     yy = y;
  130.                 }
  131.  
  132.             }       }
  133.     }
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement