回答編集履歴
5
追記
test
CHANGED
@@ -32,6 +32,12 @@
|
|
32
32
|
|
33
33
|
|
34
34
|
|
35
|
+
この表現だと、デバイスを垂直に立ててz軸を少し回すと、
|
36
|
+
|
37
|
+
pitchが90度にならないことがわかると思います
|
38
|
+
|
39
|
+
|
40
|
+
|
35
41
|
|
36
42
|
|
37
43
|
IOSやSwiftに全然詳しくないので、もっと直接的な方法があるかはわからないのですが、
|
4
前提追加
test
CHANGED
@@ -1,4 +1,24 @@
|
|
1
|
+
回転というのは順番を入れ替えると通常は別の結果になります。
|
2
|
+
|
3
|
+
(実際にx軸に90度回してからy軸に90度回したり、y軸に90度回してからx軸に90度回してみてください。)
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
つまり姿勢を三軸の回転角度で表してある場合は、
|
8
|
+
|
9
|
+
どの姿勢を基準に
|
10
|
+
|
11
|
+
どういう順番で回してあるか
|
12
|
+
|
13
|
+
を確認することが重要になります。
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
---
|
18
|
+
|
19
|
+
|
20
|
+
|
1
|
-
あなたが期待している量はデバイスを鉛直上向きに立てて、カメラ(z軸)を磁北に向けた状態を基準に
|
21
|
+
さて、あなたが期待している量はデバイスを鉛直上向きに立てて、カメラ(z軸)を磁北に向けた状態を基準に
|
2
22
|
|
3
23
|
yaw(y)->pitch(x)->roll(z)の順番に回した量ですが、
|
4
24
|
|
@@ -24,6 +44,10 @@
|
|
24
44
|
|
25
45
|
|
26
46
|
|
47
|
+
---
|
48
|
+
|
49
|
+
|
50
|
+
|
27
51
|
ところでやりたいことが、
|
28
52
|
|
29
53
|
デバイスを中心としたワールド座標上に固定されたUFOを
|
3
角度を求める意義について
test
CHANGED
@@ -20,9 +20,19 @@
|
|
20
20
|
|
21
21
|
姿勢を回転行列なりクォータニオンで取得して、
|
22
22
|
|
23
|
-
|
23
|
+
あれこれ計算してあなたが期待したオイラー角に変換します。
|
24
24
|
|
25
|
+
|
26
|
+
|
27
|
+
ところでやりたいことが、
|
28
|
+
|
29
|
+
デバイスを中心としたワールド座標上に固定されたUFOを
|
30
|
+
|
31
|
+
カメラに射影する感じだとすると、
|
32
|
+
|
33
|
+
回転行列を使ってUFOのデバイス座標を計算することになるので、
|
34
|
+
|
25
|
-
|
35
|
+
わざわざ角度を取得する意味は無いと思います。
|
26
36
|
|
27
37
|
|
28
38
|
|
2
解決策
test
CHANGED
@@ -9,3 +9,21 @@
|
|
9
9
|
画面が水平上向きで、y軸が磁北を向いている状態を基準にして、
|
10
10
|
|
11
11
|
yaw(z)->pitch(x)->roll(y)の順番に回した量です。
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
IOSやSwiftに全然詳しくないので、もっと直接的な方法があるかはわからないのですが、
|
18
|
+
|
19
|
+
愚直にやるなら、
|
20
|
+
|
21
|
+
姿勢を回転行列なりクォータニオンで取得して、
|
22
|
+
|
23
|
+
カメラの軸(デバイス座標で(0,0,+/-1))に作用させてワールド座標に変換、
|
24
|
+
|
25
|
+
その値からカメラの姿勢を計算します。
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
|
1
軸間違い
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
あなたが期待している量はデバイスを鉛直上向きに立てて、カメラ(
|
1
|
+
あなたが期待している量はデバイスを鉛直上向きに立てて、カメラ(z軸)を磁北に向けた状態を基準に
|
2
2
|
|
3
3
|
yaw(y)->pitch(x)->roll(z)の順番に回した量ですが、
|
4
4
|
|