Страница: 1 |
Драсти! Вопрос такой: есть код: Private Sub Form_Load() Private Sub Timer1_Timer() Private Sub Timer2_Timer()
Ты замахиваешся на физику, баллистику, векторное движение, геометрию и.т.д Стоит ли игра свеч? Для каждого Shape хранишь его координаты и проекции вектора скорости на Ox и Oy, после каждого изменения координат рассчитываешь расстояние между центрами каждых двух кругов, если оно меньше или равно 2 радиусам (если круги разные - суммы их радиусов), тогда изменяешь проекции векторов согласно отношению их масс, проекциям векторов скорости и координатам. Как - лень думать 2 HammeR: Не для того ли компьютер и создан, чтобы считать? Почему бы не замахнуться на физику, баллистику, векторное движение, геометрию и.т.д.? Ясное дело, что комп на это и нужен, однако нужно еще и иметь мозги, чтоб создать алгоритм таких движений. Ведь просто ввести строчку "Броунское движение" компьютеру мало Привет! Закон сохранения импульса помнишь? Если нет, то учебник физики 9-го класса: примерно так: m1v1+m2v2=m1v1`+m2v2` Где v1,v2 - скорости тел до взаимодейсвия, со штрихами после. И смотришь как измениться скорость при взаимодействии, Да скорости здесь это вектора так что при правильном подходе к решению будет и направление и скалярное значение скорости. Удачи! Данный пример можно считать абсолютно упругим соударением. Другое дело, что здесь шарики, т.е. требуется вводить еще и момент вращения. Хотя можно и не вводить, если лень Только не радиусу, а кубу радиуса И скорость - от корня массы, если не ошибаюсь... Страница: 1 |
Вопрос: Броунское движение на VB...
Добавлено: 11.05.04 14:01
Автор вопроса: GlooM | Web-сайт:
'--------------------------------
Dim dv As Integer
Dim dg As Integer
Dim dv2 As Integer
Dim dg2 As Integer
dg = 3
dv = 3
dg2 = 5
dv2 = 5
End Sub
Shape1.Left = Shape1.Left + dg
Shape1.Top = Shape1.Top + dv
If Shape1.Top <= 0 Then
dv = -dv
End If
If Shape1.Left <= 0 Then
dg = -dg
End If
If Shape1.Left + Shape1.Width >= Form1.ScaleWidth Then
dg = -dg
End If
If Shape1.Top + Shape1.Height >= Form1.ScaleHeight Then
dv = -dv
End If
End Sub
Shape2.Left = Shape2.Left + dg2
Shape2.Top = Shape2.Top + dv2
If Shape2.Top <= 0 Then
dv2 = -dv2
End If
If Shape2.Left <= 0 Then
dg2 = -dg2
End If
If Shape2.Left + Shape2.Width >= Form1.ScaleWidth Then
dg2 = -dg2
End If
If Shape2.Top + Shape2.Height >= Form1.ScaleHeight Then
dv2 = -dv2
End If
End Sub
'------
'Где Shape1 и Shape2 изображены в виде круга.
'------------------------------
Этот код делает озваляет двум кругам (Shape'ам) "носиться" в пределах формы (ударяясь о ее края)...
Сам вопрос:
Как сделать так, чтобы было что-то на подобии "Броунского движения"? Чтобы третий Shape был по середине, а эти два (или более) ударяясь о него отлетали в сторону, а это "большой" Shape немного(!) сдвинулся в противоположную сторону, и чтобы ударяясь о друг друга тоже отлетали, но на более большое расстояние?
Ух....вроде усе.....
Всем, кто хотя бы заглянет сюды - огромное спасибо! А теи кто ответит - бутылка пива (виртуального)!
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #1
Добавлено: 11.05.04 19:18
Номер ответа: 2
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #2
Добавлено: 11.05.04 20:39
Номер ответа: 3
Автор ответа:
Pashenko
ICQ: 176176951
Вопросов: 14
Ответов: 655
Профиль | | #3
Добавлено: 12.05.04 10:08
Номер ответа: 4
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #4
Добавлено: 12.05.04 18:04
Номер ответа: 5
Автор ответа:
Limon
Вопросов: 1
Ответов: 2
Профиль | | #5
Добавлено: 14.05.04 10:38
Номер ответа: 6
Автор ответа:
Pashenko
ICQ: 176176951
Вопросов: 14
Ответов: 655
Профиль | | #6
Добавлено: 14.05.04 10:46
2 Limon: только для абсолютно упругого удара.
Номер ответа: 7
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #7
Добавлено: 15.05.04 02:21
Номер ответа: 8
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #8
Добавлено: 15.05.04 02:40
интересная идея, а вкачестве массы шарика предлагаю считать его радиус, и скорость соответсвенно обратно пропорционально его массе!
Номер ответа: 9
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #9
Добавлено: 15.05.04 03:13
Номер ответа: 10
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #10
Добавлено: 15.05.04 03:42
важна сама идея, а если вдаваться в подробности, то можно ввести и плотность фигуры :В)