Построить кривую Безье по 4 точкам использовать Bezier - C#
Формулировка задачи:
Нужно построить кривую Безье по 4 точкам использовать Bezier (Graphics)
код у меня есть и все запускается вот правда не рисует нечего.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication6 { public partial class Form1 : Form { public static void bezierCurve( Graphics g, double p1x, double p1y, double p2x, double p2y, double p3x, double p3y, double p4x, double p4y) { double t, r1x, r4x, r1y, r4y; float x, y; Pen black = new Pen(Color.Black); r1x = 3 * (p2x - p1x); r4x = 3 * (p4x - p3x); r1y = 3 * (p2y - p1y); r4y = 3 * (p4y - p3y); t = 0; while (t <= 1) { x = (float)((2 * Math.Pow(t, 3) - 3 * Math.Pow(t, 2) + 1) * p1x + (-2 * Math.Pow(t, 3) + 3 * Math.Pow(t, 2)) * p4x + (Math.Pow(t, 3) - 2 * Math.Pow(t, 2) + t) * r1x + (Math.Pow(t, 3) - Math.Pow(t, 2)) * r4x); y = (float)((2 * Math.Pow(t, 3) - 3 * Math.Pow(t, 2) + 1) * p1y + (-2 * Math.Pow(t, 3) + 3 * Math.Pow(t, 2)) * p1y + (Math.Pow(t, 3) - 2 * Math.Pow(t, 2) + t) * r1y + (Math.Pow(t, 3) - Math.Pow(t, 2)) * r4y); g.DrawRectangle(black, x, y, 1, 1); t = t + 0.01; } } } }
возможно что то нужно добавить, Mouse click ?
Решение задачи: «Построить кривую Безье по 4 точкам использовать Bezier»
textual
Листинг программы
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WinFormsTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public static void bezierCurve( Graphics g, double p1x, double p1y, double p2x, double p2y, double p3x, double p3y, double p4x, double p4y) { double t, r1x, r4x, r1y, r4y; float x, y; Pen black = new Pen(Color.Black); r1x = 3 * (p2x - p1x); r4x = 3 * (p4x - p3x); r1y = 3 * (p2y - p1y); r4y = 3 * (p4y - p3y); t = 0; while (t <= 1) { x = (float)((2 * Math.Pow(t, 3) - 3 * Math.Pow(t, 2) + 1) * p1x + (-2 * Math.Pow(t, 3) + 3 * Math.Pow(t, 2)) * p4x + (Math.Pow(t, 3) - 2 * Math.Pow(t, 2) + t) * r1x + (Math.Pow(t, 3) - Math.Pow(t, 2)) * r4x); y = (float)((2 * Math.Pow(t, 3) - 3 * Math.Pow(t, 2) + 1) * p1y + (-2 * Math.Pow(t, 3) + 3 * Math.Pow(t, 2)) * p1y + (Math.Pow(t, 3) - 2 * Math.Pow(t, 2) + t) * r1y + (Math.Pow(t, 3) - Math.Pow(t, 2)) * r4y); g.DrawRectangle(black, x, y, 1, 1); t = t + 0.01; } } private void Form1_MouseClick(object sender, MouseEventArgs e) { Graphics gfx = this.CreateGraphics(); bezierCurve(gfx, 20, 20, 100, 100, 200, 200, 50, 50); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д