Я начинаю с одной системы координат и точки вдоль оси Z, заданной как P1 = [0 0 h], и точки в плоскости XY, заданной как P2 = [h * tan (A), h * tan (B), 0] Затем я решаю уравнение плоскости, перпендикулярной вектору, который указывает от P2 к P1, так что Vector = P1 - P2. Я получаю следующее уравнение плоскости:
Х * ч * загар (А) -У * ч * загар (В) + Z * ч = 0.
Теперь мне даны четыре точки относительно этой плоскости, из которых начало этой новой плоскости совпадает с точкой P2 в исходной плоскости.
Четыре точки образуют прямоугольник:
[L*tan(C), L*tan(D), 0]
[L*tan(C), -L*tan(D), 0]
[-L*tan(C), -L*tan(D), 0]
[-L*tan(C), L*tan(D), 0]
Как именно мне преобразовать эти точки в исходную систему координат? Я знаю, что здесь задействованы перевод и вращение, и когда я изумленно посмотрел на свою проблему, я смог найти только отдельные случаи перевода и вращения, и ни один из них не был комбинацией этих двух.
Как именно работает вращательное преобразование? Что, если я уже знаю, что он вращается вокруг оси X на A градусов и вокруг оси Y на B градусов? Могу ли я тогда просто выполнить простой триггер для обратного отслеживания значения? Или это не так просто, и мне нужно повернуть его вокруг оси, которую он должен вращать, чтобы вернуться к исходной системе координат?
Есть ли в MATLAB функция, в которую я могу вставить, скажем, 3 точки, которые определяют одну систему координат, и еще 3 точки для второй системы координат, которая затем дала бы мне матрицы преобразования?
Пожалуйста, дайте мне знать, если моя формулировка неясна, эту трехмерную проблему очень трудно визуализировать, я не могу понять, как написать для нее все триггеры, и хотел бы попробовать это математически ... но если вы шанс узнать более простое решение, которое может быть более простым, пожалуйста, предложите его!