ENG Новый сайт

Расширенный поиск
[ Новые сообщения · Пользователи · Правила ]
Физика космического полёта
AerospacefagДата: Четверг, 08.12.2011, 21:26 | Сообщение # 91
Строитель Миров
Группа: Пользователи
Российская Федерация
Сообщений: 1019
Награды: 3
Статус: Offline
Quote (SpaceEngineer)
Почему, перелёт как раз импульсный.

Ну да, потому что мы так сказали. Хотя это и нереалистично - в будущем будут летать именно с ускорением около 1 g на специальных движках с тягой, постоянной в течении полета.
Тут самый простой вариант - честно сказать, что "не шмогла так не шмогла" и честно реализовывать импульсный + использование Ускорителя.


Win7
Intel Core i5-2310 2.9 Ghz
4 Gb DIMM DDR3
Asus GeForce GTX760, 2 Gb GDDR-5


Сообщение отредактировал Aerospacefag - Четверг, 08.12.2011, 21:27
MibusДата: Четверг, 08.12.2011, 22:51 | Сообщение # 92
Первооткрыватель
Группа: Команда SE
Украина
Сообщений: 301
Награды: 0
Статус: Offline
В принципе, задачу можно сильно упростить.
1. Задачу многих тел не решать - считать на корабль действует только одна сила, от объекта
воздействие которого максимально (на околоземных орбитах учитывать только влияние земли,
после пересечения точки равнодействия земля-луна только влияние луны и т.п.)
2. По достажению второй космической скорости учитывать только влияние звезды,
после третьей - считать полет свободным.
3. В кратных системах сравнивать влияние ближайшей звезды и барицентра, которому приписана суммарная масса системы. Если влияние барицентра больше влияния ближайшей звезды - проверить находится ли корабль вне орбиты самой дальней от барицентра звезды.
Если да - считать только влияние барицентра, если нет - считать полет свободным.

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


Win7 64 prof, Athlon II x2 256 3.3Mhz, RAM 4GB, GeForce GTS 250 512MB
AerospacefagДата: Четверг, 08.12.2011, 23:54 | Сообщение # 93
Строитель Миров
Группа: Пользователи
Российская Федерация
Сообщений: 1019
Награды: 3
Статус: Offline
Quote (Mibus)
считать полет свободным

Не, так не пойдет. Движок упрощать не следует, надо оставить влияние 2-3 тел одновременно, они обычно не велики в точках, удаленных от Лагранжа. А еще не стоит убирать некоторые специальные маневры в кратных системах. Пусть остается пространство для творчества.
Quote (Mibus)
Таким образом, в любой момент как максимум решается задача навигации в поле центральной силы + несколько простых проверок.

Мы и так этого достигаем, если используем систему типа TransX + автоматические вычисления.


Win7
Intel Core i5-2310 2.9 Ghz
4 Gb DIMM DDR3
Asus GeForce GTX760, 2 Gb GDDR-5


Сообщение отредактировал Aerospacefag - Четверг, 08.12.2011, 23:55
SpaceEngineerДата: Пятница, 09.12.2011, 01:40 | Сообщение # 94
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (Mibus)
В принципе, задачу можно сильно упростить.

Зачем упрощать? Это же испортит весь геймплей. Межзвёздный полёт будет аркадный, как во всех играх.


MibusДата: Пятница, 09.12.2011, 12:41 | Сообщение # 95
Первооткрыватель
Группа: Команда SE
Украина
Сообщений: 301
Награды: 0
Статус: Offline
Quote (SpaceEngineer)
Зачем упрощать? Это же испортит весь геймплей. Межзвёздный полёт будет аркадный, как во всех играх.


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


Win7 64 prof, Athlon II x2 256 3.3Mhz, RAM 4GB, GeForce GTS 250 512MB

Сообщение отредактировал Mibus - Пятница, 09.12.2011, 12:43
SHWДата: Пятница, 09.12.2011, 13:09 | Сообщение # 96
Строитель Миров
Группа: Команда SE
Нидерланды
Сообщений: 618
Награды: 10
Статус: Offline
Небольшое предложение по автоматической генерации траектории (когда траектория полностью рассчитывается компьютером).
Что если сделать ползунок, который будет изменять соотношение между двумя критериями оптимизации траектории: время и топливо. То есть если игрок хочет по-быстрее добраться, не зависимо от расхода, то сдвигает ползунок в сторону времени, а если хочет потратить минимум топлива, то в сторону топлива. Ну а если не определился, то по-середине.


