Информатика -взгляд 2


Пример на Си++ Рисование графиков - часть 2


void     fastcall TForml::FormPaint(TObject *Sender)

{

}

Алгоритм отображения графика несложен. Он умещается в нескольких операторах.

Переменные Width (Ширина) и Height (Высота) — свойства формы, определяющие ее текущую ширину и длину в пикселах. Координату по оси Y нельзя взять непосредственно из переменной у, а надо вычислять по формуле Height-y, потому что в C++Builder считается, что точка с координатами (0,0) расположена в верхнем левом углу окна, а ось Y направлена вниз. Для удобства восприятия эту ось надо перевернуть.

 

 

void     fastcall TForml::FormPaint(TObject *Sender)

{

int x,y;

// начальные координаты

х = 0; у = 0;

// начальная точка графика

Canvas->MoveTo(0,Height);

// цикл, пока каждая координата очередной точки

// укладывается в размер экрана

while ( х < Width && у < Height )

{

// следующая точка по оси X

х = х + 1;

// соответствующее значение по оси Y

У = f (x) ;

// в новую точку (x,Height-y) рисуется линия

Canvas->LineTo(x,Height-y);

}

}

 

Чуть выше метода Form Paint надо определить функцию f(), не привязанную ни к какому классу. В ней происходит вычисление значения анализируемой математической функции по заданному аргументу. Для примера она может выглядеть так:

int f(int x)

{

int у;

у = floor(50*log(x));

return у;

}

 

Стандартная функция log() вычисляет значение логарифма. Коэффициент 50 нужен, чтобы кривая пропорционально размещалась в окне. Функция floor() вычисляет целую часть аргумента (преобразовывает его в целое число), потому что в методах рисования надо указывать координаты только в целых числах (пикселах).

Исходно функции log(), floor() и ряд других не подключены к текущему проекту. Чтобы они стали доступными, библиотеку, в которой они хранятся, необходимо явно указать компилятору. Делается это с помощью командной строки

#include "Math.h"

 которую можно поместить в самое начало текущего файла.

Далее проект надо сохранить, выполнить компиляцию и запустить, нажав клавишу F9.В дальнейшем, изменив один оператор присваивания в функции f() и подобрав подходящие коэффициенты, с помощью этой программы можно строить самые разные графики.

 




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



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