EulerMatrix[{α,β,γ}]
给出欧拉三维旋转矩阵,通过绕当前
轴旋转 α,再绕当前
轴旋转 β,然后再绕当前
轴旋转 γ 得到.
EulerMatrix[{α,β,γ},{a,b,c}]
给出欧拉三维旋转矩阵,相应于首先绕当前 a 轴旋转 α,再绕当前 b 轴旋转 β,最后绕当前 c 轴旋转 γ.
EulerMatrix
EulerMatrix[{α,β,γ}]
给出欧拉三维旋转矩阵,通过绕当前
轴旋转 α,再绕当前
轴旋转 β,然后再绕当前
轴旋转 γ 得到.
EulerMatrix[{α,β,γ},{a,b,c}]
给出欧拉三维旋转矩阵,相应于首先绕当前 a 轴旋转 α,再绕当前 b 轴旋转 β,最后绕当前 c 轴旋转 γ.
更多信息和选项
- EulerMatrix 也称为欧拉旋转矩阵或者欧拉旋转,角度 α、β 和 γ 通常称为欧拉角.
- EulerMatrix 通常用于将旋转指定为沿着坐标轴的基本旋转序列,其中每个相连的旋转称为当前或者固有的坐标框架.
- EulerMatrix[{α,β,γ}] 等价于 EulerMatrix[{α,β,γ},{3,2,3}].
- 默认 z-y-z 旋转 EulerMatrix[{α,β,γ},{3,2,3}]:
- EulerMatrix[{α,β,γ},{a,b,c}] 等价于
,其中 Rα,a=RotationMatrix[α,UnitVector[3,a]] 等. » - x-y-z 旋转 EulerMatrix[{α,β,γ},{1,2,3}]:
- 旋转轴 a、b 和 c 可以是任何整数1、2或者3,但是只有12个足够普适的组合可以指定任意三维旋转.
- 第一个和最后一个轴相同的旋转:
-
{3,2,3} z-y-z 旋转 (默认) 
{3,1,3} z-x-z 旋转 
{2,3,2} y-z-y 旋转 
{2,1,2} y-x-y 旋转 
{1,3,1} x-z-x 旋转 
{1,2,1} x-y-x 旋转 
- 具有三个完全不同的轴的旋转:
-
{1,2,3} x-y-z 旋转 
{1,3,2} x-z-y 旋转 
{2,1,3} y-x-z 旋转 
{2,3,1} y-z-x 旋转 
{3,1,2} z-x-y 旋转 
{3,2,1} z-y-x 旋转 
- 相邻轴重复的旋转仍然能生成旋转矩阵,但是无法使用 EulerAngles.
- EulerMatrix 支持 TargetStructure 选项,该选项指定了返回矩阵的结构. TargetStructure 的可能设置包括:
-
Automatic 自动选择返回的表示 "Dense" 将矩阵表示为密集矩阵 "Orthogonal" 将矩阵表示为正交矩阵 "Unitary" 将矩阵表示为酉矩阵 - EulerMatrix[…,TargetStructureAutomatic] 等价于 EulerMatrix[…,TargetStructure"Dense"].
范例
打开所有单元 关闭所有单元基本范例 (2)
范围 (6)
(m = EulerMatrix[{(3π/4), (π/3), (π/3)}])//MatrixFormv1 = {1, 0, 0};
v2 = m.v1Graphics3D[{Arrow[{{0, 0, 0}, v1}], StandardRed, Arrow[{{0, 0, 0}, v2}]}]m = EulerMatrix[{(3π/4), (π/3), (π/3.)}, {1, 2, 1}]v1 = {1, 0, 0}; v2 = m.v1;Graphics3D[{Arrow[{{0, 0, 0}, v1}], StandardRed, Arrow[{{0, 0, 0}, v2}]}]m = EulerMatrix[{(3π/4), (π/3), (π/3.)}, {1, 2, 3}]v1 = {1, 0, 0}; v2 = m.v1;Graphics3D[{Arrow[{{0, 0, 0}, v1}], StandardRed, Arrow[{{0, 0, 0}, v2}]}]使用 GeometricTransformation 旋转三维图形中的基元:
gr = {Cuboid[], AbsolutePointSize[10], Opacity[1], {Magenta, Point[{0, 0, 0}]}, {Green, Point[{1, 1, 1}]}};Graphics3D[{{Opacity[.35], Blue, gr}, GeometricTransformation[{Opacity[.85], Red, gr}, EulerMatrix[{(π/2), (π/4), (3π/4)}]]}, Boxed -> False]使用 TransformedRegion 旋转区域:
s1 = [image];m = EulerMatrix[{Pi / 4, -Pi / 2, -Pi / 4}];s2 = TransformedRegion[s1, AffineTransform@m];{s1, s2}使用 ImageTransformation 旋转三维图像:
r1 = ExampleData[{"TestImage3D", "Orbits"}];m = EulerMatrix[{Pi / 4, -Pi / 4, -Pi / 4}];r2 = ImageTransformation[r1, InverseFunction@AffineTransform@m, PlotRange -> All];{r1, r2}选项 (1)
TargetStructure (1)
Return the Euler rotation matrix as a dense matrix:
EulerMatrix[{(3π/4), (π/3), (π/3)}, TargetStructure -> "Dense"]Return the Euler rotation matrix as an orthogonal matrix:
EulerMatrix[{(3π/4), (π/3), (π/3)}, TargetStructure -> "Orthogonal"]Return the Euler rotation matrix as a unitary matrix:
EulerMatrix[{(3π/4), (π/3), (π/3)}, TargetStructure -> "Unitary"]应用 (6)
显示 (1)
$scene = First@[image];EulerRotationIllustration[{α_, β_, γ_}, {a_, b_, c_}] :=
Map[Graphics3D[GeometricTransformation[$scene, #], PlotRange -> 1.2, ImageSize -> 110, BoxStyle -> LightGray]&,
{EulerMatrix[{0, 0, 0}, {a, b, c}], EulerMatrix[{α, 0, 0}, {a, b, c}], EulerMatrix[{α, β, 0}, {a, b, c}], EulerMatrix[{α, β, γ}, {a, b, c}]}
]这是6个全部的 a-b-a 轴旋转. 第一个是标准 z-y-z 欧拉旋转:
EulerRotationIllustration[{Pi / 2, Pi / 2, Pi / 2}, {3, 2, 3}]EulerRotationIllustration[{Pi / 2, Pi / 2, Pi / 2}, {1, 2, 1}]EulerRotationIllustration[{Pi / 2, Pi / 2, Pi / 2}, {1, 3, 1}]EulerRotationIllustration[{Pi / 2, Pi / 2, Pi / 2}, {2, 1, 2}]EulerRotationIllustration[{Pi / 2, Pi / 2, Pi / 2}, {2, 3, 2}]EulerRotationIllustration[{Pi / 2, Pi / 2, Pi / 2}, {3, 1, 3}]然后是6个 a-b-c 轴旋转. 第一个是 x-y-z 欧拉旋转:
EulerRotationIllustration[{Pi / 2, Pi / 2, Pi / 2}, {1, 2, 3}]EulerRotationIllustration[{Pi / 2, Pi / 2, Pi / 2}, {1, 3, 2}]EulerRotationIllustration[{Pi / 2, Pi / 2, Pi / 2}, {2, 1, 3}]EulerRotationIllustration[{Pi / 2, Pi / 2, Pi / 2}, {2, 3, 1}]EulerRotationIllustration[{Pi / 2, Pi / 2, Pi / 2}, {3, 1, 2}]EulerRotationIllustration[{Pi / 2, Pi / 2, Pi / 2}, {3, 2, 1}]平衡环架 (5)
平衡环架是由可旋转的环组成的系统,对象可以以任何方向自转. 它们用于各种导航和摄像应用:
ring3 = {StandardRed, CapForm -> None, Tube[{{-.1, 0, 0}, {.1, 0, 0}}, 3], Line[{{{0, 0, 4}, {0, 0, 3}}, -{{0, 0, 4}, {0, 0, 3}}}]};
ring2 = {StandardBlue, CapForm -> None, Tube[{{-.1, 0, 0}, {.1, 0, 0}}, 2], Line[{{{0, 3, 0}, {0, 2, 0}}, -{{0, 3, 0}, {0, 2, 0}}}]};
ring1 = {CapForm -> None, Arrow[{{-1, 0, 0}, {1, 0, 0}}], StandardGreen, Line[{{{0, 0, 1}, {0, 0, 2}}, -{{0, 0, 1}, {0, 0, 2}}}], Tube[{{-.1, 0, 0}, {.1, 0, 0}}, 1]};平衡环架内的对象的方向可以使用 EulerMatrix 在圆环旋转角度下建模,从最外层到最里层的圆环. 注意使用 a-b-a 轴系统:
gimbal[{α_, β_, γ_}] :=
Graphics3D[{Thick, GeometricTransformation[ring3, EulerMatrix[{α, 0, 0}]], GeometricTransformation[ring2, EulerMatrix[{α, β, 0}]], GeometricTransformation[ring1, EulerMatrix[{α, β, γ}]]},
ViewPoint -> {1.3, -2.4, 2.}, PlotRange -> 3.5, PlotLabel -> NumberForm[MatrixForm[{{α, β, γ}}], 2]]Manipulate[gimbal[{α, β, γ}], {{α, 0}, 0, 2Pi, Pi / 32}, {{β, 0}, 0, 2Pi, Pi / 32}, {{γ, 0}, 0, 2Pi, Pi / 32}, SaveDefinitions -> True]具有 a-b-c 轴旋转的平衡环架对初始状态为所有环的轴彼此垂直的平衡环系统建模:
ring3 = {StandardRed, CapForm -> None, Tube[{{-.1, 0, 0}, {.1, 0, 0}}, 3], Line[{{{0, 0, 4}, {0, 0, 3}}, -{{0, 0, 4}, {0, 0, 3}}}]};
ring2 = {StandardBlue, CapForm -> None, Tube[{{0, 0, -.1}, {0, 0, .1}}, 2], Line[{{{0, 3, 0}, {0, 2, 0}}, -{{0, 3, 0}, {0, 2, 0}}}]};
ring1 = {CapForm -> None, Arrow[{{0, -1, 0}, {0, 1, 0}}], StandardGreen, Tube[{{0, -.1, 0}, {0, .1, 0}}, 1], Line[{{{1, 0, 0}, {2, 0, 0}}, -{{1, 0, 0}, {2, 0, 0}}}]};gimbal[{α_, β_, γ_}] :=
Graphics3D[{Thick, GeometricTransformation[ring3, EulerMatrix[{α, 0, 0}, {3, 2, 1}]], GeometricTransformation[ring2, EulerMatrix[{α, β, 0}, {3, 2, 1}]], GeometricTransformation[ring1, EulerMatrix[{α, β, γ}, {3, 2, 1}]]},
ViewPoint -> {1.3, -2.4, 2.}, PlotRange -> 3.5, PlotLabel -> NumberForm[MatrixForm[{{α, β, γ}}], 2]]Manipulate[gimbal[{α, β, γ}], {{α, 0}, 0, 2Pi, Pi / 32}, {{β, 0}, 0, 2Pi, Pi / 32}, {{γ, 0}, 0, 2Pi, Pi / 32}, SaveDefinitions -> True]旋转系统可能进入平衡环架锁,这种情况下某角度值降低了系统的自由度. 正常的未锁住的情况产生下面的式子:
(m1 = EulerMatrix[{α, β, γ}] /. {β -> π / 3})//MatrixFormParametricPlot3D[m1.{1, 1, 0}, {α, 0, 2π}, {γ, 0, 2π}](m2 = EulerMatrix[{α, β, γ}] /. {β -> Pi})//TrigReduce//MatrixFormParametricPlot3D[m2.{1, 1, 0}, {α, 0, 2π}, {γ, 0, 2π}, MeshStyle -> LightDarkSwitched[GrayLevel[0]]]当轴
时,平衡环架锁将出现,其中
. 下面的例子给出 x-y-x 旋转:
axes = {1, 2, 1};m1 = EulerMatrix[{α, β, γ}, axes] /. {β -> Pi / 2};
m2 = EulerMatrix[{α, β, γ}, axes] /. {β -> Pi};{ParametricPlot3D[m1.{1, 1, 1}, {α, 0, 2π}, {γ, 0, 2π}], ParametricPlot3D[m2.{1, 1, 1}, {α, 0, 2π}, {γ, 0, 2π}, MeshStyle -> LightDarkSwitched[GrayLevel[0]]]}axes = {3, 2, 3};m1 = EulerMatrix[{α, β, γ}, axes] /. {β -> Pi / 3};
m2 = EulerMatrix[{α, β, γ}, axes] /. {β -> Pi};{ParametricPlot3D[m1.{1, 1, 1}, {α, 0, 2π}, {γ, 0, 2π}], ParametricPlot3D[m2.{1, 1, 1}, {α, 0, 2π}, {γ, 0, 2π}, MeshStyle -> LightDarkSwitched[GrayLevel[0]]]}当轴全都不同
,当
时出现平衡环架锁. 下面的例子给出 x-y-z 旋转:
axes = {1, 2, 3};m1 = EulerMatrix[{α, β, γ}, axes] /. {β -> Pi / 2};m2 = EulerMatrix[{α, β, γ}, axes] /. {β -> Pi};{ParametricPlot3D[m1.{1, 1, 1}, {α, 0, 2π}, {γ, 0, 2π}, MeshStyle -> LightDarkSwitched[GrayLevel[0]]],
ParametricPlot3D[m2.{1, 1, 1}, {α, 0, 2π}, {γ, 0, 2π}]}axes = {2, 1, 3};m1 = EulerMatrix[{α, β, γ}, axes] /. {β -> Pi / 2};
m2 = EulerMatrix[{α, β, γ}, axes] /. {β -> Pi / 3};{ParametricPlot3D[m1.{1, 1, 1}, {α, 0, 2π}, {γ, 0, 2π}, MeshStyle -> LightDarkSwitched[GrayLevel[0]]], ParametricPlot3D[m2.{1, 1, 1}, {α, 0, 2π}, {γ, 0, 2π}]}属性和关系 (11)
EulerMatrix 对应于三个旋转:
rα = RotationMatrix[α, {0, 0, 1}];
rβ = RotationMatrix[β, {0, 1, 0}];
rγ = RotationMatrix[γ, {0, 0, 1}];Simplify[rα.rβ.rγ == EulerMatrix[{α, β, γ}]]eulerMatrix[{α_, β_, γ_}, {i_, j_, k_}] :=
RotationMatrix[α, UnitVector[3, i]].RotationMatrix[β, UnitVector[3, j]].RotationMatrix[γ, UnitVector[3, k]];Simplify[eulerMatrix[{α, β, γ}, {1, 2, 3}] == EulerMatrix[{α, β, γ}, {1, 2, 3}]]使用 EulerAngles 返回产生相同旋转矩阵的角度:
m1 = EulerMatrix[{π / 3, π / 2, π / 4}];m2 = EulerMatrix[EulerAngles[m1]];Simplify[m1 - m2]a1 = {π / 2, π, π / 3};
m1 = EulerMatrix[a1];a2 = EulerAngles[m1]EulerMatrix[a1] == EulerMatrix[a2]使用 RollPitchYawMatrix 在每个步骤关于全局坐标框架旋转:
Graphics3D[GeometricTransformation[Cuboid[], RollPitchYawMatrix[{π / 2, π / 2, π / 2}, {1, 2, 3}]], PlotRange -> 1]EulerMatrix 在每个步骤关于当前坐标框架旋转:
Graphics3D[GeometricTransformation[Cuboid[], EulerMatrix[{π / 2, π / 2, π / 2}, {1, 2, 3}]], PlotRange -> 1]如果两个相邻的旋转轴相同,例如
或者
,系统自由度为2,比如在执行 x-y-y 旋转时:
axes = {1, 2, 2};
m = EulerMatrix[{α, β, γ}, axes] /. {β -> #}& /@ Range[0, 3Pi / 2, Pi / 2];ParametricPlot3D[#.{1, 1, 1}, {α, 0, 2π}, {γ, 0, 2π}]& /@ m如果所有旋转轴是相同的话,例如
,系统只有一个自由度,比如当执行 x-x-x 旋转时:
axes = {1, 1, 1};
m = EulerMatrix[{α, β, γ}, axes] /. {β -> #}& /@ Range[0, 3Pi / 2, Pi / 2];ParametricPlot3D[#.{1, 1, 1}, {α, 0, 2π}, {γ, 0, 2π}]& /@ mEulerMatrix[{α,β,γ},{a,b,c}] 与 RollPitchYawMatrix[{γ,β,α},{c,b,a}] 相同:
EulerMatrix[{α, β, γ}, {1, 2, 3}] == RollPitchYawMatrix[{γ, β, α}, {3, 2, 1}]EulerMatrix 只应用于
:
EulerMatrix[{Pi / 4, 0, 0}].{1, 0, 0}对于一般维度,使用 RotationMatrix:
RotationMatrix[Pi / 4].{1, 0}RotationMatrix[Pi / 4, {{1, 0, 0, 0}, {0, 1, 0, 0}}].{1, 0, 0, 0}EulerMatrix 关于三个轴方向的选择可参数化任何旋转:
v = {1, 0, 0};EulerMatrix[{Pi / 4, -Pi / 4, 0}].v对于一般轴旋转,使用 RotationMatrix:
RotationMatrix[Pi / 2, {1, 0, 1}].vEulerMatrix 是行列式为1的正交矩阵:
m = EulerMatrix[{α, β, γ}];OrthogonalMatrixQ[m]Det[m]//SimplifyEulerMatrix 的逆是它的转置:
m = EulerMatrix[{α, β, γ}];Simplify[Transpose[m] == Inverse[m]]EulerMatrix[{α,β,γ}] 的逆是 EulerMatrix[{-γ,-β,-α}]:
Simplify[Inverse[EulerMatrix[{α, β, γ}]] == EulerMatrix[{-γ, -β, -α}]]EulerMatrix[{α,β,γ},{a,b,c}] 的逆是 EulerMatrix[{-γ,-β,-α},{c,b,a}]:
Simplify[Inverse[EulerMatrix[{α, β, γ}, {1, 2, 3}]] == EulerMatrix[{-γ, -β, -α}, {3, 2, 1}]]可能存在的问题 (1)
EulerMatrix 允许相等的相邻轴,而这产生一个旋转矩阵:
m = EulerMatrix[{Pi, Pi / 2, Pi / 8}, {1, 1, 2}]{OrthogonalMatrixQ[m], Det[m]}//Simplify但是,EulerAngles 要求相邻轴不同:
EulerAngles[m, {1, 1, 2}]m1 = EulerMatrix[{Pi / 3, 0, 0}, {3, 2, 1}]m2 = EulerMatrix[{α, β, γ}, {1, 1, 2}]FindInstance[And@@Thread[m1 == m2], {α, β, γ}]巧妙范例 (1)
使用 GeometricTransformation 可视化一定范围角度内球面的旋转:
Graphics3D[GeometricTransformation[{Hue[# / Pi], Sphere[{5, 0, 0}, 1]}, EulerMatrix[{#, Pi / 2, #}]]& /@ Range[0, 2Pi, Pi / 16]]Graphics3D[GeometricTransformation[{Hue[# / 4Pi], Sphere[{5, 0, 0}, 1]}, EulerMatrix[{#, Pi / 4, # * 4}]]& /@ Range[0, 2Pi, Pi / 64]]文本
Wolfram Research (2015),EulerMatrix,Wolfram 语言函数,https://reference.wolfram.com/language/ref/EulerMatrix.html (更新于 2024 年).
CMS
Wolfram 语言. 2015. "EulerMatrix." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2024. https://reference.wolfram.com/language/ref/EulerMatrix.html.
APA
Wolfram 语言. (2015). EulerMatrix. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/EulerMatrix.html 年
BibTeX
@misc{reference.wolfram_2026_eulermatrix, author="Wolfram Research", title="{EulerMatrix}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/EulerMatrix.html}", note=[Accessed: 10-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_eulermatrix, organization={Wolfram Research}, title={EulerMatrix}, year={2024}, url={https://reference.wolfram.com/language/ref/EulerMatrix.html}, note=[Accessed: 10-September-2026]}