Win7 Pro x64
Intel Core2Quad 2.5GHz 4GiB RAM
NVidia GForce 9800 1 GiB
Romario-3DДата: Пятница, 09.12.2011, 15:30 | Сообщение # 97
Нет аватара
Исследователь
Группа: Пользователи
Российская Федерация
Сообщений: 177
Награды: 0
Статус: Offline
Quote (SHW)
Зачем упрощать? Это же испортит весь геймплей. Межзвёздный полёт будет аркадный, как во всех играх.


Дело не в упрощении, дело в общей точности расчетов если в реальности все просщитывать от и до то ком просто глючить начнет несправится просчитывая такое количество данных орбит. Ведь он должен просчитать не только свою орбиту но и орбиты других обьектов которые в свою очередь тоже перемещаются и их перемещение порой не поддается расчетам можно только предположить куда полетит например вон тот грузовой корабль. Даже если вероятность столкновения с ним мизерная. Так что доля аркадности тут все равно будет как не крути не у всех же супер компы дома стоят. И не надо так боятся этого слова "аркада" не такое оно и страшное. И никто не обвенит тебя в том что игра аркадна просто она настолько реально имитирует физику полета на сколько позволяет просчитать средней поршивости комп.

Добавлено (09.12.2011, 15:30)
---------------------------------------------
А еще добавлю. В сетевой игре такие точные расчеты совсем упростятся ибо пинг! да и сервак просто несправится с милионами расчетных данных Возможно даже предется отказаться от вращения галактик и может даже вращения планет по арбитам.

MibusДата: Пятница, 09.12.2011, 18:09 | Сообщение # 98
Первооткрыватель
Группа: Команда SE
Украина
Сообщений: 301
Награды: 0
Статус: Offline
Quote (Romario-3D)
А еще добавлю. В сетевой игре такие точные расчеты совсем упростятся ибо пинг! да и сервак просто несправится с милионами расчетных данных Возможно даже предется отказаться от вращения галактик и может даже вращения планет по арбитам.


Не, не надо такие расчеты не сервак переносить - только на клиенте.
Сервак получает текущие координаты в фазовом пространстве, выполняет изредка проверку достоверности
(как мера защиты от читов) и передает, при необходимости данные другим игрокам.


Win7 64 prof, Athlon II x2 256 3.3Mhz, RAM 4GB, GeForce GTS 250 512MB
AerospacefagДата: Пятница, 09.12.2011, 18:16 | Сообщение # 99
Строитель Миров
Группа: Пользователи
Российская Федерация
Сообщений: 1019
Награды: 3
Статус: Offline
Не будет там никаких особенных расчетов, несколько формул и только. В Орбитере такая функциональность сделана с кратным запасам и нисколько ресурсов не отнимает.
Очнитесь, 21 век на дворе, у Crysis уже вторая часть вышла.
Mibus,
Сервак будет считать только координаты реального полета, вся навигационная часть пусть остается у игрока.


Win7
Intel Core i5-2310 2.9 Ghz
4 Gb DIMM DDR3
Asus GeForce GTX760, 2 Gb GDDR-5
SpaceEngineerДата: Пятница, 09.12.2011, 20:12 | Сообщение # 100
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Aerospacefag, +1
Где я говорил что для рассчёта траектории по реальной физике нужны супер расчёты и суперкомпьютеры 70-х годов? Поиграйте в Орибтер и убедитесь, что ничего суперсложного в этом нет. Это при том, что Орбитер моделирует несферичность гравитационного поля планет, сопротичление атмосферы, давление солнечного ветра и т.д. И всё это работало в начале 2000-х.

Рассчёт орбит естесственно будет на клиенте. Скорее всего я вообще сделаю p2p систему, так что сервер нужен будет только для регистрации аккаунтов игроков и содержания игровой БД.


kimitsu42Дата: Пятница, 09.12.2011, 21:59 | Сообщение # 101
Космический пилот
Группа: Команда SE
Российская Федерация
Сообщений: 132
Награды: 0
Статус: Offline
Чего-то я проспал тему =)

Quote (SpaceEngineer)
Уткнулся в несколько проблем, надо переделывать в движке камеру, систему координат, редер орбит и т.д.

А на чем сейчас работает камера? И чем не устраивает?
Я вот мучился с камерой: сделал по старинке двухосевую на углах Эйлера с выводом в gluLookAt. Для редактора хватает и двух осей вращения, а третью ось на углах - как-то не дается. Попробовал кватернионы - тела вращаются замечательно, а вот камеру постоянно покачивает - теряет вертикаль. В космосе может и не видно будет, а в редакторе раздражает.

Quote (Mibus)
Кстати идея - за особые заслуги выдавать корочки на нарушение физических законов.
Типа 3%-я отмазка от закона сохранения импульса, только для депутатов думы рукава стрельца

Ага, а на 1е апреля дается бонусные +1000% к ускорению - какраз для освоения соседних галактик.

Quote (SpaceEngineer)
Вводим пункт назначения (или кликаем по нему), программа автоматически рассчитывает трансферную орбиту, точки включения двигателей и продолжительность их работы, если перелёт импульсный. Если топлива не хватит, выводится надпись. Если расход слишком большой, игрок может выбрать другой пресет - трехимпульсный перелёт, перелёт с грав, манёврами и т.д., если время в пути устроит. Потом, полученную орбиту можно модифицировать, как сплайн в фотошопе - добавить контрольные точки, подвигать их. Например чтобы лететь к Юпитеру мимо пояса астероидов.


Космический навигатор, какая прелесть =)

Я бы отложил полет с грав. маневрами в сторонку - это для экстремалов и любителей, слишком уж долго лететь, только если это не экскурсия, соревнование или авария.
Остается рассчитать двухимпульсный перелет. Мы знаем мощность двигателя и ускорителя.
а) Считаем минимальное необходимое количество топлива, считаем минимальное время полета с затрачиванием всего топлива. Выводим график возможных затрат.
б) пользователь указывает сколько он готов потратить/ждать.
в) Теперь мы знаем сколько мы будем ускоряться и лететь = знаем время полета.
г) определяем с какой точки нашей орбиты нам выгодней стартовать, если надо - ускоряем полет до нее.
д) узнаем где будет планета к моменту нашего прилета
е) включаем двигатели - тратим половину топлива, включаем гиперускоритель и летим до точки торможения, разворачиваемся и тормозим.

Итого у нас есть: точка старта, точка гиперускорения и точка торможения.
При желании эти данные можно вывести в консоль и дать возможность редактировать.
Маршрутные точки можно расставлять - это даст больший расход времени, так как часть топлива пойдет на компенсацию перелета к точке. Сам алгоритм полета от этого не меняется. Траекторию можно подбирать чуть ли не перебором с уменьшением шага.

Для аварийных ситуаций можно ввести дополнительный алгоритм поиска траектории с грав. маневрами. Но имхо, оно сейчас не требуется.

Что подразумевалось под трехимпульсным перелетом? Вернее отчего он будет экономичней?

Quote (SpaceEngineer)
Такая система будет довольно сложной для реализации - много математики.

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

Quote (SpaceEngineer)
Например: игрок ставит контрольную точку на границе сферы влияния Земли (миллион км), движок рассчитывает простой одноимпульсный перелёт к ней. Далее ставится точка на границе сферы вляния Юпитера, движок рассчитывает импульс для достижения её с границы сферы Земли. Точки на границе сферы Земли и Юпитера надо передвинуть так, чтобы минимизировать расход топлива. Потом ставится точка на орбите Европы, и т.д. Можно по-другому, предоставив юзеру самому подбирать параметры импульса, редактируя траекторию как сплайн, либо редактируя величину и направление импульса.

Вот расстановка точек - это вроде как перебор. Если мы не используем грав.маневры, то нам достаточно двух импульсов. Любые изменения приведут к ухудшению траектории. Разумеется это не относится к случаю когда нам в эти точки надо залететь. Это лишь разделит траекторию на две и более, но это никак не новый режим полета.
Редактирование рассчитанной траектории в итоге сводится к расстановке промежуточных точек = набор траекторий.

Quote (Aerospacefag)
Вообще, конечно, и так и так получается или некрасиво, или неудобно. Но реальную физику стоило бы оставить - вдруг кто-нибудь когда-нибудь напишет работоспособный навигационный модуль?

А по-моему вполне красиво и удобно. Главное не усложнять без надобности. Кстати самописный навигационный модуль - хорошая идея. Но он потребует встраивания в игру скриптового языка. Сейчас можно обойтись и простым алгоритмом который и будет использоваться в большинстве случаев.

Quote (Aerospacefag)
Ну да, потому что мы так сказали. Хотя это и нереалистично - в будущем будут летать именно с ускорением около 1 g на специальных движках с тягой, постоянной в течении полета.

Летать на 1g - долго. Вот поддерживать 0,1-1g для комфорта - вполне себе решение.

