C ++: вращение вектора вокруг нормали плоскости - PullRequest
4 голосов
/ 20 марта 2012

Я пытаюсь повернуть точку на плоскости вокруг нормали к плоскости на определенный угол (чтобы она осталась на плоскости).

Например:

  • Точка = (0,0,1) (на плоскости)
  • Нормальный = (0,1,0)
  • Угол = 33 градуса

Но не могу понять, как это сделать

EDIT:

Ось вращения всегда проходит через начало координат (0,0,0)

Ответы [ 3 ]

2 голосов
/ 20 марта 2012

Если вы ищете вращение вокруг оси в 3-х пространствах, Формула вращения Родригеса очень полезна. Страница Википедии довольно хороша: здесь

0 голосов
/ 20 марта 2012

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

0 голосов
/ 20 марта 2012

Вероятно, не оптимально, но: найдите векторы пролета плоскости (назовите их U и V), выразите точку P через U и V и примените 2D-вращение. PS: нормаль не полностью определяет плоскость; вам нужна хотя бы точка на плоскости.

...