-
Notifications
You must be signed in to change notification settings - Fork 0
/
mathlog_QuaternionRotation.tex
192 lines (159 loc) · 9.77 KB
/
mathlog_QuaternionRotation.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
\documentclass{jlreq}
\usepackage[pdfusetitle]{hyperref}
\hypersetup{colorlinks,allcolors=blue}
\usepackage{luatexja-fontspec}
\setmainjfont{YuKyo_Yoko-Medium}[BoldFont=YuKyo_Yoko-Bold]
\setsansjfont{YuGo-Medium}[BoldFont=YuGo-Bold]
\usepackage{stix2}
\usepackage[scaled]{helvet}
\usepackage{inconsolata}
\usepackage{mathtools}
\mathtoolsset{showonlyrefs=true}
\numberwithin{equation}{section}
\usepackage{amsthm,thmtools}
\declaretheoremstyle[thmbox={style=M,bodystyle=\upshape}]{usmstyle}
\declaretheoremstyle[qed=\qedsymbol,bodyfont=\upshape]{usmproofstyle}
\declaretheorem[style=usmstyle,numberwithin=section,name=Definition]{definition}
\declaretheorem[style=usmstyle,sibling=definition,name=Theorem]{theorem}
\declaretheorem[style=usmstyle,sibling=definition,name=Lemma]{lemma}
\declaretheorem[style=usmstyle,sibling=definition,name=Example]{example}
\declaretheorem[style=usmproofstyle,numbered=no,name=Proof]{usmproof}
\renewenvironment{proof}{\begin{usmproof}}{\end{usmproof}}
\newcommand{\ii}{\mathrm{i}}
\newcommand{\jj}{\mathrm{j}}
\newcommand{\kk}{\mathrm{k}}
\title{四元数による回転の記述}
\author{宇佐見 公輔}
\date{2022年5月6日}
\begin{document}
\maketitle
3次元の回転変換を四元数で記述する方法を紹介します。なお、この内容は先日開催された\href{https://tsudoionline.netlify.app/03/}{第3回すうがく徒のつどい}の「四元数と回転」で話した内容の一部です。その際の\href{https://github.com/usami-k/mathematics/blob/master/2022/QuaternionRotationTsudoi/QuaternionRotationTsudoi.pdf}{講演資料}では計算を省略しましたが、今回は計算も書きます。
\section{四元数の定義}
\begin{definition}[四元数]
$x_0+x_1\ii+x_2\jj+x_3\kk$($x_i\in\mathbb{R}$)とあらわされる数を、四元数と呼びます。ここで、$\ii$、$\jj$、$\kk$は実数とは異なる数であり、次の関係式を満たすものです。四元数の虚数単位と呼ばれます。
\begin{gather}
\ii^2=\jj^2=\kk^2=-1\\
\ii\jj=-\jj\ii=\kk,\quad\jj\kk=-\kk\jj=\ii,\quad\kk\ii=-\ii\kk=\jj
\end{gather}
\end{definition}
四元数の乗法は非可換である点に注意してください。実数と実数の積や実数と虚数との積は可換です。しかし、虚数と虚数の積は可換とは限りません。
四元数$x=x_0+x_1\ii+x_2\jj+x_3\kk$に対して、四元数$\overline{x}$を次で定義し、$x$の共役と呼びます。
\begin{equation}
\overline{x}:=x_0-x_1\ii-x_2\jj-x_3\kk
\end{equation}
四元数$x=x_0+x_1\ii+x_2\jj+x_3\kk$に対して、実数$|x|$を次で定義し、$x$の大きさと呼びます。
\begin{equation}
|x|:=\sqrt{x_0^2+x_1^2+x_2^2+x_3^2}
\end{equation}
共役と大きさのあいだに次のような関係があります。これは実際に計算することで分かります。この関係は後で計算に使います。
\begin{equation}
x\overline{x}=|x|^2
\end{equation}
四元数$x=x_0+x_1\ii+x_2\jj+x_3\kk$と$y=y_0+y_1\ii+y_2\jj+y_3\kk$に対して、実数$\langle x|y\rangle$を次で定義し、$x$と$y$の内積と呼びます。
\begin{equation}
\langle x|y\rangle:=x_0y_0+x_1y_1+x_2y_2+x_3y_3
\end{equation}
共役と内積のあいだに次のような関係があります。これは実際に計算することで分かります。この関係は後で計算に使います。
\begin{equation}
x\overline{y}+y\overline{x}=2\langle x|y\rangle
\end{equation}
\section{四元数と3次元空間の対応}
\begin{definition}[純虚四元数]
実部を持たない四元数、すなわち次の形の四元数を純虚四元数と呼びます($x_i\in\mathbb{R}$)。
\begin{equation}
x_1\ii+x_2\jj+x_3\kk
\end{equation}
\end{definition}
純虚四元数と3次元ベクトル空間のベクトルを、次のように対応させます。
\begin{equation}
x_1\ii+x_2\jj+x_3\kk\leftrightarrow(x_1,x_2,x_3)
\end{equation}
純虚四元数$x=x_1\ii+x_2\jj+x_3\kk$と$y=y_1\ii+y_2\jj+y_3\kk$に対して、純虚四元数$x\times y$を次で定義し、$x$と$y$の外積と呼びます。
\begin{equation}
x\times y:=(x_2y_3-x_3y_2)\ii+(x_3y_1-x_1y_3)\jj+(x_1y_2-x_2y_1)\kk
\end{equation}
これは3次元ベクトル空間の外積と対応しています。
純虚四元数$x$と$y$の積は内積と外積であらわすことができます。これは実際に計算することで分かります。
\begin{equation}
xy=-\langle x|y\rangle+x\times y
\end{equation}
この関係から次が導けます。これは後で計算に使います。
\begin{equation}
xy-yx=2(x\times y)
\end{equation}
\section{四元数による回転}
四元数を使って、3次元空間の回転を次のように記述できます。
\begin{theorem}[四元数による回転]
大きさ$1$のベクトル$\vec{n}$があるとします。点$X$を$\vec{n}$の周りに角$\theta$だけ回転した点を$X'$とします。$X$の位置ベクトルに対応する純虚四元数を$x$、$X'$の位置ベクトルに対応する純虚四元数を$x'$とするとき、次が成り立ちます。
\begin{equation}
x'=qx\overline{q}
\end{equation}
ただし、$q$は次の四元数です($n$は$\vec{n}$に対応する純虚四元数)。
\begin{equation}
q=\cos\frac{\theta}{2}+\left(\sin\frac{\theta}{2}\right)n
\end{equation}
\end{theorem}
なお、$q$は大きさ$1$の四元数です。実際、$n=n_1\ii+n_2\jj+n_3\kk$とすると、次のようになります。
\begin{align}
|q| & =\left(\cos\frac{\theta}{2}\right)^2+\left(\sin\frac{\theta}{2}\right)^2(n_1^2+n_2^2+n_3^2) \\
& =\left(\cos\frac{\theta}{2}\right)^2+\left(\sin\frac{\theta}{2}\right)^2 \\
& =1
\end{align}
\section{ロドリゲスの回転公式への帰着}
「四元数による回転」の定理の証明ですが、実は「\href{https://mathlog.info/articles/3190}{ロドリゲスの回転公式}」に帰着できます。
$qx\overline{q}$を計算すると、実は次のようになります。
\begin{equation}
qx\overline{q}=(\cos\theta)x+(1-\cos\theta)\langle n|x\rangle n+\sin\theta(n\times x)
\end{equation}
この右辺を、四元数と3次元空間の対応を考えてベクトルの記述にすれば次のようになります。
\begin{equation}
\cos\theta\vec{x}+(1-\cos\theta)\langle\vec{n}|\vec{x}\rangle\vec{n}+\sin\theta(\vec{n}\times\vec{x})
\end{equation}
これは、「ロドリゲスの回転公式」そのものです。したがって、「四元数による回転」の定理が証明できます。
あとは、$qx\overline{q}$の計算結果が確かに上述のとおりであることを示せば証明が完了します。
\section{四元数による回転の証明}
$q$の実部を$q_0$、虚部(純虚四元数部)を$q_1$とすると、次のように展開できます。
\begin{align}
qx\overline{q} & =(q_0+q_1)x(q_0-q_1) \\
& =q_0xq_0+(q_1xq_0-q_0xq_1)-q_1xq_1
\end{align}
これを、各項ごとに計算していきます。
$q_0xq_0$の部分は次のようになります。
\begin{align}
q_0xq_0 & =\left(\cos\frac{\theta}{2}\right)x\left(\cos\frac{\theta}{2}\right) \\
& =\left(\cos\frac{\theta}{2}\right)^2x
\end{align}
$q_1xq_0-q_0xq_1$の部分は次のように計算できます。
\begin{align}
q_1xq_0-q_0xq_1 & =\left(\sin\frac{\theta}{2}\right)nx\left(\cos\frac{\theta}{2}\right)-\left(\cos\frac{\theta}{2}\right)x\left(\sin\frac{\theta}{2}\right)n \\
& =\left(\cos\frac{\theta}{2}\right)\left(\sin\frac{\theta}{2}\right)(nx-xn) \\
& =2\left(\cos\frac{\theta}{2}\right)\left(\sin\frac{\theta}{2}\right)(n\times x) \\
& =\sin\theta(n\times x)
\end{align}
途中で、純虚四元数の外積の関係式を使いました。また、最後の変形は2倍角の公式$\sin 2\phi=2\cos\phi\sin\phi$を使いました。
$-q_1xq_1$の部分は次のようになります。
\begin{align}
-q_1xq_1 & =-\left(\sin\frac{\theta}{2}\right)nx\left(\sin\frac{\theta}{2}\right)n \\
& =-\left(\sin\frac{\theta}{2}\right)^2nxn
\end{align}
ここで、四元数の内積の関係式から次が分かります。
\begin{align}
2\langle n|x\rangle n & = (n\overline{x}+x\overline{n})n \\
& =n\overline{x}n+x\overline{n}n \\
& =-nxn+x|n|^2 \\
& =-nxn+x
\end{align}
ここから、$nxn=x-2\langle n|x\rangle n$が分かります。よって、次のようになります。
\begin{equation}
-q_1xq_1=-\left(\sin\frac{\theta}{2}\right)^2(x-2\langle n|x\rangle n)
\end{equation}
以上から、$qx\overline{q}$は次のようになります。
\begin{align}
qx\overline{q} & =q_0xq_0+(q_1xq_0-q_0xq_1)-q_1xq_1 \\
& =\left(\cos\frac{\theta}{2}\right)^2x+\sin\theta(n\times x)-\left(\sin\frac{\theta}{2}\right)^2(x-2\langle n|x\rangle n) \\
& =\left(\left(\cos\frac{\theta}{2}\right)^2-\left(\sin\frac{\theta}{2}\right)^2\right)x+2\left(\sin\frac{\theta}{2}\right)^2\langle n|x\rangle n+\sin\theta(n\times x) \\
& =(\cos\theta)x+(1-\cos\theta)\langle n|x\rangle n+\sin\theta(n\times x)
\end{align}
最後の変形は2倍角の公式$\cos 2\phi=(\cos\phi)^2-(\sin\phi)^2$と半角の公式$\left(\sin\frac{\theta}{2}\right)^2=\frac{1-\cos\theta}{2}$を使いました。
これで、無事に四元数による回転の式をロドリゲスの回転公式に帰着させて証明できました。
\end{document}