SimGrav в состоянии на 20 ноября 2001 г. (v2.0HP)

Свежие новости:        Точность расчетов увеличена на несколько порядков без замедления!!!

  Содержание:

  1. Минимальные системные требования
  2. Предисловие
  3. Основные положения
  4. Rambler's Top100Отчет об ошибках
  5. Ограничения
  6. Контактная информация
  7. Для тех, кто заинтересовался SimGrav
  8. Информация об обновлениях
  9. Скачай себе!
  10. Небольшое пособие по SimGrav
  11. Технология SimGrav
  12. Об авторе
  13. Уроки SimGrav

View english version

1. Минимальные системные требования.

В настоящий момент, при отсутствии всяческих оптимизаций, требования особенно высоки к центральному процессору. Это из-за того, что в SimGrav проводится очень много вычислений для отображения каждого кадра. Поэтому минимальная тактовая частота процессора, необходимая для нормального показа 50-70 объектов - 300МГц (например, моего K6-500 чуть-чуть маловато для 100 частиц при 15fps). ВАЖНО, что при удвоении числа объектов, скорость падает в 4 раза, если в 3 раза - падает в 9 раз, и т.д. Если вы хотите нормально наблюдать 1000 ДВИЖУЩИХСЯ объектов (минимальное кол-во звезд для моделирования галактики) со скоростью 15-20fps, вам, вероятно, понадобится 4-х процессорная рабочая станция UltraSPARC III. Но еще раз повторю, что это все сказано для версии без всяких оптимизаций. Смотрите раздел 7 для более полной информации по сотрудничеству. Для подробной информации по принципам работы SimGrav смотрите раздел Технология.

К началу страницы

 

2. Предисловие.

Этот раздел обычно бывает только в играх, но я думаю, что и здесь он не будет лишним.

Еще с древнейших времен люди смотрели на небо. Они думали о магической роли планет, звезд, туманностей. Но прошло не так много времени, как они начали думать об основных законах их движения. Появлялись теории, устанавливающие законы изменения Вселенной. Первая из них была создана Галилеем, позже за это дело взялись Ньютон и Кеплер, и, в конечном счете, наиболее точной оказалась теория Эйнштейна, Фридмана и Шварцшильда. ВСЕ эти ученые делали свои расчеты на бумаге. Попробуйте порешать большие дифференциальные уравнения на бумаге. Это ужасно, неправда ли? Вот, вот, я тоже так думаю. Поэтому я решил "помочь" им в этом деле, применив свои знания в физике и программировании. Данная программа и является результатом моей работы.

К началу страницы

 

3. Основные положения.

Программа SimGrav может делать многое. Но конечно это не стирание носков, не мытье полов или еще что-нибудь в этом роде. Перед перечислением всех возможностей программы, я хочу сказать, что при ее работе во всех случаях используется один и тот же алгоритм. И я надеюсь, что вы поймете почему.

При помощи SimGrav вы можете наблюдать движение массивных объектов, находящихся в поле действия силы тяжести.

Вообще-то это единственная задача, которую решает SimGrav.

Но только не думайте, что эта задача легко выполнима и не нужна.

Вот несколько примеров: 

- моделирование Солнечной системы со всеми планетами, Солнцем, астероидами, спутниками и всем остальным! (кроме космической пыли, конечно) 

- моделирование больших галактик (эллиптических, спиральных, неправильных и др.); 

- просчет траекторий искусственных спутников, движущихся в межпланетном пространстве; 

- моделирование "столкновений" галактик, звезд и других скоплений материи.

Вам этого недостаточно? Я думаю, вы сами сможете найти не менее полезное ее применение. Есть одна хорошая идея по использованию ее для моделирования электростатических взаимодействий...

Вот некоторые характеристики SimGrav: максимальное число объектов на данный момент 500. Я не думаю, что вы сможете нормально работать с количеством, большим, чем 500. Я надеюсь, кто-нибудь поможет мне оптимизировать SimGrav так, чтобы он мог работать с тысячами частиц на обыкновенном компьютере, а не на рабочей станции.

Базовые вычисления основаны на законах Ньютона, Всемирного тяготения и сохранения импульса.

Главная идея, это система дифференциальных уравнений второго порядка с тремя неизвестными величинами - x, y, z которые являются координатами каждого объекта. Эта система интегрируется улучшенным методом Эйлера второго порядка (метод "Предиктор - Корректор"). Тот, кто разбирается в математике, может сказать, что этот метод недостаточно точен, но я возражу: при проверке на Солнечной системе со всеми планетами, траектории всех планет оставались стабильными после сотен оборотов вокруг Солнца! И это не шутка. Этот результат означает, что мое решение устойчиво и может быть применено в задачах (не) перечисленных выше. Другое дело, если вы моделируете какую-либо галактику или другое скопление материи, которое не имеет точных параметров. В этом случае вы не должны беспокоиться о точности алгоритма, так как погрешности вычисления в миллионы (миллиарды) раз меньше погрешности вводимых данных.

Все эти вкусности просчитываются в реальном времени, а отображаются в диметрической проекции.

-оси на диметрической проекции;

Программа скомпилирована в Borland C++ 5.02, с применением BGI-графики.

И последнее что я хотел бы отметить, что в любом случае метод проб и ошибок при изучении программы лучше всякой документации.

