Celestia/Celx 脚本/CELX Lua 方法/CEL 命令同步
外观
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
- 找到名称为<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)