Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Met_графика.doc
Скачиваний:
8
Добавлен:
16.11.2019
Размер:
4.03 Mб
Скачать

Рисование кривых

Методы Line и Circle позволяют рисовать гистограммы и секторные диаграммы. А как нарисовать график сложной математической функции? Для рисования кривой необходим программный код, который рисует каждую ее точку. Разумеется, рисовать кривые не так просто, как рисовать линии, но средства VB позволяет решить и эту задачу.

В общем случае функция одного аргумента задается в виде F(x). Чтобы график функции целиком был виден на экране (или в окне определенного размера) необходимо, используя метод Scale, задать пользовательский масштаб, связанный с параметрами функции (диапазоном изменения аргумента и максимальным и минимальным значением функции).

Пусть аргумент функции x изменяется в диапазоне от Xmin до Xmax. Следовательно, по оси необходимо установить пользовательский режим задания координат в диапазоне от Xmin до Xmax.

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

Пусть число пикселей по оси абсцисс равно XPixels. Таким образом, чтобы решить задачу построения графика необходимо:

  1. Определить Pixels.

  2. Значение x, соответствующее каждому пикселю рассматриваемого диапазона.

  3. Максимальное и минимальное значение функции.

  4. Построить пользовательскую систему координат.

  5. Для определения величины XPixels необходимо временно установить значение свойства ScaleMode =3(Pixels), с помощью свойства ScaleWidth определить разрешающую способность элемента по горизонтали, а затем установить пользовательскую систему координат, соответствующую графику.

Form1.ScaleMode=3

XPixels=Form1.ScaleWidth-1

  1. Определить значения x, соответствующего каждому пикселю. Ниже приведен цикл сканирования пикселей по оси х и расчет значений х:

For i = 1 To XPixels

x = Xmin + (Xmax - Xmin) * i / XPixels

Next

  1. Далее остается рассчитать значения функции для каждого значения переменной x. Значения отображаемой функции вычисляются следующим образом:

Function Fun(ByVal x As Double) As Double

Fun = Fn(x)

End Function

  1. Этап вычисления размеров пользовательской системы координат, завершается построением цикла, в процессе которого вычисляются максимальное и минимальное значение отображаемой функции:

For i = 1 To XPixels

x = Xmin + (Xmax - Xmin) * i / XPixels

Y = Fun(x)

If Ymax < Y Then Ymax = Y

If Ymin > Y Then Ymin = Y

Next i

  1. Чтобы установить систему координат конкретной функции, можно вызвать метод Scale с аргументами.

Form1.Scale (Xmin, YMin) – (Xmax, YMax)

  1. Для построения графика функции модифицируем цикл нахождения значения x:

For i = 1 To XPixels

x = Xmin + (Xmax - Xmin) * i / XPixels

Pset (x, Fn(x))

Next

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

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

Упражнение 2.

Нарисовать график функции Y = exp(2/t) sin(4t) в интервале значений t от 1 до 10.

  1. Создайте новый проект и присвойте ему имя «Построение графика».

  2. Установите на форму графическое окно и две командные кнопки. В режиме конструирования форма будет иметь следующий вид (рис.23).

  3. Щ

    Рис. 23 Форма для рисования графика

    елкните дважды по командной кнопке «Нарисовать график» и в программное окно введите следующий код:

Dim Y, t As Variant

Dim Xmin, Xmax, Ymin, Ymax As Variant

Dim i As Integer

Dim XPixels As Integer

'Диапазон изменения х

Xmin = 2

Xmax = 10

'Задание максимальных и минимальных констант

Ymax = -1E101

Ymin = 1E101

'Определение значение XPixels

XPixels = Picture1.ScaleWidth - 1

'Определение максимального и минимального значения функции

For i = 1 To XPixels

t = Xmin + (Xmax - Xmin) * i / XPixels

Y = Fun(t)

If Ymax < Y Then Ymax = Y

If Ymin > Y Then Ymin = Y

Next i

'Установка пользовательской системы координат

Picture1.Scale (Xmin, Ymin)-(Xmax, Ymax)

Picture1.ForeColor = RGB(255, 0, 0)

'Построение графика

For i = 1 To XPixels

t = Xmin + (Xmax - Xmin) * i / XPixels

Picture1.PSet (t, Fun(t))

‘Picture1.Line -(t, Fun(t))

Next

  1. В проект добавьте процедуру определения функции:

Function Fun (ByVal x As Double) As Double

Fun = Exp(x / 2) * (Sin(4* x))

End Function

  1. Щелкните дважды по кнопке «Выход» и в процедуру для данной кнопки запишите:

End

  1. Сохраните проект.

  2. Запустите приложение на исполнение. Нажмите кнопку «Нарисовать график». На экране появится изображение графика в графическом окне PictureBox. (рис.24). Недостатки кода проявляются в разрывах между соседними точками функции. Чтобы скрыть разрывы, можно заменить метод Pset, устанавливающий один пиксель, методом Line, рисующим сегмент линии между двумя соседними точками:

P icture1.Line – (t, Fun(t))

  1. В нашем случае этот вариант кода отмечен знаком комментария (‘), поскольку исходный вариант дает приемлемый вид графика.

  2. Закройте проект, нажав кнопку «Выход». Сохраните проект.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]