Celestia/Celx 指令碼/CELX Lua 方法/CEL 命令 setposition
setposition { base <basevector> offset <offsetvector> }
-- 或者 --
setposition { x <xbase64> y <ybase64> z <zbase64> }
將相機移動到三維宇宙中的特定位置。如果您嘗試基於書籤或 Cel://URL 複製位置,您還需要設定正確的座標系、方向和其他引數。(另請參見 seturl)。
引數
- base <basevector>
- 基向量 [ <xnumber> <ynumber> <znumber> ]。無預設值。
此值可以從 Celestia 書籤中獲取,書籤儲存在 Celestia 目錄中的 favorites.cel 檔案中。- 第一個值 <xnumber> 表示相機位置,沿 X 軸以光年為單位。
- 第二個值 <ynumber> 表示相機位置,沿 Y 軸以光年為單位。
- 第三個值 <znumber> 表示相機位置,沿 Z 軸以光年為單位。
- offset <offsetvector>
- 偏移值。無預設值。
此值可以從 Celestia 書籤中獲取,書籤儲存在 Celestia 目錄中的 favorites.cel 檔案中。- 第一個值 <xoffsetnum> 表示相機位置相對於基值 <basevector> 的偏移量,沿 X 軸以光年為單位。
- 第二個值 <yoffsetnum> 表示相機位置相對於基值 <basevector> 的偏移量,沿 Y 軸以光年為單位。
- 第三個值 <zoffsetnum> 表示相機位置相對於基值 <basevector> 的偏移量,沿 Z 軸以光年為單位。
-- 或者 --
引數
- x <xbase64>
- 表示 Cel://URL 儲存的 X 基值和 X 偏移值。無預設值。
它從以下 Cel://URL 值中獲取:?x=. - y <ybase64>
- 表示 Cel://URL 儲存的 Y 基值和 Y 偏移值。無預設值。
它從以下 Cel://URL 值中獲取:&y=. - z <zbase64>
- 表示 Cel://URL 儲存的 Z 基值和 Z 偏移值。無預設值。
它從以下 Cel://URL 值中獲取:&z=.
CELX 等效值-1
基於引數列表-1 和 celestia:newposition()、celestia:newvector()、position:addvector() 和 observer:gotolocation() 方法。
- 從 <xnumber>、<ynumber> 和 <znumber> 建立新的位置物件,並存儲在“pos”中。位置物件的元件單位為百萬分之一光年,因此您必須將 Celestia 書籤中的光年轉換為 CELX 位置物件中的百萬分之一光年。
pos = celestia:newposition( <xnumber> * 1e6, <ynumber> * 1e6, <znumber> * 1e6 )
- 從 <xoffsetnum>、<yoffsetnum> 和 <zoffsetnum> 建立新的向量物件,並存儲在“vec”中。向量物件的元件單位為百萬分之一光年,因此您必須將 Celestia 書籤中的光年轉換為 CELX 向量物件中的百萬分之一光年。
vec = celestia:newvector( <xoffsetnum> * 1e6, <yoffsetnum> * 1e6, <zoffsetnum> * 1e6 )
- 新增新的位置物件和新的向量物件,並存儲在“tarpos”中。
tarpos = pos:addvector(vec)
- 獲取活動檢視的觀察者例項,並在零秒內轉到“tarpos”。
obs = celestia:getobserver() obs:gotolocation(tarpos, 0.0 )
注意:在此等效值中,觀察者轉到相對於當前參考系的某個位置。如果當前參考系為“宇宙”,則也可以使用 observer:setposition() 方法代替 observer:gotolocation() 方法。
總結
pos = celestia:newposition( <xnumber> * 1e6, <ynumber> * 1e6, <znumber> * 1e6 ) vec = celestia:newvector( <xoffsetnum> * 1e6, <yoffsetnum> * 1e6, <zoffsetnum> * 1e6 ) tarpos = pos:addvector(vec) obs = celestia:getobserver() obs:gotolocation(tarpos, 0.0 ) wait(0.0)
CELX 等效值-2
基於引數列表-2 和 celestia:newposition(base64) 和 observer:gotolocation() 方法。
- 從 URL 樣式 Base64 編碼的值建立新的位置物件,並存儲在“pos”中。
<xbase64>: 新向量的 X 分量,作為從 cel 樣式 URL ?x= 中獲取的字串值。
<ybase64>: 新向量的 Y 分量,作為從 cel 樣式 URL &y= 中獲取的字串值。
<zbase64>: 新向量的 Z 分量,作為從 cel 樣式 URL &z= 中獲取的字串值。
pos = celestia:newposition( <xbase64>, <ybase64>, <zbase64> )
- 獲取活動檢視的觀察者例項,並在零秒內轉到“pos”。
obs:gotolocation(pos, 0.0 )
注意:在此等效值中,觀察者轉到相對於當前參考系的某個位置。如果當前參考系為“宇宙”,則也可以使用 observer:setposition() 方法代替 observer:gotolocation() 方法。
總結
pos = celestia:newposition( <xbase64>, <ybase64>, <zbase64> ) obs = celestia:getobserver() obs:gotolocation(pos, 0.0 ) wait(0.0)
示例-1
將相機定位到銀河系外的某個位置,按照引數列表-1
CEL
setposition { base [-64132.43 47355.11 196091.57] offset [ 0 0 -1.52e-005 ] }
CELX 使用 celestia:newposition()、celestia:newvector()、position:addvector() 和 observer:gotolocation() 方法,基於引數列表-1
pos = celestia:newposition( -64132.43 * 1e6, 47355.11 * 1e6 , 196091.57 * 1e6 ) vec = celestia:newvector( 0, 0, -1.52e-005 * 1e6 ) tarpos = pos:addvector(vec) obs = celestia:getobserver() obs:gotolocation(tarpos, 0.0) wait(0.0)
-- 或者 --(如果當前參考系為“宇宙”)
pos = celestia:newposition( -64132.43 * 1e6, 47355.11 * 1e6 , 196091.57 * 1e6 ) vec = celestia:newvector( 0, 0, -1.52e-005 * 1e6 ) tarpos = pos:addvector(vec) obs = celestia:getobserver() obs:setposition(tarpos) wait(0.0)
示例-2
將相機定位到銀河系外的同一位置,按照引數列表-2。
注意:此示例中的 CelURL 值與 Celestia 版本 1.6.0 相容。
CEL
setposition { x "AMDCXoJK/3+IyGgR8f///w" y "BvP2LRdAAAD/n5UGCw" z "VUrGoeQJ+/8DyvenLQ" }
CELX 使用 celestia:newposition(base64) 和 observer:gotolocation() 方法,基於引數列表-2
pos = celestia:newposition("AMDCXoJK/3+IyGgR8f///w","BvP2LRdAAAD/n5UGCw","VUrGoeQJ+/8DyvenLQ" )
obs = celestia:getobserver()
obs:gotolocation(pos, 0.0)
wait(0.0)
-- 或者 --(如果當前參考系為“宇宙”)
pos = celestia:newposition("AMDCXoJK/3+IyGgR8f///w","BvP2LRdAAAD/n5UGCw","VUrGoeQJ+/8DyvenLQ" )
obs = celestia:getobserver()
obs:setposition(pos)
wait(0.0)