![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Физика самолета [Delphi, Windows]
Pa5ha © (2006-10-26 22:50:00)Кстати, курсовую взял работу. Авиасимулятор. Так что теперь придется сделать палюбому -) Мысли пока собираю в кучу. Итак.
Сразу столкнулся с проблемой как перемещать самолет в пространстве. Т.е. надо как-то это дело интегрировать что ли, чтоб положение не зависило от фпс-а. Не в плане синхронизации а в плане чтоб при итерации саломёт оказывался на траектории, а не в позиции, близкой к траектории настолько, насколько высок фпс. Т.е. есть результирующая сила и момент. Как их применить?
Вопрос номер два. Аккумулятор сил. Как получить результирующую. Т.е. допустим получаем силы и моменты по осям. С силами понятно, а вот с вращением нет. Я думаю, что надо расчитать ось поворота и угол поворота вокруг этой оси.
Номер три. Собственно самолетная физика. Есть идея представить самолет в виде плоскостей. Крылья - профилированные плоскости. Интересует есть ли поляры на 360 градусов, как их использовать при полете боком и т.п.
Ну и представление данных ибо фича симулятора будет - самолет, разваливающийся в воздухе. Отработка экстренных ситуаций -)
Потом, када высплюсь допишу чо не вспомнил.
И ещё: приветствуются ссылки на конкретные примеры, просто малоли кто видел где-нить -) не приветствуются ссылки на гугл, рамблер, яндекс и яху.
Pa5ha (2006-11-30 17:10:00) [1]Fosgen, жизнь вообще сложная штука ;)
Думкин, я сейчас над этим работаю -) В смысле над кашей в голове -)
Думкин (2006-11-30 14:22:00) [2]
> Pa5ha © (29.11.06 20:01) [44]
Первообразная у кусочно=непрерывной функции есть всегда. Другое дело, что вы хотите ее получить в конечном виде через запись в виде композиции элементарных и прочих "простых". Но и то что вы описываете - то же - интегрирование. я все-таки настаиваю - у вас проблемы именно в терминологии. Хотя возможно не только.
Почитайте о численном интегрировании, решении дифуров и т.д. Иначе свихнетесь. :) По моему, тут каша в голове а не сложность.
Fosgen (2006-11-30 12:17:00) [3]Ну дык кого предупреждали о сложностях создания авиасимуляторов?
Pa5ha (2006-11-29 20:01:00) [4]Да у меня не с терминологией проблемы а с дифурами -) хз как сдавать буду. Рублями наверно -) А что если... График ведь не функцией задан. Следовательно можно считать с точностью графика. Т.е. на примере криволинейной трапеции. От функции ищется первообразная, а если функции нету, то проходим по всем табличным значениям ну и считаем площадь от них -)
Блин, не получается объяснить чота -)
Только тогда горы вычислений получатся. Надо будет считать от текущего значения до ближайшего значения в таблице от всех объектов модели, а их может быть полсотни -)
Короче, сделаю как было попроще -)
Щас попробую ещё исходники одного хорошего симулятора поклянчить -) RCFSim наз-ся.
Думкин (2006-11-29 05:40:00) [5]> Pa5ha ©
Ясно. У тебя просто проблемы с терминологией. То что ты описал - численное интегрирование, можно и через интеграл Римана идти.
тебе же хочется найти первообразную выраженую в элементарных или других легко вычислимых функциях, а это не всегда возможно.
У тебя есть дифференциальное уравнение. Тебе надо численно его решать. так? На эту тему масса литературы.
Vga (2006-11-29 00:57:00) [6]> [41] Pa5ha © (28.11.06 23:52)
Однако ж интегрируют именно так. Интегрируй с фиксированным шагом, вот и все. Виденные мной физдвижки так и делают. А вообще в виденных мной движках обычно обновление состояния игры происходит с фиксированной частотой (например, 50 обновлений в секунду), а отрисовка - так часто, как только возможно.
Pa5ha (2006-11-28 23:52:00) [7]Но блин, это неправильное интегрирование. При фпс-е несколько сотен или тысяч сойдет, но несколько десятков как мне каца таки мало. Тем более возможны лаги и следовательно лаги в физике.
Не, Ты наверно мысль не уловил. Первая формула дает приближенный результат из-за того, что скорость меняется рывками. Во втором случае формула дает идеальные значения при любой точности -)
Ну площадь криволинейной трапеции в школе же считали наверно? Вот это то-же. Чем меньше dt, тем круче. Но трабла в том, что там функция графика известна, а у меня значения берутся из таблицы и интерполируются.
Vga (2006-11-28 23:35:00) [8]> Допустим есть скорость и ускорение V и a. x - координата
> по одной оси.
> Можно каждую итерацию (ну каждый кадр короче) делать V:=V+A*frametime;
> x:=x+v*frametime;
> А можно x:=x+Vt+at^2/2;
Насколько я знаю, в программировании такой процесс как раз интегрированием и называется.
Pa5ha (2006-11-28 23:25:00) [9]Понятие проинтегрировать.
Допустим есть скорость и ускорение V и a. x - координата по одной оси.
Можно каждую итерацию (ну каждый кадр короче) делать V:=V+A*frametime;x:=x+v*frametime;
А можно x:=x+Vt+at^2/2;
Второй вариант точнее считает. И при большом времени отрисовки кадра и сверхнизком фпс артефактов в физике не будет.
А итерационно - каждый кадр изменять все значения т.е. тот, который первый в моем примере. Т.е. какая-то ошибка есть и постоянно накапливается. Ясен перец, все хорошо, когда у нас есть формулы, по которым расчитывается сила (а значит и ускорение), их можно проинтегрировать (т.е. привести в вид, в котором они во втором примере, это я, как понимаю интегралы). Другое дело, когда значения силы берутся из таблицы (и ускорения соответственно), причем за один кадр (итерацию) эта величина изменяется от f[x1] до f[x2]. Как ту интеграл взять? написать формулу?
Ну это все имхо человека не знакомого с дифурами -)
Думкин (2006-11-28 13:44:00) [10]
> Pa5ha © (28.11.06 12:06) [37]
Что ты вкладываешь в понятие "проинтегрировать" и "итерационно"?
Pa5ha (2006-11-28 12:06:00) [11]ну дак смотрим -) с перемещениями с ускорением все понятно, ну прочую лабуду по формуле проинтегрироват тоже как два пальца. Но проблема вот в чом. Допустим, на стабилизатор действует сила вверх/вниз. Тангаж меняется, меняется угол атаки, меняется подъемная сила. Я хз как проинтегрировать меняющиеся табличный значения во времени. Придется итерационно -)
NailMan (2006-11-27 17:57:00) [12]Вычисляется дельта между кадрами(менье или равно единице) и эта дельтя является коэффициентом на который множат вычисленное значение параметра(перемещения, угла etc).
---
P.L.U.R. and WBR, NailMan aka 2:5020/3337.13
Pa5ha (2006-11-23 21:18:00) [13]Спорил с преподом по дифурам. Друг друга не поняли ибо я дифров не знаю, хоть и изучаю -) Но ещё он не втыкает в аэродинамику и физику. Короче.
Как в симуляторах да и в играх в целом расчитывается каждый кадр перемещение объекта? В частности в моем случае при вращении объекта сила изменяется по значениям из таблица (значение силы берется для угла). Я так понимаю, проинтегрировать это не получится. Не так ли?
Pa5ha (2006-11-14 14:13:00) [14]http://forum.rcdesign.ru/index.php?act=Attach&type=post&id=52403
http://forum.rcdesign.ru/index.php?act=Attach&type=post&id=52404
тут два скрина. Всего чуть боле 100 кб. Все баги с графикой изничтожу потом, када муза придет. Ща все это дело надо оживить.
Pa5ha (2006-11-05 16:08:00) [15]визуальная т.к. это симулятор, но чем точнее физика, тем лучше.
Fosgen (2006-11-05 14:02:00) [16]Физические фейки берутся из упрощения расчетов. И не всегда это - подстановка таблиц. Знаешь ли в игре ВСЕ силы действующие на объект - виртуальны и как следствие - заменяемы\управляемы\имитируемы...
Я таки не понял, тебе чего надо - точные аэродинамические данные в любой момент симуляции полета, или визуальная симуляция?
Pa5ha (2006-11-03 18:09:00) [17]Физические фейки кстати тоже не с потолка беруца, а являюца результатами тех же продувок и в том же ил-2 наверно тоже считаются по ним, ведь каждый самолет не один раз дули.
Pa5ha (2006-11-01 09:29:00) [18]Кстати, лобовое сопротивление двух объектов разных форм, но с одинаковой площадью в поперечнике не одинаково, ибо зачем делают машины обтекаемой формы (к российскому автопрому не относится)? -)
Pa5ha (2006-11-01 09:27:00) [19]Точность есть реалистичное поведение, а мне нада именно реалистичное -)
Ну пусть точность таблиц будет не один градус. Во всяком случае там не такие крутые графики, чтоб их нельзя было чуть интерполировать м\у значениями. Да и 2*360*4 байта - не так много места для таблицы профиля.
Коэффициенты лобового сопротивления надо наверно будет брать не только по осям. Т.е. при движении в +Х и в -Х, +У и -У ну и т.д. и далее крутица между ними.
При движении боком надо будет сообразить продувку профиля поперек напр. движения. Тоже пока не знаю чо как.
http://www.u-dynamics.com/aerosim/aerosim_application.htm- кажися мат модель какого-то симулятора, но весит 7 метров. При моих скоростях качать придеца долга ибо 1.6 кб -) а пара только полтора часа.
Fosgen (2006-11-01 08:18:00) [20]"Поляра - результат продувки для каждого угла."
Может я конечно и неточно понял, но вопросы все равно остаются.
Для каждого угла - с точностью углов до какого знака? Или у тебя дискретизация значений будет в один градус? А не забибикаешься хранить в таблице 360 (или больше) значений, а потом их оттуда выбирать? :)
"Значения лобового сопротивления крыла определенного профиля берется из таблицы, так же, как и подъемная сила."
Да я с этим и не спорю, только лобовое сопротивление для какого направления потока? Если вдоль профиля- одно, а если перпендикулярно к плоскости - лобовое сопротивление - совсем другое. И опять таблицы...
Мне кажется что одними таблицами с константными значениями дело не решить - слишком много потребуется таблиц и слишком жесткая получится система. Всех ситуаций не учтешь. А такое впечатление что тебе свой симулятор проще будет в Excel "написать". :))))
"Например для капота модели или для фюзеляжа будет просто коэффициент лобового сопротиввления работать"
Т.е. я так понимаю, если у тебя самолет развернет бортом к потоку - коэффициент останется таким же как если бы он летел точно носом к потоку? Не лучше (и точнее) ли увеличивать коэффициент пропорционально площади проекции поверхностей, не параллельных потоку?
То же самое делать с крылом. Не совсем честно но всяко более реалистично чем использовать один и тот же константный коэффициент?
Это может не так круто как продувка, но мне кажется тебе не стоит зацикливаться на точных значениях продувки и т.п. - это опять таблицы, а в таблицах все-таки весьма дискретные значения... Пользуй физические фейки, которые может не дадут той точности, но дадут визуально реалистичное поведение.