Компьютерная графика, мультимедиа и игры на Visual C#


Глава График линейной функции - часть 2


//со старой системой в верхнем левом углу рамки PictureBox):

public float O_x_pix = 500;

public float O_y_pix = 350;

//Масштабы по осям "x" и "y" (M_x и M_y) для перехода

//от действительных значений к пикселам

//и построения графика в пикселах:

public float M_x = 450;

public float M_y = 300;

Теперь внутрь этого (приведенного выше) шаблона для процедуры pictureBox1_Paint записываем основную часть нашего кода для вывода графика на экран монитора. Перед каждым логическим блоком кода мы даем подробный комментарий, чтобы читатель мог изучить это важный код и мог грамотно внести изменения (в случае необходимости).

Листинг 24.4. Главный код построения графика функции на экране монитора.

//Шаг по оси абсцисс "x" между точками графика:

float step_x = (x_max-x_min)/Npoints;

//Наибольшее абсолютное значение x_max_abs

//из двух концов заданного нами числового интервала

//x_min и x_max:

float x_max_abs = Math.Abs(x_max);

if (x_max_abs < Math.Abs(x_min)) x_max_abs = Math.Abs(x_min);

//Промежуточные локальные переменные:

float x_0, y_0, x_1, y_1, x_0_pix, y_0_pix, x_1_pix, y_1_pix;

//Расчет минимального y_min и максимального y_max

//действительных значений функции:

float y_min, y_max;

//Присваиваем y_min, y_max значение y_0

//для нулевой точки (i=0):

x_0 = x_min; y_0 = Function_of_graph(x_0);

y_min = y_0; y_max = y_0; int i;

//Организовываем цикл по всем точкам, начиная с i=1:

for (i=1; i<=(Npoints-1); i++)

{

      x_1 = x_min + i * step_x;

      y_1 = Function_of_graph(x_1);

      //Расчет минимального и максимального значений функции:

      if (y_min > y_1) y_min = y_1;

      if (y_max < y_1) y_max = y_1;

}

//Т.к. в последней точке i = Npoints

//значение x_1 = x_min + Npoints * step_x

//может отличаться от заданного значения x_max

//(из-за накапливания погрешности в цикле), то проверяем,

//может быть y_min или y_max находится в последней

//точке при точном задании нами значения x_max:

x_1 = x_max; y_1 = Function_of_graph(x_1);




- Начало -  - Назад -  - Вперед -



Книжный магазин