跳转到内容

Celestia/Celx 脚本/CELX Lua 方法/CEL 命令 setposition

来自维基教科书,自由的教科书

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

基于参数列表-1celestia: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

基于参数列表-2celestia: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)


返回 CEL 命令索引

华夏公益教科书