Функцию можно подобрать, но не хотелось бы такой костыль использовать...
А почему костыль? Мы же не знаем, да и не можем знать, какие физические принципы задействованы. Следовательно, мы не знаем, какие формулы правильные. А значит, их придется выводить эмпирически. Сложность в том, что определенности насчет того, каким должно быть поведение в той или иной ситуации просто нет.
Поэтому я и предлагаю различные варианты, чтобы можно было из них выбрать подходящий - в угоду геймплею.
Причем, все предложенные функции логически обоснованы и выведены из предъявленных требований. Требования скомпилированы из различных объяснений и примеров того, как выглядит полёт ускоренного во времени корабля.
Я исходил из следующих постулатов: 1. Движение корабля похоже на движение с ускорением времени. 2. Если корабль находится на орбите вокруг планеты, то при включении ускорения он станет двигаться быстрее, но по той-же орбите. (по идее,то-же должно касаться и орбит вокруг лун, звезд, галактик) 3. При межпланетных перелетах, корабль будет двигаться по той-же траектории, что и без ускорения (тоесть, по эллиптической орбите вокруг звезды), но планеты для него как бы остановятся.
Но в пункте 1 есть противоречие: нет такой траектории, движение по которой выглядит как движение с ускорением времени во всех ИСО. Был предложен выход: движение корабля похоже на движение с ускорением времени, если наблюдать из "правильной" ИСО.
Из пунктов 2 и 3 следует, что "правильная" ИСО в разных ситуациях разная: На орбите вокруг планеты - ИСО, связанная с центром планеты; для луны - с центром луны; и т.д. - с центром наиболее "влиятельного" в данной ситуации тела. А значит, требуется переключать систему отсчета в зависимости от ситуации. Чтобы переключение не было резким можно применить интерполяцию.
Так и получились все эти формулы. В том числе и последняя, основанная на адекватном наборе параметров массивных тел (масса тела и расстояние от тела до корабля) и позволяющая подстраивать расстояние до границ (параметр х) и плавность переключения (параметр у) систем отсчета.
P.S. Насколько я смог проверить, по крайней мере закон сохранения энергии не нарушается (с гипердвигателем, локально ускоряющим время - вообще никак, а с прыжковым - при условии, что разница компенсируется энергией, закачиваемой в привод).
P.P.S. Еще один подводный камень - как быть со столкновениями? Например, если корабль летит со скоростью 0,5 м/с в сторону небольшого астероида, и включает ускорение в 100 раз. Что будет с кораблем после столкновения (притяжением астероида можно пренебречь)? Как быть с межзвездным водородом, космической пылью, микрометеоритами? Особенно при межзвездных, а тем более, межгалактических полетах (ведь, чтобы перелет занимал приемлемое время, скорость перемещения должна будет измеряться, минимум, в парсеках в секунду)? Windows 7 x64; Core i5-2500K (3.3 Ghz); 8Gb RAM; Radeon HD 6950 2Gb
Сообщение отредактировал mindstalker - Пятница, 23.03.2012, 19:24
Можно ввести еще одно упрощение - считать положения звезд, планет и лун статичными. За минуты полёта, очень немногие из них сдвинутся на значимое расстояние. Интегрирование уравнений движения при таком подходе значительно упростится. Win7 64 prof, Athlon II x2 256 3.3Mhz, RAM 4GB, GeForce GTS 250 512MB
За минуты полёта, очень немногие из них сдвинутся на значимое расстояние.
Ну, это только с точки зрения межзвездного перелета. При скорости в 30-100 км/с это может оказаться очень значительный сдвиг, что-то около нескольких радиусов планеты. В качестве решения может подойти использование разной точности вычислений для разных масштабов - при межсистемном перелете со сжатием времени в миллионы раз положение планет не окажет значительного влияния, а звезды и так статичны. Win7 Intel Core i5-2310 2.9 Ghz 4 Gb DIMM DDR3 Asus GeForce GTX760, 2 Gb GDDR-5
Сообщение отредактировал Aerospacefag - Суббота, 24.03.2012, 02:26
В Солнечной вроде спутники Юпитера самые шустрые? У них скорости порядка 50 тысяч км/ч, за 10 минут улетит на несколько тысяч км., т.е. несколько диаметров самых крупных спутников. Здесь уже да, нежелательно пренебрегать. Все остальное летает медленней (Меркурий порядка 800км/ч, Луна - 60км/ч. А вот навигация у Юпитера - это нечто. Сам Юпитер большой + куча тяжелых и шустрых спутников. Скорее всего придется строить гибридный механизм - считать чьим влиянием можно вообще пренебречь, кого считать статичным, кого можно обьеденить в один центр масс. Методика наверняка уже разработана - Вояджерам же просчитали траекторию - можно просто посмотреть что там наваяли и попытаться упростить для ускорения расчетов. И скорее всего, расчетчик орбит придется делать двухкомпонентным. Первый - более или менее точно считает и выдаёт кусок элиптичесокой или гиперболической орбиты, а второй отвечает за движение по этим элементам, иначе никакой проц не справится. И придется ограничивать коэффициент ускорения времени в зависимости от сложности навигации.
А может получится обойтись и без всякой аналитики - просто считать суммарный вектор внешнего поля и из него вычислять прирост скорости за один тик времени. При достаточно мелких отрезках, как раз и получится численное интегрирование уравнений движения. Разве что шаг времени выбирать в зависимости от напряженности и градиента поля, для оптимизации точности/производительности. А аналитика понадобится только для расчета орбиты при отсутствии управления игроком. Но тут можно как уже предлагалось - врубать автопилот и уводить корабль на ближайшую устойчивую орбиту. Win7 64 prof, Athlon II x2 256 3.3Mhz, RAM 4GB, GeForce GTS 250 512MB
Сообщение отредактировал Mibus - Суббота, 24.03.2012, 15:56
P.P.S. Еще один подводный камень - как быть со столкновениями? Например, если корабль летит со скоростью 0,5 м/с в сторону небольшого астероида, и включает ускорение в 100 раз. Что будет с кораблем после столкновения (притяжением астероида можно пренебречь)? Как быть с межзвездным водородом, космической пылью, микрометеоритами? Особенно при межзвездных, а тем более, межгалактических полетах (ведь, чтобы перелет занимал приемлемое время, скорость перемещения должна будет измеряться, минимум, в парсеках в секунду)?
Стукнется и отскочит На самом деле это вопрос о процессах в переходной зоне между нормальным временем и ускоренным. Допустим зона ускоренного времени имеет вид шара с размытыми границами, где масгтаб времени очень быстро убывает до нормального. Когда корабль приближается к астероиду, часть астароида начинает испытывать ускорение времени, а значит пытается двигаться со сверхсветовой скоростью вместе с кораблём (и со скоростью 0.5 м/с относительно корабля). А другая часть астероида, которая ещё в нормальном времени, как-то с ней взаимодействует. Отталкивает? Но что будет с импульсом? В рамках классической физики одни противоречия... Можно поступить проще - сказать что при попадании массивного тела в поле ускорения времени это поле разрушается, гипердвигатель отключается (или взрывается ) и корабль возвращается в обычное время.
Quote (Mibus)
Луна - 60км/ч.
Не маловато-ли? 1 км/с вроде было... Вообще, км/ч - плохая единица для измерения космических скоростей
Можно поступить проще - сказать что при попадании массивного тела в поле ускорения времени это поле разрушается, гипердвигатель отключается (или взрывается ) и корабль возвращается в обычное время.
Отличная идея! Наукообразное объяснение тоже можно предложить простое - при этом резко возрастает расход энергии (ведь нужно очень резко ускорить во времени эту массу - за то время, пока она преодолевает размытые границы).
Но в любом случае, из-за градиента поля возникнет сила, выталкивающая объекты из поля (энергия на это добавляется к стоимости поддержания поля). Для точечных частиц, вроде межзвездного водорода, эта сила будет нулевой. Но, при полете через тот-же самый межзвездный водород, его плотность внутри поля должна возрастать и, при больших скоростях перемещения, его плотность внутри поля может стать достаточной, чтобы выталкивать вновь прилетающие частицы. И это еще только верхушка айсберга...
Вобщем, возникает куча эффектов, которые могут весьма серьезно ограничить скорости путешествия (и, возможно, поставить крест на быстрых межзвездных перелетах).
Но есть и плюсы - благодаря возрастающей плотности водорода в поле, можно будет использовать воздушно-реактивные двигатели .
Естественно, все это требует дополнительных более точных расчетов. Windows 7 x64; Core i5-2500K (3.3 Ghz); 8Gb RAM; Radeon HD 6950 2Gb
Но в любом случае, из-за градиента поля возникнет сила, выталкивающая объекты из поля ... ...при полете через тот-же самый межзвездный водород, его плотность внутри поля должна возрастать...
При ближайшем рассмотрении все оказывается совсем не так. По быстрому сворганил тестовую программку (под рукой оказался только flash 6.0 - еще от macromedia...).
Vss - Скорость корабля (до включения ускорения) k - коэфф. ускорения ось x направлена вдоль скорости корабля. Vpx, Vpy - скорости частицы вдоль осей x и y соответственно Vvx, Vvy - компоненты постоянной составляющей скорости частиц Vvs - случайная составляющая скорость частиц
Выводы такие: Если Vpx >= Vss, то частица задерживается у передней кромки поля и плавно стекает к краям со скоростью от Vpy до k*Vpy (в итоге, у передней кромки поля формируется тонкий плотный слой частиц). Иначе (если Vpx < Vss), она быстро пролетает сквозь поле и остается "за кормой".
Так или иначе, частицы быстро покидают поле, и, как следствие, плотность частиц внутри крайне мала (остаются надолго только те, чья скорость близка к скорости корабля).
При ближайшем рассмотрении все оказывается совсем не так. По быстрому сворганил тестовую программку (под рукой оказался только flash 6.0 - еще от macromedia...).
Хм, интересно. Значит при столкновении с астероидом должно происходить примерно то же самое. Если корбаль двигался медленнее астероида, он пробурит в нём отверстие, если быстрее - разобьётся. Vss и Vpx направлены как, в противоположные стороны?
Vss и Vpx - компоненты скорости вдоль оси x корабля и частицы соответственно. Vss всегда >=0 (ось x направлена вдоль нее) если Vpx>Vss значит, частица обгоняет корабль (при выключенном ускорении времени)
Что будет происходить с астероидом, зависит от того, как в нашем поле (а особенно, на границе) происходит взаимодействие частиц этого астероида. Могут, ли частицы внутри поля взаимодействовать с частицами снаружи? А наоборот?
Если граница поля - не помеха для межатомных и межмолекулярных взаимодействий, то те частицы астероида, которые окажутся в поле, должны будут затормозиться так, чтобы ускоренные полем частицы двигались так-же как и неускоренные. Маленький астероид скорость которого больше скорости корабля, при досветовых скоростях, просто застрянет частично погруженный внутрь поля (ну и, естественно, если |Vpy|>0, будет смещаться, "стекая" с поля и вращаясь). Что, в принципе, не сильно отличается от поведения точечных частиц. Что произойдет при сверхсветовой скорости перемещения - непонятно. Там получается одностороннее взаимодействие - частицы вне поля влияют на те, что внутри, а внутренние никак не могут повлиять на внешние. При этом, после проникновения в поле первых частиц, на границе формируется уплотняющаяся к внешнему краю область сжатых в пространстве волн межатомного взаимодействия. И не понятно, как это повлияет на следующие проникающие в поле частицы... По моим (очень грубым) прикидкам, маленький астероид полностью погрузится в поле, затормозившись примерно до скорости корабля, и будет дрейфовать наружу (при наличии Vpy), а часть его атомов, последними прошедших сквозь поле, будет разогнана до скорости света, либо превратится в свет (это и обеспечит торможение остального астероида). Этот свет "стечет" по границе поля и останется позади корабля. Windows 7 x64; Core i5-2500K (3.3 Ghz); 8Gb RAM; Radeon HD 6950 2Gb
Сообщение отредактировал mindstalker - Вторник, 27.03.2012, 14:34
На счет анти-метеоритного поля. Если чисто теоретически разогреть камень (оксид кремния), скажем до 1000 С, он станет полупроводником, и в принципе на него будут действовать магнитные поля. Есть такой метод плавления металла, называется Левитационное плавление или Плавка во взвешенном состоянии. На магнитной подушке удерживается капелька жидкого металла. Правда масса метала считанные граммы). Нам с коллегой как то удалось разогреть до красна кусочек камня и "повесить" его в установке, но конечно масштабный фактор... Если конечно была бы возможность в считанные мгновения разогреть подлетающий метеорит и тогда уже можно на его полет повлиять магнитным полем - по крайней мере изменить траекторию полета. Но по хорошему это конечно не возможно. Даже если у корабля есть бесконечный источник энергии с невообразимой мощностью и есть магнитная система способная выдать хотя бы 1 тонну отталкивающей силы (очень условно) - нагреть подлетающий камень мгновенно - практически не возможно. Теплопроводность материала камня не позволит. Хотя конечно, если достаточно бы было тонкого проводящего слоя, с учетом бесконечно мощного источника энергии - вполне реальная штука.
А вообще, если сам метеорит довольно маленький... а нет)) вот блин, вакуум зараза))) Хотя нет - если в метеорите содержаться металлические включения, его можно достаточно быстро нагреть СВЧ, а магнитные поля в последствии еще добавят температуры. В принципе небольшие метеориты можно отталкивать таким способом. AMD Phenom II X4 965, G.Skill F3-14900CL9-8GBSR (8Gb), Radeon HD 6970 (2Gb), Win7 x64.
Сообщение отредактировал mytho - Вторник, 27.03.2012, 15:44
Скорее всего при влёте в поле астероид разрушится - волны сжатия, вызванные градиентом времени, его просто расплавят и разорвут, а атомы растекутся к краям поля. Очень похоже на приливные силы чёрной дыры, только тут искривление времени, а не пространства. Маленькая пылинка может и уцелеть - градиент времени вдоль неё небольшой, разрывные силы маленькие. Столкновение же с крупным астероидом приведёт к взрыву, вещество астероида, просочившееся внутрь поля, разрушит корабль и поле отключится. Энергия взрыва черпается из кинетической энергии корабля до включения поля. Таким образом, сверхсветвой корабль нельзя использовать для уничтожения планеты - разрушения будут не больше, чем при простом столкновении на обычной скорости полёта. Хотя всё же есть способ - использовать расширение Вселенной. Чтобы попасть в галактику на растоянии 10 млрд св. лет, надо скомпенсировать её хаббловскую скорость, близкую к скорости света. Делается это только обычными реактивными двигателями. Если корабль с одной заправки развивает только 1000 км/с, ему придётся сделать 300 (грубо) дозаправок - как раз в галактиках по пути, хаббловкая скорость которых сравнима со скоростью корабля (в этом ключ ко всему предприятию). Таким образом можно за пару месяцев добраться до очень далёкой галактики, при этом оказавшить почти в состоянии покоя относительно неё. Далее разворачиваемся, и летим сразу к планете-цели в исходной галактике, не косменсируя хаббловскую скорость исходной галактики. Оказавшись там, корабль будет иметь скорость, близкую к скорости света - можно таранить планету. Такой корабль должен быть оборудован нехилым щитом, чтобы продержаться хотя бы денёк на субсветовой скорости, не сгорев по пути к планете.
Quote (mytho)
Есть такой метод плавления металла, называется Левитационное плавление или Плавка во взвешенном состоянии.
Это по сути то же самое магнитное поле Земли, отклоняющее заряженные частицы солнечного ветра. Только более компактное и очень мощное, способное за микросекунду отклонить килограмм вещества, перед этим ещё разогрев его до состояния плазмы. Правда в районе полюсов поля должны стоять мощные щиты-поглотители - в них придётся основной удар плазмы.
Скорее всего при влёте в поле астероид разрушится - волны сжатия, вызванные градиентом времени, его просто расплавят и разорвут, а атомы растекутся к краям поля
Да, нагрев я что-то не учел... Но все равно, последствия столкновения будут слабее, чем кажется на первый взгляд. Сжатие возникает из-за того, что частицы, попавшие в поле, двигаются в k раз быстрее тех, что снаружи. Попавшие в поле частицы начинают приближаться к наружным, силы межмолекулярного взаимодействия пытаются их вернуть на место. Так вот, скорость, которую должны погасить межмолекулярные силы равна Vpx - Vpx/k, тоесть, чуть меньше скорости астероида... К тому же, нужно учитывать, что ускоренные частицы, по их локальному времени, подвергаются воздействию межмолекулярных сил в k раз дольше (это, кстати, весьма серьезно нарушает законы сохранения).
В итоге, для астероида последствия даже слабее, чем при ударе о неподвижную твердую поверхность со скоростью Vpx, которая практически всегда значительно меньше скорости перемещения границ поля (k*Vss). Windows 7 x64; Core i5-2500K (3.3 Ghz); 8Gb RAM; Radeon HD 6950 2Gb
Сообщение отредактировал mindstalker - Вторник, 27.03.2012, 20:44
криншот из игры Evochron Mercenary. Она, кстати, самая реалистичная из всех современных: посадка на планеты, редактор корабля, наем экипажа и т. д. Можно кой-чего позаимствовать
Пробовал в него играть... Занятно, но управление жуть просто... Часто врезался в поверхность планеты... Кстати там одна интересная фишка которую бы надо в SE...Это когда при подлёте к космическому телу ближе определённого растояния происходит захват коробля полем тяготения тела и корабль начинает падать на поверхность... Это можно использовать в маневрировании... Если череп смеется - значит у него есть на то причины. Слова Ванталы