什么是陀螺仪?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(任意设置,设置大一点能治肩周炎,哈哈)的时候,触发成功