跳转到内容

Celestia/Celx 脚本/CELX Lua 方法/CEL 命令同步

来自 Wikibooks,开放世界的开放书籍

synchronous { }

使当前选定的物体以同步轨道模式运行。这激活了地理1.6.0本体固定坐标系。地理1.6.0本体固定坐标系允许您保持在选定物体(不仅仅是地球)上方的静止或地球同步轨道。当物体在其下方旋转时,摄像机与其一起移动,就像它连接到物体上一样。

地理1.6.0本体固定坐标系中,轴随选定物体一起旋转。Y轴是旋转轴 - 逆时针方向,因此对于像地球这样的顺行旋转器,它指向北,对于像金星这样的逆行旋转器,它指向南。X轴从物体的中心指向其零经度子午线和赤道的交点。Z轴(与XY平面成直角)完成了右手坐标系。因此,具有恒定地理坐标的物体将相对于物体表面上的一个点保持固定。

必须首先使用select命令来选择一个物体。

此命令没有参数。


CELX 等效-1

基于celestia:newframe()observer:setframe()方法。

  • 找到名称为<string>的目标物体,使其与之处于同步轨道,并存储在“objectname”中。
objectname = celestia:find( <string> )
  • 创建新的参考系到以“objectname”为参考物体的平面坐标系,并将其存储在“frame”中。
frame = celestia:newframe("planetographic", objectname)
  • 获取活动视图的观察者实例,并将参考系的坐标系设置为“frame”。
obs = celestia:getobserver()
obs:setframe(frame)

总结

objectname = celestia:find( <string> )
frame = celestia:newframe("planetographic", objectname)
obs = celestia:getobserver()
obs:setframe(frame)


Celestia 版本1.6.0及更高版本的CELX 等效-2

基于celestia:newframe()observer:setframe()方法。

  • 找到名称为<string>的目标物体,使其与之处于同步轨道,并存储在“objectname”中。
objectname = celestia:find( <string> )
  • 创建新的参考系到1.6.0本体固定坐标系,以“objectname”为参考物体,并将其存储在“frame”中。
frame = celestia:newframe("bodyfixed", objectname)
  • 获取活动视图的观察者实例,并将参考系的坐标系设置为“frame”。
obs = celestia:getobserver()
obs:setframe(frame)

总结

objectname = celestia:find( <string> )
frame = celestia:newframe("bodyfixed", objectname)
obs = celestia:getobserver()
obs:setframe(frame)


CELX 等效-3

基于observer:synchronous()方法。

  • 找到名称为<string>的目标物体,使其与之处于同步轨道,并存储在“objectname”中。
objectname = celestia:find( <string> )
  • 获取活动视图的观察者实例,并在“objectname”上激活同步模式。
obs = celestia:getobserver()
obs:synchronous(objectname)

注意:同步模式与将参考系设置为平面坐标系(也称为地理或1.6.0本体固定)相同,其中“objectname”作为参考物体。

总结

objectname = celestia:find( <string> )
obs = celestia:getobserver()
obs:synchronous(objectname)


示例
此示例选择地球并将坐标系设置为平面/地理/本体固定(同步)。

CEL

select { object "Sol/Earth" }
synchronous { }

使用celestia:newframe()observer:setframe()方法的CELX

earth = celestia:find("Sol/Earth")
celestia:select(earth)
frame = celestia:newframe("planetographic", earth)
obs = celestia:getobserver()
obs:setframe(frame)

对于Celestia版本1.6.0及更高版本,使用celestia:newframe()observer:setframe()方法的CELX

earth = celestia:find("Sol/Earth")
celestia:select(earth)
frame = celestia:newframe("bodyfixed", earth)
obs = celestia:getobserver()
obs:setframe(frame)

使用observer:synchronous()方法的CELX

earth = celestia:find("Sol/Earth")
celestia:select(earth)
obs = celestia:getobserver()
obs:synchronous(earth)


返回 CEL 命令索引

华夏公益教科书