Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:

Error. Page cannot be displayed. Please contact your service provider for more details. (8)


Построение графиков функций

Поиск:
Пример: построение графика функции y = x ^ 3 - 12 * x ^ 2 + 3 ^ x

- Гайдар, объясните идиоту. Как, ну как строить графики?!? Как??????

Я здесь приведу статью, которую уже отправлял на VBS, но Антон мне сказал, что код не работает. Поэтому сразу говорю, что если что не идет - пишите. У меня все работает отлично, могу прислать и исходник и exe скомпилированный с кодом из листинга этой статьи.

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

Для этого вам нужно установить значения ScaleHeight и ScaleTop для определения вашей оси ординат (Y). Например, ScaleHeight=-1000 ScaleTop=500 (YI [-500;500]). То есть как бы ScaleTop определяет верхнее значения, а ScaleHeight длину всей шкалы, причем длина определяется отнимая ScaleHeight из ScaleTop. Поэтому ScaleTop должен быть положительным.

Для задания оси абсцисс (X) нужно установить ScaleLeft и ScaleWidth. Исходя из предшествующих рассуждений, можно заявить, что ScaleLeft должен быть отрицательным.

Также необходимым параметром является DrawWidth, определяющий толщину рисуемой линии.

Для примера можно рассмотреть какую-нибудь простенькую функцию и построить ее.

Ну, к примеру: y=x^3-12x^2+3^x.

Пусть печать происходит прямо из функции:
Код

Function Example(ByVal x As Single)
'здесь задается наша функция
y = x ^ 3 - 12 * x ^ 2 + 3 ^ x
‘тут она выводится на форму (каждая из полученных точек)
Debug.Print y
‘Посылаем y в ответ для дальнейшей работы в программе.
Example = y
End Function


Теперь еще нужно построить график. Это мы сделаем по нажатию на кнопку в меню. Сделайте менюшку по вашему вкусу и обязательно поместите там пунк Построить график (name=mnuDraw).

Код

Private Sub mnuDraw_Click()
Form1.BackColor = &H80000009 ‘На белой форме смотрится эффектнее
‘Толщина линий обозначающих координатные оси
DrawWidth = 2
‘Масштабирование
Scale (-10, 200)-(10, -200)
‘Рисование осей
Form1.ForeColor=&H0& ‘На всякий случай
Line (-10, 0)-(10, 0)
Line (0, -200)-(0, 200)
‘А график смотрится лучше когда он тоньше, чем оси
DrawWidth = 1
‘А вот собственно и само построение графика
Form1.ForeColor = &HFF& ‘Другим цветом график смотрится красиво
For x = -10 To 10 Step 0.01 ‘Чем точнее, тем линии плавнее
Line -(x, Example(x)) ‘Построение
Next
End Sub


Вообще-то график уже построен, но нужны некоторые доработки, например, в событие Resize формы можно вставить код отвечающий для изменения ваших параметров. Но для нашего примера хватит и этого:

Код

Private Sub Form_Resize()
Refresh
End Sub


Листинг программы построения графика:

Код

(Form1,mnuDraw) – необходимые части содержимого формы

Function Example(ByVal x As Single)
   y = x ^ 3 - 12 * x ^ 2 + 3 ^ x
   Debug.Print y
   Example = y
End Function

Private Sub Form_Resize()
   Refresh
End Sub

Private Sub mnuDraw_Click()
   Form1.BackColor = &H80000009
   DrawWidth = 2
   Scale (-10, 200)-(10, -200)
   Form1.ForeColor = &H0&
   Line (-10, 0)-(10, 0)
   Line (0, -200)-(0, 200)
   DrawWidth = 1
   Form1.ForeColor = &HFF&
   For x = -10 To 10 Step 0.01
        Line -(x, Example(x))
   Next
End Sub

Источник: www.vbstreets.ru.
Автор: Гайдар Магдануров






Просмотров: 13294

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную