Текущее время: Чт 28 мар 2024 21:31

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 62 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Сообщение Пн 5 окт 2015 13:49
Профиль  
Участник
Сообщения: 36
Зарегистрирован: Сб 7 фев 2015 0:22
Polygon-4 - проект по разработке игрового (логического) движка, а также инструментария (SDK) с одноимённым названием по вселенной из серии игр Механоиды.
Проект создан для использования только в образовательных и академических целях и не направлен на извлечение выгоды (продажу, получение прибыли и т.п.).

В качестве основного графического движка предполагается использование Unreal Engine 4.
Не исключается возможность адаптирования других графических движков (Unity, Ogre3D, Urho3D, других, в том числе самописных) за счёт гибкой архитектуры Polygon-4.
Разработка движка ведётся на языке С++.
Одним из основных требований является кроссплатформенность конечных игр (Windows, Linux, OS X, др.).
Код проекта является свободным и распространяется под лицензиями GPLv3, AGPLv3. Материалы (модели, эффекты и пр.) под свободными лицензиями из семейства Creative Commons.

В качестве прикладного применения создаваемого движка, а также обкатки технологий выбрано портирование оригинальных частей игр (Механоиды 1,2). Предполагается сохранение основных сюжетных историй, исправление имеющихся недоработок, улучшение некоторых частей игрового процесса, возможно добавление побочных заданий.
В дальнейшем возможна разработка новых игр или модификаций по вселенной Механоидов. Также большое внимание уделяется разработке инструментария (SDK), чтобы другие пользователи легко могли модифицировать игровой процесс, добавлять задания, сюжетные линии, то есть создавать свои моды.

На данный момент проектом занимаюсь я один, в свободное время.
Требуются графические дизайнеры для создания графики: моделей, эффектов, карт и т.д.
Кому интересно, обращаться лично ко мне в ЛС.

Документация: https://www.dropbox.com/s/ipnakg5civ0xp ... u.pdf?dl=1
Инструкции по установке можно найти в документации.

Текущий статус проекта: разработка системы заданий.

