2009-07-24 43 views
8

Tôi tự hỏi nếu có thể (và nếu sau đó là cách) để trình bày lại phép biến đổi ma trận M3 tùy ý như một chuỗi các phép biến đổi đơn giản hơn (như dịch, chia tỷ lệ, nghiêng, xoay)Phân hủy biến đổi ma trận phức tạp thành một loạt các phép biến đổi đơn giản?

Nói cách khác: làm thế nào để tính toán MTranslate, MScale, MRotate, ma trận MSkew từ MComplex để các phương trình sau đây sẽ là đúng:

MComplex = MTranslate * MScale * MRotate * MSkew (hoặc trong một trật tự khác)

Trả lời

9

Singular Value Decomposition (xem thêm this blog và điều này PDF). Nó biến một ma trận tùy ý thành một thành phần của 3 ma trận: trực giao + đường chéo + trực giao. Các ma trận trực giao là ma trận quay; ma trận đường chéo đại diện cho skewing dọc theo trục chính = tỷ lệ.

Bản dịch ném cờ lê khỉ vào trò chơi, nhưng những gì bạn cần làm là lấy phần dịch của ma trận để bạn có ma trận 3x3, chạy SVD trên đó để cung cấp cho bạn vòng xoay + xoay, sau đó thêm dịch thuật một phần trở lại. Bằng cách đó bạn sẽ có một vòng quay + quy mô + xoay + dịch thành phần của 4 ma trận. Nó có lẽ có thể làm điều này trong 3 ma trận (xoay + mở rộng dọc theo một số trục + dịch) nhưng tôi không chắc chắn chính xác làm thế nào ... có thể phân hủy QR (Q = orthogonal = rotation, nhưng tôi không chắc chắn nếu R là chỉ nghiêng hoặc có phần quay.)

1

có, nhưng giải pháp sẽ không phải là duy nhất. Ngoài ra bạn chứ không phải nên đặt dịch cuối cùng (thứ tự của các phần còn lại không quan trọng)

Đối với bất kỳ ma trận vuông cho A có tồn tại vô số ma trận BC nên A = B*C đó. Chọn bất kỳ ma trận nghịch đảo B (có nghĩa là B^-1 tồn tại hoặc det (B)! = 0) và bây giờ C = B^-1*A.

Vì vậy, đối với giải pháp của bạn trước tiên hãy phân tách MC thành MTMS*MR*MSk*I, chọn MT là ma trận chuyển vị không thể đảo ngược. Sau đó, phân hủy phần còn lại thành MSMR*MSk*I sao cho MS là ma trận tỉ lệ tùy ý. Và cứ thế ...

Bây giờ nếu ở phần cuối của niềm vui I là ma trận nhận dạng (với 1 trên đường chéo, 0 ở nơi khác) bạn tốt. Nếu không, hãy bắt đầu lại, nhưng chọn các ma trận khác nhau ;-)

Thực tế, sử dụng phương pháp trên biểu tượng bạn có thể tạo các phương trình sẽ mang lại cho bạn một công thức được tham số cho tất cả các ma trận này.

Các phân tích này hữu ích như thế nào đối với bạn, tốt - đó là một câu chuyện khác.

Nếu bạn nhập mã này vào Mathematica hoặc Maxima, chúng sẽ tính toán điều này cho bạn trong thời gian không.

+0

Bạn có điểm tốt, ngoại trừ các ma trận này có thêm liên kết (bản dịch là ma trận nhận dạng với cột ngoài cùng bên phải có chứa vector dịch, v.v.). Theo như tôi có thể tưởng tượng, bốn phép biến đổi này - được cấp thứ tự đó là cố định - sẽ mang lại kết quả rõ ràng. – samuil

Các vấn đề liên quan