Построить кривую Безье по 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);
        }
    }
}

Оцени полезность:

15   голосов , оценка 4.2 из 5
Похожие ответы