Страница: 1 |
Страница: 1 |
Вопрос: VisualBasic, анимация
Добавлено: 15.05.06 17:08
Автор вопроса: Anna
Задание такое: смоделировать в VB вращение Земли вокруг Солнца по элипсоидной орбите.
Кто скажет, как это сделать (как min - хотя бы общая структура программы, через что это делать *циклы и пр.*, ну и как max - каким образом и с помощью каких кодов эту программу вообще писать.
ОЧЕНЬ надеюсь на помощь.
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #1
Добавлено: 15.05.06 17:40
Берем графический редактор. Рисуем каждую фазу вращения земли. Кладем на форму контрол PictureBox , тамер. В таймере пишешь типа следующего
n=n+1
if n>3 then n=1 ' 3-количество кадров
Номер ответа: 2
Автор ответа:
Anna
Вопросов: 1
Ответов: 2
Профиль | | #2
Добавлено: 15.05.06 17:58
Думаю, с jpg вариант не подойдет, графику (2d) требуется смоделировтать также в VB(
Так же желательно смоделировать движение по элипсоидной орбите с ускорением.
Номер ответа: 3
Автор ответа:
Dushes
ICQ: 249195431
Вопросов: 8
Ответов: 110
Профиль | | #3
Добавлено: 15.05.06 19:24
Есть пример такого типа...
Там рассматривается движение кометы в Солнечной
Системе на длительные сроки времени с учетом физики и астрономии...
С графикой... Но только не очень доработано...
Номер ответа: 4
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #4
Добавлено: 15.05.06 19:58
Имеется в виду, что при необходимости можно изменять параметры? В таком случае лучше писать свой контрол. Это намного удобнее.
Номер ответа: 5
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #5
Добавлено: 16.05.06 17:13
Эта задачка не на пять минут.
Итак, физика.
Массу планеты учитывать не будем - все равно от массы движение планеты вокруг солнца не зависит.
Fx = 1/(r*r)*x/r ' x-проекция силы
Fy = 1/(r*r)*y/r ' y-проекция силы
vx = vx + Fx*dt
vy = vy + Fx*dt
x = x + vx*dt
y = y + vy*dt
dt - шаг интегрирования. Его можно взять постоянным и достаточно маленьким, а можно изменять в зависимости от скорости, расстояния.
x,y - координаты планеты относительно солнца в текущий момент времени.
vx,vy - скорость планеты
Fx,Fy - сила притяжения
Алгоритм ПЛОХОЙ. Если шаг интегрирования не очень маленький, хорошо будет видно, как планета постепенно меняет свою траекторию.
Есть на свете хороший алгоритм, называется метод Рунге-Кутта 4-го порядка точности по dt. Его можно найти на
http://alglib.sources.ru/diffequations/rungekutta.php
Я сам ни разу его не применял. И не очень знаю, как его применить к уравнению 2-го порядка. Знаю, что вроде можно сведением к системе двух уравнений 1-го порядка.
Графика.
Circle (x,y),r
рисует окружность радиуса к с центром в точке x,y.
Больше ничего, думаю, не надо. Ну еще стирать:
Circle (x,y),r, BackColor
или
Cls
А шкалы в VB и так есть. Свойства ScaleWidth, ScaleHeight, ScaleLeft, ScaleTop. Но можно и свои сделать.
Рекомендую установить:
AutoRedraw = True
Номер ответа: 6
Автор ответа:
Anna
Вопросов: 1
Ответов: 2
Профиль | | #6
Добавлено: 16.05.06 17:17
Victor, спасибо!
Пойду разбираться
Тут основной вопрос как раз с физикой, и как эту физику вставить в код(