_________________
Polygon-4 (http://aim-fans.ru/index.php?showtopic=147)
Документация и инструкции по установке доступны по ссылке (docs, in russian):
https://www.dropbox.com/s/ipnakg5civ0xp0g/Polygon4_ru.pdf?dl=1


Последний раз редактировалось lzwdgc Чт 17 мар 2016 17:38, всего редактировалось 10 раз(а).

 Сообщение Вт 1 дек 2015 14:32
Профиль  
Участник
Сообщения: 36
Зарегистрирован: Сб 7 фев 2015 0:22
Вижу, в соседней теме идёт активная дискуссия на тему возможных, невозможных и других фантастических явлений, возникающих при движении/парении глайдера. Предлагаю более предметно продумать воздействие различных сил на глайдер и записать это в виде формул.
Документация по проекту Polygon-4 доступна по ссылке: https://www.dropbox.com/s/ipnakg5civ0xp ... u.pdf?dl=1
Она включает в себя главу, посвящённую "физике" глайдера.
Позже выложу исходники на гитхаб. Документ только начат, будет дополняться и исправляться со временем.

_________________
Polygon-4 (http://aim-fans.ru/index.php?showtopic=147)
Документация и инструкции по установке доступны по ссылке (docs, in russian):
https://www.dropbox.com/s/ipnakg5civ0xp0g/Polygon4_ru.pdf?dl=1


 Сообщение Вт 1 дек 2015 19:40
Профиль  
Механоид 1 поколения
Сообщения: 176
Зарегистрирован: Пн 23 фев 2015 8:49
lzwdgc писал(а):
Предлагаю более предметно продумать воздействие различных сил на глайдер и записать это в виде формул.
По пункту 2.2/2.3. Описанные формулы, если я правильно понимаю, вызовут периодическое колебание. Можно предположить, что в глайдере установлен элементарный PID-контроллер, который, управляя силой антиграва, позволяет глайдеру летать плавно и без скачков. Его коэффициенты, кстати, можно вынести в настройки геймплея.
В рассуждения о способах работы антиграва в соседней теме не сильно вдавался - времени свободного нет. Прошу простить, если уже предлагали.


 Сообщение Вт 1 дек 2015 23:25
Профиль  
Разработчик идей
Аватара пользователя
Сообщения: 4577
Откуда: Минск, Беларусь
Зарегистрирован: Ср 14 ноя 2007 19:00
Егор, если результатом должно быть точно такое же поведение антитграва, как в М1-М2, то при высоте полёта выше желаемой антиграв должен тащить вапще вниз. Патамушта при тяге движков, обеспечивающей ускорение выше 9.8м/с2 глайд не взлетал вверх. Но ящитаю так делать нинада. Так что антиграв должен уметь лишь толкать вверх. Причём не вертикально вверх, а перпендикулярно поверхности под глайдером, иначе покорение любого обрыва не будет проблемой.

Номинальная сила отталкивания должна быть обратно пропорциональна квадрату расстояния от поверхности:
F = k/(r*r);
причём при желаемой высоте полёта она должна равняться весу глайдера:
k = m*g*(r0*r0);
Чтоб избежать колебаний нужно учитывать моментальную скорость глайдера и добавить динамическую регулировку мощности антиграва (снижение мощности): если глайдер взмывает вверх и за время между фреймами при его вертикальной скорости он достигнет желаемой высоты полёта, то k=0. Вот так просто можно попробовать для начала.

И да, сантиметры брать за едиицы измерения не кошерно.

_________________
Сообщество креативных механоидов:
aim-fans.ru


 Сообщение Вт 1 дек 2015 23:46
Профиль  
Техногенный
Сообщения: 8299
Зарегистрирован: Пт 29 дек 2006 17:31
Шаман писал(а):
Номинальная сила отталкивания должна быть обратно пропорциональна квадрату расстояния от поверхности:

Собственно, счеголи?
Если хотите короткодействующий антиграв. лучше использовать экспоненту вида F_0 * exp (-kh/h_0), где h_0 - номинальная высота полета над поверхностью, F_0 - тот же вес.
Шаман писал(а):
Чтоб избежать колебаний нужно учитывать моментальную скорость глайдера и добавить динамическую регулировку мощности антиграва (снижение мощности): если глайдер взмывает вверх и за время между фреймами при его вертикальной скорости он достигнет желаемой высоты полёта, то k=0. Вот так просто можно попробовать для начала.

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

_________________
thrusting squares through circles


 Сообщение Ср 2 дек 2015 15:13
Профиль  
Механоид 1 поколения
Сообщения: 176
Зарегистрирован: Пн 23 фев 2015 8:49
Шаман писал(а):
Чтоб избежать колебаний нужно учитывать моментальную скорость глайдера и добавить динамическую регулировку мощности антиграва (снижение мощности):
PID-контроллер
Ну я же про это говорю. Есть уже готовые формулы, достаточно простые, чтобы каждый тик их считать. Велосипед городите.
Почему меня игнорируют? :cry: Я же и презент перфекты учил, и по физике отлично, и пишу иногда грамотно.


 Сообщение Ср 2 дек 2015 23:31
Профиль  
Разработчик идей
Аватара пользователя
Сообщения: 4577
Откуда: Минск, Беларусь
Зарегистрирован: Ср 14 ноя 2007 19:00
Да я не игнрирую, я просто свою точку зрения написал, ты свою. Просили предложить - мы предложили. Я просто хз что такое тот контроллер, мне лень было луркать, сорьки. :teeth: Егор пусть разбирается.

_________________
Сообщество креативных механоидов:
aim-fans.ru


 Сообщение Чт 3 дек 2015 15:55
Профиль  
Механоид 1 поколения
Сообщения: 176
Зарегистрирован: Пн 23 фев 2015 8:49
Шаман писал(а):
Я просто хз что такое тот контроллер
Если просто - используя интегральное и дифференциальное исчисление вычисляются такие значения контролируемой величины (для антиграва - силы), чтобы получить нужную неконтролируемую величину (высоту) за минимальное время. Причём для некоторых случаев, подобных этому с антигравом, можно вывести формулы, не затрачивающие много памяти и времени процессора. Будет плавно и кросиво.


 Сообщение Чт 3 дек 2015 23:39
Профиль  
Разработчик идей
Аватара пользователя
Сообщения: 4577
Откуда: Минск, Беларусь
Зарегистрирован: Ср 14 ноя 2007 19:00
Ага. Ну вот Егор и спрашивает эти формулы. :yes:

_________________
Сообщество креативных механоидов:
aim-fans.ru


 Сообщение Пт 4 дек 2015 22:26
Профиль  
Механоид 1 поколения
Сообщения: 176
Зарегистрирован: Пн 23 фев 2015 8:49
На самом деле я так и не смог в свою герметичную голову вложить эти разделы математики/физики, так что в рассуждениях могут быть некоторые ошибки. Попробую объяснить просто, может и сам всё пойму.
Oscar Wilde писал(а):
I am so clever that sometimes I don't understand a single word of what I am saying

Скажем, есть у нас ракета, которая летит от одной точки в пространстве до другой. Очевидно, что чтобы она долетела за минимальное время, она должна половину пути разгоняться, а половину - тормозить. Наш случай с глайдером похож на эту ракету, только у него нет точки старта - он уже находится на расстоянии d от нужной точки (высоты) и имеет скорость s. А ещё на него действует постоянная (пусть будет такой, не сильно высоко летаем) сила тяжести и он не может самостоятельно тормозить (будем считать, что антиграв может только отталкивать от поверхности) - за тормоз будет гравитация. Вы видели, как падают летают ракеты SpaceX? Вот на это похоже . Не будет же она всю атмосферу потихоньку спускаться, ей топлива не хватит. Она тормозит у земли и плавно останавливается на нужной высоте (ну, на нуле). Ещё и быстро получается.

m - масса глайдера
v - его вертикальная скорость (вектор)
hc - его высота над поверхностью
hr - необходимая высота над поверхностью
fm(hc) - максимальная сила, которую может выдавать антиграв, функция от высоты (ну или нет, как хотите)
Время дискретно, промежуток времени - dt
g - ускорение свободного падения

Случай нулевой: скорость направлена вверх. Тогда есть возможность, что включать антиграв вообще не нужно - проверим, достигнет ли глайдер нужной высоты:
v = v0 - a*t - равнозамедленное движение, нас интересует предельная высота, в ней v=0. Используем как v0 скорость глайдера v, ускорение свободного падения g как a и вычисляем t = v/g - получается время до остановки. Глайдер за это время пролетит vt/2 (частный случай пути при равноускоренном движении). Если это значение (v*(v/g)/2 = V^2/(2*g)) больше, чем hr - hc, то в этот момент времени включать антиграв не нужно.

Случай первый: вертикальной скорости недостаточно, чтобы достигнуть нужной высоты. Тогда её нужно увеличить. Насколько? Посчитаем, какая скорость нужна, чтобы долететь до нужной высоты:
Из формулы выше (s=v^2/(2*g)) получаем Vнеобх. = sqrt(2*g*s), где s = hr - hc. Нам нужно ускорить наш глайдер на Vнеобх. - Vглайдера. Обозначим это dV. Сила, которую нужно выдать за dt, чтобы получить нужную скорость определяется так:
f = m(dV/t) + Fтяж (!). А выдать такую силу антиграв, вероятно, не сможет, ведь у него есть fm(hc). Поэтому он должен выдать min(fm(hc), f).

Случай второй: скорость меньше или равна нулю. Всё ещё есть возможность, что включать антиграв пока не нужно - если тормозить ещё рано, как в примере с ракетой. Чтобы описать этот случай, нам обязательно нужен интеграл fm(hc), а считать интегралы я вообще не уметь. Поэтому для примера возьму fm(hc) = const.
Час уничтожая стол головой и покрывая лист бумаги чернилами, я пришёл к выводу, что Подобные задачи решали уже до меня.
картинко
Изображение
Нам надобно словить момент, когда h'(t) = magic'(t). Как это сделать я не имею понятия:
Очевидно, что h'(t) = v. А вот наколдовать magic'(t) проблематично:
magic(t) = hr + (b*t^2)/2 , где b = (fm-fтяж)/m, ускорение, создаваемое антигравом. Так вот, вышло не то, что надо. Ну, не совсем то.

Покурю ещё утром. Осталось описать несколько простых случаев... :sleep2:


 Сообщение Пт 4 дек 2015 23:27
Профиль  
Разработчик идей
Аватара пользователя
Сообщения: 4577
Откуда: Минск, Беларусь
Зарегистрирован: Ср 14 ноя 2007 19:00
Действительно как-то мудрёно что-то. Дай-ка я попробую.
Сначала спроецируем все вектора на направление действия антиграва (перпендикулярно поверхности под глайдером, не обязательно вертикаль). А потом, если пральна помню, то формула для расстояния (h) при равноускоренном движении такая:

h = h0 + v*dt + 0.5*a*(dt^2);

Поскольку мы знаем силы, а не ускорения, то перепишем в таком виде:

h = h0 + v*dt + 0.5*F*dt*dt/m;

Тут F - сумма всех сил в проекции на ось действия антиграва; h - прогнозируемая высота через промежуток времени dt.
Итак, мы хотим, чтобы через dt наша h стала равна hr, и для этого нам нужно найти результирующую силу F, которая нам нужна для этого:

F = (2*m/[dt*dt]) * (hr - h0 - v*dt);

Ну а поскольку вычисленная таким образом F является суммой сил притяжения планеты (Fg) и отталкивания антиграва (Fa), то нужная нам сила отталкивания равна:

Fa = (2*m/[dt*dt]) * (hr - h0 - v*dt) - Fg;

_________________
Сообщество креативных механоидов:
aim-fans.ru


 Сообщение Сб 5 дек 2015 0:45
Профиль  
МехоВед
Аватара пользователя
Сообщения: 7116
Зарегистрирован: Пн 7 ноя 2005 11:30
Шаман, если я верно понял твою идею, то у тебя выйдет, во-первых, что глайдер проскочит положение оптимальной высоты (ведь выдаваемая сила для корректировки высоты ограничена), т.е. будут колебания. Твой подход не предусматривает планирования на несколько dt вперед. Тут действительно лучше подход f-man'а, выходит. Во-вторых, если dt - элементарный интервал времени, то получается, что хотя бы v на каждом шаге свое. Значит, и сила на каждом шаге своя. Это нерационально, из общих соображений понятно, что сила должна быть максимальна и направлена в одну сторону на одном участке пути, и максимальна и направленна в другую сторону на втором участке (гашение движения, чтобы не допустить колебаний).

_________________
Тысячи часов поиска и все впустую.


 Сообщение Сб 5 дек 2015 1:18
Профиль  
Участник
Сообщения: 36
Зарегистрирован: Сб 7 фев 2015 0:22
К слову, мы можем сами задавать и силу тяготения, если надо. То есть отключаем встроенную симуляцию гравитации и управляем.
С формулами немного неудобно то, что у нас дискретное время. Как будто гравитация симулируется (почти) непрерывно, в то время как мы задаём свои воздействия дискретно. Отсюда получается, что движение неравноускоренное. И привычные формулы вроде x = x0 + v0*t + at^2/2 не работают.
В общем финальный вариант, как всё обсчитывать именно на UE4, я не выбрал. Это будет позднее.
Пока ограничимся лёгкой приблизительной симуляцией. Фокусироваться на этом не хочу.
Конечный вариант должен учитывать и заносы и прочие более сложные ситуации.

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

_________________
Polygon-4 (http://aim-fans.ru/index.php?showtopic=147)
Документация и инструкции по установке доступны по ссылке (docs, in russian):
https://www.dropbox.com/s/ipnakg5civ0xp0g/Polygon4_ru.pdf?dl=1


 Сообщение Сб 5 дек 2015 9:14
Профиль  
Механоид 1 поколения
Сообщения: 176
Зарегистрирован: Пн 23 фев 2015 8:49
Шаман писал(а):
Действительно как-то мудрёно что-то
Начальная модель сложная, но потом её можно значительно упростить. Скажем, если сделать "магическую параболу" комплексной - одним случаем описывать меньше. Потом при описании этого на ЯП всё станет ещё проще.
Шаман писал(а):
Сначала спроецируем все вектора на направление действия антиграва (перпендикулярно поверхности под глайдером, не обязательно вертикаль).
Я это оставил напоследок - балансировка в трёхмерном пространстве.
Вадим писал(а):
Это нерационально, из общих соображений понятно, что сила должна быть максимальна и направлена в одну сторону на одном участке пути, и максимальна и направленна в другую сторону на втором участке (гашение движения, чтобы не допустить колебаний).
Я это объяснил в примере с ракетой. Но антиграв, по-моему, притягивать глайдер к земле не может, поэтому надо пользоваться гравитацией.
К слову, мы можем сами задавать и силу тяготения, если надо. То есть отключаем встроенную симуляцию гравитации и управляем.
С формулами немного неудобно то, что у нас дискретное время. Как будто гравитация симулируется (почти) непрерывно, в то время как мы задаём свои воздействия дискретно. Отсюда получается, что движение неравноускоренное. И привычные формулы вроде x = x0 + v0*t + at^2/2 не работают.
Можно считать за dt время, которое проходит между расчётом силы антиграва и делать это, скажем, раз 50 в секунду. А трюки с отключением/изменением гравитации - это для оптимизации готового алгоритма, там есть над чем подумать.

...а ведь если считать в комплексных числах - описывать нужно только один случай...


 Сообщение Сб 5 дек 2015 12:29
Профиль  
Механоид 1 поколения
Сообщения: 176
Зарегистрирован: Пн 23 фев 2015 8:49
Силой вольфрама посчитал ещё немного.
hc - текущая, hr - необходимая высоты
v - скорость глайдера
g - ускорение свободного падения
fm - максимальная сила антиграва
fн - необходимая сила антиграва
a - ускорение, создаваемое антигравом, = fm / m (масса глайдера)
dT - размер дискретного промежутка времени

1) hc >= hr && v > 0
-> fн = 0. Глайдер летит вверх на высоте большей, чем необходимо - антиграв молчит

2) hc > hr && v <= 0
-> dh = dc - dr. Если dh > v^2/(2*a), то тормозить ещё рано (если начать тормозить в этот момент, то глайдер остановится выше необходимой точки)
-> Иначе считаем силу: fн = m*((sqrt(2*a*dh)-v)/dT) + fтяж.

3) hc <= hr && v <=0
Изображение
-> fн = m*((sqrt(2*g*dh)-v)/dT) + fтяж. Формула похожа на предыдущую, только ускорение свободного падения меняется ускорением антиграва.

