Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
 Аватар для sansay
5 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 122

Построить график функции в picturebox с возможностью изменения значений

01.10.2012, 19:54. Показов 5110. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите построить график функции(picturebox) . С возможностью изменения значений a, b, c, t (в поле textbox).
Координаты x и y заданы определённой функцией.
Не понимаю как сделать с помощью pset чтобы координаты x и y задавались функциями.
Миниатюры
Построить график функции в picturebox с возможностью изменения значений  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.10.2012, 19:54
Ответы с готовыми решениями:

Как построить оси координат на picturebox и на этих осях построить график функции
Здравствуйте, в общем не могу разобраться как построить оси координат на picturebox и на этих осях еще построить некую функцию, помогите...

Построить на pictureBox график функции
Построить на pictureBox график функции f(x)=sin(x), x 0 . Построение выполнять попиксельно. За начало координат принять нижний левый угол...

Построить таблицу значений x и y, а потом построить график функции
нужно построить таблицу значений x и y а потом построить график функции...вот данные: функция: y=a*sin(b*x) x принимает значения от...

20
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.10.2012, 22:04
1
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.10.2012, 22:12
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Option Explicit
Dim a  As Double, b As Double, c  As Double, t As Double
Private Sub Command1_Click()
   a = Text1.Text: b = Text2.Text: c = Text3.Text
   Picture1.Cls
   Picture1.ForeColor = vbBlue
   Picture1.DrawWidth = 2
   Picture1.Line (0, 10)-(0, -10)
   Picture1.Line (10, 0)-(-10, 0)
   Picture1.DrawWidth = 3
   
   For t = Text4.Text To Text5.Text Step 0.0005
       Picture1.PSet (x(t), y(t)), vbRed
   Next t
   
End Sub
Private Sub Form_Load()
    Picture1.Scale (-10, 10)-(10, -10)
End Sub
Private Function x(ByVal t As Double) As Double
    x = a * t + b * Sin(c * t)
End Function
Private Function y(ByVal t As Double) As Double
    y = a - b * Cos(c * t)
End Function
Вложения
Тип файла: rar Новая проекта.rar (1.7 Кб, 63 просмотров)
2
 Аватар для sansay
5 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 122
01.10.2012, 22:17  [ТС]
Visual Basic
1
2
 For t = Text4.Text To Text5.Text Step 0.0005
       Picture1.PSet (x(t), y(t)), vbRed
а зачем там ещё одно окно для t??? я что-то не догоняю(
text4 и text 5 для чего служат??
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.10.2012, 22:23
Значение t меняется от значения в text4 до значения в text5 с шагом 0.005
Если t не менять, то получим координаты всего одной точки
1
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.10.2012, 23:18
sansay, коэффициенты для укороченной
Миниатюры
Построить график функции в picturebox с возможностью изменения значений  
1
 Аватар для sansay
5 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 122
01.10.2012, 23:20  [ТС]
а реально вообще сделать этот график в excele и через программу которую сами создадим менять значения переменных, тем самым изменяя график?
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
01.10.2012, 23:27
Цитата Сообщение от sansay Посмотреть сообщение
а реально вообще сделать этот график в excele и через программу которую сами создадим менять значения переменных, тем самым изменяя график?
А зачем тебе такой гемор?
0
 Аватар для sansay
5 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 122
01.10.2012, 23:29  [ТС]
задание вообще такое, я решил проще сделать, просто построить в бэсике. Посмотрим что на это препод скажет
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
02.10.2012, 11:06
Цитата Сообщение от sansay Посмотреть сообщение
а реально вообще сделать этот график в excele и через программу которую сами создадим менять значения переменных, тем самым изменяя график?
- конечно! Причем, легче, чем в VB!
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
02.10.2012, 11:44
Лучший ответ Сообщение было отмечено как решение

Решение

Правда, в Excel возникнет техническая проблема: поскольку Excel строит графики при равномерной шкале на оси OX, то вычисленный массив значений придется "переинтерполировать". Впрочем, это не сложно:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Sub Main()
 
Dim X(1 To 1000) As Double
Dim Y(1 To 1000) As Double
 
    a# = [C2]
    b# = [C3]
    c# = [C4]
    
    '::: Çàïîëíåíèå
    
    n% = 0
    
    For t# = -10 To 10 Step 0.1
    
        n% = n% + 1
    
        X(n%) = a# * t# + b# * Sin(c# * t#)
        Y(n%) = a# - b# * Cos(c# * t#)
    
    Next t#
    
    '::: Ïðèâåäåíèå ê ðàâíîìåðíîé øêàëå
    
    xmin# = X(1)
    xmax# = X(1)
    
    For i% = 2 To n%
    
        If X(i%) > xmax# Then xmax# = X(i%)
        If X(i%) < xmin# Then xmin# = X(i%)
    
    Next i%
    
    dx# = (xmax# - xmin#) / 800
    
    j% = 0
    
    For xx# = xmin# To xmax# Step dx#
    
        For k% = 1 To n% - 1
            If X(k%) <= xx# And X(k% + 1) >= xx# Then
               kk# = (Y(k% + 1) - Y(k%)) / (X(k% + 1) - X(k%))
               yy# = Y(k%) + (xx# - X(k%)) * kk#
               j% = j% + 1
               Cells(j%, 28).Value = xx#
               Cells(j%, 29).Value = yy#
               Exit For
            End If
        Next k%
        
    Next xx#
 
End Sub
Миниатюры
Построить график функции в picturebox с возможностью изменения значений  
Вложения
Тип файла: zip Задачи-VBA-56.zip (24.4 Кб, 25 просмотров)
4
 Аватар для sansay
5 / 5 / 3
Регистрация: 30.11.2011
Сообщений: 122
02.10.2012, 15:27  [ТС]
А можите код построчно прокомментировать? если честно пока сложновато для понимания
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
02.10.2012, 18:06
Лучший ответ Сообщение было отмечено как решение

Решение

Попробую:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Sub Main()
 
Dim X(1 To 1000) As Double  ' массив для x
Dim Y(1 To 1000) As Double  ' массив для y
 
    a# = [C2]  ' параметры кривой берем с 
    b# = [C3]  ' из соотв. ячеек
    c# = [C4]  ' рабочего листа
    
    '::: Заполнение
    
    n% = 0
    
    For t# = -10 To 10 Step 0.1  ' цикл по t 
    
        n% = n% + 1  ' номер точки
    
        X(n%) = a# * t# + b# * Sin(c# * t#)   ' очередной х
        Y(n%) = a# - b# * Cos(c# * t#)         ' очередной y
    
    Next t#
    
    '::: Приведение к равномерной шкале
    
    xmin# = X(1)
    xmax# = X(1)
    
    ' ищем минимум и максимум простым перебором
    ' в одном цикле 
 
    For i% = 2 To n%
    
        If X(i%) > xmax# Then xmax# = X(i%)
        If X(i%) < xmin# Then xmin# = X(i%)
    
    Next i%
    
    dx# = (xmax# - xmin#) / 800  ' делим отрезок [xmin,xmax] на 800 точек
    
    j% = 0
    
    For xx# = xmin# To xmax# Step dx# 
 
        ' переменная xx проходит от xmin до xmax с РАВНОМЕРНЫМ шагом
    
        For k% = 1 To n% - 1
 
             ' для очередной xx находим две соседние точки x[k] и x[k+1],
             ' между которыми находится xx
 
            If X(k%) <= xx# And X(k% + 1) >= xx# Then
 
               ' kk - угловой коэффициент прямой, соединяющей 
               ' точки (x[k],y[k]) и (x[k+1],y[k+1])
 
               kk# = (Y(k% + 1) - Y(k%)) / (X(k% + 1) - X(k%))
 
               ' yy - значение, соответствующее точке xx 
 
               yy# = Y(k%) + (xx# - X(k%)) * kk#
 
               ' заносим пару xx,yy на лист в область данных диаграммы
 
               j% = j% + 1
               Cells(j%, 28).Value = xx#
               Cells(j%, 29).Value = yy#
 
               Exit For  ' обработали точку - выход из цикла
 
 
            End If
 
        Next k%
        
    Next xx#
 
End Sub
Колонки 28 и 29 заранее связаны с диаграммой и задают значения X (28) и Y (29). Размеры областей - по 800 точек. Если теперь менять a,b и с и выполнять пересчет - график будет меняться.
3
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
02.10.2012, 21:08
Catstail, а чем это проще, чем в VB6?
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
02.10.2012, 21:21
Как Вам сказать... Прикиньте, сколько бы пришлось писать, чтобы в VB6 оси вывести, разметить и т.д. Думаю, в VBA все же короче. Хотя, может быть, Вы и правы.
1
Заблокирован
03.10.2012, 08:33
Цитата Сообщение от Catstail Посмотреть сообщение
Как Вам сказать... Прикиньте, сколько бы пришлось писать, чтобы в VB6 оси вывести, разметить и т.д. Думаю, в VBA все же короче. Хотя, может быть, Вы и правы.
А скажите пожалуйста какие отличия VB от VBA ?
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
03.10.2012, 08:41
Цитата Сообщение от inv.DS Посмотреть сообщение
А скажите пожалуйста какие отличия VB от VBA ?
По-моему это не тема для холивара.
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
03.10.2012, 11:09
Я полагаю, inv.DS, хотел спросить о различиях в построении графиков в VB и VBA.
Ведь в обоих присутствуют формы.
Но есть еще и отдельный объект "Диаграмма".
Думаю, добрые люди, кто больше разбирается в терминологии, объяснят детальнее.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
04.10.2012, 12:01
Поясню, почему я выше написал, что в VBA проще. Если строится зависимость Y от X, а X меняется с постоянным шагом от Xmin до Xmax, то продолжаю настаивать: в VBA - проще!:

1) в VBA нужно сформировать программно только два массива X и Y и "подставить их диаграмме", - все остальное Excel сделает сам. А "бантики завязать" можно руками (без программирования в очень внятном пользовательском интерфейсе). Плюс бонус - великолепные возможности презентационной графики Excel (чего на VB не так-то просто добиться)

