Уроки, алгоритмы, программы, примеры

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

У меня проблема вот с этим: gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);. Вылезает ошибка: CS1061 "object" не содержит определения "GL_COLOR_BUFFER_BIT", и не удалось найти доступный метод расширения "GL_COLOR_BUFFER_BIT",...
Большое спасибо. Единственный код который прошел без каких либо ошибок. Ура!!!
Скажите пожалуйста, подскажите алгоритм по которому по заданным точкам можно определить тип многогранника, скажем это куб или прямоугольный параллелепипед. Нашел теорию по этим фигурам: https://www.mat... https://www.mat... Акцентировать внимание...
Всем у кого не работает. файл wizard.script Ещё одно упоминание Glut32 в строке "if (!VerifyLibFile(dir_nomacro_lib, _T("glut32"), _T("GLUT's"))) return false;" меняем на "if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("GLUT's"))) return...
Не получается, емаё

Счетчики и рейтинг

Рейтинг@Mail.ru Яндекс.Метрика
Скриншот к примеру
Среда программирования: 
Microsoft Visual Studio 2015

Программа демонстрирующая интерполяцию полиномом Ньютона

Код программы: 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Newton_Interpolate
{
    public partial class Form1 : Form
    {
 
        public struct point //Структура точки
        {
            public double X, Y; //Машинные координаты
            public double x, y; //Реальные координаты
        }
 
 
        //Координаты исходных точек.
        public double[,] Pts = { { -10, 18.7 }, 
                                 { -8, 10.3 }, 
                                 { -4.5, -5.2 }, 
                                 { -2.2, -4 },
                                 { 0, 4.2},
                                 {4.2, 2.9},
                                 {6.4, 3.6},
                                 {8.6, 4.7},
                                 {10, 10.2}
                               };
 
        public point[] Points = new point[100]; //Массив точек
        public Font drawFont = new Font("Arial", 8); //Стиль шрифта и его размер, для отрисовки координат точек на плоскости
        public int xc=300, yc=300; //Координаты центра координатных осей
 
 
        public Form1()
        {
            InitializeComponent();
        }
 
        //Отрисовка плоскости, с точками и координатными осями
        public void drawPlain()
        {
            Graphics g = Graphics.FromHwnd(picturebox1.Handle); 
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
 
            g.Clear(Color.Black);
            Pen Axis = new Pen(Color.White, 1);
 
            g.DrawLine(Axis, 0, 300, 600, 300);
            g.DrawLine(Axis, 300, 0, 300, 600);
 
            for (int i = 0; i <= 600; i += 15)
            {
                g.DrawLine(Axis, i, 298, i, 302);
                g.DrawLine(Axis, 298, i, 302, i);
            }
 
            for (int i = 0; i < (Pts.Length / 2); i++)
            {
                Points[i].x = Pts[i, 0];
                Points[i].y = Pts[i, 1];
                Points[i].X = xc + Points[i].x * 15;
                Points[i].Y = yc - Points[i].y * 15;
            }
 
            DrawPoints();//Отрисовка точек
        }
 
        public int ChangeCoordinates(double a, int isY) //Перевод координат из реальных в машинные
        {
            if (isY == 1) return (int)(yc - a * 15);
            return (int)(xc + a * 15);
        }
 
 
        //Высчитывание полинома Ньютона в заданном отрезка, с заданными точками.
        public double Newton(double x)
        {
            double res = Points[0].y, F = 0, den = 1, n = Pts.Length/2;
            int i, j, k;
            for (i = 1; i < n; i++)
            {
                F = 0;
                for (j = 0; j <= i; j++)
                {
                    den = 1;
                    for (k = 0; k <= i; k++)
                    {
                        if (k != j) den *= (Points[j].x - Points[k].x);
                    }
                    F += Points[j].y / den;
                }
                for (k = 0; k < i; k++) F *= (x - Points[k].x);
                res += F;
            }
            return res;
        }
 
 
        //Отрисовка точек и их координат на плоскости
        public void DrawPoints()
        {
            Graphics g = Graphics.FromHwnd(picturebox1.Handle);
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
 
            SolidBrush pointBrush = new SolidBrush(Color.Green);
            SolidBrush drawPointBrush = new SolidBrush(Color.Cyan);
 
            for (int i = 0; i < (Pts.Length / 2); i++)
            {
                g.FillEllipse(pointBrush, (float)Points[i].X - 2, (float)Points[i].Y - 2, 4, 4);
                String drawString = "[" + Points[i].x + "; " + Points[i].y + "]";
                PointF drawPoint = new PointF((float)Points[i].X, (float)Points[i].Y);
                g.DrawString(drawString, drawFont, drawPointBrush, drawPoint);
            }
        }
 
 
        //Отрисовка интерполированной функции по нажатию на кнопку "Draw"
        private void Draw_Button_Click(object sender, EventArgs e)
        {
            Graphics g = Graphics.FromHwnd(picturebox1.Handle);
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
 
            SolidBrush drawLineNewton = new SolidBrush(Color.Red);
 
            drawPlain();
 
            for (double i = -15.0f; i <= 15.0f; i += 0.0005f)
            {
                g.FillEllipse(drawLineNewton, ChangeCoordinates(i, 0), ChangeCoordinates(Newton(i), 1), 1, 1);
            }
            DrawPoints();
 
        }
    }
}

Прикрепленный файлРазмер
Newton.zip97.9 кб