跳转到内容

Celestia/脚本位置

来自维基教科书,开放世界开放书籍

驾驶你的宇宙飞船,伙计?

[编辑 | 编辑源代码]

Celestia v1.5.0(及更高版本)的 SSC 文件中提供的脚本方法的一个不太明显的含义是,现在可以在Celestia 运行时以任意坐标和方向重新定位对象。

换句话说,你可以将星际宇宙飞船飞到太阳系中的任何地方。

ScriptedOrbit 函数的返回值是对象坐标系中的 x、y、z。

任何 x、y、z。

类似地,ScriptedRotation 可以返回任何四元数的成分。

如果你在对象的SSC 文件中为其指定了适当的轨道和物体参考系,你可以最小化ScriptedOrbitScriptedRotation 中要使用的算法的复杂性。

不幸的是,ScriptedOrbitScriptedRotation 尚未在STC 文件 中提供。因此,你只能在距离恒星或重心 1 光年的范围内定义可移动对象,因为 Celestia 仅在视点距离父恒星 1 光年范围内时才会绘制 SSC 对象。

与用户沟通

[编辑 | 编辑源代码]

你仍然需要一种方法让用户与ScriptedOrbit 通信,以告诉它生成新的 x、y、z。

ScriptedOrbitScriptedRotation 模块无法直接与键盘、鼠标或操纵杆交互,也无法与 CELX 脚本交互,但它们可以通过调用 celestia:getselection() 来检测当前所选对象的名称。

一种解决方案是定义具有唯一名称的对象,这些对象可以由用户或脚本选择。一种可能性是为此定义DSC OpenCluster 对象。

时间异常

[编辑 | 编辑源代码]

在你使用的定位算法中,你应该考虑到用户可以将当前时间设置为任意值。“应该”是关键词。如果你的算法在时间倒流时无法正常工作,这真的没什么大不了的:只需确保记录该限制即可。

华夏公益教科书