米米的博客

做了一点微小的工作

ArcGIS 提供了非常强大的 JavaScript API,允许用户方便地在浏览器中展现 3D 地形等场景。同时,ArcGIS 也提供了一个底层接口externalRenderers 来访问 SceneView 的 WebGL 上下文,这进一步地拓展了用户自定义的自由度。一些第三方 WebGL 库,例如 three.js,与这一功能兼容。ArcGIS 官方提供了一个样例,能够用 three.js 的 WebGLRenderer 实时渲染国际空间站的位置:Use three.js from an external renderer

在 externalRenderers 的官方文档中,提到了 Binding the correct render target 的问题。原因是 ArcGIS 的 SceneView 并没有使用 WebGL 默认的 framebuffer,如果调用gl.bindFramebuffer(null),之后的渲染将不能够正确的显示在屏幕上。ArcGIS 提供了一个名为bindRenderTarget()的方法,用于解决这一问题。在官方样例中,可以找到修改 three.js 行为的代码:

1
2
3
4
5
6
7
8
9
10
// The ArcGIS API for JavaScript renders to custom offscreen buffers, and not to the default framebuffers.
// We have to inject this bit of code into the three.js runtime in order for it to bind those
// buffers instead of the default ones.
var originalSetRenderTarget = this.renderer.setRenderTarget.bind(this.renderer);
this.renderer.setRenderTarget = function(target) {
originalSetRenderTarget(target);
if (target == null) {
context.bindRenderTarget();
}
};

这一段代码在 three.js r79 版本中是有效的,不过在 r127 版本中,WebGLRenderer 的 framebuffer state 被重构了,使得context.bindRenderTarget未能正确地执行,造成无法渲染的问题。

解决方案是,在render方法中的this.renderer.state.reset();之后,加入一行context.bindRenderTarget();。而 ArcGIS 官方样例中对setRenderTarget的修改则不再被需要了。

相比于 Steam,Epic Games 并没有提供一键移动游戏安装位置的功能,因此需要手动修改 Epic Games 的数据文件。操作步骤如下。

  1. 关闭 Epic Games Launcher。
  2. 手动将游戏文件用剪切粘贴的方式移动到新的位置。
  3. 在文件管理器中进入目录C:\ProgramData\Epic\EpicGamesLauncher\Data\Manifests
  4. 这个目录下有许多.item格式的 manifest 文件。使用文本编辑器(例如记事本或者 Visual Studio Code)打开它们,根据文件的内容找到你移动的游戏对应的 manifest 文件。
  5. 将这个 manifest 文件中的ManifestLocationInstallLocationStagingLocation的值从旧的安装位置修改为新的安装位置,然后保存。
  6. 打开文件C:\ProgramData\Epic\UnrealEngineLauncher\LauncherInstalled.dat
  7. 将其中InstallLocation的值改为新的安装位置,然后保存。
  8. 重新启动 Epic Games Launcher 即可。

参考文章:Moving Epic store games From one drive to another

RPM 是在 Linux 下广泛使用的软件包管理器,由 Red Hat 开发。它的全称是 RPM Package Manager,和 PHP、GNU 一样,是一个递归的缩写。RPM 软件包后缀名是.rpm,不过在 Ubuntu 这种使用 APT 包管理器的发行版上并不支持这种格式。将 RPM 解包后,便可以得到软件的本体。

这是将.rpm转为.tar.gz的方法,以openmpi为例:

1
2
3
rpm2cpio openmpi-4.1.0-1.src.rpm | cpio -idv
tar -xzf openmpi-4.1.0.tar.gz
./configure --prefix=$HOME && make && make install

通过alien甚至可以直接将.rpm转为.deb

1
2
3
sudo apt install alien
sudo alien openmpi-4.1.0-1.src.rpm
sudo dpkg -i openmpi-4.1.0-2.src.deb

本文同时作为北京大学《量子力学讨论班》课程论文提交。转载请注明出处。

矩阵力学是量子力学的一种表述形式,由海森堡、玻恩和约尔当于 1925 年完成。矩阵力学的思想出发点是玻尔原子模型中许多观点,例如电子的轨道,并不是可观测量。海森堡计划创造一个理论,只用实验中经常接触到的光谱线的频率、强度等物理量,完成对于系统动力学的描述。本文跟随海森堡的思路,对矩阵力学的发展过程进行了深入研究。

引言

