Рассчитать вращение между двумя Vector2s вокруг оси - PullRequest
1 голос
/ 09 января 2011

alt text Привет всем.

После хорошего долгого воскресного гугла мне придется повесить голову от стыда и задать вопрос ...

То, что у меня есть, этоpivot vector2, "Previous" vector2 и "Current" vector2.

Я хотел бы иметь возможность вычислять вращение в радианах между ними.Небольшое осложнение заключается в том, что стержень может перемещаться между предыдущим и текущим, но плохо рассматривает смещение как отдельную проблему, если у вас нет времени перенести это в сгиб.

Чтобы уточнить, объект, который имеет два вектора, шарнир и основание ... шарнир, расположенный в центре и основание внизу, вращается вокруг внешнего шарнира.Мне нужно отработать вращение самого объекта вокруг его центра, используя два упомянутых вектора.

Большое спасибо всем, кто может помочь.

Предпосылки к проблеме

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

1 Ответ

1 голос
/ 09 января 2011

Возьмите перекрестное произведение разностей между векторами и осью:

Vector2 a = Pivot - Previous, b = Current - pivot;
double angle = a.X * b.Y - a.Y * b.X;
...