Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Логические группы двигателей | страница 1
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 1 из 1
 
Поиск в этой теме:
Канал Orbiter: «Логические группы двигателей»
Tiger
 65 EGP


Репутация: 10
Сообщения: 140
Откуда: Россия, Барнаул
Зарегистрирован: 13.12.2005
Расскажите, пожалуйста, какой практический смысл имеет объединение двигателей в логические группы, в частности, двигателей ориентации? Это нужно только для стандартных навигационных режимов?

Вот, допустим, есть некий крафт с трехлучевой симметрией в плоскости миделя, и у него три группы двигателей ориентации. С ним как быть? Может, движки в группы не объединять, а перегрузить методы, реализующие NavComp Modes, чтобы они работали по-своему?
_________________
Siberian Tiger
    Добавлено: 07:49 14-12-2005   
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
Можно и перезагрузить,тем более, если тяга ориентаторов "нестандартная" - очень большая или очень маленькая - дефолтные моды работают с ними очень плохо. Но группы организовывать все равно весьма желательно, поскольку есть МФД, которые, считывают эти группы и при их отсутствии следует вывал в форточки.

На счет симметрии не понял. Если в смысле вращать корабль вокруг оси не сопадающей с продольными, вокруг которых вращают отдельные "стандартные группы", дык это сводится к мат задаче.
Вообще о птичках любая ориентация на один определенный объект (плоскость,вектор, точку)сводится к вращению вокруг !двух! осей - третья лишняя (например в прогрейд - банк/крен не нужен). Если только нужно сориентироватся относительно двух требуется третья ось (прогрейд + плоскость горизонта - стандартный орбитеровский прогрейд). Ориентация по двум осям не требует взаимной координации управления по осям - достаточно выдавать импульсы тяги по величине рассогласования по углу. Для трехосевой если моменты по осям примерно одинаковы то возможно рассогласованное управление (при уловии что характерное время исправления ошибки на два порядка больше ее наростания), что и сделано в Орбитере. Если моменты разные (реальный корабль), и/или характерное время не позволяет, то приходится использовать математику, например, квантернионы. Тогда сразу и точно, проще - сперва по двум, потом по третьей - не сразу и точночность много хоже.
Мой совет - использовать стандартные группы, а математику, по потребностям, приделывать свою.
    Добавлено: 09:42 14-12-2005   
Tiger
 65 EGP


Репутация: 10
Сообщения: 140
Откуда: Россия, Барнаул
Зарегистрирован: 13.12.2005
Bloodest :
На счет симметрии не понял. Если в смысле вращать корабль вокруг оси не сопадающей с продольными, вокруг которых вращают отдельные "стандартные группы", дык это сводится к мат задаче.
[...]
Если моменты разные (реальный корабль), и/или характерное время не позволяет, то приходится использовать математику, например, квантернионы.


Смысл в том, что оси как раз стандартные, а вот расположение движков нестандартное, ну типа как тут (пардон за качество картинки):



Умозрительно очевидно, что такая штука может и крутиться, и линейно перещаться по стандартным осям (а еще эффективнее - по нестандатным). Но вот какие движки в какие логические группы тут объединять, непонятно, либо просто сделать это чисто формально.

А вот про квантернионы и про ориентацию корабля хотелось бы почитать. Не подкинете ссылочку (просьба в Ленинку не отсылать)? Хы...
_________________
Siberian Tiger
    Добавлено: 15:39 14-12-2005   
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
Tiger :

Смысл в том, что оси как раз стандартные, а вот расположение движков нестандартное, ну типа как тут (пардон за качество картинки):



Умозрительно очевидно, что такая штука может и крутиться, и линейно перещаться по стандартным осям (а еще эффективнее - по нестандатным). Но вот какие движки в какие логические группы тут объединять, непонятно, либо просто сделать это чисто формально.


Ну дык ни каких проблем
Обозначим по сечениям группы 1 и 2 в сечении А-Б-В в группе 1-2-3
верхний ближний будет 1А1
Смотрим скажем вокруг оси икс - тангаж - вверх
в ближнем сечении 1А1 - полная тяга, во втором сечении
2Б1(cos60),2Б2(cos30) и 2В3(cos30),2В1(cos60) итого 1/(2*(0,5+0,866))=0,366 тяги
можно проще только 2Б1 и 2В1 полной тягой.
И тд. проверка предельно проста - на орбите закрутился и нажал киллрот если остановился все посчитано правильно.

Tiger :

А вот про квантернионы и про ориентацию корабля хотелось бы почитать. Не подкинете ссылочку (просьба в Ленинку не отсылать)? Хы...


Что такое и с чем едят
http://www.gamedev.ru/coding/10805.shtml
(только он счас чтото висит)

А в SDK орбитера в исходниках Dragonfly есть библиотека для операций с квантернионами (хотя в самом Dragonfly они не используются ни как).
Вообще в данном применении идея очень проста
Имеются отдельные рассогласования по трем осям формируем из них три квантерниона Qx, Qy, Qz
Находим результирующий Q= Qx*Qy*Qz
Раскладываем результирующий опять на оси.
И о чудо полученные углы вовсе иные чем рассогласования - результирующий квантернион - есть кратчайший путь.
    Добавлено: 17:37 14-12-2005   
olenellus
 65 EGP


Репутация: 12
Сообщения: 86
Откуда: Земля
Зарегистрирован: 12.12.2005
Да, только не квантернионы, а кватернионы — от слова "четыре", так как содержать, как бы, четыре части (координаты, если хотите).

Ссылка хорошая, только что-то они там в начала перепутали скалярное и векторное произведения (но это ясно видно, так что никаких проблем, тем более потом в коде всё прописано правильно, вроде бы). Ну и всякие рассуждения насчёт 4-мерных поворотов не выдерживает критики ((: Независимых-то там всё равно три параметра (они же все должны быть нормированы, чтобы описывать реальный поворот).
    Добавлено: 00:54 15-12-2005   
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
olenellus :
Да, только не квантернионы, а кватернионы — от слова "четыре", так как содержать, как бы, четыре части (координаты, если хотите).


Сапасибо за поправку. В этой области математики я не очень силен и посему позвольте несколько вопросов и коментариев.

olenellus :

Ссылка хорошая, только что-то они там в начала перепутали скалярное и векторное произведения (1) (но это ясно видно, так что никаких проблем, тем более потом в коде всё прописано правильно, вроде бы (2)).


1.Это на счет фразы
"где x - скалярное произведение, а · - векторное."?
2. Произведение кватернионов
В статье
///////////////////////////////////////////
void MulQuaternions(Quaternion *res,
const Quaternion *q1, const Quaternion *q2)
{
float A, B, C, D, E, F, G, H;

A = (q1->w + q1->x) * (q2->w + q2->x);
B = (q1->z - q1->y) * (q2->y - q2->z);
C = (q1->x - q1->w) * (q2->y + q2->z);
D = (q1->y + q1->z) * (q2->x - q2->w);
E = (q1->x + q1->z) * (q2->x + q2->y);
F = (q1->x - q1->z) * (q2->x - q2->y);
G = (q1->w + q1->y) * (q2->w - q2->z);
H = (q1->w - q1->y) * (q2->w + q2->z);

res->w = B + (-E - F + G + H) * 0.5;
res->x = A - ( E + F + G + H) * 0.5;
res->y =-C + ( E - F + G - H) * 0.5;
res->z =-D + ( E - F - G + H) * 0.5;
}
/////////////////////////////////////////////
В примере SDK Orbiter
/////////////////////////////////////////////

quaternion quaternion::operator * (quaternion q2)
{ quaternion q;

q.w=w*q2.w - x*q2.x - y*q2.y - z*q2.z;
q.x=w*q2.x + x*q2.w + y*q2.z - z*q2.y;
q.y=w*q2.y + y*q2.w + z*q2.x - x*q2.z;
q.z=w*q2.z + z*q2.w + x*q2.y - y*q2.x;

return q;

};
//////////////////////////////////////////////
Разница в скорострельности налицо...

olenellus :

Ну и всякие рассуждения насчёт 4-мерных поворотов не выдерживает критики ((: Независимых-то там всё равно три параметра (они же все должны быть нормированы, чтобы описывать реальный поворот).


Это на счет трактовки
"Кватернионы расширяют концепцию вращения в трехмерном пространстве до вращения в четырехмерном..."?

Я думаю это чисто филосовское отвлечение. Хотя думается что правильнее (?) сказать, что
Кватернионы расширяют концепцию вращения в трехмерном пространстве (тригонометрические преобразования) до отображения этих преобразований в четырехмерное пространство сводя тригонометрические преобразования трехмерного к сопряженным им арифметическим четырехмерного.
    Добавлено: 08:58 15-12-2005   
Tiger
 65 EGP


Репутация: 10
Сообщения: 140
Откуда: Россия, Барнаул
Зарегистрирован: 13.12.2005
Спасибо за объяснения, буду экспериментировать.
_________________
Siberian Tiger
    Добавлено: 10:57 16-12-2005   
Канал Orbiter: «Логические группы двигателей»
 
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Да я уж и не знаю, о чем думать... и думать ли... и есть ли у меня, чем думать... и думаю ли я вообще... (растерялся ImperialHunter)

  » Логические группы двигателей | страница 1
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18