如果我有一个简单的网页和如下所示的脚本:
<body>
<div id="alpha">a</div>
<div id="beta">b</div>
<div id="gamma">g</div>
</body>
<script>
window.addEventListener('deviceorientation', function(event) {
var alpha = event.alpha;
var beta = event.beta;
var gamma = event.gamma;
document.getElementById("alpha").innerHTML = alpha;
document.getElementById("beta").innerHTML = beta;
document.getElementById("gamma").innerHTML = gamma;
}, false);
</script>
我可以在 Android 版移动 Firefox 中打开它,它会输出 3 个数字,如下所示:
89.256125
3.109375
0.28125
当我旋转设备时,数字会根据旋转轴发生变化。我注意到“alpha”的值真的很吵——即使手机静止在我的 table 上,它们也会不停地反弹,而其他两个保持稳定。我知道 alpha 是我的航向。那么我很好奇,它是否从罗盘(存在噪音问题)和另外两个从陀螺仪获取“alpha”值?
另一个问题是当我改变音高时,出于某种原因航向也会改变,即使我实际上并没有改变航向。我只是好奇这是为什么以及如何纠正它?
此外,由于陀螺仪测量 Angular 速度,我推测此事件监听器会自动对其进行积分 - 积分算法是否与任何算法一样好?它是否使用加速度计来校正漂移?
在这个谷歌技术谈话视频中,从 15:00 到 19:00,演讲者谈到了使用加速度计校正陀螺仪固有的漂移,以及校准相对于重力的方向:http://www.youtube.com/watch?v=C7JQ7Rpwn2k 我该怎么做呢?
感谢任何人可能有的任何见解。
最佳答案
所有方向值对我来说也很嘈杂。颤抖的手、欧拉 Angular 、磁干扰、制造错误……谁知道呢?
我做了一个small exponential smoothing .也就是说,我用一个平滑的值替换了波动的 event.alpha,这个值被方便地称为 alpha:
alpha = event.alpha + <em>s</em>*(alpha - event.alpha), with 0 <= <em>s</em> <= 1;
换句话说,每次收到新的观测值时,平滑值都会根据与误差成比例的修正值进行更新。
不要在 0..1 范围之外尝试 s,因为这会导致负反馈循环,并且 alpha 很快就会开始发散,波动越来越大。
我使用s=0.25,经测试s在0.1和0.3之间没有显着差异。
重要:使用此方法时,不要忘记在 addEventListener 函数之外初始化 alpha:
var alpha = guestimate (= here 0);
请注意,这种简单的自适应平滑适用于许多其他情况,而且编程非常简单。
关于javascript 'deviceorientation' 事件 - 它测量什么传感器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11060869/
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun