什麼是陀螺儀?html
陀螺儀又叫角速度傳感器,是不一樣於加速度計(G-sensor)的,他的測量物理量是偏轉、傾斜時的轉動角速度。在手機上,僅用加速度計沒辦法測量或重構出完整的3D動做,測不到轉動的動做的,G-sensor只能檢測軸向的線性動做。但陀螺儀則能夠對轉動、偏轉的動做作很好的測量,這樣就能夠精確分析判斷出使用者的實際動做。然後根據動做,能夠對手機作相應的操做![百度百科]ios
陀螺儀的分類git
陀螺儀的做用github
手機陀螺儀的做用web
deviceorientation事件測試
先來個激發興趣的例子:根據手機旋轉移動而變化的骰子spa
deviceorientation事件:是在加速計檢測到設備方向變化時在window對象上觸發,不過,deviceorientation事件的意圖是告訴開發人員設備在空間中朝向哪兒,而不是如何移動htm
三維空間中xyz三軸定位:對象
爲了方便說明:引入三軸實際旋轉手勢表示圖,通過真機測試,全部軸都是按照逆時針旋轉遊戲
事件對象包含的屬性:
手機上的指南針,其實就是指北針,ios端使用alpha角不對,應該使用webkitCompassHeading來得到真實的旋轉角度,真機測試的時候發現使用alpha角,進入界面時候,手機頂部方向對着的方位默認爲正北,這明顯是不對的;安卓端使用alpha是對的,固然也不支持webkitCompassHeading;W3C上還有關於羅盤航向的計算公式等相關信息和資料,對於這個屬性的使用和探索到目前的位置暫時能夠了
devicemotion事件
devicemotion事件是要告訴開發人員設備何時移動,而不單單是設備方向如何改變。如:檢測設備是否是正在往下掉、檢測設備是否是被走着的人拿在手裏
事件對象包含4個屬性:
搖一搖實際例子:
<script>
if (window.DeviceMotionEvent) {
window.addEventListener('devicemotion', deviceMotionHandler, false);
}
var speed = 30; //speed
var x = y = z = lastX = lastY = lastZ = 0;
function deviceMotionHandler(eventData) {
var acceleration = eventData.accelerationIncludingGravity;
x = acceleration.x;
y = acceleration.y;
z = acceleration.z;
if (Math.abs(x - lastX) > speed || Math.abs(y - lastY) > speed || Math.abs(z - lastZ) > speed) {
//簡單的搖一搖觸發代碼
alert('搖一搖成功');
}
lastX = x;
lastY = y;
lastZ = z;
}
</script>
說明:當xyz任意方向上的加速大大於30(任意設置,設置大一點能治肩周炎,哈哈)的時候,觸發成功