Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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 , тамер. В таймере пишешь типа следующего
picture1.image=loadimage(n & ".jpg";)
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-сайт: vt-dbnz.narod.ru
 Профиль | | #5
Добавлено: 16.05.06 17:13
Эта задачка не на пять минут.

Итак, физика.
Массу планеты учитывать не будем - все равно от массы движение планеты вокруг солнца не зависит.
r = SQR(x*x + y*y)
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, спасибо!
Пойду разбираться:)
Тут основной вопрос как раз с физикой, и как эту физику вставить в код(

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам