English 中文(简体)
将变质矩阵纳入 or形矩阵
原标题:Split a transform matrix into orhhogonal matrix and scale matrix

如果我有一个从规模、翻译和轮换转变的矩阵。 我想将这一矩阵分成两个矩阵。 一种是轮换+传输矩阵,另一种是比额表矩阵。

因为我要赞扬正确的正常病媒转变,因此我只需要奥果纳基,为地面正常病媒进行计算。

Any ideas?

问题回答

如果我有一个从规模、翻译和轮换转变的矩阵。 我想将这一矩阵分成两个矩阵。 一种是轮换+传输矩阵,另一种是比额表矩阵。

假设这一矩阵,你正在谈论的是4x4矩阵,其中一部分被他人广泛使用,第四行为0,0,1。

造成这两项行动“规模”和“旋转+传输”。 注: 这些行动并非是互换的。 提升3位病媒,然后轮换/翻译这种规模较大的病媒,其结果与你通过扭转行动次序而取得的结果不同。

Case 1, operation is "rotate+translate", then "scale".
Let SR=S*R, where S is a 3x3 diagonal matrix with positive diagonal elements (a scaling matrix) and R is a 3x3 orthonormal rotation matrix. The rows of matrix SR will be orthogonal to one another, but the columns will not be orthogonal. The scale factors are the square root of the norms of the rows of the matrix SR.

Algorithm: Given 4x4 matrix A, produce 4x4 scaling matrix S, 4x4 rotation+translation matrix T

A = [  SR(3x3)  Sx(3x1) ]
    [   0(1x3)     1    ]
  1. Partition A into a 3x3 matrix SR and a 3 vector Sx as depicted above.
  2. Construct the scaling matrix S. The first three diagonal elements are the vector norms of the rows of matrix SR; the last diagonal element is 1.
  3. Construct the 4x4 rotation+translation matrix T by dividing each row of A by the corresponding scale factor.

Case 2, operation is "scale", then "rotate+translate".
Now consider the case RS=R*S. Here the columns of A will be orthogonal to one another, but the rows will not be orthogonal. In this case the scale factors are the square root of the norms of the columns of the matrix RS.

Algorithm: Given 4x4 matrix A, produce 4x4 rotation+translation matrix T, 4x4 scaling matrix S

A = [  RS(3x3)  x(3x1) ]
    [   0(1x3)    1    ]
  1. Partition A into a 3x3 matrix RS and a 3 vector x as depicted above.
  2. Construct the scaling matrix S. The first three diagonal elements are the vector norms of the columns of matrix RS; the last diagonal element is 1.
  3. Construct the 4x4 rotation+translation matrix T by dividing each row of A by the corresponding scale factor.

如果比额表不统一(例如,比额表×2, 或4, z by 1/2),你可以相互对照,审视上3x3矩阵的内链和栏目。 最后一例(我的个案1)将意味着行内产品将非常接近零,但单体产品不会零。 第一(米案件2)的升级使局势发生逆转。 如果规模一致,则无法说明什么情况。 你们需要事先了解。

只是一个想法:

  • Multiply the matrix by the unit vectors (1/sqrt(3),1/sqrt(3),1/sqrt(3)),
  • check how the length of the vector after the multiplication,
  • scale the matrix by the reciprocal of that value. Now you have an orthogonal matrix
  • create a new scale matrix with the scale you found.
  1. Remove the translation to get a 3x3 matrix
  2. Perform the polar decomposition via SVD.




相关问题
Maths in LaTex table of contents

I am trying to add a table of contents for my LaTex document. The issue I am having is that this line: subsubsection{The expectation of (X^2)} Causes an error in the file that contains the ...

Math Overflow -- Handling Large Numbers

I am having a problem handling large numbers. I need to calculate the log of a very large number. The number is the product of a series of numbers. For example: log(2x3x66x435x444) though my actual ...

Radial plotting algorithm

I have to write an algorithm in AS3.0 that plots the location of points radially. I d like to input a radius and an angle at which the point should be placed. Obviously I remember from geometry ...

Subsequent weighted algorithm for comparison

I have two rows of numbers ... 1) 2 2 1 0 0 1 2) 1.5 1 0 .5 1 2 Each column is compared to each other. Lower values are better. For example Column 1, row 2 s value (1.5) is more ...

热门标签