跳转到内容

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

华夏公益教科书