B
ich hätte da eine ergänzung zu
http://www.c-plusplus.net/forum/viewtopic.php?t=39428
A = |r00,r01,r02,dx|
|r10,r11,r12,dy|
|r20,r21,r22,dz|
| 0, 0, 0, 1|
Als Blockmatrix
A = |P,Q|
|R,S|
|r00,r01,r02| |dx|
P = |r10,r11,r12| Q = |dy|
|r20,r21,r22| |dz|
R = | 0, 0, 0| S = | 1|
Shurkomplement
A^-1 = |P',Q'|
|R',S'|
P' = (P-Q*S^-1*R)^-1
mit Q*S^-1*R = 0 da R Nullvektor
P' = P^-1
Q' = -(P-Q*S^-1*R)^-1*(Q*S^-1)
Q' = -P'*(Q*S^-1)
mit S^-1=1
Q' = -P^-1*Q
R' = (S^-1*R)*(P-Q*S^-1*R)^-1
R' = |0, 0, 0|*(P-Q*S^-1*R)^-1
R' = |0, 0, 0|
S' = S^-1 + (S^-1*R)*(P-Q*S^-1*R)^-1*(Q*S^-1)
S' = S^-1 + 0*(P-Q*S^-1*R)^-1*(Q*S^-1)
S' = S^-1 + 0
S' = 1
d.h.
P ist orthogonal <=> P-^1=P.transp()
und der Translationsvector muss nur noch aus der sicht des anderen koordiantensystems angegeben werden
also P-^1*Q
ist ja eigentlich was Jester schrieb