矩阵是由数字或符号排成的矩形阵列。矩阵中的每个数字或符号称为元素。矩阵用于在数学、物理学、工程学和计算机科学等领域中描述和解决线性方程组、向量、转换、空间几何等问题。矩阵通常由方括号表示,如下所示:
A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯ a m n ] A = begin{bmatrix} a_{11} & a_{12} & cdots & a_{1n} \ a_{21} & a_{22} & cdots & a_{2n} \ vdots & vdots & ddots & vdots \ a_{m1} & a_{m2} & cdots & a_{mn} \ end{bmatrix} A= a11a21⋮am1a12a22⋮am2⋯⋯⋱⋯a1na2n⋮amn
其中, a i j a_{ij} aij 表示矩阵 A A A 的第 i i i 行第 j j j 列的元素。 m m m 表示矩阵的行数, n n n 表示矩阵的列数。如果一个矩阵的行数和列数相等,那么它就是一个方阵。
矩阵和方程有着密切的关系,矩阵可以用来表示方程的系数,从而可以通过矩阵运算来求解方程。
具体来说,对于一个包含 n n n个未知数的线性方程组,可以将其表示为如下形式:
{ a 11 x 1 + a 12 x 2 + ⋯ + a 1 n x n = b 1 a 21 x 1 + a 22 x 2 + ⋯ + a 2 n x n = b 2 ⋯ a n 1 x 1 + a n 2 x 2 + ⋯ + a n n x n = b n begin{cases} a_{11}x_1 + a_{12}x_2 + cdots + a_{1n}x_n = b_1 \ a_{21}x_1 + a_{22}x_2 + cdots + a_{2n}x_n = b_2 \ cdots \ a_{n1}x_1 + a_{n2}x_2 + cdots + a_{nn}x_n = b_n \ end{cases} ⎩ ⎨ ⎧a11x1+a12x2+⋯+a1nxn=b1a21x1+a22x2+⋯+a2nxn=b2⋯an1x1+an2x2+⋯+annxn=bn
其中, a i j a_{ij} aij表示第 i i i个方程中第 j j j个未知数的系数, b i b_i bi表示第 i i i个方程的等式右边的常数。
将上述方程组中的系数和常数放在一个 n × ( n + 1 ) ntimes(n+1) n×(n+1)的矩阵中,即:
( a 11 a 12 ⋯ a 1 n b 1 a 21 a 22 ⋯ a 2 n b 2 ⋯ ⋯ ⋯ ⋯ ⋯ a n 1 a n 2 ⋯ a n n b n ) begin{pmatrix} a_{11} & a_{12} & cdots & a_{1n} & b_1 \ a_{21} & a_{22} & cdots & a_{2n} & b_2 \ cdots & cdots & cdots & cdots & cdots \ a_{n1} & a_{n2} & cdots & a_{nn} & b_n \ end{pmatrix} a11a21⋯an1a12a22⋯an2⋯⋯⋯⋯a1na2n⋯annb1b2⋯bn
可以发现,在这个矩阵中,每个方程的系数和常数都被组织为矩阵的一行,而整个方程组则被组织为矩阵的 n n n行。这个矩阵被称为增广矩阵。
对于这个增广矩阵,可以通过一系列矩阵变换来将其化简为一个简单的形式,从而可以求解这个方程组。
矩阵变换的具体步骤包括交换矩阵中的两行、将矩阵中某一行乘以一个非零常数、将矩阵中某一行加上另一行的某个倍数。通过这些矩阵变换,可以将增广矩阵化为如下形式:
( a 11 ′ a 12 ′ ⋯ a 1 n ′ b 1 ′ 0 a 22 ′ ⋯ a 2 n ′ b 2 ′ ⋯ ⋯ ⋯ ⋯ ⋯ 0 0 ⋯ a n n ′ b n ′ ) begin{pmatrix} a_{11}^{'} & a_{12}^{'} & cdots & a_{1n}^{'} & b_1^{'} \ 0 & a_{22}^{'} & cdots & a_{2n}^{'} & b_2^{'} \ cdots & cdots & cdots & cdots & cdots \ 0 & 0 & cdots & a_{nn}^{'} & b_n^{'} \ end{pmatrix} a11′0⋯0a12′a22′⋯0⋯⋯⋯⋯a1n′a2n′⋯ann′b1′b2′⋯bn′
其中,矩阵中的斜线上方都是 0 0 0,而斜线上的元素则称为主元。
通过这种化简方式,可以用简单的代数运算来解决方程组问题,矩阵成为了一个重要的工具。
矩阵加减是指两个相同维数的矩阵进行加减运算。
设A和B为两个n行m列的矩阵,则它们的和C = A + B也是一个n行m列的矩阵,其中C的每个元素为A和B对应元素的和,即Cij = Aij + Bij。
同理,它们的差D = A - B也是一个n行m列的矩阵,其中D的每个元素为A和B对应元素的差,即Dij = Aij - Bij。
矩阵乘标量是指将一个标量(通常为实数或复数)乘以一个矩阵的每一个元素。假设 A A A是一个 m × n m times n m×n的矩阵, k k k是一个标量,则 A A A乘以 k k k的结果为:
k A = [ k a 11 k a 12 ⋯ k a 1 n k a 21 k a 22 ⋯ k a 2 n ⋮ ⋮ ⋱ ⋮ k a m 1 k a m 2 ⋯ k a m n ] kA = begin{bmatrix} k a_{11} & k a_{12} & cdots & k a_{1n} \ k a_{21} & k a_{22} & cdots & k a_{2n} \ vdots & vdots & ddots & vdots \ k a_{m1} & k a_{m2} & cdots & k a_{mn} end{bmatrix} kA= ka11ka21⋮kam1ka12ka22⋮kam2⋯⋯⋱⋯ka1nka2n⋮kamn
其中 a i j a_{ij} aij表示矩阵 A A A的第 i i i行第 j j j列的元素。注意,矩阵乘标量仅仅是将矩阵的每个元素乘以标量,而不会改变矩阵的形状。
矩阵相乘是指将两个矩阵按照一定的规则进行相乘,得到一个新的矩阵。具体的规则是:
设A是一个m × n的矩阵,B是一个n × p的矩阵,那么矩阵C = AB就是一个m × p的矩阵,且它的每个元素cij都是由A的第i行与B的第j列对应元素相乘后求和得到的,即:
cij = Σ(ai * bj),其中i = 1, 2, …, m,j = 1, 2, …, p。
其中,ai表示A矩阵第i行的元素,bj表示B矩阵第j列的元素。
需要注意的是,只有当矩阵A的列数等于矩阵B的行数时,才能进行矩阵相乘操作。否则会出现维度不匹配的错误。
矩阵绕X轴旋转的公式如下:
[1 0 0 ]
[0 cosθ -sinθ ]
[0 sinθ cosθ ]
其中,θ表示旋转角度。这个公式的推导可以通过以下步骤进行:
假设有一个三维向量a = [x, y, z],它绕X轴旋转θ角度后变为b = [x’, y’, z’]。
我们可以将向量a投影到XOY平面上,得到长度为r = sqrt(y^2 + z^2)的向量c = [0, y/r, z/r],即c的长度为1。
根据三角函数的定义,可以得到绕X轴旋转θ角度后的向量b的坐标为:
x' = x
y' = c[2] * cosθ - c[3] * sinθ = y * cosθ - z * sinθ
z' = c[2] * sinθ + c[3] * cosθ = y * sinθ + z * cosθ
其中,c[2]表示向量c在Y轴上的投影,c[3]表示向量c在Z轴上的投影。
[1 0 0 ]
[0 cosθ -sinθ ]
[0 sinθ cosθ ]
这就是绕X轴旋转θ角度的矩阵公式。
矩阵绕Y轴旋转的角度为θ时,可以通过以下推导得出旋转矩阵:
假设需要旋转的点为P=(x, y, z),则旋转后得到的点P’=(x’, y’, z’),其中:
x’ = x * cosθ + z * sinθ
y’ = y
z’ = -x * sinθ + z * cosθ
将上述式子整合成矩阵形式,得到旋转矩阵R:
R = | cosθ 0 sinθ 0 |
| 0 1 0 0 |
| -sinθ 0 cosθ 0 |
| 0 0 0 1 |
其中,第一行和第三行代表了x和z坐标的旋转,第二行代表y坐标不变,最后一行代表不变量。
因此,对于任意一个绕Y轴旋转角度为θ的点P,可以通过R矩阵的变换得到旋转后的点P’。
假设旋转矩阵为 R z ( θ ) R_z(theta) Rz(θ),表示绕Z轴旋转角度 θ theta θ,则:
R z ( θ ) = [ cos θ − sin θ 0 sin θ cos θ 0 0 0 1 ] R_z(theta) = begin{bmatrix} costheta & -sintheta & 0 \ sintheta & costheta & 0 \ 0 & 0 & 1 end{bmatrix} Rz(θ)= cosθsinθ0−sinθcosθ0001
在推导过程中,我们可以使用以下两条性质:
矩阵乘法结合律: ( A B ) C = A ( B C ) (AB)C = A(BC) (AB)C=A(BC);
对于任意向量 v = ( x , y , z ) T mathbf{v} = (x,y,z)^T v=(x,y,z)T,绕Z轴旋转角度 θ theta θ的公式为:
R z ( θ ) v = [ cos θ − sin θ 0 sin θ cos θ 0 0 0 1 ] [ x y z ] = [ cos θ x − sin θ y sin θ x + cos θ y z ] begin{aligned} R_z(theta)mathbf{v} &= begin{bmatrix} costheta & -sintheta & 0 \ sintheta & costheta & 0 \ 0 & 0 & 1 end{bmatrix}begin{bmatrix} x \ y \ z end{bmatrix} \ &= begin{bmatrix} costheta x - sintheta y \ sintheta x + costheta y \ z end{bmatrix} end{aligned} Rz(θ)v= cosθsinθ0−sinθcosθ0001 xyz = cosθx−sinθysinθx+cosθyz
现在考虑将矩阵 R z ( θ ) R_z(theta) Rz(θ)表示成两个矩阵的乘积的形式。我们需要将其矩阵元分解成两个矩阵的矩阵元的乘积。
设有矩阵 A A A和 B B B,满足:
A B = [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] [ b 11 b 12 b 13 b 21 b 22 b 23 b 31 b 32 b 33 ] = [ c 11 c 12 c 13 c 21 c 22 c 23 c 31 c 32 c 33 ] AB = begin{bmatrix} a_{11} & a_{12} & a_{13} \ a_{21} & a_{22} & a_{23} \ a_{31} & a_{32} & a_{33} end{bmatrix}begin{bmatrix} b_{11} & b_{12} & b_{13} \ b_{21} & b_{22} & b_{23} \ b_{31} & b_{32} & b_{33} end{bmatrix} = begin{bmatrix} c_{11} & c_{12} & c_{13} \ c_{21} & c_{22} & c_{23} \ c_{31} & c_{32} & c_{33} end{bmatrix} AB= a11a21a31a12a22a32a13a23a33 b11b21b31b12b22b32b13b23b33 = c11c21c31c12c22c32c13c23c33
则有:
c 11 = a 11 b 11 + a 12 b 21 + a 13 b 31 c 12 = a 11 b 12 + a 12 b 22 + a 13 b 32 c 13 = a 11 b 13 + a 12 b 23 + a 13 b 33 c 21 = a 21 b 11 + a 22 b 21 + a 23 b 31 c 22 = a 21 b 12 + a 22 b 22 + a 23 b 32 c 23 = a 21 b 13 + a 22 b 23 + a 23 b 33 c 31 = a 31 b 11 + a 32 b 21 + a 33 b 31 c 32 = a 31 b 12 + a 32 b 22 + a 33 b 32 c 33 = a 31 b 13 + a 32 b 23 + a 33 b 33 begin{aligned} c_{11} &= a_{11}b_{11} + a_{12}b_{21} + a_{13}b_{31} \ c_{12} &= a_{11}b_{12} + a_{12}b_{22} + a_{13}b_{32} \ c_{13} &= a_{11}b_{13} + a_{12}b_{23} + a_{13}b_{33} \ c_{21} &= a_{21}b_{11} + a_{22}b_{21} + a_{23}b_{31} \ c_{22} &= a_{21}b_{12} + a_{22}b_{22} + a_{23}b_{32} \ c_{23} &= a_{21}b_{13} + a_{22}b_{23} + a_{23}b_{33} \ c_{31} &= a_{31}b_{11} + a_{32}b_{21} + a_{33}b_{31} \ c_{32} &= a_{31}b_{12} + a_{32}b_{22} + a_{33}b_{32} \ c_{33} &= a_{31}b_{13} + a_{32}b_{23} + a_{33}b_{33} end{aligned} c11c12c13c21c22c23c31c32c33=a11b11+a12b21+a13b31=a11b12+a12b22+a13b32=a11b13+a12b23+a13b33=a21b11+a22b21+a23b31=a21b12+a22b22+a23b32=a21b13+a22b23+a23b33=a31b11+a32b21+a33b31=a31b12+a32b22+a33b32=a31b13+a32b23+a33b33
现在我们考虑将 R z ( θ ) R_z(theta) Rz(θ)分解成两个矩阵 A A A和 B B B的乘积形式。注意到对于 θ = 0 theta=0 θ=0时, R z ( θ ) R_z(theta) Rz(θ)就是单位矩阵,因此我们可以选择 A A A和 B B B满足 A = I A=mathbf{I} A=I(单位矩阵)和 B = R z ( θ ) B=R_z(theta) B=Rz(θ)。
现在我们要找到矩阵 A A A和 B B B的矩阵元分解形式,使得 A B = R z ( θ ) AB=R_z(theta) AB=Rz(θ)。根据矩阵乘法结合律,我们可以先假设 A A A和 B B B的某些矩阵元的乘积等于 R z ( θ ) R_z(theta) Rz(θ)的对应矩阵元,然后求解这些矩阵元的值。
具体来说,我们假设:
a 11 b 11 + a 12 b 21 + a 13 b 31 = cos θ a 11 b 12 + a 12 b 22 + a 13 b 32 = − sin θ a 21 b 11 + a 22 b 21 + a 23 b 31 = sin θ a 21 b 12 + a 22 b 22 + a 23 b 32 = cos θ a 31 b 11 + a 32 b 21 + a 33 b 31 = 0 a 31 b 12 + a 32 b 22 + a 33 b 32 = 0 begin{aligned} a_{11}b_{11} + a_{12}b_{21} + a_{13}b_{31} &= costheta & &qquad a_{11}b_{12} + a_{12}b_{22} + a_{13}b_{32} &= -sintheta \ a_{21}b_{11} + a_{22}b_{21} + a_{23}b_{31} &= sintheta & &qquad a_{21}b_{12} + a_{22}b_{22} + a_{23}b_{32} &= costheta \ a_{31}b_{11} + a_{32}b_{21} + a_{33}b_{31} &= 0 & &qquad a_{31}b_{12} + a_{32}b_{22} + a_{33}b_{32} &= 0 \ end{aligned} a11b11+a12b21+a13b31a21b11+a22b21+a23b31a31b11+a32b21+a33b31=cosθ=sinθ=0a11b12+a12b22+a13b32a21b12+a22b22+a23b32a31b12+a32b22+a33b32=−sinθ=cosθ=0
由此可以得到:
A = [ cos θ − sin θ 0 sin θ cos θ 0 0 0 1 ] , B = [ 1 0 0 0 1 0 0 0 1 ] A = begin{bmatrix} costheta & -sintheta & 0 \ sintheta & costheta & 0 \ 0 & 0 & 1 end{bmatrix}, B = begin{bmatrix} 1 & 0 & 0 \ 0 & 1 & 0 \ 0 & 0 & 1 end{bmatrix} A= cosθsinθ0−sinθcosθ0001 , B= 100010001
因此,我们可以将 R z ( θ ) R_z(theta) Rz(θ)表示成两个矩阵的乘积形式:
R z ( θ ) = [ cos θ − sin θ 0 sin θ cos θ 0 0 0 1 ] [ 1 0 0 0 1 0 0 0 1 ] R_z(theta) = begin{bmatrix} costheta & -sintheta & 0 \ sintheta & costheta & 0 \ 0 & 0 & 1 end{bmatrix}begin{bmatrix} 1 & 0 & 0 \ 0 & 1 & 0 \ 0 & 0 & 1 end{bmatrix} Rz(θ)= cosθsinθ0−sinθcosθ0001 100010001
这就是 R z ( θ ) R_z(theta) Rz(θ)的矩阵分解形式,其中第一个矩阵表示绕Z轴旋转 θ theta θ角度的变换,第二个矩阵表示单位变换。
首先,我们需要知道绕X轴旋转的矩阵表达式:
[ 1 0 0 0 0 cos θ − sin θ 0 0 sin θ cos θ 0 0 0 0 1 ] begin{bmatrix} 1 & 0 & 0 & 0 \ 0 & cos theta & -sin theta & 0 \ 0 & sin theta & cos theta & 0 \ 0 & 0 & 0 & 1 end{bmatrix} 10000cosθsinθ00−sinθcosθ00001
其中, θ theta θ表示绕X轴旋转的角度。
接下来,我们来推导4*4矩阵绕X旋转矩阵。
假设我们有一个4*4矩阵A:
[ a 11 a 12 a 13 a 14 a 21 a 22 a 23 a 24 a 31 a 32 a 33 a 34 a 41 a 42 a 43 a 44 ] begin{bmatrix} a_{11} & a_{12} & a_{13} & a_{14} \ a_{21} & a_{22} & a_{23} & a_{24} \ a_{31} & a_{32} & a_{33} & a_{34} \ a_{41} & a_{42} & a_{43} & a_{44} end{bmatrix} a11a21a31a41a12a22a32a42a13a23a33a43a14a24a34a44
为了让矩阵A绕X轴旋转,我们可以如下操作:
这一步操作可以通过平移矩阵来实现:
[ 1 0 0 0 0 1 0 0 0 0 1 0 − a 11 + a 21 + a 31 + a 41 4 − a 12 + a 22 + a 32 + a 42 4 − a 13 + a 23 + a 33 + a 43 4 1 ] [ a 11 a 12 a 13 a 14 a 21 a 22 a 23 a 24 a 31 a 32 a 33 a 34 a 41 a 42 a 43 a 44 ] = [ a 11 ′ a 12 ′ a 13 ′ a 14 ′ a 21 ′ a 22 ′ a 23 ′ a 24 ′ a 31 ′ a 32 ′ a 33 ′ a 34 ′ a 41 ′ a 42 ′ a 43 ′ a 44 ′ ] begin{bmatrix} 1 & 0 & 0 & 0 \ 0 & 1 & 0 & 0 \ 0 & 0 & 1 & 0 \ -frac{a_{11}+a_{21}+a_{31}+a_{41}}{4} & -frac{a_{12}+a_{22}+a_{32}+a_{42}}{4} & -frac{a_{13}+a_{23}+a_{33}+a_{43}}{4} & 1 end{bmatrix}begin{bmatrix} a_{11} & a_{12} & a_{13} & a_{14} \ a_{21} & a_{22} & a_{23} & a_{24} \ a_{31} & a_{32} & a_{33} & a_{34} \ a_{41} & a_{42} & a_{43} & a_{44} end{bmatrix}=begin{bmatrix} a'_{11} & a'_{12} & a'_{13} & a'_{14} \ a'_{21} & a'_{22} & a'_{23} & a'_{24} \ a'_{31} & a'_{32} & a'_{33} & a'_{34} \ a'_{41} & a'_{42} & a'_{43} & a'_{44} end{bmatrix} 100−4a11+a21+a31+a41010−4a12+a22+a32+a42001−4a13+a23+a33+a430001 a11a21a31a41a12a22a32a42a13a23a33a43a14a24a34a44 = a11′a21′a31′a41′a12′a22′a32′a42′a13′a23′a33′a43′a14′a24′a34′a44′
这一步操作可以通过绕X轴旋转矩阵来实现:
[ 1 0 0 0 0 cos θ − sin θ 0 0 sin θ cos θ 0 0 0 0 1 ] [ a 11 ′ a 12 ′ a 13 ′ a 14 ′ a 21 ′ a 22 ′ a 23 ′ a 24 ′ a 31 ′ a 32 ′ a 33 ′ a 34 ′ a 41 ′ a 42 ′ a 43 ′ a 44 ′ ] = [ a 11 ′ ′ a 12 ′ ′ a 13 ′ ′ a 14 ′ ′ a 21 ′ ′ a 22 ′ ′ a 23 ′ ′ a 24 ′ ′ a 31 ′ ′ a 32 ′ ′ a 33 ′ ′ a 34 ′ ′ a 41 ′ ′ a 42 ′ ′ a 43 ′ ′ a 44 ′ ′ ] begin{bmatrix} 1 & 0 & 0 & 0 \ 0 & cos theta & -sin theta & 0 \ 0 & sin theta & cos theta & 0 \ 0 & 0 & 0 & 1 end{bmatrix}begin{bmatrix} a'_{11} & a'_{12} & a'_{13} & a'_{14} \ a'_{21} & a'_{22} & a'_{23} & a'_{24} \ a'_{31} & a'_{32} & a'_{33} & a'_{34} \ a'_{41} & a'_{42} & a'_{43} & a'_{44} end{bmatrix}=begin{bmatrix} a''_{11} & a''_{12} & a''_{13} & a''_{14} \ a''_{21} & a''_{22} & a''_{23} & a''_{24} \ a''_{31} & a''_{32} & a''_{33} & a''_{34} \ a''_{41} & a''_{42} & a''_{43} & a''_{44} end{bmatrix} 10000cosθsinθ00−sinθcosθ00001 a11′a21′a31′a41′a12′a22′a32′a42′a13′a23′a33′a43′a14′a24′a34′a44′ = a11′′a21′′a31′′a41′′a12′′a22′′a32′′a42′′a13′′a23′′a33′′a43′′a14′′a24′′a34′′a44′′
这一步操作可以通过平移矩阵来实现:
[ 1 0 0 0 0 1 0 0 0 0 1 0 a 11 + a 21 + a 31 + a 41 4 a 12 + a 22 + a 32 + a 42 4 a 13 + a 23 + a 33 + a 43 4 1 ] [ a 11 ′ ′ a 12 ′ ′ a 13 ′ ′ a 14 ′ ′ a 21 ′ ′ a 22 ′ ′ a 23 ′ ′ a 24 ′ ′ a 31 ′ ′ a 32 ′ ′ a 33 ′ ′ a 34 ′ ′ a 41 ′ ′ a 42 ′ ′ a 43 ′ ′ a 44 ′ ′ ] = [ b 11 b 12 b 13 b 14 b 21 b 22 b 23 b 24 b 31 b 32 b 33 b 34 b 41 b 42 b 43 b 44 ] begin{bmatrix} 1 & 0 & 0 & 0 \ 0 & 1 & 0 & 0 \ 0 & 0 & 1 & 0 \ frac{a_{11}+a_{21}+a_{31}+a_{41}}{4} & frac{a_{12}+a_{22}+a_{32}+a_{42}}{4} & frac{a_{13}+a_{23}+a_{33}+a_{43}}{4} & 1 end{bmatrix}begin{bmatrix} a''_{11} & a''_{12} & a''_{13} & a''_{14} \ a''_{21} & a''_{22} & a''_{23} & a''_{24} \ a''_{31} & a''_{32} & a''_{33} & a''_{34} \ a''_{41} & a''_{42} & a''_{43} & a''_{44} end{bmatrix}=begin{bmatrix} b_{11} & b_{12} & b_{13} & b_{14} \ b_{21} & b_{22} & b_{23} & b_{24} \ b_{31} & b_{32} & b_{33} & b_{34} \ b_{41} & b_{42} & b_{43} & b_{44} end{bmatrix} 1004a11+a21+a31+a410104a12+a22+a32+a420014a13+a23+a33+a430001 a11′′a21′′a31′′a41′′a12′′a22′′a32′′a42′′a13′′a23′′a33′′a43′′a14′′a24′′a34′′a44′′ = b11b21b31b41b12b22b32b42b13b23b33b43b14b24b34b44
于是,我们得到了4*4矩阵绕X旋转矩阵:
[ 1 0 0 0 0 cos θ − sin θ 0 0 sin θ cos θ 0 0 0 0 1 ] [ 1 0 0 0 0 1 0 0 0 0 1 0 − a 11 + a 21 + a 31 + a 41 4 − a 12 + a 22 + a 32 + a 42 4 − a 13 + a 23 + a 33 + a 43 4 1 ] [ a 11 a 12 a 13 a 14 a 21 a 22 a 23 a 24 a 31 a 32 a 33 a 34 a 41 a 42 a 43 a 44 ] [ 1 0 0 0 0 1 0 0 0 0 1 0 a 11 + a 21 + a 31 + a 41 4 a 12 + a 22 + a 32 + a 42 4 a 13 + a 23 + a 33 + a 43 4 1 ] = [ b 11 b 12 b 13 b 14 b 21 b 22 b 23 b 24 b 31 b 32 b 33 b 34 b 41 b 42 b 43 b 44 ] begin{bmatrix} 1 & 0 & 0 & 0 \ 0 & cos theta & -sin theta & 0 \ 0 & sin theta & cos theta & 0 \ 0 & 0 & 0 & 1 end{bmatrix}begin{bmatrix} 1 & 0 & 0 & 0 \ 0 & 1 & 0 & 0 \ 0 & 0 & 1 & 0 \ -frac{a_{11}+a_{21}+a_{31}+a_{41}}{4} & -frac{a_{12}+a_{22}+a_{32}+a_{42}}{4} & -frac{a_{13}+a_{23}+a_{33}+a_{43}}{4} & 1 end{bmatrix}begin{bmatrix} a_{11} & a_{12} & a_{13} & a_{14} \ a_{21} & a_{22} & a_{23} & a_{24} \ a_{31} & a_{32} & a_{33} & a_{34} \ a_{41} & a_{42} & a_{43} & a_{44} end{bmatrix}begin{bmatrix} 1 & 0 & 0 & 0 \ 0 & 1 & 0 & 0 \ 0 & 0 & 1 & 0 \ frac{a_{11}+a_{21}+a_{31}+a_{41}}{4} & frac{a_{12}+a_{22}+a_{32}+a_{42}}{4} & frac{a_{13}+a_{23}+a_{33}+a_{43}}{4} & 1 end{bmatrix}=begin{bmatrix} b_{11} & b_{12} & b_{13} & b_{14} \ b_{21} & b_{22} & b_{23} & b_{24} \ b_{31} & b_{32} & b_{33} & b_{34} \ b_{41} & b_{42} & b_{43} & b_{44} end{bmatrix} 10000cosθsinθ00−sinθcosθ00001 100−4a11+a21+a31+a41010−4a12+a22+a32+a42001−4a13+a23+a33+a430001 a11a21a31a41a12a22a32a42a13a23a33a43a14a24a34a44 1004a11+a21+a31+a410104a12+a22+a32+a420014a13+a23+a33+a430001 = b11b21b31b41b12b22b32b42b13b23b33b43b14b24b34b44
其中, b i j b_{ij} bij表示旋转后的矩阵元素。
假设我们要将一个点 ( x , y , z ) (x, y, z) (x,y,z) 绕 Y 轴旋转 θ theta θ 角度,那么旋转后的新点坐标为 ( x ′ , y ′ , z ′ ) (x', y', z') (x′,y′,z′)。
我们可以先将坐标系绕 Y 轴逆时针旋转 θ theta θ 角度,这样点 ( x , y , z ) (x, y, z) (x,y,z) 就落在了新的坐标系中。此时,点 ( x ′ , y ′ , z ′ ) (x', y', z') (x′,y′,z′) 的坐标就是它在新坐标系中的坐标。然后再将坐标系逆时针旋转 − θ -theta −θ 角度,这样点 ( x ′ , y ′ , z ′ ) (x', y', z') (x′,y′,z′) 就回到了原来的坐标系中。
根据三维坐标系中的旋转矩阵推导公式可知:
[ x ′ y ′ z ′ 1 ] = [ cos θ 0 sin θ 0 0 1 0 0 − sin θ 0 cos θ 0 0 0 0 1 ] [ x y z 1 ] begin{bmatrix}x'\y'\z'\1end{bmatrix} = begin{bmatrix}costheta & 0 & sintheta & 0\0 & 1 & 0 & 0\-sintheta & 0 & costheta & 0\0 & 0 & 0 & 1end{bmatrix} begin{bmatrix}x\y\z\1end{bmatrix} x′y′z′1 = cosθ0−sinθ00100sinθ0cosθ00001 xyz1
因此,绕 Y 轴旋转 θ theta θ 角度的矩阵为:
[ cos θ 0 sin θ 0 0 1 0 0 − sin θ 0 cos θ 0 0 0 0 1 ] begin{bmatrix}costheta & 0 & sintheta & 0\0 & 1 & 0 & 0\-sintheta & 0 & costheta & 0\0 & 0 & 0 & 1end{bmatrix} cosθ0−sinθ00100sinθ0cosθ00001
假设我们有一个4x4的矩阵 M M M,它的每个元素为 m i j m_{ij} mij,我们想要将它绕着Z轴旋转一个角度 θ theta θ。为了完成这个任务,我们可以使用下面的矩阵 R R R:
R = [ cos ( θ ) − sin ( θ ) 0 0 sin ( θ ) cos ( θ ) 0 0 0 0 1 0 0 0 0 1 ] R=begin{bmatrix} cos(theta) & -sin(theta) & 0 & 0 \ sin(theta) & cos(theta) & 0 & 0 \ 0 & 0 & 1 & 0 \ 0 & 0 & 0 & 1 \ end{bmatrix} R= cos(θ)sin(θ)00−sin(θ)cos(θ)0000100001
我们将 M M M和 R R R相乘,得到一个新的矩阵 M ′ M' M′,它是旋转后的矩阵:
M ′ = M × R M' = Mtimes R M′=M×R
这里是具体的推导过程:
M i ′ = f ( M i ) = R × M i M'_i = f(M_i) = Rtimes M_i Mi′=f(Mi)=R×Mi
M ′ = [ f ( M 1 ) , f ( M 2 ) , f ( M 3 ) , f ( M 4 ) ] M' = [f(M_1), f(M_2), f(M_3), f(M_4)] M′=[f(M1),f(M2),f(M3),f(M4)]
M ′ = [ R × M 1 , R × M 2 , R × M 3 , R × M 4 ] = [ cos ( θ ) − sin ( θ ) 0 0 sin ( θ ) cos ( θ ) 0 0 0 0 1 0 0 0 0 1 ] [ m 11 m 12 m 13 m 14 m 21 m 22 m 23 m 24 m 31 m 32 m 33 m 34 m 41 m 42 m 43 m 44 ] = [ cos ( θ ) m 11 − sin ( θ ) m 21 cos ( θ ) m 12 − sin ( θ ) m 22 cos ( θ ) m 13 − sin ( θ ) m 23 cos ( θ ) m 14 − sin ( θ ) m 24 sin ( θ ) m 11 + cos ( θ ) m 21 sin ( θ ) m 12 + cos ( θ ) m 22 sin ( θ ) m 13 + cos ( θ ) m 23 sin ( θ ) m 14 + cos ( θ ) m 24 m 31 m 32 m 33 m 34 m 41 m 42 m 43 m 44 ] begin{aligned} M' &= [Rtimes M_1, Rtimes M_2, Rtimes M_3, Rtimes M_4] \ &=begin{bmatrix} cos(theta) & -sin(theta) & 0 & 0 \ sin(theta) & cos(theta) & 0 & 0 \ 0 & 0 & 1 & 0 \ 0 & 0 & 0 & 1 \ end{bmatrix} begin{bmatrix} m_{11} & m_{12} & m_{13} & m_{14} \ m_{21} & m_{22} & m_{23} & m_{24} \ m_{31} & m_{32} & m_{33} & m_{34} \ m_{41} & m_{42} & m_{43} & m_{44} \ end{bmatrix} \ &=begin{bmatrix} cos(theta)m_{11}-sin(theta)m_{21} & cos(theta)m_{12}-sin(theta)m_{22} & cos(theta)m_{13}-sin(theta)m_{23} & cos(theta)m_{14}-sin(theta)m_{24} \ sin(theta)m_{11}+cos(theta)m_{21} & sin(theta)m_{12}+cos(theta)m_{22} & sin(theta)m_{13}+cos(theta)m_{23} & sin(theta)m_{14}+cos(theta)m_{24} \ m_{31} & m_{32} & m_{33} & m_{34} \ m_{41} & m_{42} & m_{43} & m_{44} \ end{bmatrix} end{aligned} M′=[R×M1,R×M2,R×M3,R×M4]= cos(θ)sin(θ)00−sin(θ)cos(θ)0000100001 m11m21m31m41m12m22m32m42m13m23m33m43m14m24m34m44 = cos(θ)m11−sin(θ)m21sin(θ)m11+cos(θ)m21m31m41cos(θ)m12−sin(θ)m22sin(θ)m12+cos(θ)m22m32m42cos(θ)m13−sin(θ)m23sin(θ)m13+cos(θ)m23m33m43cos(θ)m14−sin(θ)m24sin(θ)m14+cos(θ)m24m34m44
因此,将一个4x4的矩阵绕着Z轴旋转一个角度 θ theta θ,就可以使用上面的矩阵 R R R,并将它与原矩阵 M M M相乘得到旋转后的矩阵 M ′ M' M′。
本文发布于:2024-02-02 00:29:13,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170681042540203.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |