「3Dグラフィックスのための · iii contents chapter1...

36

Transcript of 「3Dグラフィックスのための · iii contents chapter1...

Page 1: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数
Page 2: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

「3D グラフィックスのための

数学入門」

サンプルページ

この本の定価・判型などは,以下の URL からご覧いただけます.

http://www.morikita.co.jp/books/mid/009651

※このサンプルページの内容は,初版 1刷発行時のものです.

Page 3: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数
Page 4: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

i

ま え が き

近年,CGの世界は技術も理論も飛躍的に進歩した.たとえば,理論面では微分幾何,トポロジーあるいは多元環といった専門的な数学の理論が積極的に取り入れられている.これにより,従来の手法が改良されたり,新しい手法が生み出されている.しかし,これらの手法を理解するには通常,多くの予備知識を必要とする.そこで本書では,テーマを二つに絞って,高校数学あるいは大学初年度で学習する数学で理解できるものを取り上げた(この二つはアニメーションなど応用面で互いに関係してくるのであるが,その解説は入門レベルを超えるので,本書では述べない).

1番目のテーマは四元数(クォータニオン)である.3次元空間内の図形を回転するには,座標軸のまわりの回転を組み合わせて目的の回転を作り出すのが一般的である.この方法のよいところは,得られた式が,確かに回転を表していると納得できる形をしていることである.そこで本書では,第 2章から第 4章まででこの方法,とくにビューイング変換を詳しく解説する.通常は,ほぼこれだけで十分であるが,回転の組み合わせが特殊な状況になるとジンバルロックとよばれる致命的な欠陥が表れ,回転が実行不能になることがある.この欠点を解消するために導入されたのが四元数による回転である.ところが,四元数による回転の式は,一見するとどこが回転になっているのか理解するのが困難な形をしている.そこで第 5章では,四元数の定義から計算規則,四元数による回転の公式そして球面線形補間の公式までを丁寧に解説した.とくに球面線形補間の公式は,アニメーションなどで利用される重要な公式である.

2番目に取り上げたテーマは曲線の生成(とくに B-スプライン曲線とNURBS曲線)である.CAD/CAMで扱う曲線はNURBS曲線とよばれる曲線であり,これがデファクトスタンダードとなっている.大まかな言い方をすると,CAD/CAMでは 2次関数や 3次関数のグラフを重ね合わせて目的の曲線を作り出している.第 6章では,B-スプライン曲線およびNURBS曲線の生成原理を,具体例を交えて丁寧に解説している.

CG研究の世界の潮流は,高度な数学を積極的に取り入れ,新しい操作を作り出す方向に向かっている.数学は決してやさしくはないが,それに臆せず,読者が積極的に挑戦されることを期待している.そのとき本書が読者の役に立てればと,著者 3人

Page 5: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

ii まえがき

は願っている.最後に,本書執筆の紹介をしてくださった森北出版の塚田真弓氏,校閲と校正を担当し,たくさんの助言をくださった同出版社の福島崇史氏,また,ガウスとハミルトンに関する写真の使用を快諾してくださった友人の仙田章雄氏に感謝申し上げる.なお,本書の執筆に際して参考にした書籍を巻末にまとめた.これらの書籍の原著者の方々に対して,心から御礼申し上げる.

2015年 6月郡山 彬,原 正雄,峯崎俊哉

Page 6: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

iii

C O N T E N T S

CHAPTER 1 復習:高校の数学から大学の数学まで 1

1.1 数の世界 1

数の拡張 1/複素数 3

1.2 三角関数 6

1.3 ベクトル,行例 8

幾何ベクトル 8/行 列 10

1.4 写像と変換 11

1.5 同値関係 13

1.6 Ck-級関数 14

CHAPTER 2 CGの原理 15

2.1 座標系 15

代表的な座標系 15 /斉次座標(同次座標) 17

2.2 曲線の表示法 18

方程式 19 /パラメータ表示 21/極座標と極方程式 24/陰関数 26

2.3 ベクトルと行列(変換) 27

回転,拡大縮小,座標軸に関する対称変換 29 /平行移動 36/斉次座標による平行移動の行列表示 37/合成変換 37

演習問題 49

コラム:ベクトル空間とは? 28

コラム:ベクトル空間の基底とは? 48

Page 7: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

iv 目 次

CHAPTER 3 3次元CG 50

3.1 空間ベクトル 50

右手系,左手系 50/ベクトルについての計算公式 52/内積と外積の CGへの応用 54 /空間内の直線と平面 55

3.2 空間図形 58

曲 線 58/曲 面 59

3.3 空間ベクトルと行列(1次変換) 61

直交行列 62/平行移動 63/回 転 63 /座標平面に関する対称変換 67/拡大縮小 68/合成変換 68 / CGと逆変換 77

演習問題 80

CHAPTER 4 投影の数理 81

4.1 投影の数学 81

投影法 81 /透視投影 83 /平行投影 89

4.2 3次元ビューイング変換 93

ビューイング変換とは 93/座標系の回転と座標系の平行移動 94/ビューイングパラメータ 96/投影面座標への変換 98

演習問題 105

CHAPTER 5 四元数による回転 108

5.1 四元数 108

数の拡張 108/四元数とは 109/四元数の計算公式 111/共役四元数 112/四元数の絶対値 113/四元数の逆数 113

5.2 図形の回転と四元数 114

3次元空間内の図形の回転 114/ベクトル計算の準備 117 /ロドリゲスの回転公式 118/単位四元数の角による表示 122/三つの四元数の積 122/ロドリゲスの回転公式との比較 123/ロドリゲスの公式の行列表示 125/四元数の積の行列表現 126/単位四元数による回転の行列表現 127

5.3 四元数と球面線形補間 129

ベクトルの性質 129/線分の内分点の公式 130/ 2点間の線形補間 130/

Page 8: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

目 次 v

球面上での円弧の性質 131/球面上の 2点を結ぶ大円弧 131 /四元数による回転の球面線形補間 135

演習問題 138

コラム:ハミルトンと四元数 116

コラム:行列は目の子で探せ! 125

コラム:H ∼= R4 138

CHAPTER 6 曲線の生成 140

6.1 曲線の基礎 141

数学と CGの違い 141/標準的な曲線 141/空間曲線の条件 141

6.2 ベジェ曲線 142

バーンシュタイン多項式とベジェ曲線 142/ベジェ曲線の性質 144/ド・カステリョアルゴリズム 145/ベジェ曲線の連結 147/ベジェ曲線の分割 148

6.3 B-スプライン曲線 154

B-スプライン曲線の定義と種類 155/ B-スプライン基底関数 156/標準的 B-スプライン曲線 157/コックス ‒ ド・ブールのアルゴリズム 162/制御点とノットベクトルとの関係 165/基底関数のグラフ 166/ノットベクトルのはたらき 168/ノットベクトルの重複度と曲線の微分可能性との関係 174/開 B-スプライン曲線 174/閉周期的 B-スプライン曲線 180

6.4 NURBS曲線 183

円錐曲線と B-スプライン曲線 183/ NURBS曲線の定義 184/NURBS曲線の性質 188

6.5 曲 面 193

ベジェ曲面 193/ B-スプライン曲面,NURBS曲面 194

演習問題 197

演習問題解答 199

参考文献 216

索 引 217

Page 9: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数
Page 10: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

1

C H A P T E R 1

復習:高校の数学から大学の数学まで

この節は,高校レベルの数学の復習と第 2章以降の準備を兼ねている.はじめに複素数について説明する.本書では,複素数を使って CGの操作をするということはないが,第 5章で扱う四元数をよりよく理解するためには,ここでの知識が役に立つ.

Keyword 実数,複素数,ベクトル,行列,写像,変換

1.1 数の世界

数はどのように拡張されてきたのか,また,数について高校までにどんなことを学んだかを復習し,第 5章の四元数への導入とする.よくわかっている読者は省略してよい.

1.1.1 数の拡張数学の進歩とともに人類は種々の数の概念を手に入れてきた.最初に手に入れたのは,

1, 2, 3, . . .

という,負の数を含まない,いわゆる自然数とよばれるものである.その後 0が発見され,負の概念が取り入れられ,

. . . , −3, −2, −1, 0, 1, 2, 3, . . .

という整数を手に入れた.整数の世界では足し算,引き算,掛け算は自由にできるが,一般に割り算はできない.そこで,

Page 11: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

2 1 章 復習:高校の数学から大学の数学まで

a

b(a,bは整数,かつ b �= 0)

の形の数,有理数が考えられた.これにより,足す,引く,掛ける,割る(ただし,0による割り算は除く),いわゆる四則演算が自由にできるようになった.その後さらに発展が進み,x2 = 2のような方程式を解く必要も出てきた.有理数の世界では,この方程式は解をもたない.そこで数をさらに拡張し,実数を定義した.実数のうち,有理数でないものを無理数とよぶ.上記の方程式の解 ±

√2はもちろん,

円周率の πや自然対数の底 eなども無理数である(図 1.1参照).

図 1.1 いろいろな数の集合の包含関係.実際には有理数より無理数のほうが多い.

ところで,π や eは何か特殊な数に見えるので,無理数はそんなにたくさん存在しないように思われるが,実は,無理数の個数は有理数の個数より圧倒的に多いことが知られている.有理数全体の集合は自然数全体の集合と 1対 1に対応し,番号付けできる(このような集合を可算無限集合,あるいは可付番無限集合という).一方,無理数全体の集合は有名なカントールの対角線論法によって,非可算無限集合であることが証明できる.したがって,実数全体の集合も非可算無限集合である(詳細は数学の専門書にゆずる).無理数を定義したが,これではすぐに足りないことがわかる.たとえば x2 = −1を解こうとすると,これは実数の世界では答えがない.そこで,x2 = −1となる数として x = ±i = ±√−1という虚数が定義され,実数と虚数を合わせて複素数という数の世界がつくられた.これにより論理的な整合性は得られたのだが,この複素数という数は,日常に用いる数とは性質の異なるところもある.ただし,だからといって「それでは使い道がない」と早合点しないでほしい.われわれの住んでいる世界のいろいろな現象は複素数によって初めて記述できることもある.すなわち,複素数で表される世界こそが,われわれの住んでいるこの世界であるともいえるのである.なお,自然数は Natural numberであるからNまたは N,整数は Integerであるから Iまたは I,あるいは整数を表すドイツ語の ganze Zahlから Zまたは Zで表す.有理数は Rational numberであるが,次の実数が Real numberでRまたは Rを使うの

Page 12: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

1.1 数の世界 3

で,商を表す言葉 quotientの頭文字を使って,QまたはQで表す.複素数は Complexnumberというので,Cまたは Cと表す.ここで記号に関する注意を述べる.数学では,いまどのような対象について考えているか意識することが大事である.たとえば,自然数の足し算と有理数の足し算は本来は異なるものであるから,+N と+Qのように区別するべきであるが,それをしないのはなぜだろう.正確な話は代数学の講義で習うが,簡単にいえば,数の集合である自然数,整数,有理数,実数,複素数は,それぞれ後に出てくる集合に含まれて,演算が同一視できることがわかっているからである.対象が違う足し算と考えられた +N

と +Q は同じように計算できるので,一つの記号としてまとめてしまっているわけである.また,足し算の記号にはもう一つ意味しているものがある.「a + bと b + aの計算結果が等しい」というものである.これは当たり前ではないかと思うかもしれないが,そうではない.むしろ数学上の習慣として,a + b = b + aとなるから記号 +を使っているのである.この計算する順序を交換しても結果が変わらないことを,可換であるとか交換可能であるという.たとえば,a − b = b − aは正しくない.このように,演算により,可換かどうかが変わってくる.では,掛け算は可換であろうか.複素数の世界まででは a × b = b × aは正しい.この章の終わりに少し触れるが,複素数をさらに拡張した四元数を考えると,一般には a × b �= b × aである.さらに,数以外の対象,たとえば CGで頻繁に使われる行列の場合も,一般には a × b �= b × aとなる.

1.1.2 複素数複素数は,通常の計算(四則演算)ができ,a × b = b × aが成り立つという意味で,最も広い数の世界であることが知られている.一つの複素数 αは,二つの実数 a,bと虚数単位 iを使って,α = a + biのように表すことができる.ここでは,+の記号が用いられているが,これは足し算のことではなく,aと biという二つのものがまとめて一つのものだということを示しているにすぎない.また,工学(とくに,電気)系では,電流を表すのに記号 I や iを用いるため,虚数単位としては記号 j を用いて,複素数を a + bj のように表すことが多い.さらに,aと bという二つの実数にだけ注目して,複素数を (a, b)や [a, b]や 〈a, b〉のように対の形で表すこともあるので,ほかの本を読むときは注意する必要がある.ここで,複素数の計算に関する定義を述べる.以下,複素数 α,βを,実数 a,b,c,

dを使って α = a + bi,β = c + diと表す.

Page 13: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

4 1 章 復習:高校の数学から大学の数学まで

複素数の四則演算の定義

α + β = (a + bi) + (c + di) = (a + c) + (b + d)i

α − β = (a + bi) − (c + di) = (a − c) + (b − d)i

α × β = (a + bi) × (c + di) = (ac − bd) + (ad + bc)i

α ÷ β = (a + bi) ÷ (c + di) = ac + bd

c2 + d2 + bc − ad

c2 + d2 i

より厳密には,α ±C β = (a + bi) ±C (c + di) = (a ±R c) + (b ±R d)i(複号同順)のように,実数の四則演算を用いて定義される.このように,複素数の演算も実数と同様に行うことができるので,指数法則が同じように成立する.

複素数の指数法則

αnβn = (αβ)n, αm+n = αmαn (m,nは自然数)

複素数の入った式は,あたかも虚数単位 iが変数であるように考えて,文字式のように計算することができる.ただし,i2 = −1になることに注意する.たとえば,複素数の掛け算は次のように計算してもよい.

(a + bi)(c + di) = ac + adi + bci + bdi2 = ac − bd + (ad + bc)i

a + biを bi + aのように交換しても同じ複素数であることを示すためには,二つの複素数が等しいことをきちんと定義する必要がある.そこで,新しい記号を用意する.複素数 α = a + biにおいて,虚数単位のついていない実数部分(ここでは a)を実部 (real part)とよんで,記号 Re(α)または �(α)で表す.虚数単位の付いている実数(ここでは b)を虚部 (imaginary part)とよんで,記号 Im(α)または �(α)で表す.実数 aの絶対値 |a|については |a| =

√a2 が成り立つ.これを一般化して,複素数

α = a + biに対して,複素数の絶対値を

|α| = |a + bi| =√

a2 + b2

と定義する.次項で説明するように,複素数は複素平面上の点として表すことができるので,絶対値は,この点と原点との距離,あるいは,この 2点を結ぶ線分の長さとも考えられる.このことを意識して,|α|を複素数の大きさ,長さということもある.二つの複素数 α,β が等しいことを相等といい,次のように定義する.

Page 14: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

1.1 数の世界 5

複素数の相等

α = β ⇔ Re(α) = Re(β) かつ Im(α) = Im(β)

(ここでも厳密には =C と =R)

(1)複素平面前の項で,複素数の表し方として,(a, b)のように数の対として表すものもあることを述べた.これは,その形からデカルト座標との関係が連想される.実際,一つの複素数が一つの座標に対応するように考えて,平面上に表すとき,この平面のことを複素平面またはガウス平面という.この名前はガウスが最初に研究したことによる.この複素平面は x軸方向が実部を,y軸方向は虚部を表し,それぞれの軸を実軸,虚軸とよぶことがある.たとえば,α =

√3 + iという複素数は,図 1.2 (a)のような位

置に対応する点(あるいは位置ベクトル)として表すことができる.

図 1.2 平面上での複素数の表し方

複素平面上の点は別の表し方もできる.実軸(x軸)の正の方向を基準として反時計回りの角度 θ(これを偏角といい,arg αで表す)と原点からの距離 rの二つの数の対で(r, θ)と表す(図 1.2 (b)参照).この座標の表し方を極座標という.たとえば,

√3 + i

は複素平面としては (√

3, 1),極座標としては (2, 30°)となる.前項で述べたように,原点からの距離を複素数の絶対値という.すなわち,α = a + biのとき,|α| =

√a2 + b2

と定義する.(2)複素数の幾何学的性質零でない任意の複素数を α = a + biとする.|α| �= 0なので,

α =√

a2 + b2(

a√a2 + b2

+ b√a2 + b2

i

)と表せる.

Page 15: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

6 1 章 復習:高校の数学から大学の数学まで(a√

a2 + b2

)2

+(

b√a2 + b2

)2

= 1

より,適当な角 θをとると,

cos θ = a√a2 + b2

, sin θ = b√a2 + b2

と表せる.これより,

α = r(cos θ + i sin θ) (ただし,r =√

a2 + b2)

と書くことができる.この書き方を複素数 αの極形式とよぶ.上式にオイラーの関係式 eiθ = cos θ + i sin θ を使うと,α = reiθ と書ける.このように表すと,複素数の指数法則が成り立つことがわかる.すなわち,α = r1eiθ1,β = r2eiθ2 のとき,

αβ = (r1r2)ei(θ1+θ2)

が成り立つ.w = eiθ = cos θ + i sin θ を,絶対値が 1の任意の複素数(単位複素数)とする.w

と αの積は

wα = r1ei(θ+θ1) = r1{cos(θ + θ1) + i sin(θ + θ1)}

となる.この式は,単位複素数 w = eiθ は(複素)平面上の点を原点のまわりに θ回転する変換になっていることを表している.この事実は,第 5章で述べる単位四元数の性質に通じるものである.

1.2 三角関数

点 P(x, y)が x2 + y2 = 1をみたすとすると,点 Pは原点中心,半径 1の円周上にある.原点と Pを結ぶ半直線が x軸の正方向となす角を θとする.ここで角度は,x

軸の正の方向を基準として,反時計回りに測ったものを正とする(図 1.3参照).sin θ,cos θは図 1.4 (a)のような単位円(半径 1の円のこと)上の点 (x, y)に対して,x軸を基準とした反時計回りの角度 θを対応付けしたもので,sin θ = y,cos θ = x

となる.なお,半径 rの円,すなわち,x2 + y2 = r2のときは sin θ = y/r,cos θ = x/r

となる(図 1.4 (b)参照).単位円を用いると,その全円周が 2π になり,角度 θ が円弧の長さと比例すること

Page 16: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数
Page 17: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

108

C H A P T E R 5

四元数による回転

四元数という概念は多くの読者にはなじみが薄いと思われるので,はじめに四元数の定義と計算規則を説明する.複素数との決定的な違いは,積が一般には交換できないことである.最近の CGでは,ジンバルロックを回避するために四元数の回転が使われている.しかしながら,四元数による回転の方法は,昔から使われている角度を使った方法に比べるとわかりにくい.そこで後半では,単位四元数の積が回転になることを詳しく説明する.

Keyword ジンバルロック,四元数,共役四元数,単位四元数,ロドリゲスの公式,三重積の公式,球面線形補間

5.1 四元数

5.1.1 数の拡張1.1.2項で a + biの形の数が複素数であると学んだ.複素数は二つの実数 aと bからできている.そこで,使う実数をもっと増やして,a,b,cや a,b,c,dなどとしたら新しい数ができるのではないかと考えられる.ためしに虚数単位をもう一つ増やして,三つの実数を使った a + bi + cj の形の数を考えてみる.まず,i2 = j2 = −1である.積 ij の値を決める必要があるので,

ij = i (5.1)

としてみる.両辺に右から j を掛けてみると,ijj = ij となり,j2 = −1より

ij = −i (5.2)

Page 18: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

5.1 四元数 109

となる.式 (5.1)と式 (5.2)を辺々加えると,2ij = 0となる.よって,ij = 0ゆえにi = 0となるが,これは矛盾である.同様に,ij = 1や ij = −1などとしても矛盾が出る.このように,虚数単位を勝手に増やしても,数学的に矛盾を起こさない数はできない.ちょうど三つなら新しい数ができることを発見したのが,アイルランドの数学者ハミルトン (William R. Hamilton)であり,それがこれから述べる四元数である.

5.1.2 四元数とは

四元数の定義q = s + xi + yj + zk (s, x, y, z ∈ R)の形の数を四元数 (quaternion number)という.ここで,i,j,kは次の計算規則をみたす.

i2 = −1, j2 = −1, k2 = −1,

ij = −ji = k, jk = −kj = i, ik = −ki = j

四元数全体の集合をHと書く.

H = {s + xi + yj + zk | s, x, y, z ∈ R}

定義から,四元数は虚数単位を三つもった数であることがわかる.複素数は一つであった.少し数学的に述べると,複素数の集合Cは {1, i}を基底とする実数体上の 2次元ベクトル空間,四元数の集合Hは {1, i, j, k}を基底とする実数体上の 4次元ベクトル空間であるという(コラム[ベクトル空間の基底とは?]参照).

i,j,kは,たとえば ij = kであるから,両辺に右から kを掛けると ijk = k2 となる.また,k2 = −1だから,ijk = −1となることがわかる.和と積は複素数の場合と同様に,通常の文字式の和と積で定義する.ただし,ij,jk,などが現れたら i,j,kの計算規則に従って,k,iなどと置き換える.

四元数の和と積の定義▼

和:(s1 + x1i + y1j + z1k) + (s2 + x2i + y2j + z2k)

= (s1 + s2) + (x1 + x2)i + (y1 + y2)j + (z1 + z2)k

▼3 次元空間の基底ベクトル i,j,k と混同しないように注意する.四元数に現れる i,j,k は虚数単位であって,3 次元のベクトルではない.

Page 19: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

110 5 章 四元数による回転

積:(s1 + x1i + y1j + z1k)(s2 + x2i + y2j + z2k)

= (s1s2 − x1x2 − y1y2 − z1z2) + (s1x2 + s2x1 + y1z2 − y2z1)i

+ (s1y2 + s2y1 − x1z2 + x2z1)j + (s1z2 + s2z1 + x1y2 − x2y1)k

ここで重要な注意を述べる.i,j,kは ij = −ji,jk = −kj,ik = −kiをみたさなければならない.このことは,いままでの常識 2 × 3 = 3 × 2といった計算が四元数では成り立たないことを表している.実際,

(3 + 5i)(2 + 7j) = 6 + 21j + 10i + 35ij = 6 + 10i + 21j + 35k

(2 + 7j)(3 + 5i) = 6 + 10i + 21j + 35ji = 6 + 10i + 21j − 35k

より,(3 + 5i)(2 + 7j) �= (2 + 7j)(3 + 5i)である.つまり,複素数の積は可換であったが,四元数の積は非可換である.これが複素数と四元数との大きな違いである.

例 5.1 ここで 1.3.2 項で予告したように,q = 2 + 3i + 4j に対して,q2 を展開公式(a + b + c) = a2 + b2 + c2 + 2ab + 2bc + 2caで計算してみよう.

(2 + 3i + 4j)2

= 22 + (3i)2 + (4j)2 + 2 · 2 · 3i + 2 · 3i · 4j + 2 · 4j · 2= 4 − 9 − 16 + 12i + 24ij + 16j = −21 + 12i + 16j + 24k

一方,積の定義に戻って計算すると,

(2 + 3i + 4j)(2 + 3i + 4j)= 4 + 6i + 8j + 6i + 9i2 + 12ij + 8j + 12ji + 16j2

= 4 − 9 − 16 + 12i + 16j = −21 + 12i + 16j

となる.よって,展開公式を使った方法では正しい答えとならない.

四元数を表すたびに+を書いたり,i,j,kを書くのは面倒である.そこで,四元数の略記法を考える.分野や教科書によって種々あるが,本書では四元数q = s+xi+yj+zk

を q = (s, v),あるいは q = (s, (x, y, z))と略記する.ここで,v = (x, y, z)である.この記法を使うと,四元数の演算は次のように書ける.

略記法による四元数の和と積の計算公式

和:(s1, v1) + (s2, v2) = (s1 + s2, v1 + v2)積:(s1, v1)(s2, v2) = (s1s2 − v1 · v2, s1v2 + s2v1 + (v1 × v2))

Page 20: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

5.1 四元数 111

ここで,v1 · v2 はベクトルの内積,v1 × v2 はベクトルの外積を表す.

たとえば,p = 3 + 5i − 7j + 9kのとき,s = 3,v = (5, −7, 9)とすると,p = (s, v),あるいは p = (3, (5, −7, 9))となる.なお,通常の正負の混ざった式の計算法と同様に,p = 2 + (−5)i + (−7)j + 3k のような式は p = 2 − 5i − 7j + 3k のように略記する.今後もとくに断らずにこの略記法を使う.平面上の点と複素数を同一視した(第 1章参照)ように,実数や 3次元ベクトルを次のような四元数と同一視する.

