В основных словах мне нужен простой и быстрый алгоритм, чтобы найти решение X из C * X = M, где все переменные являются матрицами. Больше объяснений ниже.
Я пытаюсь вычислить одну конкретную матрицу, но она не работает должным образом:
Vz - negative Z-axis vector (or any other)
Vg - current gravity vector
Vc - zero reference vector (for gravity calibration)
M0 - current rotation matrix
C0 - reference rotation matrix
X0 - unknown rotation matrix to find
*t - transposed versions of above matrices
Upong runtime only Vg, M and C are known.
Rules:
1) Vz == Vg * M0
2) Vg == Vz * Mt
3) Vz == Vc * C0
4) Vc == Vz * Ct
5) Vz == Vx * X0
6) Vx == Vz * Xt
7) Vx == Vg * C0
8) M0 == C0 * X0 (wrong!!! see update notes below)
...
?) X0 = ?
Я пытался использовать такую формулу:
X0 = M0 * Ct
Но полученная матрица не удовлетворяет правилам (5) и (6), как ожидалось.
Есть идеи, что здесь не так?
UPDATE:
Формула, которую я пробовал (X0 = M0 * Ct), верна.
Вопрос был неверным, так как (8) на самом деле M0 = X0 * C0.
Проблема, почему я думал, что это не работает, заключалась в том, что я пытался вычислить Vx = Vg * C0, но на самом деле ни Vx = Vg * C0, ни Vg = Vx * Ct не являются правильными.
Итак, я перехожу к следующему заданию, которое лучше описать как новый вопрос: -)