Глобальные к локальным координатам без решения системы линейных уравнений

У меня есть заданная локальная система координат, определяемая этим уравнением:

г "=" а Икс + б у + с г + о
Икс , у и г три (перпендикулярных) единичных вектора, определяющих ось локальной системы координат (правило правой руки).

о вектор смещения. При наблюдении за глобальной системой координат начало локальной системы находится в о .

а , б и с являются каждой компонентой локальных координат. Это означает, что локальный вектор координат будет ( а , б , с ) .

г вектор глобальных координат, соответствующий локальному вектору координат ( а , б , с ) . Это делает преобразование локальных координат в глобальные очень простым. Моя проблема заключается в преобразовании глобальных координат в локальные.

Вы можете определить вектор локальных координат ( а , б , с ) от глобальных координат путем решения следующей системы линейных уравнений (используя алгоритм Гаусса или что-то подобное):

г Икс "=" а Икс Икс + б у Икс + с г Икс + о Икс
г у "=" а Икс у + б у у + с г у + о у
г г "=" а Икс г + б у г + с г г + о г

У меня проблема в том, что этот расчет должен выполняться несколько раз в секунду на относительно слабом микроконтроллере. У него нет вычислительной мощности, чтобы каждый раз запускать Гаусса. Можно ли как-то проще вычислить локальные координаты (например, вычислив матрицу преобразования для этой системы координат)?

Ответы (1)

Рассмотрим матрицу

U "=" ( Икс Икс у Икс г Икс Икс у у у г у Икс г у г г г ) .

По вашему предположению, поскольку Икс , у , г имеют единичную длину и перпендикулярны, матрица U унитарна (так U U Т "=" я ). Преобразование локальных координат в глобальные координаты определяется выражением

( а б с ) ( Икс Икс у Икс г Икс Икс у у у г у Икс г у г г г ) ( а б с ) + ( о Икс о у о г ) "=" ( г Икс г у г г ) .

Тогда обратное преобразование задается выражением

( г Икс г у г г ) ( Икс Икс у Икс г Икс Икс у у у г у Икс г у г г г ) 1 ( г Икс о Икс г у о у г г о г ) "=" ( а б с ) .

Но с тех пор U унитарно, вы знаете, что U 1 "=" U Т так

( а б с ) "=" ( Икс Икс Икс у Икс г у Икс у у у г г Икс г у г г ) ( г Икс о Икс г у о у г г о г ) .

Это кажется очень простым, я не знал, что матрица преобразования просто построена с перпендикулярными единичными векторами. Я попробую это и сообщу о результатах. О, и я думаю, что «знать» не хватает в «Но поскольку U унитарно, вы что U 1 "=" U Т так', но stackexchange не позволит мне предложить это редактирование: D
@ЭмильС. Они даже не должны быть перпендикулярны: столбцы матрицы преобразования являются изображениями базисных векторов.
@EmilS.: Я отредактировал свой ответ, спасибо за комментарий.