Pergunta

gostaria de saber se é possível (e se for, então como) para re-presente uma transformação arbitrária matriz M3, tal como uma sequência de transformações simples (tais como traduzir, escala, de inclinação, rotação)

Em outras palavras: como calcular mTranslate, mScale, MRotate, matrizes MSkew do MComplex para que a seguinte equação seria verdade:

= MComplex mTranslate * mScale * MRotate * MSkew (ou numa outra ordem)

Foi útil?

Solução

decomposição singular do valor (ver também este blog e este PDF ). Acontece uma matriz arbitrária para uma composição de 3 matrizes: ortogonal + diagonal + ortogonal. As matrizes ortogonais são matrizes de rotação; a matriz diagonal representa inclinar ao longo dos eixos primários = escalonamento.

A tradução lança uma chave inglesa no jogo, mas o que você deve fazer é tirar a parte de tradução da matriz para que você tenha uma matriz 3x3, SVD executar de que para dar-lhe a rotação + distorcendo, em seguida, adicione a tradução parte de volta. Dessa forma, você terá uma rotação + escala + rotação + traduzir composição de 4 matrizes. Provavelmente é possível fazer isso em 3 matrizes (rotação + escalando ao longo de algum conjunto de eixos + tradução), mas eu não sei exatamente como ... talvez uma decomposição QR (Q = ortogonal = rotação, mas eu não tenho certeza se o símbolo R representa um enviesamento somente ou tem uma parte rotativa.)

Outras dicas

Sim, mas a solução não será único. Além disso, você deve sim colocar tradução no final (a ordem do resto não importa)

Para qualquer A matriz quadrada existe infinitamente muitas matrizes B e C para que A = B*C. Escolha qualquer B matriz invertível (o que significa que B ^ -1 existe ou det (B)! = 0) e agora C = B^-1*A.

Assim, para a sua primeira solução de MC decompõem em MT e MS*MR*MSk*I, escolhendo MT para ser alguma matriz transposição invertível. Em seguida, decompor o resto em MS e MR*MSk*I modo que MS é a matriz de escala arbitrária. E assim por diante ...

Agora, se no final do I diversão é uma matriz de identidade (com 1 na diagonal, 0 em outro lugar) Você é bom. Se não for, começar de novo, mas escolher diferentes matrizes ;-)

Na verdade, usando o método acima simbolicamente você pode criar conjunto de equações que vai render-lhe uma fórmula parametrizadas para todas essas matrizes.

Qual a utilidade dessas decomposições seria para você, bem -. Isso é outra história

Se você digitar isso em Mathematica ou Maxima que vai calcular isso para você em nenhum momento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top