|
![]()
|
![]()
|
Этот раздел обычно бывает
только в играх, но я думаю, что и здесь он не будет лишним.
|
![]()
При помощи SimGrav вы можете
наблюдать движение массивных объектов, находящихся в поле действия силы
тяжести. Вообще-то это единственная задача, которую
решает SimGrav. Но только не думайте, что эта задача легко
выполнима и не нужна. |
Вот несколько примеров:
|
|
- моделирование Солнечной системы со всеми планетами, Солнцем, астероидами, спутниками и всем остальным! (кроме космической пыли, конечно) |
|
|
- моделирование больших галактик (эллиптических, спиральных, неправильных и др.); |
|
|
- просчет траекторий искусственных спутников, движущихся в межпланетном пространстве; |
|
|
- моделирование "столкновений" галактик, звезд и других скоплений материи. |
Вам этого недостаточно? Я думаю,
вы сами сможете найти не менее полезное ее применение. Есть одна хорошая идея
по использованию ее для моделирования электростатических взаимодействий...
|
Вот некоторые характеристики SimGrav:
максимальное число объектов на данный момент 500. Я не думаю, что вы сможете
нормально работать с количеством, большим, чем 500. Я надеюсь, кто-нибудь
поможет мне оптимизировать SimGrav так, чтобы он мог работать с тысячами
частиц на обыкновенном компьютере, а не на рабочей станции. |
Базовые вычисления основаны на законах
Ньютона, Всемирного тяготения и сохранения импульса.
|
Главная идея, это система дифференциальных
уравнений второго порядка с тремя неизвестными величинами - x, y, z которые
являются координатами каждого объекта. Эта система интегрируется улучшенным
методом Эйлера второго порядка (метод "Предиктор - Корректор"). Тот,
кто разбирается в математике, может сказать, что этот метод недостаточно
точен, но я возражу: при проверке на Солнечной системе со всеми планетами,
траектории всех планет оставались стабильными после сотен оборотов вокруг
Солнца! И это не шутка. Этот результат означает, что мое решение устойчиво и
может быть применено в задачах (не) перечисленных выше. Другое дело, если вы
моделируете какую-либо галактику или другое скопление материи, которое не
имеет точных параметров. В этом случае вы не должны беспокоиться о точности
алгоритма, так как погрешности вычисления в миллионы (миллиарды) раз меньше
погрешности вводимых данных. |
Все эти вкусности просчитываются в реальном
времени, а отображаются в диметрической проекции.
-оси на диметрической проекции;
Программа скомпилирована в Borland C++ 5.02,
с применением BGI-графики.
И последнее что я хотел бы отметить, что в
любом случае метод проб и ошибок при изучении программы лучше всякой
документации.
![]()
Что нового в SimGrav v1.41 для DOS.
|
![]()
|
Как и у всякой другой
программы, SimGrav имеет известные ограничения. Перечисление всех из них не
обязательно, но все же главными из них являются:
|
![]()
|
![]()
|
![]()
Разработана
новая версия SimGrav 2.0 (с приставкой HP -high precision). Скажу несколько
слов по поводу алгоритмов вычисления в старой версии SimGrav 1.x. Использовался
несовершенный алгоритм выбора последовательного счета. Вследствие
рекурсивности, с течением времени накапливалась весьма немалая ошибка в
координатах от кадра к кадру. Эта ошибка была особенно заметной (и,
соответственно, огромной!) когда количество объектов превышало 8-10(!!!).
Алгоритм вычисления столкновений оказался совершенно ни при чем (он не вносит
никаких ошибок во время счета). В версии 2.0HP рекурсия алгоритма была
устранена, а порядок счета выправился. От этого точность счета выросла во много
раз (кому интересно, во сколько именно, пусть посчитает сам...). Для проверки
используется мой любимый прием (preset), который называется
"Верность" (для более полной информации смотрите раздел Уроки SimGrav).
В версии 2.0
накопились некоторые другие, более мелкие усовершенствования. Среди них можно
назвать появление статистики о сохранении импульса (и, соответственно,
энергии), при помощи которой можно судить о точности данного счета в целом.
Суть состоит в том,
что перед запуском процесса счета, на экран выводится некоторое число под
надписью "Summary impulse", которое означает суммарный импульс всех
объектов. В конце счета также вычисляется суммарный импульс, и результат
выводится на экран. Закон сохранения импульса гласит: Суммарный механический
импульс всех объектов замкнутой системы тел остается неизменным на протяжении
произвольного отрезка времени. Следовательно, если суммарные импульсы сильно
отличаются, то можно говорить о том, что результаты счета ненадежны. О
надежности же счета можно судить по разности начального и конечного импульсов,
поделенной на начальный импульс + конечный импульс. Полученное число умножается
на 100%, и говорят: относительная погрешность счета равна (к примеру) 0,1%.
Точность счета в SimGrav сильно зависит от шага времени. Поэтому, при
правильном выборе шага времени, точность можно свести практически к нулю.
Например, в режиме эксперимента, при небольшом количестве объектов (от 2 до 6)
и малоэкстремальных траекториях (то есть сравнительно небольших скоростях)
относительная погрешность будет меньше 10-10%.
Кстати, если в
качестве импульса будет выведена примерно такая абракадабра: 3,1415926E+8, не
пугайтесь, это экспоненциальная форма представления больших чисел (больших
999999). Просто помножьте число, стоящее слева от буквы E (в данном случае это
3,1415926) на 10 в степени, стоящей справа от буквы E (в данном случае, +8) и
вы получите число в обычном виде - 314159260.
![]()

Замечание: вы не можете
остановить вращение объектов в режиме паузы. Замечание 2: если версия 0.95 не работает,
установите на рабочем столе разрешение 800х600 при 16 или 32 битах. В этом
случае программа должна запуститься нормально. Да, и еще кое-что: SimGrav3D
не работает без 3D-акселератора ВООБЩЕ. Что должно появиться в полной версии
SimGrav3D: |
|
|
полный контроль над камерой наблюдения, ее вращение (шлем привет тебе, Homeworld!), а также увеличение; |
|
|
различные типы обзора; |
|
|
полный контроль над положением, скоростью, массой, материалом и освещением объектов; |
|
|
спецэффекты, такие как туман, линзовые эффекты, свечение и т.д... |
|
|
полный контроль над параметрами симуляции (как в SimGrav - расстояние слияния, шаг времени, параметр степени расстояния, и т.д.); |
|
|
различные демо режимы (Солнечная система, Астероиды, и т.д.); |
|
|
полный контроль над
качеством графики; Маленький комментарий: |
|
|
Теперь системные требования намного выше, чем в оригинальном SimGrav. Теперь вам необходим компьютер не ниже Pentium II 350 и 3D акселератор второго поколения (TNT,Voodoo2, и т.д.). Также программа не будет работать без Windows (95,98,Me, а 2000 и XP я не проверял). Безусловно, также необходимо наличие установленного DirectX 8.0 (думаю, сегодня это уже не проблема). Хотя, можно попробовать и на более слабом компьютере, но за скорость работы я не ручаюсь. При тестировании, некоторые товарищи жаловались на плохую скорость 3D-версии, но у них были процессоры (конечно не у товарищей, а у их компьютеров) слабее 233МГц. Поверьте, в данном случае не поможет даже мощный 3D-ускоритель. За более полной информацией обращайтесь в раздел Технология SimGrav. |
|
|
В SimGrav3D v0.6 demo начальные данные заданы так, чтобы показать эффект "гравитационного резонанса", описанного в разделе Ограничения. Эти данные не определяются случайным образом при каждом запуске. |
![]()
Скачивание
SimGrav:
|