罗盘航向 - 多次旋转
Compass heading - multiple rotations
我目前正在制作一个在浏览器中使用罗盘航向的网络应用程序的原型。这是一个介于 0 ~ 360 之间的值。
每当我进行完整旋转时,该值就会从 360 跳回到 0。
我不知道如何让它在第二次旋转时从 360 增加到例如 720。
我缺少什么数学魔法?
谢谢!
这是我的代码
if ('ondeviceorientationabsolute' in window) {
window.addEventListener('deviceorientationabsolute', handleOrientationAbsolute);
} else if ('ondeviceorientation' in window) {
window.addEventListener('deviceorientation', handleOrientation);
}
function handleOrientationAbsolute(e) {
alpha = Math.round(360 - e.alpha);
update();
}
function handleOrientation(e) {
alpha = Math.round(e.webkitCompassHeading);
update();
}
function update() {
headingEl.innerHTML = alpha; //This value should be able to return higher than 360
}
我要学马里奥赛车的技巧
在你的圈子周围,有一定的门槛。您需要将圆圈分成至少 3 组。 (假设您使用的是 120°
点。)存储您所在的组(例如 0
、1
或 2
),并经常检查哪个组您所在的组。如果您在 0
和 1
或 1
和 2
之间切换,只需存储它。但是,如果您在 2
和 0
之间切换,则递增或递减计数器。
这将允许您 return 大于 360° 的值。
我目前正在制作一个在浏览器中使用罗盘航向的网络应用程序的原型。这是一个介于 0 ~ 360 之间的值。
每当我进行完整旋转时,该值就会从 360 跳回到 0。 我不知道如何让它在第二次旋转时从 360 增加到例如 720。
我缺少什么数学魔法?
谢谢!
这是我的代码
if ('ondeviceorientationabsolute' in window) {
window.addEventListener('deviceorientationabsolute', handleOrientationAbsolute);
} else if ('ondeviceorientation' in window) {
window.addEventListener('deviceorientation', handleOrientation);
}
function handleOrientationAbsolute(e) {
alpha = Math.round(360 - e.alpha);
update();
}
function handleOrientation(e) {
alpha = Math.round(e.webkitCompassHeading);
update();
}
function update() {
headingEl.innerHTML = alpha; //This value should be able to return higher than 360
}
我要学马里奥赛车的技巧
在你的圈子周围,有一定的门槛。您需要将圆圈分成至少 3 组。 (假设您使用的是 120°
点。)存储您所在的组(例如 0
、1
或 2
),并经常检查哪个组您所在的组。如果您在 0
和 1
或 1
和 2
之间切换,只需存储它。但是,如果您在 2
和 0
之间切换,则递增或递减计数器。
这将允许您 return 大于 360° 的值。