19 世纪末,对于原子光谱学的研究取得了很大的进展,并产生了一些经验公式。其中有一条里兹组合规则(Ritz combination principle),其内容为:对光谱中的一条频率为的谱线,总是可以找到两个正整数与之对应;倘若存在对应的谱线,那么可以给出的值为

并且,这个原子的光谱中,也一定包含频率为的谱线。特别地,若,那么有

从物理意义上来说,此过程的初末状态相同,即,那么里兹组合规则将蕴含的对称性。

对于氢原子这一最基础的情况,莱曼(Lyman)线系、巴耳末(Balmer)线系、里兹 - 帕申(Ritz-Paschen)线系等光谱线系被相继发现,它们的频率都满足里兹组合规则。1889 年,瑞典物理学家里德伯(Rydberg)提出了表示氢原子谱线的经验公式:

其中被称为里德伯常数。这一公式现在被称为里德伯 - 里兹公式(Rydberg formula),它为玻尔提出氢原子模型提供了灵感。

旧量子论

所谓「旧量子论」,指的是诞生于 20 世纪初期的一系列量子理论,包括普朗克黑体辐射理论和玻尔氢原子模型。开尔文勋爵(Lord Kelvin)所提出的著名的「两朵乌云」说 \footnote {1900 年 4 月 27 日,开尔文勋爵给英国皇家研究院做了一个广为人知的演讲,题为《覆盖热量和光线的动力学理论的十九世纪的乌云》(Nineteenth-Century Clouds over the Dynamical Theory of Heat and Light)。},就包含将经典统计物理中的能均分定理应用于黑体辐射时出现的「紫外灾难」问题。普朗克最终通过数学技巧给出了能够拟合维恩公式(Wien's displacement law)和瑞利 - 金斯公式(Rayleigh–Jeans law)的黑体辐射定律,解决了这一问题,并通过研究其物理意义,提出了普朗克量子化条件,那就是

普朗克的能量量子化假说,揭开了量子理论的序幕。1913 年,玻尔(Bohr)在他的导师卢瑟福(Rutherford)的研究基础上,提出了著名的玻尔氢原子模型。这一模型引入了一些重要的假说:

  • 一个是「轨道」的概念,也就是说核外电子是在特定的轨道中运动,并且这样的运动是稳定的;\footnote {这一假说是为了解决经典电动力学理论中,电子会因为作加速运动时的电磁辐射失去能量,最终落到原子核中的问题。需要注意的是,玻尔的「轨道」思想与后来量子力学中「定态」的概念还有一定差距。}
  • 另一个是「跃迁」,电子从一个轨道到另一个轨道,将会吸收或发射光子,频率满足

这一套理论的推导还利用了所谓的对应原理,即在普朗克常数趋于 0,或者量子数趋于无穷时,量子体系的行为将会趋于经典体系。换言之,当量子数足够大时,氢原子可以看成电子围绕质子作圆周运动的朴素的经典模型。玻尔由此给出了轨道能量的表达式

并且,给出了一个推论,那就是角动量量子化条件

1916 年,索末菲(Sommerfeld)推广了这一条件,为 \footnote {可见玻尔的角动量量子化条件正是索末菲量子化条件的特殊情况,对角度环路积分得到的体现为。}

以上就是旧量子论的主要内容,它解决了氢原子光谱的波长问题,从理论上给出了里德伯常数的表达式。通过不同的实验方法给出的普朗克常数的值在误差范围内是相同的,这给了物理学者们强大的信心。但是,仍有许多问题无法通过旧量子论解决。例如,不同的谱线有强有弱,谱线强度表现的是发生某种跃迁的概率,但旧量子论无法给出理论研究。再如,玻尔的氢原子模型对类氢离子取得了成功,对于离子光谱的计算与毕克林(Pickering)线系吻合;但是对于多电子体系,或者存在外磁场的情况,就束手无策。

旧量子论所面临的这些巨大的局限性,必须依靠新的理论才能解决。

阅读全文 »

在更新了 macOS 上的 Epic Games Launcher 后,有时会出现窗口无法显示或启动后闪退的问题。解决方案是:

  1. 关闭 Epic Games Launcher。
  2. 打开终端。
  3. 输入:
1
2
cd ~/Library/Caches/com.epicgames.EpicGamesLauncher
rm -rf webcache_*
  1. 启动 Epic Games Launcher。如果弹出以下窗口,选择「Don't Reopen」。

    这时 Epic 会退出,再次启动 Epic 后问题即可修复。
0%