EulerMatrix[{α,β,γ}]
現行の
軸の周りで α 分回転させ,次に現行の
軸の周りで β 分回転させ,次に現行の
軸の周りで γ 分回転させることで形成される3Dオイラー回転行列を与える.
EulerMatrix[{α,β,γ},{a,b,c}]
最初に現行の a 軸の周りで α 分回転させ,次に現行の b 軸の周りで β 分,次に現行の c 軸の周りで γ 分回転させることに相当する3Dオイラー回転行列を与える.
EulerMatrix
EulerMatrix[{α,β,γ}]
現行の
軸の周りで α 分回転させ,次に現行の
軸の周りで β 分回転させ,次に現行の
軸の周りで γ 分回転させることで形成される3Dオイラー回転行列を与える.
EulerMatrix[{α,β,γ},{a,b,c}]
最初に現行の a 軸の周りで α 分回転させ,次に現行の b 軸の周りで β 分,次に現行の c 軸の周りで γ 分回転させることに相当する3Dオイラー回転行列を与える.
詳細とオプション
- 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でよい.しかし,任意の3D回転を指定するために十分一般的である組合せは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 回転 
- 3軸すべてが異なる回転
-
{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を使って3Dでグラフィックスのプリミティブを回転させる:
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を使って3D画像を回転させる:
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)
EulerMatrix[{(3π/4), (π/3), (π/3)}, TargetStructure -> "Dense"]EulerMatrix[{(3π/4), (π/3), (π/3)}, TargetStructure -> "Orthogonal"]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})//MatrixFormベクトル{1,1,0}は曲面上の任意の点で回転させることができる:
ParametricPlot3D[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とロックされた m2のケースである:
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]]]}z-y-z 回転についての,アンロックされた m1とロックされた m2のケース:
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π}]}y-x-z 回転についての,ロックされた m1とアンロックされた m2のケース:
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は3回転に相当する:
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 回転を行うときのように2度である:
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 回転を行うときのように1度である:
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は任意の回転を3軸配向回転についてパラメータ化する:
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 Language. 2015. "EulerMatrix." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/EulerMatrix.html.
APA
Wolfram Language. (2015). EulerMatrix. Wolfram Language & System Documentation Center. Retrieved from 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: 06-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: 06-September-2026]}