跳转到内容

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

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

setframe { ref <refstring> target <tarstring> coordsys <coordstring> }

设置当前活动的坐标系。

参数

ref <refstring>
定义参考(第一个)对象。无默认值。
target <tarstring>
是可选的,并定义目标(第二个)对象,用于双对象坐标系,例如 lock。无默认值。
coordsys <coordstring>
默认值“universal”。
必须是以下值之一
  • 1.6.0 bodyfixed
  • chase
  • ecliptical
  • equatorial
  • geographic → (与旧脚本兼容,此处保留)
  • lock
  • observer
  • universal


CELX 等效

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

  • 查找并选择名称为 <refstring> 的参考对象,并存储在“objectname_ref”中。
    对于框架类型“universal”,不需要。
objectname_ref = celestia:find( <refstring> )
celestia:select(objectname_ref)
  • 查找名称为 <tarstring> 的目标对象,它必须与“objectname_ref”锁定,并存储在“objectname_tar”上。
    仅对于类型为 lock 的框架需要。
objectname_tar = celestia:find( <tarstring> )
  • 创建新的参考框架并存储在“frame”中。
    <coordstring> 描述框架类型,可以是以下值之一
    • "universal", "ecliptic", "equatorial", "planetographic", "observer", "lock", "chase", 1.6.0 "bodyfixed".
    • 在 Celestia 版本 1.6.0 中,名称“bodyfixed”将替换“planetographic”,但出于兼容性考虑,名称“planetographic”将继续有效。
frame = celestia:newframe( <coordstring>, objectname_ref, objectname_tar)
  • 获取活动视图的观察者实例,并将参考框架的坐标系设置为“frame”。
obs = celestia:getobserver()
obs:setframe(frame)

总结

objectname_ref = celestia:find( <refstring> )
celestia:select(objectname_ref)
objectname_tar = celestia:find( <tarstring> )
frame = celestia:newframe( <coordstring>, objectname_ref, objectname_tar)
obs = celestia:getobserver()
obs:setframe(frame)


示例
以下示例将坐标系设置为 lock,这将在地球和月球在显示器上锁定在一起。

CEL

setframe { ref "Sol/Earth" target "Sol/Earth/Moon" coordsys "lock" }

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

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


返回 CEL 命令索引

华夏公益教科书