2) в VB нужно и массивы сформировать, и границы по Y вычислить, и окно смаштабировать, и оси нарисовать и разметить... - больше работы!

При параметрическом задании функции (как в обсуждаемом примере) преимущества VBA несколько снижаются (но остаются не равными нулю).
2
bmstu-team
 Аватар для antonboom
301 / 136 / 91
Регистрация: 10.01.2012
Сообщений: 420
Записей в блоге: 10
05.12.2012, 17:23
а как сделать видимость шага? ну т.е. значения на графике -2 -1 0 1 2 3 и т.д.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.12.2012, 17:23
Помогаю со студенческими работами здесь

Построить график функции.Реализовать задачу необходимо с использованием компонентов Chart и PictureBox
Построить график функции согласно своему варианту. Реализовать задачу необходимо с использованием компонентов Chart и PictureBox. 8...

Как сделать рамку PictureBox-а с возможностью изменения размера?
Как возможно сделать рамки примерно как тут? Хоть одну как сделать подскажите? Облазил весь гугел.

Составить таблицу значений функции, построить график функции в полярных системах координат
Здравствуйте! Столкнулся вот с такой задачкой: Составить таблицу значений функции, заданной полярным уравнением r = r(фи), построить...

Построить таблицу значений функции на заданном интервале изменения аргумента
Здравсвтуйте, можете помчь решить аткое уравнение, все сделал кроме него

Используя логическую функцию ЕСЛИ и встроенные математические функции, построить таблицу и график значений функции на от
=ЕСЛИ((A2&lt;0,5;SIN(A2)*COS(A2);ЕСЛИ(A2&gt;=0,8;A2-(LN(A2+1)/2)));exp(A2^2)+ABS(TAN(A2))) Говорит что ошибка в формуле, подскажите как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru