Перемещение сферы так, что ее ось Z направлена - PullRequest
0 голосов
/ 12 июня 2011

Во-первых - Z в этой задаче.

Контекст: 2D-игра сверху вниз с использованием 3D-объектов.

Игрок и все враги - это сферы, которые могут двигаться в любом направлении на 2D-плоскости (XY). Они вращаются так, как вы ожидаете, когда они двигаются. Их скорость - это трехмерный вектор в мировом пространстве, и я так на них влияю. Они не могут вращаться на месте.

Мне нужно найти формулу, чтобы определить направление, в котором должна двигаться одна из этих сфер, чтобы их ось Z (или любая ось действительно) указывала указанное направление в мировом пространстве.

Некоторые примеры могут быть в порядке:

X
|
Z--Y

Это просто: локальные оси сфер соответствуют миру, поэтому, если я хочу, чтобы ось Z сфер указывала вдоль 1,0,0, то я мог бы перемещать сферу вдоль 1,0,0.

То, что доставляет мне неприятности, таково:

X
|
Y--Z

Теперь я знаю, что для того, чтобы ось Z указывала вдоль 1,0,0 в мировом пространстве, я должен сказать сфере двигаться вдоль 1,1,0, но я не знаю / не понимаю, ПОЧЕМУ это случай.

Я программирую в течение десяти лет, но я абсолютно отстой в векторной математике, поэтому предположим, что я идиот, когда пытаюсь объяснить:)

1 Ответ

0 голосов
/ 12 июня 2011

Хорошо, я думаю, я понимаю, что вы имеете в виду.

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

Очевидный способ - двигаться "напрямую", и если вы сделаете это несколько раз, вы заметите, что ось , вокруг которой вы вращаете шарик , перпендикулярна оси, которую вы пытаетесь переместить.Это как если бы точка была на экваторе, а вы вращались вокруг оси Север-Юг.Каждый раз, когда вы выбираете новое направление, это направление и ваша отмеченная ось определяют новый экватор.Также обратите внимание (это может быть сложно), что вы можете нарисовать большой круг (это круг, который идет прямо вокруг сферы и делит ее на равные половины), который проходит между отметкой и пунктом назначения, так что они находятся на противоположных полушариях,как зеркальные изображения. Полюса всегда находятся на этом круге.

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

Теперь положите мяч на пол и катите его - не надопока не беспокоюсь о отметке.Обратите внимание, что он вращается вокруг горизонтальной оси, полюсов, и касается пола по кругу, экватору (который теперь вертикальный).Полюса должны находиться где-то на «талии» сферы, на полпути от пола ( не называйте это экватором).Если вы выберете полюса на этом круге, вы выберете направление вращения.

Теперь посмотрите на отметки и нарисуйте большой круг, который их разделяет.Поляки должны быть на этом круге.Посмотрите, где этот круг пересекает «талию»;вот где должны быть твои шесты.

Скажи мне, если это имеет смысл, и мы можем вставить математику.

...