跳轉到內容

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 命令索引

華夏公益教科書