爱因斯坦的日全食实验

阿尔伯特·爱因斯坦曾在他的相对论中提出了一个著名的日全食实验,后来几经波折,最终被英国天文工作者和科学家们实施、最终证实了爱因斯坦关于光线会受重力场影响的观点及理论的正确性,这一理论和实验,标志着爱因斯坦相对论的正确性,从而轰动世界。 2019年5月16日,葡萄牙发行了一套关于爱因斯坦日全食实验的纪念邮票,包含邮票、首日封、小型张等多款邮品,官方介绍如下: 发行官网:https://www.ctt.pt/邮票技术手册:邮票官方介绍手册 这套纪念品中的邮票由2张票面构成,如果单看票面,只能知道它是纪念爱因斯坦提出的日全食实验,并不能对实验的具体原理详尽了解。在随邮票一同发行的产品手册中,则有着更多的信息介绍,可以清楚的看出实验的设计想法:通过在日全食时观察通过太阳周围临近恒星的位置,观察到光在重力场下会发生偏转、扭曲的事实。 爱因斯坦最初大约是在1905年时提出的狭义相对论,其中提到光线会被重力影响。但是最初的论文中并没有这个理论的设计实验,之后1907年时他对之前的论文进行补充、并在4年之后的1911年形成了一篇关于光线受重力影响的“补充论文”,其中给出了具体的理论公式和实验方案。在其理论计算下得出了光线可受太阳引力影响发生偏移的角度。这篇论文的原文和英文版在网络上可以找到。 上面是英文翻译版,下面是这篇论文的原稿: 然而在1911年提出这个实验时,并没有合适的日食事件可供实施这一实验。爱因斯坦呼吁当时的天文学家可以充分利用这段“等待期”进行筹备,他对这个观测实验十分期待并且投入了大量的精力以极力促成此事。 当时柏林大学天文台有一位年轻的天文学家埃尔文·弗伦德里希(Erwin Freundlich),读到了上面提及的论文和实验方案,他对此十分感兴趣,便与爱因斯坦联系并一同商讨进行此次天文观测。虽然如此,但限于爱因斯坦当时的学术权威和声望并不高,他的构想在当时并未获得更多人的支持,尤其是资金方面的支持。因而爱因斯坦甚至提出可以自己承担一部分费用、他给了弗伦德里希2000马克的资金用于初期准备。 就在前期准备得差不多、距离1914年8月的一次日全食不到20天时,第一次世界大战爆发了(1914年7月28日),德国裔的天文学家弗伦德里希在克里米亚被发现,俄国人认为随身携带着大量“摄影器材”的“天文学家”十分可疑,所以将他拘捕。从而失去了那一年日全食观测的机会。 想再一次盼到日全食,对于人类而言只能期待、别无他法。时间慢慢到达了1919年,是年5月29日将再一次发生日全食现象,好在那时战争已经结束(一战结束于1918年11月11日)。当时英国剑桥天文台的台长、天文学家阿瑟·斯坦利·爱丁顿(Arthur Eddington)决定完成爱因斯坦关于光线的实验——对当年的日全食进行观测和拍照。 整个实验都是由英国天文学家们共同策划、由英国相关部门出资支持的。这在当年很罕见,毕竟爱因斯坦当时身在德国、而英德两国在1919年时的关系并不友好。这一点上看来,科学家们似乎并不关心政治、也不在乎国与国之间的矛盾,他们向往和关注的只有科学和真理。 经过紧罗密补,1919年3月初,爱丁顿等人从利物浦出发,分成两支实验团队分别前往巴西北部的亚马逊丛林和普林西比岛,这两处都有着最佳的日全食观测地点。 之后的事情妇孺皆知、也是这套邮票上体现出来的了:1919年5月29日,由爱丁顿科考队在普林西比岛获得的照片最终被选用为实验结论样本,并通过后期的图像分析和计算,验证了爱因斯坦的光线理论。从而为相对论的底层补充上了重要的、无可动摇的实验依据。

小游戏(2)画一个小球并让它可以在画面中移动

因为之前实现的 Hello, world 程序是基于图形化窗口的,之所以仍然称为“Hello, world”只是一个编程约定俗成,其实更准确一些说应该是“基础运行窗口”,目的是将整个开发环境先搭建起来、跑起来。 既然是图形化的窗口,要做的事情自然不会是枯燥的文字输入输出,而是可以完成图形图像的绘制和显示,这就为完成一个简单的小游戏打下了良好的基础。 在这个“可绘图”的窗口中,通过使用矩形、圆形、矩形等基本的绘图指令,完成一些基本几何图形的绘制,这样就可以比较感性的感受到我们即将完成的游戏的外观样貌。虽然并不精美,也没有真正的游戏那么丰富的图像,但在初期进行“游戏原型”开发时,这是比较常用的方式。 这个视频就是在窗口中画一个圆形,并且每一次画面刷新的时候都调整一下这个圆形的位置,通过频繁的刷新、重绘,最终得到的整体效果就是小球好像在移动。 后面基于这个小球的绘制和移动的方法,将做出更多的几何图形,并且让他们按照规则进行各自的移动,彼此之间也会产生简单的碰撞检测和反弹规则。 需要注意两点: 1、对于真正的游戏,因为画面中存在着大量的图形元素,每一个图形元素都有自己的行动轨迹和运算过程,这将是对系统性能的极大挑战。所以在进行一个更为复杂的游戏开发时,并不能简单粗暴的按照当前的绘图、轨迹计算思路进行开发,而要有更多的考量。 例如对画面中的各个显示出来的图形进行可见性判断,如果它并不可见(被遮挡),那么就可以不进行运算或简化运算;对于某些复杂的碰撞或计算,要视图找出更高效的运算算法,以便确保游戏帧率得到保障;必要的时候,甚至会简化运算算法等等; 2、小球的行进过程、彼此的碰撞过程,实际上是对刚性运动物体进行模拟,我们自己实现整个物理规则,如果想实现的完善、正确,是比较复杂和困难的。如果真的要做游戏,更合理的做法是使用现成的物理引擎或游戏引擎进行游戏的开发。 当然现在这个“小游戏”并不是真的要实现一个成品游戏出来,而是我们计算机课程中的一道练习题,所以不允许使用现成的物理引擎进行开发,它实际上就是要考验我们自己是否有能力重新打造这些基本的方法和底层实现,所以没有偷懒的路径,只有自己一点点的将每一条物理规则实现出来。虽然我们实现的不一定完善、高效,但整体过程,还是要一步步走下来,才能得到一个比较满意的结果的。