К началу страницы

 

4. Отчет об ошибках.

Присутствует некоторая нестабильность при работе программы. Я до сих пор не могу найти причин этого. Наиболее заметным проколом я считаю, что SimGrav зависает при вводе нечисловых данных в поле, где должны быть числа. Пожалуйста, информируйте меня о любых "ашипках", присутствующих в SimGrav. Для дополнительной информации смотрите раздел 5.

Что нового в SimGrav v1.41 для DOS.

Сделано много исправлений и дополнений. Также выявлено много ошибок. Вот некоторые из них:

 

В режиме отображения объектов "circles" исправлена ошибка, при которой появлялось множество артефактов на экране;

Исправлена ошибка очищения экрана при завершении симуляции (весьма обидная и тупая ошибка!);

Теперь вы можете вручную устанавливать цвет каждого объекта в режиме эксперимента;

чтобы сделать это, в главное меню был добавлен новый пункт "View colors";

Добавлены подсказки при вводе данных в режиме эксперимента;

 

К началу страницы

 

5.Ограничения.

Как и у всякой другой программы, SimGrav имеет известные ограничения. Перечисление всех из них не обязательно, но все же главными из них являются:

максимальное число частиц - 500;

Ограничения на максимальные значения координат и скоростей. Они происходят вследствие ограничения самих переменных в C++: double и long double типы переменных использованы;

Базовый алгоритм устанавливает минимальное расстояние между двумя объектами, называемое минимальным расстоянием слияния ("minimum merge distance"). Это минимальное расстояние, меньше которого два объекта сливаются в один, масса которого складывается из масс первых двух, а скорость вычисляется по закону сохранения импульса. Вы можете изменить это минимальное расстояние в меню опций.

После слияния, одна из точек переносится в "мусорную точку", там ее масса обнуляется. Координаты этой точки можно изменить в меню опций.

Иногда наблюдается эффект, который я называю "гравитационный резонанс". Этот эффект представляет собой ускорение частоты вращения одного объекта относительно другого с последующим "отрывом" и удалением из поля видимости с огромной скоростью. По сведениям из литературы по астрофизике можно утверждать, что этот эффект возможен при определенных условиях, когда объект падает в черную дыру. Чтобы избавиться от него, можно увеличить минимальное расстояние слияния в меню опций.

К началу страницы

 

6.Контактная информация.

Если вы заинтересовались моей программой, хотите что-либо обсудить со мной или очень хотите поучить ее исходники, пишите мне: Российская федерация, Республика Башкортостан, г. Уфа, 450105, ул. Королева 2/2 - 33. E-Mail: simgrav@chat.ru

К началу страницы

 

7.Для тех, кто заинтересовался SimGrav.

Если вы действительно заинтересовались моей программой, если вам понравилась какая-либо из ее возможностей, пожалуйста, сообщите мне. Больше всего я хочу привлечь настоящих мастеров программирования, кто ХОЧЕТ, и кто МОЖЕТ мне помочь при работе с SimGrav. Я не думаю что это работа для одного человека. Поэтому я жду. И мне нужна ВАША поддержка!

К началу страницы

 

8.Информация об обновлениях.

    Разработана новая версия 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. 

 

 SimGrav3D v0.95 screenshot SimGrav3D version 0.6 screenshot

Я думаю, это будет очень интересно для тех, кто заинтересовался SimGrav. Bug представляет новый вариант SimGrav - SimGrav3D. Я включил два пре-релиза SimGrav3D (версии 0.6 и 0.95) в файле demo.exe . Это почти полностью ограниченные демо версии. Они используют Direct3D API из DirectX 8.0! Теперь все скомпилировано в  Visual C++ 6.0 с использованием DirectX SDK 8.0. Я думаю, теперь программа выглядит гораздо красивее. В новой версии используется все тот же алгоритм (только переложенный на Visual C++...).

 

В версии 0.6 нет никаких клавиш управления. Но есть несколько клавиш управления в версии 0.95: "P" - плавная пауза; "Q" "A" - увеличение, уменьшение; "W" "R" "E" "D" "S" "F" - изменение положения камеры; "N" - обзор следующего объекта. Программа закрывается при нажатии Alt-F4.

Замечание: вы не можете остановить вращение объектов в режиме паузы.

Замечание 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 начальные данные заданы так, чтобы показать эффект "гравитационного резонанса", описанного в разделе Ограничения. Эти данные не определяются случайным образом при каждом запуске.

К началу страницы

 

9.Скачай себе!

Я пока не буду выкладывать SimGrav v1.41. Хотелось бы сначала понаблюдать за реакцией на первую версию (возможно, ее посчитают такой лажей, что и продолжать работу мне и вовсе не стоит).

По поводу версии 2.0HP, скажу, что все зависит от вас! Если не будет ни каких откликов на мое творчество, то и продолжения этого творчества тоже не будет. Как говорится, спрос рождает предложение, а моим предложением как раз и являются новые версии.

Скачивание SimGrav:

SimGrav v1.3 (только DOS) - оригинальная версия SimGrav. Вес - 62Kb  в RAR файле.

SimGrav v1.3XL (+SimGrav3D демо). Вес - 160Kb в RAR файле.

К началу страницы

 

Rambler's Top100