Celestia/Celx 脚本/CELX Lua 方法/CEL 命令锁定
外观
锁定 { }
此命令将两个对象锁定在一起。第一个选择的物体称为参考物体,第二个选择的物体称为目标物体。当它们作为一个对被锁定在一起时,当你旋转场景时,目标物体保持锁定到参考物体,并且显示的距离是两个物体之间的距离。
在锁定模式下,您的位置相对于参考物体和目标物体之间的线保持固定。当目标物体围绕参考物体移动(相对而言)时,您也会移动。因此,如果目标物体是太阳,则参考物体的照亮部分(它的“相位”)保持不变,因为您与太阳同步地围绕物体移动。
此命令没有参数。
CELX 等效-1
基于 observer:setframe() 方法。
- 找到并选择名为<refstring> 的参考物体并存储在“objectname_ref”中。
objectname_ref = celestia:find( <refstring> ) celestia:select(objectname_ref)
- 找到名为<tarstring> 的目标物体,该物体必须与“objectname_ref”锁定并存储在“objectname_tar”中。
objectname_tar = celestia:find( <tarstring> )
- 将参考系的坐标系设置为与“objectname_tar”作为目标物体和“objectname_ref”作为参考物体锁定,并存储在“frame”中。
frame = celestia:newframe("lock", 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("lock", objectname_ref, objectname_tar) obs = celestia:getobserver() obs:setframe(frame)
CELX 等效-2
基于 observer:lock() 方法。
- 找到并选择名为<refstring> 的参考物体并存储在“objectname_ref”中。
objectname_ref = celestia:find( <refstring> ) celestia:select(objectname_ref)
- 找到名为<tarstring> 的目标物体,该物体必须与“objectname_ref”锁定并存储在“objectname_tar”中。
objectname_tar = celestia:find( <tarstring> )
- 获取活动视图的观察者实例,并在选定物体从“objectname_tar”到“objectname_ref”的轴上激活锁定模式。
锁定模式与将参考系设置为与“objectname_tar”作为目标物体和“objectname_ref”作为参考物体锁定相同。
obs = celestia:getobserver() obs:lock(objectname_tar)
总结
objectname_ref = celestia:find( <refstring> ) celestia:select(objectname_ref) objectname_tar = celestia:find( <tarstring> ) obs = celestia:getobserver() obs:lock(objectname_tar)
示例
以下示例将使您的位置相对于地球中心保持不变,并使太阳(太阳)和地球在相机视图中保持固定位置。这与您在键盘上键入以下按键序列相同:[3] 键 → [F] 键 → [0] 键(零)→ [shift + :] 键。
CEL
select { object "Sol/Earth" } follow { } select { object "Sol" } lock { }
CELX 使用 observer:lock() 方法
-- Activate Lock-mode on target object. objectname_ref = celestia:find("Sol/Earth") celestia:select(objectname_ref) objectname_tar = celestia:find("Sol") obs = celestia:getobserver() obs:lock(objectname_tar)
CELX 使用 observer:setframe() 方法
-- Set the coordinate system of the frame of reference to lock. objectname_ref = celestia:find("Sol/Earth") celestia:select(objectname_ref) objectname_tar = celestia:find("Sol") frame = celestia:newframe("lock", objectname_ref, objectname_tar) obs = celestia:getobserver() obs:setframe(frame)