Программа на си для рисования графиков функций

12 февраля 2020 - Администратор

Программа на си для построения графика функции

В этой статье мы разберем программу на языке программирования си для построения графиков функций.  В нашей программе будут отражаться система координат с делениями и подписями на них и будут строиться графики двух функций, который может сам задать пользователь.
В программе на си для построения графика функции вводятся следующие константы 
X0 , Y0  - координаты центра координат
k – масштаб одного деления на осях (сколько пикселов в одном делении)
Опишем все функции и процедуры используемые в программе для построения графиков функций
Подробно о задании функций и процедур в си 
int osx (float x) переводит реальную координату на оси ox  в координату экрана
int osy (float y) переводит реальную координату на оси oy в координату экрана
float F1 ( float x ) и float F2 ( float x ) задают функции , графики которых мы будем строить
void Point ( float x, float y, int color )  рисует точку графика функции на экране  
Перед построением графиков функций необходимо построить систему координат. Для построения системы координат используется процедура 
void Axes()
В этой процедуре в цикле for  рисуются линии меток делений на равном расстоянии друг от друга, который определяется масштабом одного деления k и выводятся значения делений с помощью двух операторов
sprintf ( s, "%d", i ); // записываем в строковую переменную число деления
outtextxy ( xe-10, Y0+4, s ); // вывод числа
Процедура grafik1() и grafik2() строят графики функций f1 и f2
В этих процедурах в цикле for для всех доступных значений x определяется координата y и точка графика строится с помощью процедуры point()

Пример работы программы построения графиков на си, функции пользователь может менять 

графики функций на си
Программа на си для построения графиков функций
#include <stdio.h>
#include <graphics.h> //графический режим
#include <math.h> // математические функции

//------------------------------------------------
const int X0 = 100, Y0 = 400;// координаты центра координат
const float k = 15;// масштаб в точках одного деления на графике
//-----------------------------------------
// перевод y в координаты экрана
//-----------------------------------------
int osx (float x)
{
return X0+k*x;
}
//-----------------------------------------
//перевод y в координаты экрана
//-----------------------------------------
int osy (float y)
{
return Y0-k*y;
}
// первая функция 
float F1 ( float x )
{
return sqrt(2*x); 
}
// вторая функция
float F2 ( float x )
{
return x*x/2; 
}
// построение осей
void Axes()
{
int i, xe,ye,y1;
char s[10];
line ( X0, 0, X0, 599 ); // ось ox
line ( 0, Y0, 799, Y0 ); // ось oy
// метки на оси ox
for ( i = 1; i <= (800-X0)/k; i ++ )
{
xe = osx ( i );
line ( xe, Y0-2, xe, Y0+2 ); // рисуем деление разметки
sprintf ( s, "%d", i ); // записываем в строковую переменную число деления
outtextxy ( xe-10, Y0+4, s ); // вывод числа
}
// метки на оси oy
for ( i = 1; i <= (Y0)/k; i ++ )
{
ye = osy( i+1 );
line ( X0-2, ye, X0+2, ye ); // рисуем деление
sprintf ( s, "%d",i  ); //  записываем в строковую переменную число деления
outtextxy ( X0+10, ye+4, s ); // вывод числа
}
}
// построение точки графика функции
void Point ( float x, float y, int color )
{
int xe, ye;
xe = osx(x);
ye = osy(y);
if ( xe >= 0 && xe < 800 && ye >= 0 && ye < 600 )
putpixel(xe, ye, color);
}
// построение графика первой функции
void grafik1()
{
float x, h, xmin, xmax;
h = 1 / k;
xmin = (-X0)/ k;
xmax=(800-X0)/k;
for ( x = xmin; x <= xmax; x += h )
{
Point(x, F1(x), WHITE);
}
}
// построение графика второй функции
void grafik2()
{
float x, h, xmin, xmax;
h = 1 / k;
xmin = (-X0)/ k;
xmax=(800-X0)/k;
for ( x = xmin; x <= xmax; x += h )
{
 Point(x, F2(x), WHITE);
}
}
// главная программа
main ()
{
initwindow ( 800, 600 ); // создать окно для графики
Axes(); // построение и разметка осей координат
grafik1(); // строим график первой функции
grafik2(); // строим график второй функции
getch(); // ждать нажатия на клавишу
closegraph(); // закрыть окно для графики
}

Полезно почитать по теме построение графиков функций в программа си
Графика в си
Процедуры и функции в си 

Вернуться к содержанию практикума на си

Поделиться:

 
 
Комментарии (0)

Нет комментариев. Ваш будет первым!