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

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

Построения
на плоскости (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 Яндекс.Метрика
Скриншот к примеру
Среда программирования: 
Visual Studio 2013

В данном примере строится многоугольник по количеству сторон n, координатам центра многоугольника и расстоянию R от центра многоугольника до его стороны. Все эти данные вводятся пользователем и начинают обрабатываться по нажатию кнопки "Построить". Программа позволяет рисовать на одной форме многоугольники с различными параметрами.

Функция button1_Click получает входные параметры и обрабатывает их на корректность. В случае некорректных данных: отрицательного количества сторон или отрицательного расстояния программа сообщает о некорректности данных (в случае ввода отрицательных координат многоугольник смещается относительно области видимости и при определённых значениях может полностью оказаться вне зоны видимости(вне формы), как и в случае ввода достаточно большого значения расстояния). Если данные, введённые пользователем корректны, то управление переходит к функции lineAngle, которая производит непосредственно построение многоугольника.

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

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 pravilnyy_mnogougolnik
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int n;//количество сторон
        int R;//расстояние от центра до стороны
        Point Cntr;//центр
        Point[] p; //массив точек будущего многоугольника
        //создаём массив точек нашего многоугольника
        private void lineAngle(double angle)
        {
            double z = 0; int i=0;
            while (i<n+1)
            {
 
                p[i].X=Cntr.X+(int)( Math.Round(Math.Cos(z/180*Math.PI)*R) );
                p[i].Y=Cntr.Y-(int)( Math.Round(Math.Sin(z/180*Math.PI)*R) );
                z=z+angle;
                i++; 
            }
        }
 
 
        private void button1_Click(object sender, EventArgs e)
        {
            label10.Text = "";
            //получаем входные данные и проверяем их на корректность
            n = Convert.ToInt32(textBox4.Text);
            R = Convert.ToInt32(textBox5.Text);
            Cntr.X = Convert.ToInt32(textBox6.Text);
            Cntr.Y = Convert.ToInt32(textBox7.Text);
            if (n < 0 || R < 0)
                label10.Text = "Неверные входные данные!";
            else //входные данные корректны, рисуем многоуголник
            {
                p = new Point[n + 1];
                lineAngle((double)(360.0 / (double)n));
                int i = n;
                Graphics g = pictureBox2.CreateGraphics();
                while (i > 0)
                {
                    g.DrawLine(new Pen(Color.Black, 2), p[i], p[i - 1]);
                    i = i - 1;
                }
            }
        }
 
        //оставляем нарисованный многоугольник, обнуляем входные значения для нового ввода
        private void button2_Click(object sender, EventArgs e)
        {
            textBox4.Text = "0";
            textBox5.Text = "0";
            textBox6.Text = "0";
            textBox7.Text = "0";
            label10.Text = "";
 
        }
        //стираем всё нарисованное, не обнуляя последние входные данные
        private void button3_Click(object sender, EventArgs e)
        {
            pictureBox2.Image = null;
            label10.Text = "";
        }
    }
}

Прикрепленный файлРазмер
pashaeva_mavile_pravilnyy_mnogougolnik.zip57.47 кб