2016-12-06 2 views
-1

У меня есть вопрос, который может быть очевиден, но у меня проблемы с его устранением ...Изменить координату Системное пространство

У меня есть 2 системы координат. Скажем Oxyz с x (1,0,0), y (0,1,0) и z (0,0,1) и O (0,0,0). И Px'y'z 'с P и x' y 'z' известны.

Моя цель здесь - создать матрицу вращения, которая позволяет мне перейти от Oxyz к Px'y'z '.

То, что я сделал это: вычислить Xangle между вектором Быка и Рх»(по формуле:. Theta = cos(Ox . Px'/||Ox|| * ||Px'||)) И создать XMatrix с помощью тета:

|1 0   0   | 
|0 cos(Theta) -sin(Theta) | 
|0 sin(Theta) cos(Theta) | 

я сделать то же самое для Yangle и Zangle , затем создает 2 соответствующую матрицу. После всего этого, я создаю MFinal = XMatrix * YMatrix * ZMatrix.

Является ли это правильно? Может ли он работает в любом мире?

Спасибо всем! :)

С наилучшими пожеланиями

+0

Вы говорите, что хотите поворот. Вы уверены, что 'x ', y', z'' является ортонормированным базисом R^3? –

+0

Да, это так. Я создаю их с использованием перекрестного продукта. Я уверен, что (x ', y', z ') и (x, y, z) являются ортонормированными базисами R^3 :) –

+0

На самом деле мне нужна матрица поворота от изменения Basis. Но я не понимаю, почему мой метод не работает /: я сделал некоторую модификацию: поставить x 'на плоскость xOy, мне нужно повернуть Ox' вокруг Z и так далее. Но все равно не работает. :/ –

ответ

1

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

Во всяком случае, существует гораздо более простой способ. Предположим, что матрица вращения равна R. Затем вы хотите оригинал оси х будет отображаться на новой оси х:

x' = R x = R (1, 0, 0)^T 

Поскольку базовая система координат является канонической системой, последнее выражение в первой колонке R и вы получите:

x' = R[0] 

И это довольно легко решить.

Итак, все, что вам нужно сделать, это поставить локальные оси в качестве векторов столбцов в R. Если вы хотите включить перевод, просто сделайте то же самое с местным происхождением и четвертым столбцом.

+0

Спасибо большое! Это верно! :) И это работает! –

Смежные вопросы