陀螺儀和方向感應器要点.pdf
文本预览下载声明
陀螺儀和方向感應器
、 和 最酷的一項功能是它們的內建方向感應器,這個微小
iPhone iPad iPod Touch
的裝置可以讓 iOS 知道裝置被持握的方式以及是否在移動。iOS 可使用方向感應
器來處理自動旋轉,而許多遊戲也都使用它做為控制機制。此外它也可以用來偵
測搖晃與突然的移動。
17-1 方向感應器的物理原理
方向感應器(accelerometer )是藉由感應某個方向的慣性力大小來衡量其加速度
與重力。iOS 裝置內的方向感應器是一個三軸的方向感應器,表示它可以偵測三
度空間中的移動或重力。因此讀者可以利用方向感應器得知裝置目前被握持的方
式(像是自動旋轉功能),也可以得知它是否是平放在桌上,甚至可以知道是正
面朝上還是正面朝下。
方向感應器的度量單位為 力( 表示重力),所以當方向感應器傳回 的值時
g g 1.0
表示它在某個特定方向感應到了 1g 的力。底下有三個例子:
如果裝置拿在手上沒有移動,由於地心引力的關係,大約會有 的作用力
1g
在它上面。
如果裝置是以直向且完全垂直的方式持握時,它會偵測並報告有 的作用
1g
力在y 軸上。
如果裝置是以某個角度持握時,則 的力便會根據持握的方式而分散到不
1g
同的軸。當以 度角持握時,這 的力會大約均分到兩個軸上。
45 1g
突然的移動則可以藉由檢查方向感應器的值是否比 大很多來偵測。在正常的使
1g
用情況下,方向感應器在任何軸上所偵測到的都不會超過 1g 太多。但如果讀者搖
晃、掉落或丟擲裝置,則方向感應器會在一個以上的軸上偵測到非常大的受力。
不過請不要掉落或丟擲讀者自己的iOS 裝置來測試這個理論。
圖 17-1 以圖形表示方向感應器所使用的三個軸。請注意方向感應器使用的是較標
準的 軸座標習慣用法,也就是 值增加表示向上的力,這剛好和第十四章中
y y
Quartz 2D 的座標系統相反。當讀者使用方向感應器搭配Quartz 2D 做為控制機制
時,需要轉換y 軸座標。但當搭配OpenGL ES 時(比較可能發生在讀者使用方向
感應器來控制動畫時),就不需要轉換。
圖 : 方向感應器的三維座標軸左邊的 前視圖顯示了 和 軸。右
17-1 iPhone iPhone 4 x y
邊的 側視圖則顯示了 軸。
iPhone 4 z
570
陀螺儀和方向感應器
17-2 不要忘記旋轉
我們之前提過iPhone 4 還有個陀螺儀感應器,可讓讀者讀取描述裝置繞著軸旋轉
的值。
如果此感應器和方向感應器之間的差異看起來不清楚的話,請想想平放在桌上的
iPhone 。假如讀者在該手機平放時開始旋轉它,方向感應器的值不會改變。這是
因為移動手機的力量(在這裡只有沿著 z 軸向下拉的重力)並沒有改變。(實際
上的情形則有一點點的不同,因為讀者手碰到手機的動作一定會觸發少量的方向
感應器動作)。不過在相同動作的期間,裝置的旋轉值則會改變,特別是 z 軸的
旋轉值。順時針旋轉裝置會產生負的值,逆時針旋轉則會提供正的值。停止轉動
則z 軸的旋轉值會回到零。
陀螺儀會在裝置發生旋轉時通知讀者該項變更,而不是記錄一個絕
显示全部