Определение необходимых векторов - PullRequest
0 голосов
/ 24 апреля 2011

У меня есть объект, который выровнен по направлению, в котором я хочу, чтобы силы, действующие на ось его тела, перемещали его в направлении оси + z моей камеры. Поскольку тело выровнено там, где все его локальные оси выровнены с осью камеры, просто добавив силу к оси + z тела, оно перемещается в нужном мне направлении.

Если я поверну тело, его оси больше не будут совмещены с камерой. Но я все еще хочу, чтобы тело двигалось вперед в направлении + z камеры. Как определить, как рассчитать силы для локальной повернутой оси тела (X, Y, Z), чтобы заставить его двигаться в направлении + z камеры?

Итак, у меня есть тело, которое вращается (30,135, -36) по осям X, Y и Z соответственно. И я хочу рассчитать силы на каждой оси, необходимые для перемещения тела в направлении + z камеры. Система координат находится слева: X - справа, Y - вверху, Z - вперед.

Любая помощь или понимание очень ценится.

1 Ответ

0 голосов
/ 24 апреля 2011

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

В качестве альтернативы, если вы не используете матрицы, то это должно также работать:

Начните с вектора силы (0,0, z), затем вы можете применить отрицательный каждого поворота в обратном порядке.Если я правильно понимаю ваш вопрос, вы повернули на +30 градусов вокруг X, затем на +135 градусов вокруг Y и, наконец, на -36 градусов вокруг Z. Итак, чтобы рассчитать необходимый вектор силы, начните с вектора (0,0,z), поверните его на +36 градусов вокруг оси Z, затем на -135 градусов вокруг оси Y и, наконец, на -30 градусов вокруг оси X. Это должно дать вам вектор силы относительно локальной системы координат объекта.

...