![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
-CherkaS- |
![]()
Сообщение
#1
|
Гость ![]() |
Уважаемые товарищи программисты!!!!
Прошу прощения у вас за мою тему, но я уже какой день не могу реализовать вот что: Мне надо сделать синусоидальное движение объекта Shape пожалуйста кому не трудно выложите пожалуйста код реализации этого или же подробнейший алгоритм как написать код(подробнейший потому что я с бейсиком знаком не очень сильно=)))) Заранее благодарен вам, товарищи программисты!!!! |
Гость |
![]()
Сообщение
#2
|
Гость ![]() |
up
|
Lapp |
![]()
Сообщение
#3
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Поясни подробнее, что за синусоидальное движение (они могут быть разные - по одной переменной? по двум? трем?..) тебе надо. И приведи то, что уже сам сделал. Короче - помоги тем, кто тебе помогает
![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
-CherkaS- |
![]()
Сообщение
#4
|
Гость ![]() |
В общем получается движение как я понял движение по формуле y=sin(x)
х задается и по известному х находится у вот и надо чтоб фигура Shape двигалась по синусоиду(по графику синуса у=sin(x)) то что у меня есть я думаю не стоит выкладывать потому что ваще бред и не работает |
Lapp |
![]()
Сообщение
#5
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Движением обычно называется зависимость коородинат от времени. Пока я вижу только зависимость координат между собой, и ничего не могу понять.
потому что ваще бред и не работает Покажи - исправим. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
-CherkaS- |
![]()
Сообщение
#6
|
Гость ![]() |
вот смотри какой алгорим примерна должен быть:
y=sin(t) А если точнее y = y0 + sin(t). Задаешь начальное местоположение (x0,y0). Подбираешь delta_t, чтоб не сильно частые волны были (начать лучше где-то с 0.01). Организуешь цикл по x (сначала x = x0). В цикле x = x + 1, t = t + delta_t, по верхней формуле определяешь новый y. Что то типа этого. я сделал только беспорядочное движение: Код Private Sub Form_Load() With Shape1 .FillColor = vbRed .FillStyle = vbSolid .BorderStyle = vbBSNone End With With Timer1 .Enabled = True .Interval = 500 End With End Sub Private Sub Timer1_Timer() Const Pi As Single = 3.14 Dim x As Integer, y As Integer Dim gor As Boolean, vert As Boolean Randomize With Shape1 x=.width*rnd-.width/2 gor = (.Left + x) < 0 Or (.Left + .Width + x > ScaleWidth) y=.height*rnd-.height/2 vert = (.Top + y) < 0 Or (.Top + .Height + y > ScaleHeight) End With If vert Then y=0 if gor then x=0 With Shape1 .Move .Left + x, z End With End Sub беспорядочно движется а вот по синусу чтоб двигался не могу сделать кода как такового нет потому что я его удаляю в порыве бешенства так сказать =((( |
CherkaS |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
Код перепутал немного
вот правильный Код Private Sub Form_Load() With Shape1 .FillColor = vbRed .FillStyle = vbSolid .BorderStyle = vbBSNone End With With Timer1 .Enabled = True .Interval = 500 End With End Sub Private Sub Timer1_Timer() Const Pi As Single = 3.14 Dim x As Integer, y As Integer Dim gor As Boolean, vert As Boolean Randomize With Shape1 x=.width*rnd-.width/2 gor = (.Left + x) < 0 Or (.Left + .Width + x > ScaleWidth) y=.height*rnd-.height/2 vert = (.Top + y) < 0 Or (.Top + .Height + y > ScaleHeight) End With If vert Then y=0 if gor then x=0 With Shape1 .Move .Left + x, .top+y End With End Sub Сообщение отредактировано: CherkaS - 13.11.2007 16:59 |
CherkaS |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
ЧТо нет идей???
блин ну помогите пожалуйста |
Lapp |
![]()
Сообщение
#9
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Если тебе нужны формулы, то можешь попробовать типа вот эти:
x = .left + .width/L*i y = (Sin(4*Pi*i/L)+1)/2*.Hight Здесь i изменяется от 0 до L, можешь это делать в цикле. Возьми L равным так 200 или 300.. Это, конечно, не есть настоящее движение по синусоиде.. Просто график синусоиды. Подойдет? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
CherkaS |
![]()
Сообщение
#10
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
вот что у мя получилось сегодня но он поднимается и все я не могу сделать ограничения чтоб если t дошел до единица пошел вниз до нуля опять вверх и тд
помогите исправить пожалуйста Код Dim x As Integer, y As Integer Private Sub Form_Load() Show End Sub Private Sub Form_Initialize() With Shape1 .FillColor = vbRed .FillStyle = vbSolid .BorderStyle = vbBSNone End With With Timer1 .Enabled = True .Interval = 50 End With x = 0 t = 0 End Sub Private Sub Timer1_Timer() t_delta = 0.01 t = t + t_delta With Shape1 .Move .Left + x, .Top - y End With x = x + 1 y = Sin(t) * 900 End Sub Сообщение отредактировано: CherkaS - 14.11.2007 14:09 |
CherkaS |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
еще один вариант но все также двигается только вверх надо сделать ограничение чтоб до определеного значения y вверх потом вниз тоже до определенного значения и опять вверх и тд
Код Dim x As Integer, y As Integer Private Sub Form_Load() Show End Sub Private Sub Form_Initialize() With Shape1 .FillColor = vbRed .FillStyle = vbSolid .BorderStyle = vbBSNone End With With Timer1 .Enabled = True .Interval = 50 End With x = 0 y = 0 t = 0 i = 1 End Sub Private Sub Timer1_Timer() Const Pi = 3.14 t_delta = 0.01 L = 200 If t = 1 Then t = t - t_delta With Shape1 .Move .Left + x, .Top - y End With t = t + t_delta i = i + 1 x = L / (i + 30) y = ((Sin(4 * Pi * i / L) + 1) / 2) * 10 End Sub |
CherkaS |
![]()
Сообщение
#12
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
где у меня здесь ошибка фигура Shape все равно идет вверх???
Код Dim x As Integer, y As Integer Private Sub Form_Load() Show End Sub Private Sub Form_Initialize() With Shape1 .FillColor = vbRed .FillStyle = vbSolid .BorderStyle = vbBSNone End With With Timer1 .Enabled = True .Interval = 50 End With x = 0 y = 0 t = 0 i = 1 End Sub Private Sub Timer1_Timer() Const Pi = 3.14 t_delta = 0.01 L = 20 With Shape1 .Move .Left + x, .Top - y End With i = i + 1 x = L / (i) For s = -5 To 5 "Фигура должна идти вверх y = ((Sin(4 * Pi * i / L) + 1) / 2) * 10 Next s For s1 = 5 To -5 "Фигура должна идти вниз y = ((Sin(4 * Pi * i / L) + 1) / 2) * (-10) Next s1 End Sub |
CherkaS |
![]()
Сообщение
#13
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
вот что получилсь в итоге
Код Dim x As Integer, y As Integer Private Sub Form_Load() Show n = 0 End Sub Private Sub Form_Initialize() With Shape1 .FillColor = vbRed .FillStyle = vbSolid .BorderStyle = vbBSNone End With With Timer1 .Enabled = True .Interval = 500 End With x = 0 y = 0 i = 1 End Sub Private Sub Timer1_Timer() If n = 0 Then npm = 0 If n = 5 Then npm = 1 Const Pi = 3.14 L = 5 With Shape1 .Move x, .Top - y i = i + 1 x = .Left + .Width / L * i If npm = 0 Then n = n + 1 y = (Sin(4 * Pi * i / L) + 1) / 2 * .Height Else: n = n - 1 y = (Sin(4 * Pi * i / L) + 1) / (-2) * .Height End If End With End Sub создаем модуль и прописываем там Код Public n As Integer Public npm As Integer проблема: объект двигается по диагонале а мне надо что как по синусу!!!!! что у меня не правильно???? помогите пожалуйста! |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 12:15 |