久以前,手机上的交互依赖键盘和触控笔。我们要查看一个很长很长的列表,必须使用非常难用的触控笔或键盘的上下左右键。后来黑莓发明了滚动球,缓解了大拇指按出茧的问题。
2007年,苹果推出iPhone。iPhone只有一个玻璃屏,没有触控笔,直接用手指操作,支持多手指。Multi-Touch这项技术在推出时被誉为和Mouse(Mac),Click wheel(iPod)一样革命性的发明。当然最近的3D Touch(Apple watch)也是革命性的。在推出iPhone之前,苹果已经做了多年的铺垫。2005年收购的小公司finger works就是专门做手势识别的团队,用macbook的人几乎是脱离鼠标的,因为其触控板非常好用,所用技术来自这家公司。
当时有很多程序猿和产品经理讨论这个技术如何实现。疯狂的Web开发者要在浏览器上实现基于鼠标中键的滚动效果:当很快地滚动中键并停止时,页面由于惯性,会继续往下滚动一段距离才停止。有一个专业名词用来描述,叫Momentum Scrolling。还有人用Web写了示例,用来模拟手指和屏幕交互过程中的数学逻辑,iScroll 和 Scrollability 都是不错的作品。头条的Web图集也有使用Javascript(以下简称JS)实现的惯性滚动代码。下面我们用最简单的Scrollability来讲解,如何实现惯性滚动。
一. 实现滚动
HTML代码:
JS代码:
页面中有四个元素,顶部的黑条,底部的黑条,黑条中的窗口A,以及窗口内一堆英文名列表B(可以想象成办公室的卷帘)。坐标系从窗口A左上角开始,横轴X(右边为正向),纵轴Y(下边为正向)。注意,这里Y轴的方向和数学课本里相反。手指在窗口A上移动,往下移动一段距离,得到的 distanceY > 0。代码由HTML,CSS和JS构成,HTML定义了两个黑条,窗口A和卷帘B。CSS定义了他们的颜色,位置等属性。Javascript则是重点要讲的,它用来控制手指和屏幕的交互。JS中定义了几个功能和变量,其中kBounceLimit这样以k开头的,是数学公式中的固定不变的参数。startX,startY,touchX,touchY用来记录手指位置,touchAnimator是负责操作卷帘B滚动的对象。
这几行代码表示,当用户手指触碰到屏幕时,会执行onTouchStart,去做一些事情。手指在屏幕上移来移去时,会执行onTouchMove。手指离开屏幕的瞬间,硬件会通知程序手指离开,此时执行onTouchEnd。touchstart和touchend都是瞬间事件,从手指按下,移动,抬起的一套过程中只会被通知一次,touchmove是连续触发的,移动1厘米,会收到几十个通知,告诉程序当前手指坐标x,y,时间点。
让卷帘随着手指移动的办法是,在touchstart时,记录手指位置y1;touchmove时根据得到y2,算出当前移动的距离distance=y2-y1,将卷帘在y轴上移动distance距离; touchmove不断触发,不断执行前面两步,把上一次的touchmove当作起始点,紧接着触发的touchmove当作后来的点,计算distance移动卷帘。
iPhone在处理滚动的过程中,当页面已经到最顶部时,再往下拉会有弹簧效果:手指拉了一个屏幕的距离,内容只移动了半屏。用这样的代码实现其效果:
velocity的含义是:手指在屏幕移动一段距离,触发n个touchmove事件,相邻两个事件的y坐标之差就是velocity(速度)。
打个比方,老李跑步,他的步长就是 velocity。当老李还没跑,想逃出森林公园南门时会有人把他往回拉。Velocity是1米,往回拉的弹性会给velocity打折,身体移动距离可能是0.8米,具体的折扣为:
(1.0 - (position - max) / bounceLimit)*kBounceLimit
position:当前卷帘移动到的位置,(逃出南门的距离)
parentOffsetHeight : 598 窗口A的高度
nodeOffsetHeight : 4602 卷帘B的长度
max:0
min:-4004 (parentOffsetHeight-nodeOffsetHeight,卷帘被挡住的长度,从下往上拉卷帘,最多移动的距离就是min值)
absMin = min
absMax = max
bounceLimit :窗口高度 parentOffsetHeight*kBounceLimit
kBounceLimit:0.75
转换后,速度velocity衰减的系数为 0.75 - position/ 598,当position越大,velocity打折越多,越难往下拖动。
二. 惯性和回弹
接着,我们用代码实现自由滚动和下拉时的回弹
在touchend时,加入takeoff()方法
takeoff方法中,根据手指离开屏幕时的velocity计算后面滚动动画的代码:
savekeyframe方法会保存计算出来的每一帧动画,包含位置和时间点。
自由滚动时的状态:
在顶部回弹时的状态:
position = easeOutExpo(decelStep, decelOrigin, decelDelta, kBounceTime);
continues = ++decelStep <= kBounceTime && Math.floor(Math.abs(position)) > max;
迭代计算position的公式为缓动曲线easeOut,接受的四个参数为:
decelStep :初始值为0,每次减速,自增1
decelOrigin :decelStep为0时 position值
decelDelta :decelStep为0时 max-position
kBounceTime :240
对比linear,ease-in,ease-out和ease-in-out四个曲线,ease-out方程x=easeOut(t)在一开始有平缓的加速,在时间t到50%时,位置x已经快到达70%,
在后续50%的时间内减速直到停止。符合我们平时看到的iOS滚动逻辑。
function easeOutExpo(t, b, c, d) { return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b }
continues的计算
自由滚动时:continues = Math.floor(Math.abs(velocity)*10) > 0; // Math.abs(velocity) < 0.1
顶部回弹时:continues = ++decelStep <= kBounceTime && Math.floor(Math.abs(position)) > max; // decelStep<=240加位置约束
底部回弹时:continues = ++decelStep <= kBounceTime && Math.ceil(position) < min; //同上
底部上拉的状态,同上。
saveKeyframe(!continues);
time += kAnimationStep;
作用是根据diff判断是否保存这个关键帧,最后得到位置和时间的运动轨迹
根据keyframes得到运动轨迹,再使用实现滚动的代码,让页面运动起来。这里就不展开说明了
(gif图略卡,实际效果流畅很多)
三. 浏览器实现
苹果和谷歌在意识到这个需求后,为web开发者提供了原生的支持。
之前需要用iscroll等框架的需求,Chrome浏览器只需 overflow:scroll 一行代码即可。iOS设备需再加一行代码 -webkit-overflow-scrolling: touch;
原生实现的好处是
计算位置的过程要进行大量小数运算,这一点JS非常慢。
惯性滚动是苹果专利,原理涉及数学物理知识很多,远比web开发者模仿出来的要复杂,而且不开源。
如果滚动的内容非常长(手机通讯录,微信朋友圈等),要做延迟渲染,生成瓦片,贴图,销毁或者回收,内存管理,这些工作必须由系统支持,而不是业务支持。
iOS支持Scroll Snapping with CSS Snap Points(点击访问),在滚动结束时对齐到内部元素,只需要两行css代码。
随着手机硬件的发展,浏览器和操作系统在图形渲染,网络API,数据存储等方面的差距越来越小。而且浏览器面向业务,对底层架构的抽象更好,一行css,一个javascript对象可以替代几千行java代码(or 几百行swift代码?)。很多只在操作系统中提供的功能,例如消息推送,也已经在浏览器实现。
Web的开放性让很多公司都对其添砖加瓦。你很难想象微软会往Android仓库中贡献代码,或者谷歌给IE浏览器解决bug,但他们确实都在为HTML5标准做贡献。另一个例子是Adobe,他们希望将Photoshop中的滤镜,图层混合模式等功能提供给web开发者,于是提议做了css filter,css blender。
http://sarasoueidan.com/demos/css-blender/
还有很多简单好玩的东西,以后会在博客中慢慢写。如有描述错误和不当,请批评指正。
作者:王伟
在移动端如果使用局部滚动,意思就是我们的滚动在一个固定宽高的div内触发,将该div设置成overflow:scroll/auto;来形成div内部的滚动,这时我们监听div的onscroll发现触发的时机区分android和ios两种情况,具体可以看下面表格:
不能实时触发表现:只在手指触摸的屏幕上一直滑动时和滚动停止的那一刻才触发。
概念
正常的滚动:我们平时使用的scroll,包括上面讲的滚动都属于正常滚动,利用浏览器自身提供的滚动条来实现滚动,底层是由浏览器内核控制。
模拟滚动:最典型的例子就是iscroll了,原理一般有两种:
方案比较
第一种方案由于惯性滚动的时机时由js自己控制所以可以拿到滚动触发阶段的scrolltop值,并且滚动的回调函数onscroll在滚动的阶段都会触发。第二种方案相比第一种要劣势一些,区别在于手指离开时,采用的时css的animation来实现惯性滚动,所以无法直接触发惯性滚动过程中的onscroll事件,只有在animation结束时才可以借助animationend来获取到事件,当然也有一种方法可以实时获取滚动事件,也是借助于requestanimationframe来不断的去读取滚动元素的transform来拿到scrolltop同时触发onscroll回调。
正常滚动和模拟滚动的性能比较
模拟滚动的fps值波动较大,这样滚动起来会有明显的卡顿感觉,各位体验的时候如果滚动超过10屏之后就可以明显感觉到两着的区别。
在使用模拟滚动时,浏览器在js层面会消耗更多的性能去改变dom元素的位置,在dom复杂层级深的页面更为高,所以在长列表滚动时还要使用正常滚动更好。
方案1:借助iscroll的原理,整个页面使用模拟滚动,将下拉刷新元素放在顶部,当页面滚动到顶部下拉时,下拉刷新元素随着页面的滚动出现,当手指离开时收回,此方案实现起来较为简单直接借助iscoll即可,但是使用了模拟滚动之后在正常的列表滚动时性能上不如正常滚动。
方案2:页面使用正常滚动,将下拉刷新元素放置在顶部top值为负值(正常情况下不可见),当页面处于顶部时下拉,这时监听touchmove事件,修改scrollcontent的tranlateY值,同时修改下拉刷新元素的tranlateY值,将两者同时位移来将下拉刷新元素显示出来,手指离开时(touchend)收回,这种方案满足了在正常列表滚动时使用原生的滚动节省性能,只在下拉刷新时使用模拟滚动来实现效果。
方案3:方案2的改良版,唯一不同是将下拉刷新元素和scrollcontent放在一个div里,将下拉刷新元素的margintop设为负值,在下拉刷新时,只需要修改scrollcontent一个元素的tranlateY值即可实现下拉,在性能上要比方案2好。
还会有一个性能上的问题就是:当页面的列表过长,dom元素过多时,在模拟滚动,下拉刷新这段时间内,页面也会有卡顿现象,这里采取了一个优化策略即:
下面介绍如何去优化scroll事件的触发,避免scroll事件过度消耗资源:
scroll 事件本身会触发页面的重新渲染,同时 scroll 事件的 handler 又会被高频度的触发, 因此事件的 handler 内部不应该有复杂操作,例如 DOM 操作就不应该放在事件处理中。
特别是针对此类高频度触发事件问题(例如页面 scroll ,屏幕 resize,监听用户输入等)。
防抖(Debouncing)
防抖技术即是可以把多个顺序地调用合并成一次,也就是在一定时间内,规定事件被触发的次数。
节流(Throttling)
防抖函数确实不错,但是也存在问题,譬如图片的懒加载,我希望在下滑过程中图片不断的被加载出来,而不是只有当我停止下滑时候,图片才被加载出来。又或者下滑时候的数据的 ajax 请求加载也是同理。这个时候,我们希望即使页面在不断被滚动,但是滚动 handler 也可以以一定的频率被触发(譬如 250ms 触发一次),这类场景,就要用到另一种技巧,称为节流函数(throttling)。
节流函数,只允许一个函数在 X 毫秒内执行一次。
与防抖相比,节流函数最主要的不同在于它保证在 X 毫秒内至少执行一次我们希望触发的事件 handler。
关于防抖动与节流,我的博客文章也有提及。
如果页面只需要兼容高版本浏览器或应用在移动端,又或者页面需要追求高精度的效果,那么可以使用浏览器的原生方法 rAF(requestAnimationFrame)。
window.requestAnimationFrame() 这个方法是用来在页面重绘之前,通知浏览器调用一个指定的函数。这个方法接受一个函数为参,该函数会在重绘前调用。
rAF 常用于 web 动画的制作,用于准确控制页面的帧刷新渲染,让动画效果更加流畅,当然它的作用不仅仅局限于动画制作,我们可以利用它的特性将它视为一个定时器。(当然它不是定时器)
通常来说,rAF 被调用的频率是每秒 60 次,也就是 1000/60 ,触发频率大概是 16.7ms 。(当执行复杂操作时,当它发现无法维持 60fps 的频率时,它会把频率降低到 30fps 来保持帧数的稳定。)
var ticking = false; // rAF 触发锁 function onScroll(){ if(!ticking) { requestAnimationFrame(realFunc); ticking = true; } } function realFunc(){ // do something... console.log("Success"); ticking = false; } // 滚动事件监听 window.addEventListener('scroll', onScroll, false);
实现以16.7ms 触发一次 handler,降低了可控性,但是提升了性能和精确度。
从本质上而言,我们应该尽量去精简 scroll 事件的 handler ,将一些变量的初始化、不依赖于滚动位置变化的计算等都应当在 scroll 事件外提前就绪。
输入事件处理函数,比如 scroll / touch 事件的处理,都会在 requestAnimationFrame 之前被调用执行。
因此,如果你在 scroll 事件的处理函数中做了修改样式属性的操作,那么这些操作会被浏览器暂存起来。然后在调用 requestAnimationFrame 的时候,如果你在一开始做了读取样式属性的操作,那么这将会导致触发浏览器的强制同步布局。
pointer-events 是一个 CSS 属性,可以有多个不同的值,大概的意思就是禁止鼠标行为,应用了该属性后,譬如鼠标点击,hover 等功能都将失效,即是元素不会成为鼠标事件的 target。
pointer-events: none 可用来提高滚动时的帧频。的确,当滚动时,鼠标悬停在某些元素上,则触发其上的 hover 效果,然而这些影响通常不被用户注意,并多半导致滚动出现问题。对 body 元素应用 pointer-events: none ,禁用了包括 hover 在内的鼠标事件,从而提高滚动性能。
大概的做法就是在页面滚动的时候, 给 添加上 .disable-hover 样式,那么在滚动停止之前, 所有鼠标事件都将被禁止。当滚动结束之后,再移除该属性。
文经授权转载自微信公众号「新原理研究所」(ID:newprincipia)
在物理学中,存在着许多令人惊奇的效应,有的就发生在日常生活中,有的则发生在遥远的深空,有的在多年之后终于被验证,有的则依然停留在理论层面。下面,我们将从最熟悉的效应开始,一直畅游到宇宙深处……
多普勒效应
无论是在地球上,还是在整个宇宙中,多普勒效应无处不在。一辆正在鸣笛驶来的汽车,从它向我们靠近到离我们远去,鸣笛的音调会发生变化,这是生活中最常见的多普勒效应。
更具体的说,当声源(或光源)相对于观测者移动时,观测者所接收到声波(或光波)的频率会发生变化。当源朝着接收方移动时,源的波长会变短,频率变高;如果源的移动方向是离接收方远去,那么波长会变长,频率降低。
多普勒效应在天体物理学中的应用更为显著,天文学家可以根据“红移”和“蓝移”来判断一个天体是在离我们远去还是向我们靠近。不同光波的频率对应不同的颜色,向我们靠近的天体,光波会向蓝光偏移,而远离我们的天体光波会向红光偏移。从探测恒星或星系靠近或远离我们的速度,到发现系外行星的存在,多普勒效应都扮演着重要的角色。
蝴蝶效应
一只在亚马逊河流域的蝴蝶挥动翅膀,引发了美国得克萨斯州的异常龙卷风……这个耳熟能详的故事,实际上描述的是在一个复杂系统的状态上出现的微小变化,可以在不久之后导致剧烈的变化。这样一种现象被称为蝴蝶效应。
当气象学家罗伦兹(Edward Lorenz)在谈到蝴蝶效应时,他实际上想要表达的是“混沌”这一概念。在混沌系统中,一个微小的调整就可能产生一系列的连锁效应,从而彻底地改变最终结果。
关于混沌的最令人惊讶的事情之一,可能就是物理学家用了很长时间才意识到它的普遍性,而这种历史性的空白之所以存在,部分原因在于混沌系统很难分析。对于某些非线性系统来说,哪怕我们能以任意精度测量出最微小的扰动,也只能对其在有限时间内作出预测。
这种混沌效应几乎出现在各种物理系统中。比如从量子水平上看,黑洞也会表现出类似的混沌行为。对于黑洞来说,哪怕是出现将一个粒子扔进这个深渊这样的微小改变,也可能彻底改变黑洞的行为方式。
迈斯纳效应
当一种材料从一般状态相变至超导态时,会对磁场产生排斥现象,这种现象被称为迈斯纳效应。1933年,迈斯纳(Walther Meissner)和他的博士后奥切森菲尔德(Robert Ochsenfeld)在对被冷却到超导态的锡和铅进行磁场分布测量时发现了这种效应(因此它也被称为迈斯纳-奥切森菲尔德效应)。当把超导材料放入磁场中时,超导体内部的磁通量会被即刻“清空”。这是因为磁场会使得超导体表面出现超导电流,该超导电流又反过来在超导体内产生与外磁场大小相等、方向相反的磁场,两个磁场相互抵消,使超导体内形成恒定为零的磁感应强度。因此从外部看起来,就像是超导体排空了体内的磁感线一样。
当把超导材料放在磁铁上时,只要这个磁体的磁场强度不超过特定极限,超导体便可以悬浮在磁体上方。这是因为迈斯纳效应让磁场发生畸变,产生了一个向上的力。
如果磁场的强度持续增加,超导体就会失去超导性,这类具有迈斯纳效应的超导体被称为I型超导体,它们都是金属超导体。还有一些超导体不具有或者只拥有部分迈斯纳效应,它们被称为II型超导体,通常是各种由非金属和金属构成的合金材料,这类超导体在强磁场下也能维持超导性能。
阿哈罗诺夫—玻姆效应
这是物理学中一个不太为人所知却意义重大的效应。
在经典电磁学中,只有在粒子直接与电磁场接触了的情况下,粒子才会受到场的影响。但在1959年,阿哈罗诺夫)Yakir Aharonov)和玻姆(David Bohm)两位理论物理学家提出,量子粒子就算从未直接与一个电场或磁场接触,也能受到这个电场或磁场的影响。在提出之后,这一观点遭到了广泛的质疑。经典电磁学中的电场和磁场是负责所有物理效应的基本实体,电磁场可以用一个被称为电磁势的量来表示,这个量在空间的任何地方都有一个值。从电磁势可以轻易地推导出电磁场。但电磁势的概念曾一直被认为只是一个纯粹的数学概念,不具有任何物理意义。
然而1959年,阿哈罗诺夫和玻姆提出了一个“思想实验”,将电磁势与可测量的结果联系了起来。在这个思想实验中,一束电子被分成两条路径,分别绕着一个圆柱形电磁铁(或螺线圈)的两侧运动,磁场集中在线圈内部,而且磁场大小可以被调节的极弱。因此这两条电子路径可以穿过一个基本没有场存在的区域,但这个没有场的区域的电磁势并不为零。
阿哈罗诺夫和玻姆从理论上论证了这两条不同路径上的电子会经历不同的相位变化,当这两条路径上的电子再重新结合时,可以产生可被检测到的干涉效应。阿哈罗诺夫-玻姆效应描述的就是量子粒子会受到的这种可被测量的经典电磁势的影响,表明电磁势不仅仅是一种数学辅助,而是真实的物理存在。
现在,物理学家已经通过一系列实验观测到了阿哈罗诺夫-玻姆效应。
网球拍效应
网球拍效应描述的是当把一个网球拍的一面朝上,旋转着将它抛向空中,接着球拍会绕着一个轴旋转的情况。当让球拍绕着横轴旋转时,会出现一种令人惊讶的效应:球拍除了会绕着横轴进行360度的旋转之外,几乎总是会出人意料地绕纵轴进行180度的翻转。
这种效应是由在抛掷过程中产生的微小偏差和扰动,以及三维刚体在三个不同的惯性矩下运动造成的。如果一个刚性物体有三个旋转轴“1”、“2”、“3”,也就是说它拥有三种不同的旋转方式,其中轴1的长度最短,轴3的长度最长,那么物体绕着轴1和轴3的旋转最稳定,而绕着中间轴轴2则不稳定。这种奇怪的效应是经典力学的结果,我们可以通过欧拉方程计算出这种效应。
视频来源:Plasma Ben / Youtube
在空中旋转的网球拍是这个效应的一个典型例子,这个效应也因此得名。它也被称为Dzhanibekov效应,以俄罗斯宇航员Vladimir Dzhanibekov的名字命名。1985年,Dzhanibekov在太空中发现了这个效应。
这个效应适用于所有轴1小于轴2,轴2小于轴3的三维刚体,即便中间轴的长度与轴3可能非常接近,也会出现这种绕着最长和最短的轴旋转稳定;而绕着中间轴的运动则会出现即使在最小的干扰下,也会引发的180度翻转现象。
光电效应
当光照射在金属表面时,它会将围绕着原子核旋转的电子“踢”出来,这便是著名的光电效应。但是要让这一切发生,光的频率必须高于某个阈值——这个值的大小取决于材料。如果频率低于阈值,那么不论光的强度有多大,都无法将电子踢出。
1905年,为了解释光电效应,爱因斯坦(Albert Einstein)提出了光实际上是由量子——即光子构成的,而光子的能量正比于频率。爱因斯坦也因提出光电效应而在1922年被授予诺贝尔物理学奖。
光电效应非常重要,它不仅是光合作用的基础,同时也是现代许多电子设备,如光电二极管、光导纤维、电信网络、太阳能电池等等的理论基础。
霍尔效应
1879年,年仅24岁的霍尔(Edwin Hall)发现了一个神奇的现象。他注意到,如果将一个有电流流过的金属片放到磁场中,让磁感线以垂直的角度穿过金属片的表面,那么在既垂直于磁场又垂直于电流的方向上就会产生一个电势差,这种现象便是霍尔效应。它之所以发生,是因为带电粒子在磁场中会受到洛伦兹力的影响,使其运动方向发生偏转。
霍尔的实验是在室温下以及中等强度的磁场(小于1T)下进行的。到了20世纪70年代末,研究人员开始使用半导体材料,在低温(接近绝对零度)和强磁场(约30T)的条件下,研究霍尔效应。在低温半导体材料中,电子具有很强的流动性,但它们只能在一个二维平面中运动。这种几何上的限制导致了许多意想不到的影响,其中一个就是改变了霍尔效应的特征,这种变化可以通过测量霍尔电阻随磁场强度的变化而观察到。
1980年,德国物理学家冯·克利青(Klaus von Klitzing)在类似的实验条件下发现,霍尔电阻随磁场强度的变化不是线性的,而是呈阶梯式的。阶梯出现的位置与材料属性无关,而是与一些基本物理常数除以一个整数有关。这便是整数量子霍尔效应,是整个凝聚态物理领域最重要、最基本的量子效应之一。这一发现也为冯·克利青在1985年赢得了诺贝尔物理学奖。
在对量子霍尔效应的后续研究中,研究人员又惊喜地发现了霍尔电阻的一个新阶梯,比冯·克利青发现的最高电阻高三倍。随后,研究人员发现了越来越多这样的新阶梯,所有新台阶的高度都能用以前的常数表示,但需要它们除以不同的分数。正是因为这个原因,新的发现被命名为分数量子霍尔效应。
量子隧穿效应
在日常生活中,如果我们把一颗大理石放入一个密封的盒子中,大理石显然是不可能从盒子逃出来的。但当我们把大理石变成一个量子粒子,把盒子换成量子盒子时,粒子是由一定概率可以逃出来的,这个现象被称为量子隧穿效应。
这里我们所说的困住的粒子的量子盒子,实际上是指能量势垒。量子隧穿之所以可能发生,是因为电子具有波的特性。量子力学为每一个粒子都赋予了波的特性,而且波穿透障碍的概率总是有限的。
虽然这听起来有悖于直觉,但确实真实存在的效应。你可能听说过,太阳发出的光要经过8分钟才抵达地球。然而,如果没有量子隧穿效应,太阳永远不会发出这些光子。在恒星中的这种氢聚变中,两个质子都带正电,会相互排斥。斥力会妨碍这两个粒子在太阳核心中因过于靠近而发生聚变,然而量子隧穿却让这些粒子可以“穿过”屏障,让聚变发生。
卡西米尔效应
这是一个表明“真空”不“空”的效应。
我们都知道,一个带正电和一个带负电的金属板如果靠得很近,那么它们之间就会存在相互吸引的力。但如果这两块金属板不带电呢?物理学家发现,在真空中它们也会相互吸引。这就是卡西米尔效应。
1948年,卡西米尔(Hendrik Casimir)预言真空中两个不带电荷的金属板会因为电磁场的量子涨落的影响而受到吸引力,力的大小随金属板距离的四次方成反比。之所以有这种力存在,是因为金属板之间充满了包含能量的电磁波,当它们相互靠近时,真空中的一些波会逐渐被挤压出去,使得周围空间的能量高于金属板之间的能量,推动它们继续靠近,从而表现得像是存在一种吸引力。
卡西米尔效应预言的吸引力非常微弱,以至于大部分情况下都可以忽略不计。直到1997年,物理学家们才有足够精确的手段能直接证实卡西米尔效应的存在。
在卡西米尔效应被提出不久就有物理学家开始思考是否可以逆转卡西米尔效应——将吸引力转化成排斥力。2010年有科学家提出应该存在能让吸引力和排斥力相互抵消的方法,从而在两个表面之间建立一种平衡态。2019年,加州大学伯克利分校的张翔教授和他的团队做到了这一点。
霍金效应
黑洞,是宇宙中最神秘的天体,它的引力是如此之强,以至于任何东西一旦进入了它的视界就再也无法逃脱。近年来,科学家不仅探测到了黑洞合并辐射出的引力波,也“拍”下了黑洞的第一张图像。
在20世纪70年代初,霍金(Stephen Hawking)发现了黑洞最奇妙的效应。他证明了黑洞是具有温度的,并指出黑洞释放的热辐射的温度与黑洞的质量成反比。这是他最著名的科学成就:霍金辐射。
根据量子场论,所谓的真空并不是完全空的,而是充满了量子涨落——虚粒子对会不断的冒出又湮灭。当这些虚粒子对出现在黑洞的事件视界附近时,虚粒子对中的其中一个会被黑洞捕获,另一个则会逃逸。落入黑洞的粒子必须拥有负能量,这样才能保持总能量不变。而对于外部的观测者而言,黑洞刚刚发射了一个粒子。
然而,想要试图测量这种效应是一件非常难的事情,因为霍金辐射非常微弱,很容易被渗透在整个宇宙中的宇宙微波背景辐完全抹去。
文:二宗主
图:岳岳
参考来源:
[1] http://backreaction.blogspot.com/2020/02/the-10-most-important-physics-effects.html
[2] https://www.sciencenews.org/article/douglas-stanford-sn-10-scientists-watch
[3] https://www.ias.edu/ideas/2017/stanford-black-holes-butterfly-effect
[4] https://www.nobelprize.org/nobel_prizes/physics/laureates/2003/popular.html
[5] http://news.mit.edu/2019/aharonov-bohm-effect-physics-observed-0905
[6] https://physics.aps.org/story/v28/st4
[7] https://phys.org/news/2017-07-quantum-world-tennis-racket.html
[8] https://sciencedemonstrations.fas.harvard.edu/presentations/tennis-racquet-flip
[9] https://www.nobelprize.org/prizes/physics/1921/einstein/facts/
[10] https://www.nobelprize.org/prizes/physics/1998/press-release/
[11] http://discovermagazine.com/2018/nov/your-daily-dose-of-quantum?es_ad=122882&es_sh=9c625adbb2227d8a9fe6f4c50d342594
[12] https://archive.briankoberlein.com/2014/03/30/memory-hole/
[13] https://journals.aps.org/prb/abstract/10.1103/PhysRevB.99.125403
[14] https://www.nature.com/articles/d41586-019-03729-4
[15] http://nautil.us/issue/69/patterns/how-to-get-close-to-a-black-hole
原题目:十大物理学效应
来源:新原理研究所
编辑:米老猫
*请认真填写需求信息,我们会在24小时内与您取得联系。