回答編集履歴

5

追記

2017/03/17 13:59

投稿

ozwk
ozwk

スコア13528

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

前提追加

2017/03/17 13:59

投稿

ozwk
ozwk

スコア13528

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

角度を求める意義について

2017/03/17 07:43

投稿

ozwk
ozwk

スコア13528

test CHANGED
@@ -20,9 +20,19 @@
20
20
 
21
21
  姿勢を回転行列なりクォータニオンで取得して、
22
22
 
23
- カメの軸(デバイス座標で(0,0,+/-1))に作用させてワルド座標に変換
23
+ あれこれ計算してあなたが期待したオイラーに変換します。
24
24
 
25
+
26
+
27
+ ところでやりたいことが、
28
+
29
+ デバイスを中心としたワールド座標上に固定されたUFOを
30
+
31
+ カメラに射影する感じだとすると、
32
+
33
+ 回転行列を使ってUFOのデバイス座標を計算することになるので、
34
+
25
- その値からカメラの姿勢計算します。
35
+ わざわざ角度取得する意味は無いと思います。
26
36
 
27
37
 
28
38
 

2

解決策

2017/03/17 07:35

投稿

ozwk
ozwk

スコア13528

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

軸間違い

2017/03/16 03:08

投稿

ozwk
ozwk

スコア13528

test CHANGED
@@ -1,4 +1,4 @@
1
- あなたが期待している量はデバイスを鉛直上向きに立てて、カメラ(y軸)を磁北に向けた状態を基準に
1
+ あなたが期待している量はデバイスを鉛直上向きに立てて、カメラ(z軸)を磁北に向けた状態を基準に
2
2
 
3
3
  yaw(y)->pitch(x)->roll(z)の順番に回した量ですが、
4
4