Найти положение точки в трехмерном пространстве, движущейся вокруг вектора с равномерным круговым движением - PullRequest
7 голосов
/ 06 июля 2011

Допустим, у меня есть точка A в трехмерном пространстве, и я хочу переместить ее равномерным круговым движением вокруг единичного вектора n.

Итак, я знаю вектор положения A, O и единичный вектор n (нормаль к плоскости, в которой находятся O, A и B) и знаю угол AOB.

Какой самый быстрый способ найти положение B?

Ответы [ 4 ]

4 голосов
/ 06 июля 2011

Как насчет применения матрицы вращения вокруг оси и угла ?

2 голосов
/ 06 июля 2011

В математике это будет OB = OA * cos (theta) + (OAxn) * sin (theta)

1 голос
/ 07 июля 2011

Чтобы ответить на чуть более общий вопрос, который ставит ваш комментарий к Немо, я предполагаю, что у вас есть глобальные точки A и O и что у вас есть единичный вектор N и угол Φ и вы хотите B .Вот как я это сделаю.Сначала найдите проекцию OA на N (привязанную к O ).Затем найдите O ', это точка, вокруг которой вы будете вращаться.Затем используйте уравнения, данные Джеком V:

O' = O  + dotP((A-O),N)N
B  = O' + cos(Φ)(A-O') + sin(Φ)crossP(N,A-O')

, где dotP и crossP являются точечными и перекрестными произведениями.

1 голос
/ 06 июля 2011

Возможно, вы захотите использовать формула вращения Родригеса . Это хорошо подходит для вашей очень ограниченной задачи (движение твердого тела?). Возможно, вам не понадобятся более общие, но и более сложные методы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...