Добавлено (09.12.2011, 21:59)
---------------------------------------------
Quote (Mibus)
В принципе, задачу можно сильно упростить.
1. Задачу многих тел не решать - считать на корабль действует только одна сила, от объекта
воздействие которого максимально (на околоземных орбитах учитывать только влияние земли,
после пересечения точки равнодействия земля-луна только влияние луны и т.п.)
2. По достажению второй космической скорости учитывать только влияние звезды,
после третьей - считать полет свободным.
3. В кратных системах сравнивать влияние ближайшей звезды и барицентра, которому приписана суммарная масса системы. Если влияние барицентра больше влияния ближайшей звезды - проверить находится ли корабль вне орбиты самой дальней от барицентра звезды.
Если да - считать только влияние барицентра, если нет - считать полет свободным.

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


В данном случае задача многих тел легко решается влоб, ввиду отсутствия большого количества тел. Ее сложность - влияние каждого тела на каждое тело. А у Нептуна планеты и спутники движутся по рельсам.

Quote (Mibus)
Даже с той точностью, что сейчас используется для модерирования межпланетных перелетов в космонавтике задачу не решить, комп рядового геймера не потянет вычислений которые делали на суперкомпах даже в конце семидесятых.

Бугагашенька =)
Закон Мура никто еще не отменял. Каждые два года мощность компьютеров удваивается. Интереса ради смотрел историю топовых суперкомпьютеров за последние десятилетия. Замечательное наблюдение: топовый суперкомпьютер через 10-15 лет догонялся топовым компьютером.

Quote (Romario-3D)
Дело не в упрощении, дело в общей точности расчетов если в реальности все просщитывать от и до то ком просто глючить начнет несправится просчитывая такое количество данных орбит. Ведь он должен просчитать не только свою орбиту но и орбиты других обьектов которые в свою очередь тоже перемещаются и их перемещение порой не поддается расчетам можно только предположить куда полетит например вон тот грузовой корабль. Даже если вероятность столкновения с ним мизерная.

Я свой движок вообще хотел заставить все тела двигаться исключительно под действием инерции и гравитации. В итоге проблема оказалась больше в нехватке точности операций чем в сложности вычислений. Задача сильно упрощается если отбросить все тела дающие меньше 0,1% грав. влияния. И их остается на удивление мало.Для каждого тела надо учитывать десяток-другой тел, независимо от того сколько их имеется.

Quote (Aerospacefag)
Сервак будет считать только координаты реального полета, вся навигационная часть пусть остается у игрока.

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

Quote (SpaceEngineer)
Рассчёт орбит естесственно будет на клиенте. Скорее всего я вообще сделаю p2p систему, так что сервер нужен будет только для регистрации аккаунтов игроков и содержания игровой БД.

А это вообще золотая идея. В отличие от современных MMORPG, где постоянно жмутся кнопки, тут нагрузка будет многократно снижена. Пожалуй следует по нагрузке ориентироваться на EVE. А желающие PvP идут в p2p =)


AMD Athlon II X3 3GHz + 4GB DDR3 + ATI Radeon HD 5770 1024 MB + Win7 64bit

Сообщение отредактировал kimitsu42 - Пятница, 09.12.2011, 22:01
AerospacefagДата: Пятница, 09.12.2011, 23:18 | Сообщение # 102
Строитель Миров
Группа: Пользователи
Российская Федерация
Сообщений: 1019
Награды: 3
Статус: Offline
kimitsu42,
если подтянут матчасть, будет более очевидно, что мы обсуждали. Например в http://spaceengine.org/_fr/0/_SE.doc я кое-что из этого изложил.
Quote (kimitsu42)
Закон Мура никто еще не отменял. Каждые два года мощность компьютеров удваивается.

Я не отрицаю, что это возможно, но я сразу прикинул, что SpaceEngineer это не Европейское Космическое Агентство и его движок не может себе позволить слишком сложной программы для вычислений.
Да, на современном оборудовании эти задачи решаются достаточно легко путем написания программного комплекса размером в 100 раз больше всего Space Engine. С применением недоступных нам вершин матанализа и честным решением нелинейных дифференциальных уравнений.
Quote (kimitsu42)
Вот расстановка точек - это вроде как перебор. Если мы не используем грав.маневры, то нам достаточно двух импульсов.

Нет, имеется в виду, наверное, что при перелете между планетами сначала надо уйти из гравитационного влияния планеты, а уже потом выйти на межпланетную траекторию - где учет этого влияния уже сводится к минимуму.


Win7
Intel Core i5-2310 2.9 Ghz
4 Gb DIMM DDR3
Asus GeForce GTX760, 2 Gb GDDR-5
SpaceEngineerДата: Суббота, 10.12.2011, 00:22 | Сообщение # 103
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (kimitsu42)
А на чем сейчас работает камера? И чем не устраивает?

Иерархическая система не удобна для физики.

Quote (kimitsu42)
Я бы отложил полет с грав. маневрами в сторонку - это для экстремалов и любителей, слишком уж долго лететь, только если это не экскурсия, соревнование или авария.

Блин, я уже тыщу раз объяснял - Г И П Е Р У С К О Р И Т Е Л Ь. Рассчитывешь перелёт, включаешь двигатели, выключаешь двигатели, включаешь гиперускоритель - и через 10 секунд у цели. А там уже тормозить или совершаешь грав. манёвр, тоже в режиме гиперускорения.
http://crydee.sai.msu.ru/Universe_and_us/4num/v4pap2.htm

Quote (kimitsu42)
Что подразумевалось под трехимпульсным перелетом? Вернее отчего он будет экономичней?

Не нашёл быстро ссылку, но там идея в том, что на Венеру надо лететь чуть ли не через орбиту Юпитера. Первый разгонный импульс у Земли, второй тормозной за орбитой Юпитера (т.к. скорость там мала, нужен небольшой импульс, для того чтобы сильно сбросить скорость и почти отвесно упасть на Солнце), третий тормозной у Венеры. Такой перелёт получается очень экономичным, но и очень долгим. Но т.к. у нас есть гиперускоритель, время не имеет значения.


SpaceEngineerДата: Суббота, 10.12.2011, 00:33 | Сообщение # 104
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (Aerospacefag)
Я не отрицаю, что это возможно, но я сразу прикинул, что SpaceEngineer это не Европейское Космическое Агентство и его движок не может себе позволить слишком сложной программы для вычислений. Да, на современном оборудовании эти задачи решаются достаточно легко путем написания программного комплекса размером в 100 раз больше всего Space Engine. С применением недоступных нам вершин матанализа и честным решением нелинейных дифференциальных уравнений.

Да нету там никаких сложных рассчётов. Просто суммируется гравитационное влияние всех планет и лун в системе - это линейная операция от N. Я уже это реализовал, 1000 раз в секунду успевает рассчитаться. Можно оптимизировать, используя иерархичность устройства системы - для далёких планет не считать луны честно, а просто прибавить их массу к массе планеты и считать только планету. Сложность представляют только астероиды. Но есди будет процедурное остероидное кольцо, то каждый астероид учесть отдельно никак не получится. Тогда просто аналитически считается поле от тора, описывающего распределение астеродов в кольце. Если аналитически не получится, рассчитать численно табличку из брать сглаженное сплайном значение из неё. А при достаточно близком приближении к астероиду - считать уже чесно его поле (с учётом несферической формы!). Ведь интересно же будет высадиться на астероид, выйти в скафандре, и попытаться подпрыгнуть так, чтобы улететь с него smile


kimitsu42Дата: Суббота, 10.12.2011, 01:12 | Сообщение # 105
Космический пилот
Группа: Команда SE
Российская Федерация
Сообщений: 132
Награды: 0
Статус: Offline
Quote (SpaceEngineer)
Блин, я уже тыщу раз объяснял - Г И П Е Р У С К О Р И Т Е Л Ь. Рассчитывешь перелёт, включаешь двигатели, выключаешь двигатели, включаешь гиперускоритель - и через 10 секунд у цели. А там уже тормозить или совершаешь грав. манёвр, тоже в режиме гиперускорения.

Да понятно что ускоритель. Вопрос во сколько раз ускоритель. Я сейчас воспринимаю его как несколько секунд для внутрисистемных и в пределах минуты для межзвездного полета. Это не много, но учитывая что при грав. маневрах надо попетлять, даже с ускорителем это будет не быстро... не настолько быстро.
Если имеется ввиду что грав. маневр под ускорителем разгонит нас быстрее чем двигатель, тогда да, это все меняет. Но тут опять же вопрос в том, а сколько будет стоить заправка? Может так случиться что слетать заправиться будет удобней чем разгоняться от планет. И по-моему так и будет. Насколько я помню у нас в запасе заоблачные dV.

Quote (SpaceEngineer)
Не нашёл быстро ссылку, но там идея в том, что на Венеру надо лететь чуть ли не через орбиту Юпитера.

А, ну это да, я рассматривал полет по краткой траектории, а не с маневрами.

Quote (SpaceEngineer)
А при достаточно близком приближении к астероиду - считать уже чесно его поле (с учётом несферической формы!).

Учитывая размеры наших корабликов, то это скорее будет вычисление нашего влияния на астероиды, а не наоборот. Километровый кораблик на пару-тройку тысяч тонн - это тоже не шутка =)


AMD Athlon II X3 3GHz + 4GB DDR3 + ATI Radeon HD 5770 1024 MB + Win7 64bit
Поиск:

>