Общий подход для получения координат x, y, z смещенной и повернутой точки в трехмерном пространстве с заданными поворотами - PullRequest
2 голосов
/ 15 апреля 2019

Точка в известном месте x1, y1, z1. Есть вторая точка, которая связана с первой точкой линией с длиной ограничительной рамки l / 2. Линия вращается в 3D вокруг осей основного кадра с помощью rot_x, rot_y, rot_z.

Как получить координаты x, y, z второй точки?

Чтобы быть более точным: Начало основного кадра находится в 0,0,0, а ограничительная рамка объекта находится в известном месте x1, y1, z1. Ограничительная рамка вращается вокруг оси x, y, z основной рамы. Координаты x1, y1, z1 привязаны к нижней центральной точке поверхности. Я хочу знать координаты x, y, z, если я ссылаюсь на середину нижней поверхности.

Проблема в 2D проста:

enter image description here

alpha = rot_z

x_2 = PosX + cos(alpha) *SizeX/2

y_2 = PosX + sin(alpha) *SizeX/2

Теперь я хочу получить координаты x, y, z в 3D второй точки. Как общий подход к чему-то подобному?

1 Ответ

1 голос
/ 15 апреля 2019

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

Например: вращаться вокруг оси x

[ 1     0       0       0 ]      [ x ]
[ 0  cos(th)  -sin(th)  0 ]   *  [ y ]
[ 0  sin(th)  cos(th)   0 ]      [ z ]
[ 0     0       0       1 ]      [ 1 ]

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

Читайте математику Матрицы для 3d преобразований!

Надеюсь, это поможет.

...