修复超过 180 度限制的二面角以创建平滑曲线

Fixing dihedral angles beyond 180 degrees limit to create smooth curves

我有一个商业程序的输出,其中包含及时的分子二面角。问题显然来自取余弦时已知的象限问题,您的间隔是 -180 到 180,我不熟悉。如果二面角大于 180,此商业程序(SHARC,用于分子动力学模拟)会理解它大于 -180,从而在图上创建跳跃(您可以在下图中查看示例)。 是否有正确的数学方法将这些图转换为平滑曲线,即使这意味着要达到高于 180 度的二面角? 我正在尝试的是创建一个 python 程序来处理每个特殊情况,当从 180 度到 -180 度或反之时,如何使用正弦和余弦来处理接近 90 度或 0 度的情况。 . 但它变得极其复杂,在 X 轴的 for 循环 运行 中有超过 12 个嵌套的 if 命令。 如果只有一个图形,我可以手工完成,但我会有几十个类似的情节。 我附加了一个 ascii 文件,用于绘制此图。

我希望它看起来像这样:

非常感谢,

贡萨尔维斯岛

这称为相位展开。

由于您的曲线平滑且变化缓慢,每次看到较大的负(正)跳跃时,添加(减去)360。这将恢复原始曲线。 (对于跳跃阈值,我想170应该不错)。

好的,我找到了一个非常简单的解决方案。

Numpy 具有 unwrap 函数。我只需要为函数提供一个以弧度为单位的角度的向量。 谢谢 Yves 给我问题的名称。这帮助我找到了解决方案。