График функции на C++ в GUI с анимацией


Предположим, что у вас вот такое задние: создать GUI C++ VS приложение графики и анимации. Например, конкретно, такое:

Требуется разработать приложение, которое:
  1. Обеспечивает возможность задания параметра p в каноническом уравнении параболы в прямоугольной системе координат (y2 = 2px, p>0).
  2. Выводит кривую на экран.
  3. Анимирует построение параболы.
Итак, так как у нас в задаче есть слово GUI, то проект в визуал студио будем делать типа «приложение Windows Forms» (есть и другие способы, но этот простейший и для студенческого задания подходит прекрасно). На форму накидаем pictureBox (для графика функции), textBox (для ввода параметра p для параболы) и кнопку, после нажатия на которую будет рисоваться наш анимированный график.



Рисовать будем по точкам, используя два массива с их координатами.

int m_x[200];
int m_y[200];
После нажатия кнопки «Рисовать!» инициализируем (очищаем) эти массивы координат в цикле:
for (int i1=0; i1<200; i1++){
m_x[i1]=0;
m_y[i1]=0;
}
Получаем параметр p

double p = Convert::ToDouble(textBox1->Text);
Заполняем массив координат по формуле:

for (i=0; i<150; i++){
x = x + 1;
m_x[i] = x;
y = Convert::ToInt32(sqrt((double)(2*p*x)));//вычисляем y 
m_y[i] = y;
pictureBox1->Refresh();
}
Рисуем параболу по точкам

for (int j=0; j<199; j++){
	e->Graphics->FillRectangle(System::Drawing::Pens::Red->Brush, m_x[j]+200, m_y[j]+200, 1, 1);//одно значение y
	e->Graphics->FillRectangle(System::Drawing::Pens::Red->Brush, m_x[j]+200, 0-m_y[j]+200, 1, 1);// второе значение y
}
Точнее, рисуем не по точкам, а по закрашенным прямоугольникам. Здесь два значения y – следуя каноническому уравнению параболы. Результат:



Стоит отметить, что в программе еще нобходимо реализовать так называемую «защиту от дураков» (ввод букв вместо цифр, к примеру), а также обеспечить проверку на >0. Еще необходимо немного изменить анимацию: более правильно будет делать её или в отдельном потоке, или через таймер. Зачем? Дело в том, что когда у нас идет прорисовка графика функции, все приложение зависает и не откликается. Правда, анимация параболы идет не более двух секунд, но все равно это не совсем правильно. Расчеты и прорисовка реализуются в разных методах и потоках (backgroundWorker).

Это был пример создания GUI C++ VS приложение графики и анимации. На самом деле их немало, есть, к примеру, и такие:

Требуется разработать приложение, которое:
  1. Обеспечивает возможность задания длин сторон треугольника (с проверкой возможности построения).
  2. Выводит треугольник на экран.
  3. Анимирует построение описанной окружности (рассмотреть остроугольный, тупоугольный и прямоугольный треугольник).
Алгоритм решения данной задачи аналогичен. Но здесь мы будем рисовать уже не точками, а линиями треугольник. А вот для описанной окружности – дуга, у которой меняется конечный угол. Основная сложность в этой задаче – запрограммировать формулу описанной окружности и не ошибиться – она громоздкая. У меня большой опыт создания таких несложных приложений на C++ в визуал студио – обращайтесь.

Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, си плюс плюс, графики, функции, gui




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.



Урок 7. Директива v-bind в Vue.js 3
Ленивый Лёша
Приключения инквизитора в мрачном средневековье