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)