Celestia/脚本位置
外观
< Celestia
Celestia v1.5.0(及更高版本)的 SSC 文件中提供的脚本方法的一个不太明显的含义是,现在可以在Celestia 运行时以任意坐标和方向重新定位对象。
换句话说,你可以将星际宇宙飞船飞到太阳系中的任何地方。
ScriptedOrbit 函数的返回值是对象坐标系中的 x、y、z。
任何 x、y、z。
类似地,ScriptedRotation 可以返回任何四元数的成分。
如果你在对象的SSC 文件中为其指定了适当的轨道和物体参考系,你可以最小化ScriptedOrbit 或 ScriptedRotation 中要使用的算法的复杂性。
不幸的是,ScriptedOrbit 和 ScriptedRotation 尚未在STC 文件 中提供。因此,你只能在距离恒星或重心 1 光年的范围内定义可移动对象,因为 Celestia 仅在视点距离父恒星 1 光年范围内时才会绘制 SSC 对象。
你仍然需要一种方法让用户与ScriptedOrbit 通信,以告诉它生成新的 x、y、z。
ScriptedOrbit 和 ScriptedRotation 模块无法直接与键盘、鼠标或操纵杆交互,也无法与 CELX 脚本交互,但它们可以通过调用 celestia:getselection() 来检测当前所选对象的名称。
一种解决方案是定义具有唯一名称的对象,这些对象可以由用户或脚本选择。一种可能性是为此定义DSC OpenCluster 对象。
在你使用的定位算法中,你应该考虑到用户可以将当前时间设置为任意值。“应该”是关键词。如果你的算法在时间倒流时无法正常工作,这真的没什么大不了的:只需确保记录该限制即可。