跳轉到內容

Celestia/Celx 指令碼/CELX Lua 方法/CEL 命令 setorientation

來自華夏公益教科書,自由的教科書

setorientation

[編輯 | 編輯原始碼]

setorientation { angle <anglenumber> axis <axisvector> }

-- 或者 --

setorientation { ow <ownumber> ox <oxnumber> oy <oynumber> oz <oznumber> }

設定相機方向。如果你試圖根據書籤或 Cel://URL 複製位置,你還需要設定正確的座標系、位置和其他引數。

引數

angle <anglenumber>
角度(以度為單位)。無預設值。
此值可以從 Celestia 書籤中獲取,書籤儲存在 Celestia 目錄下的 favorites.cel 檔案中。
axis <axisvector>
旋轉向量 [ <xrot> <yrot> <zrot> ],無預設值。
此值可以從 Celestia 書籤中獲取,書籤儲存在 Celestia 目錄下的 favorites.cel 檔案中。
<xrot>、<yrot> 和 <zrot> 是相機方向的尤拉角角軸表示。可以將其視為航空中的俯仰、偏航和滾動。

-- 或者 --

引數

ow <ownumber>
表示 Cel://URL 儲存的角度。它從以下 Cel://URL 值中獲取:&ow。無預設值。
ox <oxnumber>
表示 Cel://URL 儲存的x 軸。它從以下 Cel://URL 值中獲取:&ox=。無預設值。
oy <oynumber>
表示 Cel://URL 儲存的y 軸。它從以下 Cel://URL 值中獲取:&oy=。無預設值。
oz <oznumber>
表示 Cel://URL 儲存的z 軸。它從以下 Cel://URL 值中獲取:&oz=。無預設值。


CELX 等效值-1

基於引數列表-1 以及 celestia:newvector()celestia:newrotation(axis-angle)observer:setorientation() 方法。

  • 建立一個新的向量,包含此旋轉的軸 [ <xrot> , <yrot> , <zrot> ],並存儲在 "vec" 中。
vec = celestia:newvector( <xrot>, <yrot>, <zrot> )
  • 將 <anglenumber> 從度轉換為弧度並存儲在 "angle" 中。
    "angle" = math.pi / 180 * <anglenumber> (= 3.14159265 / 180 * <anglenumber> )。
    Lua 的 math.rad( <anglenumber> ) 函式也可以用於此目的。
angle = math.rad( <anglenumber> )
  • 建立一個新的旋轉(即四元數),圍繞此旋轉的指定軸在 "vec" 中旋轉 "angle",並存儲在 "rot" 中。
rot = celestia:newrotation(vec, angle)
  • 獲取活動檢視的觀察者例項,並根據建立的新的旋轉 "rot" 旋轉觀察者。
obs = celestia:getobserver()
obs:setorientation(rot)

總結

vec = celestia:newvector( <xrot>, <yrot>, <zrot> )
angle = math.rad( <anglenumber> )
rot = celestia:newrotation(vec, angle)
obs = celestia:getobserver()
obs:setorientation(rot)


CELX 等效值-2

基於引數列表-2 以及 celestia:newrotation()observer:setorientation() 方法。

  • 從四個標量值建立一個新的旋轉(即四元數)並存儲在 rot 中。
    <ownumber>: 新旋轉的 OW 分量,作為一個從 cel 風格 URL &ow= 獲取的數字值。
    <oxnumber>: 新旋轉的 OX 分量,作為一個從 cel 風格 URL &ox= 獲取的數字值。
    <oynumber>: 新旋轉的 OY 分量,作為一個從 cel 風格 URL &oy= 獲取的數字值。
    <oznumber>: 新旋轉的 OZ 分量,作為一個從 cel 風格 URL &oz= 獲取的數字值。
rot = celestia:newrotation( <ownumber>, <oxnumber>, <oynumber>, <oznumber> )
  • 獲取活動檢視的觀察者例項,並根據建立的新的旋轉 "rot" 旋轉觀察者。
obs = celestia:getobserver()
obs:setorientation(rot)

總結

rot = celestia:newrotation( <ownumber>, <oxnumber>, <oynumber>, <oznumber> )
obs = celestia:getobserver()
obs:setorientation(rot)

示例
根據引數列表-1 設定相機方向

CEL

setorientation { angle 0.945208 axis [ 0.81466 -0.570975 -0.101573 ] }

基於引數列表-1CELX

vec = celestia:newvector(0.81466, -0.570975, -0.101573)
angle = math.rad(0.945208)
rot = celestia:newrotation(vec, angle)
obs = celestia:getobserver()
obs:setorientation(rot)

示例
根據引數列表-2 設定相機方向

CEL

setorientation { ow 0.090610 ox -0.494683 oy 0.860207 oz -0.084397 }

基於引數列表-2CELX

rot = celestia:newrotation(0.090610, -0.494683, 0.860207, -0.084397)
obs = celestia:getobserver()
obs:setorientation(rot)


返回 CEL 命令索引

華夏公益教科書