四元数の同一視の規則(1) (s, 0)と実数 sを同一視する.すなわち (s, 0) = s

(2) (0, 0)と実数 0を同一視する.すなわち (0, 0) = 0(3) (1, 0)と実数 1を同一視する.すなわち (1, 0) = 1(4) (0, v)と 3次元ベクトル vを同一視する.すなわち (0, v) = v(0, v)の形の四元数を純虚四元数 (pure imaginary quaternion)とよぶ.

この同一視で,実数の集合は四元数の集合に含まれ,実数と四元数の和や積が計算できることになる.

5.1.3 四元数の計算公式四元数の計算は注意が必要であるが,掛け算の順序が変えられないこと以外は通常の数と同様の計算ができる.すなわち,次の計算公式が成り立つ.証明は略記法を使ってもよいし,i,j,k を使ってもよい.両辺を個別に計算し,比較するだけであるので,確認は読者に任せる.

四元数の計算公式(1) p + 0 = 0 + p(2) 1p = p1 = p(3) p + q = q + p(4) (p + q) + r = p + (q + r)(5) (pq)r = p(qr)(6) p(q + r) = pq + pr,(p + q)r = pr + qr(7) pq = 0 ⇒ p = 0または q = 0 (零因子が存在しない).

Page 21: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

112 5 章 四元数による回転

例題 5.1 k を任意の実数とし,p = (s, v)を任意の四元数とする.kpを求めよ.解答 同一視の規則から k = (k, 0)と書ける.よって,次のようになる.

kp = (k, 0)(s, v) = (ks − 0 · v, kv + s0 + (0 × v)) = (ks, kv)

この結果から四元数の実数倍が矛盾なく定義できる.▼1

例 5.2 p = (−3, (2i − 4j + 6k))のとき,2pの値は次のようになる.

2p = 2(−3, (2i − 4j + 6k)) = (−6, (4i − 8j + 12k))

5.1.4 共役四元数複素数 α = a + biに対して共役複素数 α = a − biを考えたように,四元数に対しても共役四元数を定義する.

共役四元数の定義q = (s, v) = s + xi + yj + zkを任意の四元数とする.

q = (s, −v) = s − xi − yj − zk

を qの共役四元数とよぶ.

例 5.3 q = (3, (4, −5, 6)) = 3 + 4i − 5j + 6k のとき,q の項は次のようになる.

q = (3, −(4, −5, 6)) = (3, (−4, 5, −6)) = 3 − 4i + 5j − 6k

共役四元数の性質

qq = qq = s2 + |v|2

とくに,qが単位四元数▼2 ならば s2 + |v|2 = 1だから,次のようになる

qq = qq = 1

▼1四元数の集合を実数体上のベクトル空間にするには,四元数の和および四元数の実数倍を矛盾なく定義する必要がある.

▼2s

2 + |v|2 = 1 となる四元数 q = (s, v) を単位四元数という(5.1.5 項参照).

Page 22: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

5.1 四元数 113

実際 qqを計算してみると,次のようになる.

qq = (s2 + v · v, −sv + sv − (v × v)) = (s2 + v · v, 0) = (s2 + |v|2, 0)= s2 + |v|2

5.1.5 四元数の絶対値前項の結果を利用して,次のように定義する.

四元数の絶対値任意の四元数 qに対して,

|q| = (qq)1/2 = (s2 + |v|2)1/2

と定義し,これを qの絶対値とよぶ(大きさとよぶこともある).とくに,|q| = 1,すなわち s2 + |v|2 = 1のとき,qを単位四元数とよぶ.

コラム[H ∼= R4]で述べるように,四元数の絶対値は 4次元ベクトル空間R4のベクトルの長さのことである.

5.1.6 四元数の逆数2の逆数は 1/2である.−5の逆数は −1/5である.一般に数 aの逆数とは,aa′ =

a′a = 1となる数 a′のことであり,それを通常 a′の代わりに 1/aあるいは a−1と書く.実数の逆数は誰でもよく知っている.それでは複素数の逆数はどんな数であろうか.零でない複素数 z = a + biについて,実際に求めてみよう.z は零でないから,その長さ(大きさ)|z|も零ではない.すなわち,|z|2 = a2 + b2 �= 0である.ここで,zと共役複素数 z の積を計算してみる.

zz = (a + bi)(a − bi) = a2 + b2 = |z|2

両辺を |z|2 で割ると,zz

|z|2 = 1

となる.そこで z′ = z/|z|2 とおくと,zz′ = 1となる.逆数の定義から,z′ が z の逆数であることがわかる.すなわち,z−1 = z/|z|2 である.たとえば,z = 2 + 3iの逆数は

z−1 = (2 + 3i)−1 = 213 − 3

13 i

Page 23: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

114 5 章 四元数による回転

である.これをまねして,最後に零でない四元数の逆数を定義する.四元数による割り算とは,この逆数を掛けることにほかならない.

四元数の逆数q �= 0ならば,qは積に関する逆元 q−1 をもつ.これを四元数の逆数とよぶ.このとき,

q−1 = q|q|2

と書ける.とくに qが単位四元数ならば,|q| = 1より q−1 = qである.

実際,q/|q|2 が qの逆元であることは,次のようにしてわかる.

q q|q|2 = 1

|q|2 (qq) = 1|q|2 |q|2 = 1

単位四元数は,四元数による回転にかかわる重要な四元数である.

例 5.4 q = 3 + 4i − 5j + 6k = (3, (4, −5, 6)) とする.q �= 0 だから逆数が存在する.実際に逆数 q−1 を求めてみる.四元数の長さの定義から,

|q|2 = 32 + 42 + (−5)2 + 62 = 86

であり,一方,共役四元数の定義から,

q = (3, −(4, −5, 6)) = (3, (−4, 5, −6)) = 3 − 4i + 5j − 6k

である.ゆえに,逆数は次のようになる.

q−1 = q|q|2 = 3

86 − 486 i + 5

86 j − 686k =

( 386 ,

(− 4

86 ,586 , − 6

86

))

5.2 図形の回転と四元数

5.2.1 3次元空間内の図形の回転3次元空間内の図形の回転には,通常角度による方法が使われる.これは x,y,z軸のまわりの回転を組み合わせた回転が使われているため,何を計算しているかがユーザーにとって直感的に理解しやすいという特徴をもつ.たとえば,飛行機の操縦では

Page 24: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数
Page 25: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

140

C H A P T E R 6

曲 線 の 生 成

たとえば,実験データの平面上での分布状態を表す曲線を描く,曲線状の部品を設計する,文字やパターンのデザインをするなど曲線の大まかな形状はわかっているが,数学的な式がわからないという場合はよく起こる.このようなとき,通常はいくつかのサンプル点を与えて,それらの点を通過する(場合によっては「近くを通過する」と通過の条件を弱めた)曲線を求めることになる.それが,この章の前半で解説するベジェ曲線や B-スプライン曲線である.基本的なアイデアは,サンプル点の間を滑らかに結ぶ曲線を,2次関数や 3次関数のグラフを重ね合わせてつくることである.2次関数や 3次関数は,いわゆる多項式関数といわれる関数で扱いが簡単であるという利点があるが,残念なことに,円は多項式関数をどのように重ね合わせても作り出すことができない.そこで,多項式関数の代わりに分数関数を使ったものが NURBS曲線である.NURBS曲線は,CAD/CAMの世界ではデファクトスタンダードとなっている重要な手法である.また,CGの世界では IGES (initial graphics exchange specification)

スタンダードになっている.このようなことから,NURBS曲線の理解はきわめて重要であることがわかる.本章の後半では NURBS曲線について,いくつかの実例も交えて解説する.また,実際に円が描けることも示す.本章の最後では曲面について,定義式のみを簡単に説明する.詳細は専門書を参照されたい.

Keyword ベジェ曲線,B-スプライン曲線,ノットベクトル,基底関数,開 B-

スプライン曲線,閉周期的 B-スプライン曲線,NURBS曲線

Page 26: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

6.1 曲線の基礎 141

6.1 曲線の基礎

6.1.1 数学と CGの違い数学と CGでは曲線の扱いが異なっている.簡単のために平面上の曲線で考える.P,Qを任意の 2点とし,v =

−→PQとする.このとき,

C1(t) = tv (0 � t � 1)

の像,すなわち {tv | 0 � t � 1}は線分 PQである.いま,C2(t)を

C2(t) =

⎧⎨⎩C1(2t)(

0 � t � 14

)C1

(23 t + 1

3

) (14 � t � 1

)と定義する.曲線 C2(t)の像も線分 PQである.したがって,CGでは同じ曲線と考えるが,数学では厳密に異なる曲線として扱う.すなわち,数学では写像そのものが曲線であって,写像の像(1.4節参照)とは異なる.ただし,本書では CGとして扱うので同じものと考える.

6.1.2 標準的な曲線今後,定義域が [0, 1]の曲線を標準的な曲線とよぶことにする.また,曲線全体がいくつかの部分曲線をつなぎ合わせてつくられているとき,一つひとつの部分曲線をセグメントとよぶことにする.いま,曲線 C1(t)が区間 [a, b]で定義されているとする.このとき,C2(t) = C1(a +

t(b − a)) = C1(tb + (1 − t)a)によって,新しい曲線 C2(t)を定義すると,C2(t)は [0, 1]を定義域とする曲線で,その像は C1(t)の像と一致する.したがって,この二つの曲線は同じものと考えてよい.このように,曲線の定義域は簡単に変えられるので,今後は主に [0, 1]を定義域とする曲線を考える.しかし,曲線を空間内を移動する点の軌跡と考えると,パラメータを変更することは点の移動速度を変えることになり,微分まで考えると接線ベクトルの大きさ(すなわち速度)が変化するので,注意が必要である.

6.1.3 空間曲線の条件tの多項式で表される曲線 C(t)が空間曲線(全体が平面に含まれてしまうことがない曲線)となるには,曲線にねじれが必要(すなわち,捩率 > 0)であることから,t

Page 27: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

142 6 章 曲線の生成

に関する次数は 3以上であることが必要である(詳細は数学の専門書にゆずる).曲線の例をつくるときはこのことに注意する必要がある.解説では平面曲線,空間曲線の区別をしないが,例を示すときは,もっともらしい空間内の点を与えるのが難しいことと計算の簡略化のために平面曲線を使用する.今後,点と位置ベクトルの同一視と記号の節約をし,点P(x, y, z)と位置ベクトル−→

OP =(x, y, z)を同じ太文字で,P(x, y, z),P = (x, y, z)あるいはPのように書くことにする.

6.2 ベジェ曲線

たとえば,平面上,あるいは空間内にいくつかの点が与えられたとき,これらを結ぶ曲線をつくりたいとする.最も簡単な方法は,線分で結び折れ線グラフをつくることである.しかし折れ線グラフには角があり,滑らかな曲線にはならない.ベジェ曲線とは,この折れ線グラフを近似する滑らかな曲線のことである.ベジェ曲線の作り方はいくつか知られている.どの方法を使っても結果は同じとなる.本書では,バーンシュタイン多項式とよばれるパラメータ tの多項式関数を使った定義を述べる.ベジェ曲線では,多項式の次数は曲線を定義するために与えた点の個数に依存する.これはベジェ曲線の欠点の一つであるが,後節で述べるように,曲線を連結したり分割することで,ある程度避けることもできる.

6.2.1 バーンシュタイン多項式とベジェ曲線P0, P1, . . . , Pn を任意に与えられた n + 1個の点とする.

バーンシュタイン多項式とベジェ曲線の定義P0, P1, . . . , Pnを制御点 (control points)とする n次のベジェ曲線 (Bezier curves)とは,次のような tの多項式である.

P(t) =n∑

i=0

PiBn,i(t) (0 � t � 1)

ここで,Bn,i(t)は n次のバーンシュタイン多項式 (Bernstein polynomial)で,次のように定義される.

Bn,i(t) =(

n

i

)ti(1 − t)n−i

(ここで,

(n

i

)= n!

i!(n − i)!

)ただし,00 = 1,0! = 1と約束する.

Page 28: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

6.2 ベジェ曲線 143

例 6.1 n = 2の場合(したがって,制御点は 3個となる),

B2,0(t) =(

20

)t0(1 − t)2 = (1 − t)2 …①

B2,1(t) =(

21

)t1(1 − t)1 = 2t(1 − t) …②

B2,2(t) =(

22

)t2(1 − t)0 = t2 …③

となる.いずれも放物線の一部である(図 6.1 (a)参照).ゆえに,

P(t) = (1 − t)2P0 + 2t(1 − t)P1 + t2P2

= ((1 − t)2 2t(1 − t) t2)

⎛⎝P0

P1

P2

⎞⎠= (t2 t 1)

⎛⎝ 1 −2 1−2 2 01 0 0

⎞⎠⎛⎝P0

P1

P2

⎞⎠となる.通常,最後に書いたような行列の形に書くことが多い.

図 6.1 n = 2 では 3 本の放物線のグラフ,n = 3 では 4 本の 3 次関数のグラフ

例 6.2 n = 3の場合(したがって,制御点は 4個となる),

B3,0(t) =(

30

)t0(1 − t)3 = (1 − t)3 …①

B3,1(t) =(

31

)t1(1 − t)2 = 3t(1 − t)2 …②

Page 29: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

144 6 章 曲線の生成

B3,2(t) =(

32

)t2(1 − t)1 = 3t2(1 − t) …③

B3,3(t) =(

33

)t3(1 − t)0 = t3 …④

となる.いずれも 3次関数の一部である(図 6.1 (b)参照).ゆえに,次のようになる.

P(t) = (1 − t)3P0 + 3t(1 − t)2P1 + 3t2(1 − t)P2 + t3P3

= ((1 − t)3 3t(1 − t)2 3t2(1 − t) t3)

⎛⎜⎜⎝P0

P1

P2

P3

⎞⎟⎟⎠

= (t3 t2 t 1)

⎛⎜⎜⎝−1 3 −3 13 −6 3 0

−3 3 0 01 0 0 0

⎞⎟⎟⎠⎛⎜⎜⎝

P0

P1

P2

P3

⎞⎟⎟⎠

6.2.2 ベジェ曲線の性質ベジェ曲線はいろいろな有用な性質をみたす.ここでは,よく使われる 3次のベジェ曲線について解説する.

(1)∑3

i=0 Bn,i(t) = 1より,ベジェ曲線はアフィン変換(線形変換と平行移動で表される変換(2.3節参照))で不変である.

(2) 4個の制御点をP0,P1,P2,P3とする.P0,P1,P2,P3をこの順に結んでできる多角形を制御多角形とよぶ.ベジェ曲線はこの多角形の内部に含まれる.

(3) ループやカスプ(嘴点)なども描くことができる(図 6.2参照.なお,参考に示した曲線の図は,細い線でサンプル点(制御点)を結ぶガイド折れ線を,太い線で

図 6.2

Page 30: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

6.2 ベジェ曲線 145

目的の曲線を描いている).(4) 両端点を補間する,すなわち,最初の点 P0 と最後の点 P3 を通過する.実際,

3次のベジェ曲線は

P(t) = (1 − t)3P0 + 3t(1 − t)2P1 + 3t2(1 − t)P2 + t3P3

と表せるので,t = 0と t = 1を代入すると,P(0) = P0,P(1) = P3 が確かめられる.(5) 両端点での接ベクトルが簡単にわかる.実際,P(t)を tで微分すると

P(t) = −3(1 − t)3P0 + 3(1 − t)(1 − 7t)P1 + 3t(2 − 3t)P2 + 3t2P3

となることから,

P′(0) = −3P0 + 3P1 = 3(P1 − P0) = 3−−−→P0P1

P′(1) = −3P2 + 3P3 = 3(P3 − P2) = 3−−−→P2P3

となる.この式から,始めの二つの制御点 P0,P1 によって曲線の始点とそこでの接線の方向が決まり,終わりの二つの制御点 P2,P3 によって曲線の終点とそこでの接線の方向が決まることがわかる.一般に,n次のベジェ曲線の場合は

P′(0) = n−−−→P0P1, P′(1) = n

−−−−−−→Pn−1Pn

となる(演習問題 6.3参照).

6.2.3 ド・カステリョアルゴリズム前項の再帰的な定義を使って,任意のパラメーター値 t ∈ [0, 1]における曲線上の点P(t)を求めるアルゴリズムをド・カステリョアルゴリズム (de Casteljau algorithm)とよぶ.再帰的定義から,アルゴリズムは以下のように書かれる.

ド・カステリョアルゴリズム▼

P0i (t) = Pi

Pji (t) = (1 − t)Pj−1

i (t) + tPj−1i+1 (t)

(j = 1, 2, . . . , n:再帰のステップ数,i = 0, 1, . . . , n − j:各ステップでつくられた新しい制御点の番号)P(t) = Pn

0 (t)

▼いま,t は任意に一つ固定されているので,Pji (t) 全体で一つの点(制御点)を表している.

Page 31: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

146 6 章 曲線の生成

証明はバーンシュタイン多項式の再帰的な性質を利用して行われるが,詳細は省略する.上式からわかるように,ステップ j における番号 iの制御点は,ステップ j − 1においてつくられた番号 i と i + 1 の制御点を両端点とする線分 Pj−1

i (t)Pj−1i+1 (t) を

t : 1 − tに内分する点である(5.3.2項参照).また,新たにつくられた 2点が 1 − tとtを掛けることによって,次の点を定めていることがわかる.このことに注意して,通常次のような表を作成してベジェ曲線を求めていく.なお,以下では記号を簡略化し,Pj

i (t)を Pji と書くことにする.

n = 3の場合について述べると,次のようになる.まず,最初に初期値 P0i = Pi を

使って,

第 1行 P00 P0

1 P02 P0

3

をつくる.次に j = 1とする.このとき iの動く範囲は i = 0, 1, 2となる.

第 2行 P10 P1

1 P12

を左端をそろえて第 1行の下に書く.次に j = 2とする.i = 0, 1となる.

第 3行 P20 P2

1

を左端をそろえて第 2行の下に書く.次に j = 3とする.i = 0だけとなる.第 3行の下に P3

0 を書く.最後に,表の上から下方向に ×(1 − t)を表す矢印を,上から左下に向けて ×tを表す矢印を記入する.以上の操作で,図 6.3 (a)のような表が完成する.最下段の P3

0 が求める値である.

図 6.3

Page 32: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

217

索 引

英数字1 次変換 13, 28, 621 対 1 12B-スプライン基底関数 156

の定義 157B-スプライン曲線 155開 155, 175整式型 155標準的 157閉周期的 180有理式型 155

B-スプライン曲面 194Ck-級の関数 14NURBS 曲線 184NURBS 曲面 194Slerp 135

あ 行アステロイド 23アフィン変換 28, 190アルキメデスの螺旋 24位置ベクトル 9, 51陰関数表示 19, 59上への写像 12円 22円錐曲線 184オイラーの関係式 6

か 行外積

の性質 52の定義 52

回転

原点のまわりの 29座標軸のまわりの 63任意の直線のまわりの 70任意の点のまわりの 38

回転角 63回転軸 63ガウス平面 5可換 3, 110拡大 34拡大縮小原点を基点とする 34任意の点を基点とする 41, 68

カージオイド 25カバリエ変換 91加法定理 7簡略化計算公式 157幾何ベクトル 9基点 34逆写像 13逆像 12逆変換 38, 77キャビネ変換 91球面線形補間 134, 135行 10行ベクトル 10共役四元数

の性質 112の定義 112

行列 10極形式 6極座標 5極座標系 16曲線の次数 155

Page 33: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

218 索 引

極方程式 24虚軸 5虚数 2虚部 4交換可能 3合成写像 13合成変換 37恒等写像 12コックス ‒ ド・ブールのアルゴリズム 163弧度法 7

さ 行参考視点 96三重積の公式 53三葉形 25四元数 109

の逆数 114の計算公式 111の絶対値 113の定義 109の内積 136の略記法 110の和と積の定義 109

自然数 1実軸 5実射影空間 17実部 4視野(視界)の上方向ベクトル 97写像 11写像 f の像 12終端ノット 157縮小 34純虚四元数 111ジンバル 115ジンバルロック 115数ベクトル 9スケーリング定数 34, 68スケーリング変換 34, 68制御多角形 144制御点 142斉次 34斉次座標 17斉次制御点 191

斉次変換 189整数 1成分 8, 10成分表示 9正方行列 10セグメント 141線形変換 13線形補間 131全射 12全単射 12像 12双曲線 184

た 行大円 131大円弧 131対角成分 10対象投影面間距離 97対称変換座標軸に関する 35座標平面に関する 67楕円 22, 184縦ベクトル 10単位円 6単位四元数 113

による回転の行列表現 128による回転の公式 124の角による表示 122

単射 12値域 11直線 55

の方程式 55直投影 90直交行列 62直交する成分 118定義域 11定数写像 12定値写像 12デカルト座標系 15デカルトの正葉線 20転置行列 10投影法 81投影面参照点 97

Page 34: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

索 引 219

投影面法ベクトル 96同次座標 17透視投影 83一般的な 85のパラメータ 84

標準的な 84同値関係 14同値類 14ド・カステリョアルゴリズム 145トレース 10

な 行内積の定義 52内部ノット 157内分点の公式 130ノットベクトル 155一様 155周期的 180

は 行媒介変数 21媒介変数表示 21パラメータ 21パラメータ表示 21, 58, 59バーンシュタイン多項式 142非可換 110左手系 50ビューイングパラメータ 96ビューイング変換 94標準的な曲線 141複素数 2

の指数法則 4の四則演算の定義 4の絶対値 4の相等 5

複素平面 5平行移動 36, 63平行投影 83, 89一般の 90のパラメータ 89

平行な成分 118平面 57

のベクトル方程式 57

の方程式 57ベクトル 8, 9

の外積 111の内積 111の長さ 113

ベジェ曲線 142の分割 148の分割公式 152の連結定理 148

ベジェ曲面 194偏角 5変換 11方向ベクトル 55法線ベクトル 57放物線 184法ベクトル 57補間 129

ま 行右手系 50右ねじの回転 53無理数 2

や 行矢印ベクトル 9有向線分 8有理式 183有理式パラメータ表示 184有理数 2陽関数表示 19, 58, 59横ベクトル 10四葉形 25

ら 行ラジアン 7リサージュ曲線 23列 10列ベクトル 10ロドリゲスの回転公式 118

わ 行ワールド座標系 82

Page 35: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数
Page 36: 「3Dグラフィックスのための · iii contents chapter1 復習:高校の数学から大学の数学まで 1 1.1 数の世界 1 数の拡張 1 /複素数 3 1.2 三角関数

著 者 略 歴郡山 彬(こおりやま・あきら)

1968 年 東京都立大学理学部数学科卒業1974 年 同大学院理学研究科数学専攻博士課程単位取得退学1974 年 東海大学理学部情報数理学科講師1985 年 東海大学理学部情報数理学科教授1985 年~1986 年 米マサチューセッツ工科大学 (MIT) 客員研究員2011 年 東海大学名誉教授

現在に至る,理学博士

原 正雄(はら・まさお)1985 年 早稲田大学教育学部理学科数学専修卒業1991 年 早稲田大学教育学部助手1992 年 東海大学理学部情報数理学科助手2007 年 東海大学理学部情報数理学科准教授

現在に至る,博士(理学)

峯崎 俊哉(みねざき・としや)1982 年 東海大学理学部情報数理学科卒業1984 年 同大学院理学研究科修士課程修了1986 年 東海大学理学部基礎研究室助手2009 年 東海大学理学部基礎教育研究室准教授

現在に至る

編集担当 福島崇史(森北出版)編集責任 富井 晃(森北出版)組 版 プレイン印 刷 日本制作センター製 本 同

3Dグラフィックスのための数学入門-クォータニオン・スプライン曲線の基礎-

© 郡山 彬・原 正雄・峯崎俊哉 2015

2015 年 10月 26 日 第 1 版第 1 刷発行 【本書の無断転載を禁ず】

著 者 郡山 彬・原 正雄・峯崎俊哉発 行 者 森北博巳発 行 所 森北出版株式会社

東京都千代田区富士見 1-4-11(〒102-0071)電話 03-3265-8341 / FAX 03-3264-8709http://www.morikita.co.jp/日本書籍出版協会・自然科学書協会 会員

<(社)出版者著作権管理機構 委託出版物>

落丁・乱丁本はお取替えいたします.Printed in Japan/ ISBN978-4-627-09651-6