“物体的速度和位移方向是否一样位移等于它在坐标轴方向的分矢量的矢量和”为什么是正确的?

时间和位移
您现在的位置:&&>>&&>>&&>>&&>>&正文
时间和位移
作者:佚名 教案来源:网络 点击数: &&&
时间和位移
本资料为WORD文档,请点击下载地址下载
文章来源莲 山课件 w ww.5 Y K J.cOm &必修一 1.2时间和位移教案&&&& 1.教材分析《时间和位移》是人教版高中物理必修一第1章第2节内容,主要学习两个重要的知识点:1知道什么是矢量和标量,2会区别位移和路程及时间和时刻。本节内容是对本章知识的提升,又是后面知识点学习的基础。2、目标1.&知道时间与时刻的含义及它们的区别,学会用时间轴来描述物体运动过程中的时间与时刻2.&理解位移的概念,知道位移与路程的区别和联系3.&知道矢量和标量,能区分矢量和标量3.学习重点1.时间和时刻的概念以及它们之间的区别和联系2.位移的概念以及它与路程的区别.4.学习难点1.正确认识生活中的时间与时刻.2.理解位移的概念,会用有向线段表示位移.5.学情分析& 由于学生刚刚进入高中,物理难度有所提高,所以在初中与高中物理的转折点上,老师一定要低重心教学,重点把握基础知识。6.教学方法1.学案导学:见后面的学案。2.新授课教学基本环节:预习检查、总结疑惑→情境导入、展示目标→合作探究、精讲点拨→反思总结、当堂检测→发导学案、布置预习7.课前准备1.学生的学习准备:预习课本相关章节,初步了解什么是矢量和标量,知道时间和时刻及位移和坐标的区别。2.教师的教学准备:多媒体课件制作,课前预习学案,课内探究学案,课后延伸拓展学案。课时安排:1课时
8.教学过程& (一)预习检查、总结疑惑检查落实了学生的预习情况并了解了学生的疑惑,使教学具有了针对性。& (二)情景导入、展示目标要研究物体的运动自然离开不了时间,我们的生活与时间这个词是紧紧联系在一起的,我们经常这样说“汽车的开出时间是12点50分” “汽车在某站停留的时间是10分钟”。那么这两句话中的“时间”是不是同一个意思呢?设计意图:步步导入,吸引学生的注意力,明确学习目标。(三)合作探究、精讲点拨&& 一、时间与时刻师:不是,第一句中的“时间”是某一时刻,某一瞬时;第二句中的“时间”是指一段时间。现在我们就一起来用物理学严谨的语言对时间定义时刻:指某一瞬时,是事物运动发展变化所经历的各个状态先后顺序的标志。时间:是两个时刻之间的间隔,时间用来表示事物运动发展变化所经历的过程长短的量度我们可以用一个时间轴来表示
理解记忆:时刻对应于时间轴上一个点,时间对就于时间轴上两点之间的线段& 时间=末时刻-初时刻&补充说明:师:首先时间轴的正方向是不能变的,因为时间不会倒流。那原点在何处呢?时间的起点?开天辟地?师:当然不是,是根据需要任意选择的。若我选此刻为原点,那下一秒就是坐标1秒,那上一秒呢?应该是负1秒,所以时刻可以是负的。如公元前200年。关于时间的几种说法:第3秒末=第4秒初&&&& 第2秒=第2秒内(夸大记忆,如第2秒可以记成第2天,第2 年)& 前3秒=前3秒内放大理解法:如有同学不知道第2秒是时刻还是时间,那我们可以将秒放大至天或月或年,学生就容易理解了。比如学生一定知道第2年是第2个一年,是一年时间,不是时刻。例1、下列说法正确的是(&& )BCA.&时刻表示时间极短,时间表示时间很长。B.&某人跑步成绩13秒是时间。C.&作息时间表上的数字均表示。时刻D.&1min只能分成60个时刻。例2、正确的是(&& )ACA.&物体在5秒时指的是物体在5秒末时,指的是时刻B.&物体在5秒内指的是在4秒末到5秒末这1秒的时间C.&物体在第5秒内指的是在4秒末到5秒末这1秒的时间D.&第4秒末就是第5秒初,指的是时刻& 二、位移师:运动表示物体相对位置的变化,前面我们已经学过了如何在数学坐标系中表示物体的位置,今天我们就来研究物体的位置发生了变化该如何表示?&如图所示
师:两人分别从O点沿曲线1,2运动到A点,我们可以看到,它们的路程(实际运动轨迹的长度)不同,但在整个过程中它们的初末位置相同,也就是说整个过程它们的位置变化相同(开始在A,最后在B)。我们该怎样来描述这样一个位置的变化呢?师:能用我们初中学过的路程来描述这们的位置变化吗?比如路1路程100米,路2路程200米。如果你告诉别人只要从O点出发走100米就能到A点,那别人能了解你的位置变化情况吗?能找到A点吗?生:不能。师:所以为了能够很好地表述出物体在运动过程中位置的变化,物理学中引入了一个新的物理量:位移。定义:位移 :从初位置指向末位置的有向线段。用S表示。单位:米(m)位移与路程的比较:&路程&位移定义&物体实际运动轨迹的长度&从初位置指向末位置的一个有向线段大小&有&有方向&无&有联系&|位移|≤路程 当物体单向直线运动时才等于从一点到另一点位移一定,但路程却有无数个三、标量与矢量&物理学中把有大小又有方向的量(如位移)叫做矢量,以前我们学过的有大小无方向的量叫做标量。举例:矢量:力、位移&&&&& 标量:长度、时间、质量、温度等不同点: 1)&矢量有方向而标量没有。2)&运算法则不同写出法则并举例:1、&先正东走3米,再向正北走4米,求整个过程的位移(作图得 以此说明运算法则不同)例3、正确的是( )B.&物体沿直线向某一方向运动,通过的路程就是位移C.&物体沿直线向某一方向运动,通过的路程等于位移的大小D.&物体通过一段路程,其位移可能为零E.&物体通过的路程不等,但其位移可能相同&BCD&&& 例4、一支队伍前进时,通信兵从队尾赶到队首又立即返回,当通信兵回到队尾时队伍已经前进了200m,求整个过程中通信兵的位移。&&&&&&&& 200m&&& 四、一维坐标系中如何描述位移&&&&&
A&B&C 位移分别为SAB=4m,方向与正方向相同&&&&&&&&&&&&&&&&&&&&&&&&&&&&& SBC=2m,方向与正方向相反仔细观察发现 :位移=末位置坐标-初位置坐标SAB=XB-XA=3-(-1)=4mSBC=XC-XB=1-3=-2m大家可以看到,算下来结果有正负之分如果是正的就表示跟正方向相同,如果是负就表示跟正方向相反。例5:一质点沿东西方向做直线运动,先从A运动到B,位移大小为30m,方向向东;接着由B运动到C,位移为40m,方向向西,求从A到C过程中质点的位移和路程。解:小球的位移可以直接根据概念来看出发点和终点,也可以用矢量相加法则加。五、一维坐标中矢量加减的等效简便法:大家可能觉得矢量相加也未免太麻烦了吧!是不是我们以后解题都得这样画图啊?大家不必担心,我们高中阶段学习的大部分是直线运动,对于同一直线上的矢量相加减我们有一个等效简便的方法一、向东的5加向东的3等于向东的8二、向西的5加向西的3等于向西的8三、向东的5加向西的2等于向东的3四、向西的5加向东的2等于向西的3发现规律:同向相加,和的大小为前两个矢量大小之和,方向不变;反向相加,和的大小为前两个矢量大小之差,方向与大小较大的那一个矢量方向相同。这样运算法则看起来是不是很熟悉?对,它就跟初中学过的带正负号的加减法法则类似(符号相同的相加,符号不变,大小为两加数绝对值之和;符号相反的相加,大小为两加数绝对值之差,符号与绝对值大的那个数的符号相同)。同向vs同号?反向vs异号?灵感:如果用正负号来表示方向,同号表示同向,异号表示反向,那计算是不是简单多了。怎样实现刚才的想法呢?很简单:直线运动不是有两个方向吗?设其中一个为正方向,同向为正,异向为负,将复杂的矢量运算变成简单的带正负号的数学加减法。得到的结果如果为正,说明跟正方向同向,如果为负,说明跟正方向反向。于是上题的解法为:一、向东为正。则+5加+3等于+8,结果为正表示方向与正方向相同,向东。二、向东为正。则-5加-3等于-8,结果为负表示方向与正方向相反,向西。三、向东为正。则+5加-2等于+3,结果为正表示方向与正方向相同,向东。四、向东为正。则-5加+2等于-3,结果为负表示方向与正方向相反,向西。注意:正方向的选择是任意的。切记只适用于直线运动。例6、再解上题!比较大小:(正东为正)-6m与5m哪个位移大?今后的学习啊,自己一定要带好头,坚持每题先设正方向。给学生引导作用。(四)反思总结,当堂检测教师组织学生反思总结本节课的主要内容,并进行当堂检测。设计意图:引导学生构建知识网络并对所学内容进行简单的反馈纠正。(课堂实录)(五)发导学案、布置预习我们已经学习了时间和位移,那么在下一节课我们来学习下一节。这节课后大家可以先预习这一部分,重点是掌握解决这类问题的方法。并完成本节的课后练习及课后延伸拓展作业。设计意图:布置下节课的预习作业,并对本节课巩固提高。教师课后及时批阅本节的延伸拓展训练。
9.板书一、时间与时刻&1、时间:&2、时刻:&3、时间轴&4、关于时间的几种说法&5、放大理解法&例1、2二、位移&1、定义:&2、位移与路程的比较三、标量与矢量&不同点1、2&例3、4四、一维坐标中如何描述位移&例5五、一维坐标中矢量加减的简便法&例6(新法解上题)
10.教学反思
1、理论联系实际,激发学生的学习兴趣理论联系实际不仅使学生深刻的理解物理的规律;也是培养学习物理兴趣,使学生真正学好物理、培养学生能力最有效的途径。2、处理画出匀速直线运动s-t图象时要具体、细致。根据图象反映物理规律,是根据实验探索自然规律的重要的途径。为了尽量能够让学生体会到这一点,我设计了模拟实验来模拟刘其贤同学的运动情况,然后要求学生记录实验数据,列表,画出s-t图象。画出图象后,又让学生了解到图象是如何反映物体的运动规律的,从而说明图象的意义是反映位移随时间变化的规律。3、尽量做好铺垫,循序渐进本节课在教学设计时,结合学生基础比较薄弱的实际特点,认真铺设好“台阶”,从匀速到变速,从简单到复杂,图象的设计从直、折到曲这种上升的趋势。在教学过程中,学生很容易把图象看成是物体运动的轨迹,所以课堂中我强调了这两者是根本不同的。4、精心地设计一些问题问题的设计,要求教师要找准学生学习的难点、不足点、上当点,只有这样才能使教师和学生的思维产生共振。通过问题的导向,既可以使学生建立起比较清晰的知识结构,又能使学生在知识建构中培养能力。&必修一& 1.2时间和位移 学案& 课前预习学案【预习目标】1.知道时间和时刻的区别和联系.2.知道什么是位移,了解路程与位移的区别.3.知道什么是标量和矢量.【预习内容】(自主学习课本第二节)【提出疑惑】同学们,通过你的自主学习,你还有哪些疑惑,请把它填在下面的表格中疑惑点&疑惑内容 课内探究学案【学习目标】1.知道时间和时刻的区别和联系.2.理解位移的概念,了解路程与位移的区别.3.知道标量和矢量.4.能用数轴或一维直线坐标表示时刻和时间、位置和位移.5.知道时刻与位置、时间与位移的对应关系.【学习重点】1.时间和时刻的概念以及它们之间的区别和联系2.位移的概念以及它与路程的区别.【学习难点】1.正确认识生活中的时间与时刻.2.理解位移的概念,会用有向线段表示位移.【教学方法】自主探究、交流讨论、自主归纳【学习过程】知识点一:时刻和时间间隔【阅读】P12第一部分:时刻和时间间隔并完成下列问题。&1.结合教材你能列举出哪些关于时刻和时间间隔?&&& 2.观察教材第12页图1.2―1,如何用数轴表示时刻和时间间隔? 3、时间和时刻有区别,也有联系,在时间轴上,时间表示一段,时刻表示一个点。如图所示,0点表示开始计时,0~3表示3s的时间,即前3s。2~3表示第3s,不管是前3s,还是第3s,这都是指&&&&&&&&& 。3s所对应的点计为3s末,也为4s初,这就是&&&&&&&& 。
知识点二:路程和位移【阅读】P10第二部分:路程和位移并完成下列问题。【思考与交流】:1、观察教材第13页图1.2―2从北京到重庆,观察地图,你有哪些不同的选择?这些选择有何相同或不同之处?
2、根据上面的学习,你能给出位移及路程的定义吗?&
3、在坐标系中,我们也可以用数学的方法表示出位移.实例:观察教材第13页图1.2―3质点从A点运动到B点,我们可以用从_____________A指向____________B的_______线段表示位移,.阅读下面的对话:甲:请问到市图书馆怎么走?乙:从你所在的市中心向南走400 m到一个十字路口,再向东走300m就到了.甲:谢谢!乙:不用客气.请在图1―2―3上把甲要经过的路程和位移表示出来.并归纳一下:位移和路程有什么不同?
知识点三:矢量和标量【阅读】P13第三部分:矢量和标量并完成下列问题。
A级1. 既有&&&&&&&&&&&&& 又有&&&&&&&&& 的物理量叫矢量。举例:&&2. 只有&&&&&&&&&&&& 没有&&&&&&&&&&& 的物理量叫标量。& 举例:
【思考与交流】实例1一位同学从操场中心A出发,向北走了40 m,到达C点,然后又向东走了30 m,到达B点.用有向线段表明他第一次、第二次的位移和两次行走的合位移(即代表他的位置变化的最后结果的位移).这位同学由A到B的位移和路程的大小各是多少?你能通过这个实例比较出算术相加与矢量相加的法则吗?&
知识点四、直线运动的位置和位移【阅读】P13第三部分:直线运动的位置和位移并完成下列问题。1、如图1―2―6所示,物体在时刻t1处于“位置”x1,在时刻t2运动到“位置”x2那么(x2- x1)就是物体的“位移”,记为Δx =___________&&& 可见,要描述直线运动的位置和位移,只需建立一维坐标系,用________表示位置,用位置_______________表示物体位移.
2、观察教材第14页图1.2―5,计算物体由A到B坐标变化量Δx=&&&&&&&&&&&&&&&&&&&&&&&&& 那么物体由B到A坐标变化量Δx=&&&&&&&&&&&&&&&&&&&&&&&&
问:结果一样吗?为什么?
【当堂检测】1、下列说法正确的是(&& )BCA.时刻表示时间极短,时间表示时间很长。B.某人跑步成绩13秒是时间。C.作息时间表上的数字均表示。时刻D.min只能分成60个时刻。2、正确的是(&& )ACE.&物体在5秒时指的是物体在5秒末时,指的是时刻F.&物体在5秒内指的是在4秒末到5秒末这1秒的时间G.&物体在第5秒内指的是在4秒末到5秒末这1秒的时间H.&第4秒末就是第5秒初,指的是时刻3、正确的是( )BCDA.物体沿直线向某一方向运动,通过的路程就是位移B.物体沿直线向某一方向运动,通过的路程等于位移的大小C.物体通过一段路程,其位移可能为零D.物体通过的路程不等,但其位移可能相同4、一支队伍前进时,通信兵从队尾赶到队首又立即返回,当通信兵回到队尾时队伍已经前进了200m,求整个过程中通信兵的位移。&&&&&&&& 200m
【总结与反思】&&&
课后练习与提高1、学习了时间与时刻,蓝仔、红孩、紫珠和黑柱发表了如下一些说法,正确的是…(& A& )A. 蓝仔说,下午2点上课,2点是我们上课的时刻B.红孩说,下午2点上课,2点是我们上课的时间C.紫珠说,下午2点上课,2点45分下课,上课的时刻是45分钟D.黑柱说,2点45分下课,2点45分是我们下课的时间2、下列关于位移和路程关系的正确说法是&&&&&&&&&&&&&&& (&& C&&&&& )A、物体沿直线向某一方向运动,通过的路程就是位移B、物体沿直线运动,通过的路程等于位移的大小C、物体通过的路程不等,位移可能相同D、物体通过一段路程,位移不可能为零3、小球从3m高处落下,被地板弹回,在1m高处被接住.那么,小球通过的路程和位移的大小分别是( D )&&& A、4m,3m&&&&& B、3m,1m&&&&&& C、3m,2m&&&&& D、4m,2m
&文章来源莲 山课件 w ww.5 Y K J.cOm
上一篇教案: 下一篇教案:
? ? ? ? ? ? ? ? ? ?位移传感器
平台提供了一些传感器让你能监测设备的移动。它们中的两个传感器总是基于硬件的(加速度和陀螺仪),另外的这类这些传感器中的3个即能使用基于硬件的也能使用基于软件的(重力,线性加速度和旋转矢量传感器)。例如,一些设备从基于原件的传感器中获取加速度和磁强的数据,但另外一些设备也用陀螺仪获取这些数据。大多数Android设备都有加速度传感器,很多设备现在也包含陀螺仪传感器。那些基于软件的传感期大多也是可变的,因为它们常常也要依赖于一类或更多类的基于硬件的传感器去获得它们需要的数据。
位移传感器对检测设备的移动(如倾斜、摇动、旋转、摇摆等)是有用的。这些动作通常直接反映了用户的输入(如用户游戏中操控汽车,或是用户在控制游戏中的球),但它也反映了设备所处的物理环境的变化(例如设备随着你正在驾驶的汽车运动)。在第一种情况下,你监控的运动是相对于设备或应用为参考坐标系的;在第二种情况下,所监控的应用是相对于地球为参考坐标系系的。位移传感器本身不是主要用来监控设备的位置的,但是他们结合其他传感器(如地磁传感器),可用于检测设备相对于地球参考系的位置。
所有的位移传感器都会在SensorEvent中返回用多维数组表示的传感数据。如,在一个加速度传感器事件中,会返回三维坐标轴上的加速度数据,陀螺仪会返回三维坐标轴上的旋转速率数据。 这些数据都是随着SensorEvent参数中以 float 数组的方式返回的。表1总结了Android平台中可用的位移传感器:
表1. Android平台支持的位移传感器。
Sensor event数据
TYPE_ACCELEROMETER
SensorEvent.values[0]
沿X轴的加速度值(包括重力加速度)。
SensorEvent.values[1]
沿Y轴的加速度值(包括重力加速度)。
SensorEvent.values[2]
沿Z轴的加速度值(包括重力加速度)。
TYPE_GRAVITY
SensorEvent.values[0]
沿X轴的重力加速度值。
SensorEvent.values[1]
沿Y轴的重力加速度值。
SensorEvent.values[2]
沿Z轴的重力加速度值。
TYPE_GYROSCOPE
SensorEvent.values[0]
围绕X轴的旋转角速度。
SensorEvent.values[1]
围绕Y轴的旋转角速度
SensorEvent.values[2]
围绕Z轴的旋转角速度
TYPE_GYROSCOPE_UNCALIBRATED
SensorEvent.values[0]
围绕X轴的旋转角速度(没有漂移补偿)。
SensorEvent.values[1]
围绕Y轴的旋转角速度(没有漂移补偿)。
SensorEvent.values[2]
围绕Z轴的旋转角速度(没有漂移补偿)。
SensorEvent.values[3]
围绕X轴的漂移估值。
SensorEvent.values[4]
围绕Y轴的漂移估值。
SensorEvent.values[5]
围绕Z轴的漂移估值。
TYPE_LINEAR_ACCELERATION
SensorEvent.values[0]
沿X轴的加速度值(不包括重力加速度)。
SensorEvent.values[1]
沿Y轴的加速度值(不包括重力加速度)。
SensorEvent.values[2]
沿Z轴的加速度值(不包括重力加速度)。
TYPE_ROTATION_VECTOR
SensorEvent.values[0]
沿X轴的旋转矢量分量(x * sin(&/2))。
SensorEvent.values[1]
沿Y轴的旋转矢量分量(y * sin(&/2))。
SensorEvent.values[2]
沿Z轴的旋转矢量分量(z * sin(&/2))。
SensorEvent.values[3]
旋转矢量的度量因子((cos(&/2))1。
TYPE_SIGNIFICANT_MOTION
TYPE_STEP_COUNTER
SensorEvent.values[0]
自从上次传感器被重启激活后携带设备的用户的所走的步数.
TYPE_STEP_DETECTOR
1 度量元素是可选值。
旋转矢量和重力传感器是最常用的运动检测传感器。在相关运动的任务中,如检测收拾、角度变化、相对方位的变化等信息,旋转矢量加速度是是尤其强大的。例如,如果你正在开发游戏、AR应用、二维或三维罗盘、相机防抖应用等,旋转矢量传感器对你来说是非常理想的。在大多数情况下,用这些传感器是比选择使用加速度和地磁场传感器或是方向传感器更理想。
Android开源项目传感器
Android 开源项目(AOSP)提供了三种基于软件的位移传感器:重力、线性加速度和旋转矢量传感器。 Android 4.0 中对这些传感器进行了升级,目前利用陀螺仪来提高稳定性和性能。 如果你想尝试这些传感器,你可以用 getVendor() 和 getVersion() 方法来识别它们(制造商为 Google 公司;版本号为3)。通过vendor和version识别这些传感器是必须的,因为Android把这三种传感器作为备选传感器。例如,如果设备厂商提供了它们自己的的重力传感器,那么AOSP重力传感器则会显示它们为备选的重力传感器。所有这三个传感器都依赖于陀螺仪:如果设备上没有提供陀螺仪,这些传感器都不会显示出来,用户也无法使用。
加速度传感器的使用
加速度传感器测量设备的加速度,包括重力加速度。以下代码展示了如何获取默认加速度传感器的实例:
private SensorManager mSensorM
private Sensor mS
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
从概念上来说,加速度传感器通过测量施于传感器上的作用力,并按以下关系来检测设备的加速度(Ad)。
加速度传感器通过测量施加于传感器自身的作用力(Fs)来检测到设备加速度(Ad),公式如下:
Ad = - &Fs / mass
然而,重力总是会影响到测量的精度,其公式如下:
Ad = -g - &F / mass
基于这个理由,如果设备是平放在桌子上的(没有加速度),加速度计会读到g = 9.81 m/s2。 同理,设备在自由落体或以 9.81 m/s2 的加速度坠向地面时,加速度计会读到 g = 0 m/s2。 因此,要测量设备的真实加速度,必须从加速度数据中移除掉重力加速度的贡献。可以通过高通过滤器实现它。 反之,低通过滤器则可以用于分离出重力加速度值。下面的例子展示了如果做:
public void onSensorChanged(SensorEvent event){
// In this example, alpha is calculated as t / (t + dT),
// where t is the low-pass filter's time-constant and
// dT is the event delivery rate.
final float alpha = 0.8;
// Isolate the force of gravity with the low-pass filter.
gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];
// Remove the gravity contribution with the high-pass filter.
linear_acceleration[0] = event.values[0] - gravity[0];
linear_acceleration[1] = event.values[1] - gravity[1];
linear_acceleration[2] = event.values[2] - gravity[2];
注意: 你可以使用多种不同的技术来过滤传感器数据。 以上例子只是使用了过滤器常量(alpha)来创建一个低通过滤器。 这个过滤器常量是由时间常量(t)(过滤器事件间隔的粗略表示)和传感器事件传送频率(dt)推导出来的。 使用的0.8仅仅是为了示例的演示,如果你要用这个过滤方法,你可能需要选用另外的 alpha 值。
加速度传感器使用标准的传感器坐标系统,事实上,这意味着当设备以自然方向平放在桌子上时,将会适用以下情况:
如果从左侧平推设备(向右移动),X轴方向加速度为正值。 如果从下侧平推设备(远离你的方向移动),Y轴方向加速度为正值。 如果以 A m/s2的加速度向空中移动设备,Z方向加速度等于 A + 9.81,即设备加速度(+A m/s2)减去重力加速度(-9.81 m/s2)。 静止设备的加速度值为 +9.81,即设备加速度(0 m/s2)减去重力加速度(-9.81 m/s2)。
总之,加速度传感器已足以检测设备的移动。几乎所有 Android 手机和平板都带有加速度传感器,它的能耗比其它运动传感器要少10倍。 不过缺点是,你不得不实现低通和高通过滤器去消除重力加速度的影响和减噪。
Android SDK 提供了一个应用示例,展示如何使用加速度传感器( Accelerometer Play )
重力加速度传感器的使用
重力传感器提供了方向和数值上三维矢量。下面的代码展示了如何获取默认的重力传感器的实例:
private SensorManager mSensorM
private Sensor mS
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
和加速度传感器具有相同的单位(m/s2)和坐标系。
Note: When a device is at rest, the output of the gravity sensor should be identical to that of the accelerometer.
注意: 当设备静止时,重力传感器的输出应该与加速度传感器相同。
陀螺仪的使用
陀螺仪以rad/s为单位测量设备围绕 X, Y, Z轴的旋转速度。下面的代码展示了如何获取默认陀螺仪的实例:
private SensorManager mSensorM
private Sensor mS
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
陀螺仪的坐标系与加速度传感器相同。正值表示逆时针方向旋转,也就是说,从 X、Y、Z 的正轴位置观看,如果设备已逆时针方向旋转,正值将会上报, 这是标准的数学意义上的正向旋转定义,而与方向传感器定义的转动不同。
通常,陀螺仪的输出会被集成到一定的时间上,以便计算在一段不长的时间上旋转角度的变化。例如:
// Create a constant to convert nanoseconds to seconds.
private static final float NS2S = 1.0f / .0f;
private final float[] deltaRotationVector = new float[4]();
public void onSensorChanged(SensorEvent event) {
// This timestep's delta rotation to be multiplied by the current rotation
// after computing it from the gyro sample data.
if (timestamp != 0) {
final float dT = (event.timestamp - timestamp) * NS2S;
// Axis of the rotation sample, not normalized yet.
float axisX = event.values[0];
float axisY = event.values[1];
float axisZ = event.values[2];
// Calculate the angular speed of the sample
float omegaMagnitude = sqrt(axisX*axisX + axisY*axisY + axisZ*axisZ);
// Normalize the rotation vector if it's big enough to get the axis
// (that is, EPSILON should represent your maximum allowable margin of error)
if (omegaMagnitude & EPSILON) {
axisX /= omegaM
axisY /= omegaM
axisZ /= omegaM
// Integrate around this axis with the angular speed by the timestep
// in order to get a delta rotation from this sample over the timestep
// We will convert this axis-angle representation of the delta rotation
// into a quaternion before turning it into the rotation matrix.
float thetaOverTwo = omegaMagnitude * dT / 2.0f;
float sinThetaOverTwo = sin(thetaOverTwo);
float cosThetaOverTwo = cos(thetaOverTwo);
deltaRotationVector[0] = sinThetaOverTwo * axisX;
deltaRotationVector[1] = sinThetaOverTwo * axisY;
deltaRotationVector[2] = sinThetaOverTwo * axisZ;
deltaRotationVector[3] = cosThetaOverT
timestamp = event.
float[] deltaRotationMatrix = new float[9];
SensorManager.getRotationMatrixFromVector(deltaRotationMatrix, deltaRotationVector);
// User code should concatenate the delta rotation we computed with the current rotation
// in order to get the updated rotation.
// rotationCurrent = rotationCurrent * deltaRotationM
标准的陀螺仪能够提供未经过滤的原始旋转数据,或是经过噪声及漂移修正的数据。 实际上,噪点和漂移会带来误差,这些需要进行相应的补偿。 通常你要利用其它传感器来确定漂移和噪点值,如重力传感器或加速计。
未校准陀螺仪的使用
除了旋转速率没有使用陀螺仪漂移补偿外,未校准的陀螺仪和陀螺仪是相似的。工厂校准和温度补偿仍然应用到旋转速率中。对于后处理和数据融合定位,未校准陀螺仪是有用的 。通常,gyroscope_event.values[0] 的值接近于uncalibrated_gyroscope_event.values[0] - uncalibrated_gyroscope_event.values[3],也就是说:
calibrated_x ~= uncalibrated_x - bias_estimate_x
注意:未校准传感器提供更多的原始结果,这些值可能包含一些偏差,但是通过校准,他们的测量结果包含更少的跳变。为了数据的更平滑和更加可靠,一些应用可能更喜欢这些未校准的结果。例如,如果应用使用它自己的传感器融合,使用校准的结果可能会歪曲结果。
除了旋转速率,未校准的陀螺仪也提供每个轴的漂移估值。下面的代码展示了如何获得一个默认未校准陀螺仪的实例:
private SensorManager mSensorM
private Sensor mS
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE_UNCALIBRATED);
线性加速度传感器的使用
线性加速度用三维矢量表示设备各个坐标轴的加速度(不包括重力加速度)。下面的代码展示了如果获取默认线性加速度的实例:
private SensorManager mSensorM
private Sensor mS
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);
概念上,这种传感器根据下列关系提供加速度数据:
线性加速度 = 加速度 - 重力加速度
这种传感器的典型用法是你想获得不受重力加速度影响的加速度数据。
例如,你能够使用这种传感器来测量你的汽车运行速度。线性加速度传感器始终有一个偏移量,你需要移除掉这个偏移量。最简单的方法就是在你的应用程序中设立一个校准步骤。在校准期间,你可以要求用户把设备放到桌面上,读取所有三轴的偏移量,然后从加速度传感器中读取的数据中直接减去对应的偏移量,从而获取真实的线性加速度。
该传感器的坐标系与加速度传感器的坐标系相同,其测量单位是(m/s2)。
旋转矢量传感器的使用
旋转矢量用角和轴的组合来代表设备的方向,即设备绕着轴(X、Y或Z)旋转角度&。下列代码显示了如何获取默认旋转矢量传感器的一个实例:
private SensorManager mSensorM
private Sensor mS
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
如下描述了旋转矢量的三个元素:
x*sin(&/2)
y*sin(&/2)
其中sin(&/2)是旋转矢量的数据,旋转矢量的方向等于旋转轴的方向。
这三个旋转矢量元素等于一个四元数(cos(&/2),X*sin(&/2),Y*sin(&/2),Z*sin(&/2)的最后三部分。旋转矢量元素是无单位的。X、Y和Z轴的定义与加速度传感器相同。该参照坐标系统是用直接正交基来定义的(如图1)。该坐标系有下面几个元素:
图1. 旋转矢量传感器的坐标系vcD4NCljW4crH08NZIHggWrXEyrjBv7v9tqjS5bXEo6zL/NTayeixuLXEtbHHsM671sPT67XYw+bP4MfQo6yyota4z/K2q7e9o7sgWdbh1NrJ6LG4tbHHsM671sPT67XYw+bP4MfQo6yyota4z/K12LTFs6G1xLGxvKuhoyBa1rjP8szsv9WjrLKi0+u12MPmtLnWsaGjDQo8cD5BbmRyb2lkIFNES9PQ0ru49nNhbXBsZdOm08OjrLjD06bTw9W5yr7By8jnus7KudPD0P3Xqsq4wb+0q7jQxvejrLjDc2FtcGxlzrvT2kFQSSBEZW1vcyBjb2RlICggPGEgaHJlZj0="https://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/RotationVectorDemo.html">OS - RotationVectorDemo)。
场景转移传感器
每次场景转移被检测到后,场景转移传感器会触发一个事件,接着它会禁止掉它自己。场景转移运动是可能会导致用户位置改变的一个运动;例如走路,骑自行车,或坐在一个移动的汽车中。下面的代码展示了如何获取默认场景转移传感器的实例和怎样注册一个时间listener:
private SensorManager mSensorM
private Sensor mS
private TriggerEventListener mTriggerEventL
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION);
mTriggerEventListener = new TriggerEventListener() {
public void onTrigger(TriggerEvent event) {
// Do work
mSensorManager.requestTriggerSensor(mTriggerEventListener, mSensor);
更多的信息,参阅。
步伐计数传感器的使用
步伐计数传感器返回自开机以来活动状态下用户的总的运动步数。步计数有更多的延迟(高达10秒),但是比步检测传感器更精确。下面的代码展示了如何获得默认的步伐计数传感器的实例:
private SensorManager mSensorM
private Sensor mS
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
步伐检测传感器的使用
步伐检测传感器在用户每走一步时都会触发一个事件。其延迟理想值在2秒已下。下面的代码展示了如何获得默认的步伐检测传感器的实例:
private SensorManager mSensorM
private Sensor mS
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);

我要回帖

更多关于 3D坐标轴移动物体不动 的文章

 

随机推荐