prog99funcFull_cpp

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

code format="c"
 * 1) define _USE_MATH_DEFINES
 * 2) include 
 * 3) include "graphics.h"

double xmin, xmax, ymin, ymax;  //глобальные - диапазон логических координат

//Для преобразования X из интервала [a,b] -> [c,d] делаем (X-a)/(b-a)*(d-c)+c. //Создаем пару функций: sx(x) и sy(y) double sx(double x) { return (x-xmin)/(xmax-xmin)*getmaxx; } double sy(double y) { return getmaxy-(y-ymin)/(ymax-ymin)*getmaxy;  //'Y вверх ногами, поэтому getmaxy-... }

//"любая" функция. Можете подставить любую другую double f(double x) { return 1.5*x*x-2*sin(5*x); }

int main(void) {  initwindow(400, 300); /* график */ //f(x)=1.5*x*x-2*sin(5*x), x в [-2,3] double x, y;  int nPoints; double dx; xmin=-2; xmax=3;

nPoints=getmaxx;  //Максимальное число точек по X    dx=(xmax-xmin)/nPoints;   //шаг в логических координатах

//Для определения ymin, ymax нужен цикл ymin=f(xmin); ymax=ymin; for (x=xmin; x<=xmax; x+=dx) {     y=f(x); if (ymin > y) ymin = y;     if (ymax < y) ymax = y;   } //Рисуем график. Цикл такой же //Включаем красный, жирный (3 пиксела) setcolor(RED); setlinestyle(SOLID_LINE, 0, THICK_WIDTH); y=f(xmin); moveto(sx(xmin), sy(y));  //установка первой точки for (x=xmin; x<=xmax; x+=dx) {     y=f(x); lineto(sx(x), sy(y)); //соединяем точки }  //Включаем обратно белый, нормальный (1 пиксел) setcolor(WHITE); setlinestyle(SOLID_LINE, 0, NORM_WIDTH);

//Добавим оси line(sx(xmin), sy(0), sx(xmax), sy(0)); line(sx(0), sy(ymin), sx(0), sy(ymax));

//подписи outtextxy(sx(0)+5, sy(0)+2, "0,0"); outtextxy(sx(xmax)-20, sy(0)+2, "X"); outtextxy(sx(0)+5, sy(ymax)+10, "Y");

getch; closegraph; return 0; } code