4) hc < hr && v >= 0. Этот случай можно совместить с первым, вопрос оптимизации.
-> (v^2)/2g > dh, тогда fн = 0. Иначе fн = m*(sqrt(2*g*dh)-v/dT), это я объяснял в предыдущем сообщении, только там была ошибка.

И всё. Информация о том, с какими знаками брать часть величин осталась на бумаге, и извлечь её уже невозможно.

Что скажете?


 Сообщение Сб 5 дек 2015 14:10
Профиль  
МехоВед
Аватара пользователя
Сообщения: 7116
Зарегистрирован: Пн 7 ноя 2005 11:30
Я это объяснил в примере с ракетой. Но антиграв, по-моему, притягивать глайдер к земле не может, поэтому надо пользоваться гравитацией.
Я понимаю! Но силы-то разные. На участке "разгона" действует максимальная выдаваемая антигравом сила отталкивания (и да - она будет меняться, т.к. глайдер начнет удаляться от земли). Участок "разгона" - короткий. Далее идет участок "торможения", длинный. Если антиграв притягивать не умеет, то на этом участке максимальная сила торможения возникает при отключении антиграва. Эта сила будет постоянна на этот раз и равна силе тяжести.
[Поясняю, для определенности, я говорю про ситуацию, когда глайдер ниже положения равновесия. Когда он выше, то все наоборот.]
Но я бы таки не исключал возможность притяжения ангтигравом при сильном удалении...

