0 / 0 / 0
Регистрация: 24.08.2008
Сообщений: 8
1

Смоделировать движение

25.08.2008, 23:49. Показов 3156. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста в решении задачи на VBA. Задача следующая:
Смоделировать движение точки, нарисованной на шаре, причем шар катится по плоскости (вид сверху).
-Шар на котором нарисована точка представляет собой обычный круг (панель рисование) и точка – это точно такой же круг, только поменьше.
-движение шара у меня смоделировать получилось и точка по нему движется, не выходя за его границы
-осталось сделать, чтобы эта точка после того, как она дойдет до краев так называемого «шара» должна исчезнуть на некоторое время (так как мы видим движение сверху), это можно сделать с помощью свойства Visible. Но мне не понятно как записать условие «точка дошла до одной из границ круга»? Это условие можно сформулировать, если б при движении шара и точки у меня изменялись их координаты, но у меня положение шара и точки изменяется не с помощью изменения координат их центров, а с помощью изменения свойств left и top. Пока не могу придумать как это сделать. Буду очень благодарна за вашу помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.08.2008, 23:49
Ответы с готовыми решениями:

Смоделировать движение звезд
Народ!!!надеюсь что вы поможете мне с этим заданием) Может кто встречал задачу: Смоделировать...

Смоделировать движение шарика на бильярдном столе
Помогите пожалуйста в решении задачи на VBA. Задача следующая: смоделировать движение шарика на...

Смоделировать движение заряженной частицы в однородном магнитном поле
движение заряженной частицы в магнитном поле!! помогите смоделировать движение или хотябы с чего...

Смоделировать движения электрона вокруг ядра атома
Создать приложение , результат которого является моделирование движения электрона вокруг ядра...

5
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
26.08.2008, 09:56 2
Раз уж у вас шар, то Width и Height одинаковые.
Visual Basic
1
2
3
4
5
6
7
8
9
R = Shar.Width \ 2
Xc = Shar.Left + R
Yc = Shar.Top + R
' проверяем точку (x,y)
If (Xc-x)^2 + (Yc-y)^2 <= R^2 Then
    ' (x,y) внутри шара
Else
    ' (x,y) снаружи
End If
Добавлено через 1 минуту 48 секунд
PS: А у вас при движении точки учитывается кривизна шара? Точка движется с переменной скоростью?
0
0 / 0 / 0
Регистрация: 24.08.2008
Сообщений: 8
27.08.2008, 11:09  [ТС] 3
Кривизна шара не учитывается. Вот уравнения, которые описывают движение точки:
point.Left = shar.Left * rt / R
point.top=shar.top * rt / R
При использовании этих уравнений получается, что точка никогда и не выходит за пределы шара, а движется только от одной границы "шара" до другой, мне надо просто сформулировать условие: если "точка дошла до одной из границ шара", тогда point.visible=false и t = Timer: Do While Timer - t < 1: DoEvents: Loop, то есть получится, что при достижении одной из границ точка исчезнет на 1 секунду, но как записать, что она дошла до одной из границ?
0
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
27.08.2008, 20:35 4
Надо делать все движения относительными друг от друга.
1. Шар катится с постоянной скоростью (или даже если с переменной, все равно). Его координаты вычисляются примерно так:
Visual Basic
1
2
x = x + v*dt  'x - текущая координата, v - текущая скорость
'v = v + a*dt^2 / 2  'если у шара есть ускорение a
2. Точка на поверхности шара движется по окружности относительно центра шара. В проекции "вид сверху" получится примерно так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
w = v / R  'w - угловая скорость, R - радиус шара
al = al + w*dt  'al - текущай угол повотора, 
While al > 2*pi
    al = al - 2*pi
Wend
While al < 0
    al = al + 2*pi
Wend
xt = x + R * cos(al)  'абсолютная координата точки
If al < pi Then
    ' точка сверху, ее видно
Else
    ' точка снизе, не видно
End If
Что не понятно, спрашивай.
0
0 / 0 / 0
Регистрация: 24.08.2008
Сообщений: 8
31.08.2008, 13:59  [ТС] 5
Все понятно, спасибо) Теперь у меня шар с точкой движется так как надо, правда есть одна небольшая проблемка - когда при нажатии клавиши шар изменяет направление движения получается, что точка смещается, то есть она движется так как надо по той же траектории, но немного в стороне от шара..как это исправить?
0
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
01.09.2008, 19:13 6
Это была чисто теория для случая линейного движения в одной координате X. Для двух координат (X,Y) надо эту теорию засширить до векротов и работать с ними. А потом уже нарисовать шар и точку по вычисленым векторам не составит труда.
0
01.09.2008, 19:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2008, 19:13
Помогаю со студенческими работами здесь

Смоделировать на компьютере последовательность бросаний несимметричной монеты
Смоделировать на компьютере последовательность бросаний несимметричной монеты. Смещение центра...

Смоделировать движение.
Смоделировать движение бильярдного шара, по которому стукнули кием с начальной скоростью V под...

Смоделировать движение сверхзвукового самолета
дана блок-схема в фортране, необходимо смоделировать движение сверзвукового самолета в паскале,...

Как смоделировать движение точки
Я новичок в матлабе, подскажите пожалуйста, есть 2 массива t1=0:1:10 и t2=0:1:10, необходимо...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru