Отправка ориентации матрицы ... Преобразование в градусы? Радиан? Что-то без десятичной? - PullRequest
3 голосов
/ 15 апреля 2011

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

Есть ли математический способ проверить вращение моей модели, преобразовать его в значение в градусах по умолчанию и затем отправить это значение в 1-360 градусов на сервер, а не пытаться отправить 16 значений с плавающей запятой всей структуры матрицы

Отправка 16 поплавков дает мне до 120 дополнительных файлов с общей памятью для всех игроков. Не совсем лучшая практика. Любое понимание?

Ответы [ 2 ]

2 голосов
/ 15 апреля 2011

Возможно ли преобразовать матрицу вращения в кватернион? Это сократило бы от отправки всей матрицы до отправки одного вектора и поворота вокруг этого вектора.

XNA имеет кватернионную структуру (http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.quaternion.aspx), которая содержит метод: Quaternion.CreateFromRotationMatrix, который принимает матрицу вращения.

Это сгенерирует кватернион ijk с компонентом W в качестве тета вращения вокруг этой оси.

1 голос
/ 15 апреля 2011

Часть вращения 3 на 3 может быть представлена ​​как 3 угла Эйлера.Но тогда вы должны сделать довольно много триггеров, чтобы конвертировать туда и обратно.Может быть, ваша проблема проще, поскольку вы намекаете, что у вас есть только 1 степень свободы.

В любом случае, почему бы не отправить 16 поплавков?

...