dh = dc - dr
Наверно, "hc - hr".

Что скажете?
Переделывать всем будет лень, а на глаз нельзя сказать, правильно ли посчитано или нет. Ты же на матлабе, или где там, прогал нам кольцо вокруг гравитирующего центра, так запрогай аналогичную демонстрацию с глайдером в двумерном пространстве (вид сбоку). Там и посмотрим. Ты в своих формулах разбираешься, да и работа похожа на уже проделанную, тебе будет просто.

Однозначно, что твой алгоритм не устранит малые колебания. Время дискретно, и может оказаться так, что прохождение глайдером положения равновесия придется на момент времени между узлами сетки. Я не заметил, чтобы это было учтено. Поэтому может понадобиться на последнем или нескольких последних dT изменить силу антиграва (это в случае торможения антигравом - глайдер приближается к положению равновесия сверху). Если тормозит сила тяжести (глайдер приближается к заданной отметке снизу), то глайдер проскочит положение равновесия, а потом начнет подходить к нему сверху. Тут срабатывает описанный ранее случай и аглоритм позволит убрать колебания (в целом, понадобится чуть больше времени). Как-то так.
Но я не знаю, может, эффекта от того, что положение равновесия достигается между узлами сетки, и не будет заметно, можно забить. dT ведь мало.

_________________
Тысячи часов поиска и все впустую.


 Сообщение Сб 5 дек 2015 14:29
Профиль  
Механоид 1 поколения
Сообщения: 176
Зарегистрирован: Пн 23 фев 2015 8:49
Вадим писал(а):
Однозначно, что твой алгоритм не устранит малые колебания
Можно ещё поправок некоторых добавить... Будет время - наваяю модельку. А то пара дней до сдачи курсача, а я ещё не.


 Сообщение Сб 5 дек 2015 14:45
Профиль  
МехоВед
Аватара пользователя
Сообщения: 7116
Зарегистрирован: Пн 7 ноя 2005 11:30
Да не, фигня, это вообще какое-то дрожание будет разве что. Нет смысла с ним возиться. Я слишком заморочился)

_________________
Тысячи часов поиска и все впустую.


 Сообщение Сб 5 дек 2015 14:52
Профиль  
Участник
Сообщения: 36
Зарегистрирован: Сб 7 фев 2015 0:22
Хватит простого графика в каком-нибудь маткаде или том же вольфраме.
Например, я пробовал: http://i.imgur.com/f9mlaFg.png Но формулы с ошибками.

_________________
Polygon-4 (http://aim-fans.ru/index.php?showtopic=147)
Документация и инструкции по установке доступны по ссылке (docs, in russian):
https://www.dropbox.com/s/ipnakg5civ0xp0g/Polygon4_ru.pdf?dl=1


 Сообщение Сб 5 дек 2015 17:01
Профиль  
Механоид 1 поколения
Сообщения: 176
Зарегистрирован: Пн 23 фев 2015 8:49
lzwdgc,
картинко!
ИзображениеИзображение
График h(t). Можно наблюдать и "магическую параболу", и падаболу. Чем сто раз увидеть, лучше потыкать

апыды: да, разумеется в формулах косяки, но в программе я вроде исправил.


 Сообщение Сб 5 дек 2015 17:46
Профиль  
Участник
Сообщения: 36
Зарегистрирован: Сб 7 фев 2015 0:22
Файл не доступен, просит вход в гугл.
Было бы удобней в какой-нибудь математической программе сделать, чтобы был доступ к формулам, можно было проверить, поменять что-то.
В виде программы меня не особо устраивает.

_________________
Polygon-4 (http://aim-fans.ru/index.php?showtopic=147)
Документация и инструкции по установке доступны по ссылке (docs, in russian):
https://www.dropbox.com/s/ipnakg5civ0xp0g/Polygon4_ru.pdf?dl=1


 Сообщение Сб 5 дек 2015 18:03
Профиль  
Механоид 1 поколения
Сообщения: 176
Зарегистрирован: Пн 23 фев 2015 8:49
lzwdgc писал(а):
Файл не доступен, просит вход в гугл.
Попробуем ещё раз
lzwdgc писал(а):
Было бы удобней в какой-нибудь математической программе сделать, чтобы был доступ к формулам, можно было проверить, поменять что-то.
Там исходник на паскале (delphi '10), можно формулы посмотреть и переписать. Математические программы не умею :sad:


 Сообщение Сб 5 дек 2015 22:02
Профиль  
МехоВед
Аватара пользователя
Сообщения: 7116
Зарегистрирован: Пн 7 ноя 2005 11:30
картинко!
О, круто! Все выглядит так, как должно, да!
А можно теперь добавить туда переменную от времени, рандомную целевую высоту (флуктуации в районе 5 - 10 единиц высоты)? Это будет соответствовать тому, что глайдер летит над кочками. Посмотрим, как высота от времени будет вести себя в этом случае. Будет ли отклонение уменьшаться или алгоритм нужно совершенствовать.
Если что, не пугайся, расчет по формулам останется тем же, только на каждом dt его нужно будет переделывать и прикладывать новую силу.

_________________
Тысячи часов поиска и все впустую.


 Сообщение Вс 6 дек 2015 13:49
Профиль  
Механоид 1 поколения
Сообщения: 176
Зарегистрирован: Пн 23 фев 2015 8:49
Вадим писал(а):
флуктуации в районе 5 - 10 единиц высоты
Высоту в метрах считаю. Это не кочки будут, а дороги в Японии после землетрясения.
картинко!
Изображение
Взял перепады до 20 см/мс. По шкале времени проходит 20 секунд.


 Сообщение Вс 6 дек 2015 20:09
Профиль  
МехоВед
Аватара пользователя
Сообщения: 7116
Зарегистрирован: Пн 7 ноя 2005 11:30
Смотрите, как интересно выходит. Антиграв "сглаживает" рельеф, что очень соответствует игровой реальности, ящитаю.

Я так понял, максимальная сила отталкивания не зависит от высоты? Но ведь мы знаем, что чем дальше от поверхности, тем слабее отталкивает, это нужно учесть. Можешь сделать?

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

_________________
Тысячи часов поиска и все впустую.


 Сообщение Вс 6 дек 2015 21:02
Профиль  
Механоид 1 поколения
Сообщения: 176
Зарегистрирован: Пн 23 фев 2015 8:49
Вадим писал(а):
Я так понял, максимальная сила отталкивания не зависит от высоты? Но ведь мы знаем, что чем дальше от поверхности, тем слабее отталкивает, это нужно учесть. Можешь сделать?

Судя по выставленным параметрам и симметрии холмиков, которые рисует зависимость высоты от времени, ситуация аналогична вот чему: когда нужно прикладывать силу вниз, то это делает гравитация, а когда нужна сила вверх - гравитация как бы меняет полярность, и почти такая же сила начинает действовать вверх. Это не случай антиграва.
Если нужно учитывать изменяющуюся силу, которую будет выдавать антиграв, то нужно знать функцию f(h) и её интеграл.
Антошка писал(а):
Это мы не проходили, это нам не задавали!
А про принцип работы антиграва я вообще не понял. В моём понимании он просто отталкивает от центра масс с силой f(h).


 Сообщение Пн 7 дек 2015 15:14
Профиль  
Участник
Сообщения: 36
Зарегистрирован: Сб 7 фев 2015 0:22
Мини-опрос: кто-то ещё использует 32-битную ОС? Или можно заниматься только 64-битной версией?

_________________
Polygon-4 (http://aim-fans.ru/index.php?showtopic=147)
Документация и инструкции по установке доступны по ссылке (docs, in russian):
https://www.dropbox.com/s/ipnakg5civ0xp0g/Polygon4_ru.pdf?dl=1


 Сообщение Пн 7 дек 2015 16:31
Профиль  
Механоид 1 поколения
Аватара пользователя
Сообщения: 119
Откуда: Казахстан, Астана
Зарегистрирован: Пн 11 май 2009 20:02
Уже как более 5 лет использую 64-битную ОС.

_________________
Мультиигровое сообщество ТОР - http://www.tor-gaming.ru
http://www.mechhistory.zbord.ru
http://meho.clan.su/


 Сообщение Пн 7 дек 2015 17:09
Профиль  
Техногенный
Сообщения: 8299
Зарегистрирован: Пт 29 дек 2006 17:31
А про принцип работы антиграва я вообще не понял. В моём понимании он просто отталкивает от центра масс с силой f(h).

Думаю, что это приведет к ненормальному поведению глайдера на поворотах. В соседней теме я написал про тензор инерции. Это, конечно, усложняет реализацию - но и делает поведения глайдера значительно более похожим на поведение тела, а не материальной точки.

_________________
thrusting squares through circles


 Сообщение Пн 7 дек 2015 18:55
Профиль  
МехоВед
Аватара пользователя
Сообщения: 7116
Зарегистрирован: Пн 7 ноя 2005 11:30
Если нужно учитывать изменяющуюся силу, которую будет выдавать антиграв, то нужно знать функцию f(h) и её интеграл.
Ну попробуй что-то простое, 1/h^3. Интеграл тоже простой, -1/{2h^2}. h - расстояние до поверхности.

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

А про принцип работы антиграва я вообще не понял. В моём понимании он просто отталкивает от центра масс с силой f(h).
Ну да, в М так и есть. Только от чего отталкивает - непонятно. От центра, от поверхности, от объема...

Мини-опрос: кто-то ещё использует 32-битную ОС? Или можно заниматься только 64-битной версией?
У меня 64.

_________________
Тысячи часов поиска и все впустую.


Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 62 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB