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)