OpenGL (LWJGL) вращает объект вокруг неподвижной точки [дубликат]

[D0] myDropDown.Items.Remove (myDropDown.Items.FindByText ( "Чикаго"));

1
задан unwind 17 March 2011 в 14:25
поделиться

1 ответ

Все вращения будут вращаться вокруг начала координат. Таким образом, вы переводите на начало координат, поворачиваете, а затем переводите назад.

T = translate from global coordinates to user-coordinates
R = rotate around the origin (like in your link)
(T^-1) = translate back
point X

X_rotated = (T^-1)*R*T*X 

Если у вас есть несколько точек для поворота, умножьте их вместе:

A = (T^-1)*R*T
X_rotated = A*X
8
ответ дан Martin DeMello 17 August 2018 в 12:06
поделиться
  • 1
  • 2
    Перевод не выполняется с помощью умножения матрицы, а на векторное вычитание. Следовательно, если * означает просто матричное умножение, это не сработает. Если * означает конкатенацию некоторых преобразований, это имеет смысл, но вы все еще не можете просто «размножаться», (*) перевод (= вычитание вектора) с вращением (= умножение матрицы) и получить в результате другую матрицу. – Curd 17 March 2011 в 10:44
  • 3
    – Martin DeMello 17 March 2011 в 11:22
  • 4
    @Martin DeMello: хорошо, спасибо. Таким образом, перевод можно легко выразить как матричное умножение в специальном формализме, использующем 4 измерения. Это, однако, не очевидно и нигде не упоминается в ответе. Или позвольте мне сказать так: любому, кто знаком с этим формализмом, не нужно было задавать вопрос. – Curd 17 March 2011 в 11:48
  • 5
    @curd: правда, но любой, кто хочет ответить на этот вопрос, должен начать с изучения этого формализма. это действительно одна из первых вещей, которые вы узнаете при изучении такого рода геометрических манипуляций. – Martin DeMello 17 March 2011 в 20:28
Другие вопросы по тегам:

Похожие вопросы: