回答編集履歴

2

誤記訂正

2017/05/18 05:06

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -34,11 +34,11 @@
34
34
 
35
35
 
36
36
 
37
- 捕捉:クォータニノンの計算式とか書いてあるサイトとかありますがそういうことを理解しなくても考え方だけ理解すればひとまずは充分です。
37
+ 捕捉:クォータニノンの計算式書いてあるサイトとかありますがそういうことを理解しなくても考え方だけ理解すればひとまずは充分です。
38
38
 
39
39
 
40
40
 
41
- 実はglRotatefはクォータニオンによる回転操作と考え方自体は同じなのです。X軸周りに何度、Y軸周りに何度・・・と考えるのはご質問にあるとおり分かりづらいですが、回転軸をこの方向にして何度ぐらい回転・・・という感じに考えると比較的思い通りに一度で回転できます。それが自分の回答の最後に書いたこと「**適当な回転軸を指定して一度の回転操作で済ます**」ということの意味です。
41
+ 実はglRotatefはクォータニオンによる回転操作と考え方自体は同じなのです。X軸周りに何度、Y軸周りに何度・・・と考えるのはご質問にあるとおり分かりづらいですが、回転軸をこの方向にして何度ぐらい回転・・・という感じに考えると比較的思い通りに一度で回転できます。それが自分の回答の最後に書いた「**適当な回転軸を指定して一度の回転操作で済ます**」ということの意味です。
42
42
 
43
43
 
44
44
 
@@ -46,6 +46,6 @@
46
46
 
47
47
 
48
48
 
49
- なお本来のクォータニオンを作る際には回転軸は単位ベクトルとして与えなければならないのですが、glRotatefは使いやすいように、(1, 0, 1)のような「単位ベクトルでない軸」を指定しても自動的に単位ベクトルに正規化してくれるのでそういう意味でも使いやすく設計されているのです。
49
+ なお本来のクォータニオンを作る際には回転軸は単位ベクトルとして与えなければならないのですが、glRotatefは使いやすいように、(1, 0, 1)のような「単位ベクトルでない軸」を指定しても自動的に単位ベクトルに正規化してくれるのでそういう意味でも使いやすく設計されているのです。
50
50
 
51
51
 

1

追記

2017/05/18 05:06

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -27,3 +27,25 @@
27
27
 
28
28
 
29
29
  自前で定義できなくはないのですが、そのようなものよりもむしろglRotatefを用いて「適当な回転軸を指定して一度の回転操作で済ます」ような方法の方がより直感的な回転操作がやりやすいと思います。
30
+
31
+
32
+
33
+ ---
34
+
35
+
36
+
37
+ 捕捉:クォータニノンの計算式とか書いてあるサイトとかありますがそういうことを理解しなくても考え方だけ理解すればひとまずは充分です。
38
+
39
+
40
+
41
+ 実はglRotatefはクォータニオンによる回転操作と考え方自体は同じなのです。X軸周りに何度、Y軸周りに何度・・・と考えるのはご質問にあるとおり分かりづらいですが、回転軸をこの方向にして何度ぐらい回転・・・という感じに考えると比較的思い通りに一度で回転できます。それが自分の回答の最後に書いたこと「**適当な回転軸を指定して一度の回転操作で済ます**」ということの意味です。
42
+
43
+
44
+
45
+ 簡単な例でいえば、X軸のまわりに30度、Y軸のまわりに30度と考えるより、回転軸(1, 0, 1)の周りに30度ちょっと回転させると考えた方が直感的になるということが慣れれば実感できるはずです。
46
+
47
+
48
+
49
+ なお本来のクォータニオンを作る際には回転軸は単位ベクトルとして与えなければならないのですが、glRotatefは使いやすいように、(1, 0, 1)のような「単位ベクトルでない軸」を指定しても自動的に単位ベクトルに正規化してくれるのでそういう意味でも使いやすく設計されているのです。
50
+
51
+