跳转到内容

Celestia/Celx 脚本/CELX Lua 方法/Celx celestia

来自 Wikibooks,开放世界开放书籍

Celx 脚本:Celestia 对象

[编辑 | 编辑源代码]

此对象是预定义的,并提供了对 Lua 脚本可用的所有与 Celestia 相关的功能的访问,无论是通过 celestia 的方法直接访问,还是通过创建提供更多功能的其他对象间接访问。

本章包含所有可用的 celestia 方法列表,这些方法可用于预定义的 celestia 对象。

celestia:print(string:text [, number:duration, number:horig, number:vorig, number:hoffset, number:voffset])

在屏幕上打印文本。Celestia 支持 UTF-8 编码的文本字符串以显示非 ASCII 字符。

参数

text
包含要打印的消息的字符串。
该字符串可以包含换行符 "\n" 来换行,或者许多用 UTF-8 编码的特殊字符。
也可以在同一个 print 命令中使用变量和文本字符串。
这可以通过如下方式连接文本字符串和变量来完成
  • "String1 " .. variable1 .. "String2 " .. variable2
对于更有经验的 CELX 编写者,也可以对文本使用 Lua 字符串函数,
例如合并和格式化文本和变量(参见 Lua 参考手册)。
duration [可选]
文本显示的秒数。默认值为 5。
负的 duration 值被认为是 1.5 秒。
horig [可选]
文本的水平原点,-1 为左,0 为中,1 为右
vorig [可选]
文本的垂直原点,-1 为底部,0 为中,1 为顶部
hoffset [可选]
相对于原点的水平偏移。
voffset [可选]
相对于原点的垂直偏移。

注释

  1. 默认情况下,文本以白色打印。
    Celestia 也可以在使用此方法之前使用 1.6.1 celestia:settextcolor() 方法设置文本颜色。

示例-1
在屏幕上定位文本

celestia:print("Middle", 3.0, 0, 0, -3, 0) 
wait(3.0)
celestia:print("Bottom left", 3.0, -1, -1, 2, 4) 
wait(3.0)
celestia:print("Top right", 3.0, 1, 1, -10, -4) 
wait(3.0)

示例-2
打印多行文本并使用文本和变量

rearth = celestia:find("Sol/Earth"):radius()
rmars = celestia:find("Sol/Mars"):radius()
celestia:print("Earth radius is: " .. rearth .. " km.\nMars radius is: " .. rmars .. " km.", 5.0, -1, -1, 2, 4)
wait(5.0)

示例-3
打印文本和格式化的变量

rearth = celestia:find("Sol/Earth"):radius()
celestia:print(string.format("The radius of Earth is: %10.0f km.", rearth ), 5.0, -1, -1, 2, 4)
wait(5.0)

注意:celestia: print 方法的持续时间包含在随后的 wait 方法的持续时间内。两者不会叠加。wait() 的持续时间必须至少等于 print() 方法的持续时间。


返回 celestia 方法索引。


celestia:flash(string:text [, number:duration])

在屏幕上打印文本,类似于 print。

参数

text
包含要打印的消息的字符串。该字符串可以包含换行符 "\n" 来换行,或者许多用 UTF-8 编码的特殊字符。
duration [可选]
文本显示的秒数。默认值为 5。
负的 duration 值被认为是 1.5 秒。

示例

celestia:flash("This string is flashed on your screen for 10 seconds.", 10.0)
wait(10.0)


返回 celestia 方法索引。


celestia:show(string:renderflag)

启用一个或多个渲染功能。此方法为了与旧脚本的向后兼容性而存在。

应该使用 celestia:setrenderflags() 方法来代替。

参数

renderflag
描述要启用的渲染功能的字符串。必须是以下之一:
  • orbits
  • cloudmaps
  • constellations
  • galaxies
  • planets
  • stars
  • nightmaps
  • eclipseshadows
  • ringshadows
  • comettails
  • boundaries
  • markers
  • automag
  • atmospheres
  • grid
  • smoothlines
  • lightdelay
  • partialtrajectories
  • 1.5.0 cloudshadows
  • 1.5.0 nebulae
  • 1.5.0 openclusters
  • 1.6.0 globulars
  • 1.6.0 ecliptic
  • 1.6.0 equatorialgrid
  • 1.6.0 galacticgrid
  • 1.6.0 eclipticgrid
  • 1.6.0 horizontalgrid

注释

  1. 可以通过向此方法传递多个参数(用逗号分隔)来一次启用多个功能。

示例
启用彗星尾的渲染

celestia:show("comettails")


返回 celestia 方法索引。


celestia:hide(string:renderflag)

禁用一个或多个渲染功能。此方法为了与旧脚本的向后兼容性而存在。

应该使用 celestia:setrenderflags() 方法来代替。

参数

renderflag
描述要禁用的渲染功能的字符串。

注释

  1. 可以通过向此方法传递多个参数(用逗号分隔)来一次启用多个功能。

示例
禁用夜地图的渲染

celestia:hide("nightmaps")


返回 celestia 方法索引。


getrenderflags

[编辑 | 编辑源代码]

table celestia:getrenderflags()

返回一个包含所有已知渲染标志(参见 celestia:setrenderflags() 方法)作为键的表,以及一个布尔值,指示特定渲染标志是启用还是禁用。

注释

  1. 此方法特别有用,可以在脚本开始时保存所有渲染标志,以便在脚本结束或脚本终止时,使用函数 celestia_cleanup_callback() 重置这些值。

示例

actual_renderflags = celestia:getrenderflags()


返回 celestia 方法索引。


setrenderflags

[编辑 | 编辑源代码]

celestia:setrenderflags(table:renderflags)

可以使用 celestia:showcelestia:hide 或此 celestia:setrenderflags() 方法,两者具有等效的功能。

此方法存在的主要原因是作为 celestia:getrenderflags() 方法的对应方法。

参数

renderflags
一个包含渲染标志作为键,以及每个键的布尔值作为值的表。有效的渲染标志键是
  • orbits
  • cloudmaps
  • constellations
  • galaxies
  • planets
  • stars
  • nightmaps
  • eclipseshadows
  • ringshadows
  • comettails
  • boundaries
  • markers
  • automag
  • atmospheres
  • grid
  • smoothlines
  • lightdelay
  • partialtrajectories
  • 1.5.0 cloudshadows
  • 1.5.0 nebulae
  • 1.5.0 openclusters
  • 1.6.0 globulars
  • 1.6.0 ecliptic
  • 1.6.0 equatorialgrid
  • 1.6.0 galacticgrid
  • 1.6.0 eclipticgrid
  • 1.6.0 horizontalgrid

示例
启用彗星尾的渲染并禁用夜地图的渲染

-- create and initialize table
t = {}
t.nightmaps = false
t.comettails = true
celestia:setrenderflags(t)

或更短

-- note the curly braces
celestia:setrenderflags{nightmaps = false, comettails = true}


返回 celestia 方法索引。


showlabel

[编辑 | 编辑源代码]

1.3.2 celestia:showlabel(string:labelflag)

启用标签的渲染。

参数

labelflag
描述要启用的标签类型的字符串,必须是以下之一:
  • planets
  • moons
  • spacecraft
  • asteroids
  • comets
  • stars
  • galaxies
  • locations
  • constellations
  • 1.5.0 i18nconstellations
    • 用于在启用星座标记时显示星座的拉丁文或翻译后的标签名称。
  • 1.5.0 openclusters
  • 1.5.0 nebulae
  • 1.6.0 dwarfplanets
  • 1.6.0 minormoons
  • 1.6.0 globulars

注释

  1. 可以通过向此方法传递多个参数(用逗号分隔)来一次启用多个标签功能。

示例
启用行星和卫星的标记

celestia:showlabel("planets", "moons")


返回 celestia 方法索引。


hidelabel

[编辑 | 编辑源代码]

1.3.2 celestia:hidelabel(string:labelflag)

禁用标签的渲染。

参数

labelflag
描述要禁用的标签类型的字符串。

注释

  1. 可以通过向此方法传递多个参数(用逗号分隔)来一次禁用多个标签功能。

示例
分别启用星座的本地和拉丁文名称的标记

 celestia:showlabel("constellations")
 -- Show local translated names for constellations
 celestia:showlabel("i18nconstellations")
 wait(5.0)
 -- Show Latin names for constellations
 celestia:hidelabel("i18nconstellations")
 wait(5.0)
 celestia:hidelabel("constellations")


返回 celestia 方法索引。


getlabelflags

[编辑 | 编辑源代码]

1.3.2 table celestia:getlabelflags()

返回一个包含所有已知标签标志(参见 celestia:setlabelflags() 方法)作为键的表,以及一个布尔值,指示特定标签标志是启用还是禁用。

注释

  1. 此方法特别有用,可以在脚本开始时保存所有标签标志,以便在脚本结束或脚本终止时,使用函数 celestia_cleanup_callback() 重置这些值。
  2. 要启用或禁用特定标签标志,可以使用 celestia:setlabelflags() 方法。

示例

actual_labelflags = celestia:getlabelflags()


返回 celestia 方法索引。


setlabelflags

[编辑 | 编辑源代码]

1.3.2 celestia:setlabelflags(table:labelflags)

启用或禁用标签的渲染。

可以使用 celestia:showlabel()celestia:hidelabel() 或此 celestia:setlabelflags() 方法,两者具有等效的功能。

参数

labelflags
一个包含标签标志作为键,以及每个键的布尔值作为值的表。有效的标签标志键是
  • planets
  • moons
  • spacecraft
  • asteroids
  • comets
  • stars
  • galaxies
  • locations
  • constellations
  • 1.5.0 i18nconstellations
    • 用于在启用星座标记时显示星座的拉丁文或翻译后的标签名称。
  • 1.5.0 openclusters
  • 1.5.0 nebulae
  • 1.6.0 dwarfplanets
  • 1.6.0 minormoons
  • 1.6.0 globulars

注释

  1. 要获取标签渲染的当前状态,可以使用 celestia:getlabelflags() 方法。

示例
启用行星和矮行星的标记,并禁用卫星的标记

-- create and initialize table
table = {}
table.planets = true
table.dwarfplanets = true
table.moons = false
celestia:setlabelflags(table)

或更短

-- note the curly braces
celestia:setlabelflags{planets = true, dwarfplanets = true, moons = false}


返回 celestia 方法索引。


getorbitflags

[编辑 | 编辑源代码]

1.3.2 table celestia:getorbitflags()

返回一个包含所有已知轨道标志(参见 celestia:setorbitflags() 方法)作为键的表,以及一个布尔值,指示
当使用 celestia:setrenderflags() 方法启用轨道时,特定轨道是启用还是禁用。

注释

  1. 要启用或禁用特定轨道的渲染,可以使用 celestia:setorbitflags() 方法。

示例

actual_orbitflags = celestia:getorbitflags()


返回 celestia 方法索引。


setorbitflags

[编辑 | 编辑源代码]

1.3.2 celestia:setorbitflags(table:orbitflags)

启用或禁用特定轨道的渲染,当使用 celestia:setrenderflags() 方法启用轨道时。

参数

orbitflags
一个包含轨道标志作为键,以及每个键的布尔值作为值的表。
每个轨道标志必须是以下之一:
  • Planet
  • Moon
  • Asteroid
  • Comet
  • Spacecraft
  • Invisible
  • Unknown
  • 1.6.0 DwarfPlanet
  • 1.6.0 MinorMoon
  • 1.6.0 Star
注意:注意 celestia 对此 celestia 方法的键的区分大小写 !!!

注释

  1. 要获取特定轨道渲染的当前状态,可以使用 celestia:getorbitflags() 方法。

示例
仅启用行星和矮行星轨道的渲染

-- create and initialize table first
table = {}
table.Planet = true
table.Moon = false
table.Asteroid = false
table.Comet = false
table.Spacecraft = false
table.Invisible = false
table.Unknown = false
table.DwarfPlanet = true
table.MinorMoon = false
table.Star = false
celestia:setorbitflags(table)
celestia:setrenderflags{orbits = true}

或更短

-- note the curly braces
celestia:setorbitflags{Planet = true, Moon = false, Asteroid = false, Comet = false, Spacecraft = false,
                       Invisible = false, Unknown = false, DwarfPlanet = true, MinorMoon = false, Star = false}
celestia:setrenderflags{orbits = true}


返回 celestia 方法索引。


getambient

[编辑 | 编辑源代码]

1.3.2 number celestia:getambient()

返回环境光的当前亮度级别,表示为数字。

注释

  1. 要设置环境光的亮度级别,可以使用 celestia:setambient() 方法。

示例

actual_ambient = celestia:getambient()


返回 celestia 方法索引。


setambient

[编辑 | 编辑源代码]

1.3.2 celestia:setambient(number:ambient)

设置环境光的亮度级别。

参数

ambient
环境光的新级别,必须在 0 到 1 之间,否则将调整为最接近的有效值 (0 或 1)。
  • 为了真实感,此数字应设置为 0.0。远离太阳的一侧将完全黑暗。
  • 将此数字设置为 1.0 将导致远离太阳的一侧看起来与照亮的一侧一样亮。

注释

  1. 要获取环境光的当前亮度级别,可以使用 celestia:getambient() 方法。

示例

celestia:setambient(0.0)


返回 celestia 方法索引。


getfaintestvisible

[编辑 | 编辑源代码]

1.3.2 number celestia:getfaintestvisible()

返回当前可见的最暗恒星的星等值。

如果启用了 AutoMag(请参阅 celestia:setrenderflags() 方法),则此方法将返回 45° 时可见的最暗恒星的星等值。

注释

  1. 要设置可见的最暗恒星的星等值或 45° 时可见的最暗恒星的星等值,可以使用 celestia:setfaintestvisible() 方法。

示例

actual_faintest = celestia:getfaintestvisible()


返回 celestia 方法索引。


setfaintestvisible

[edit | edit source]

1.3.2 celestia:setfaintestvisible(number:faintest)

设置可见的最暗恒星的星等值。

如果启用了 AutoMag(请参阅 celestia:setrenderflags() 方法),则设置 45° 时可见的最暗恒星的星等值。

参数

faintest
新的可见的最暗恒星的星等值。
Celestia 用户界面允许的范围约为 1.0 到 15.0。

注释

  1. 当使用 celestia:setrenderflags() 方法开启星系时,星系的亮度也会响应使用此 celestia:setfaintestvisible() 方法设置的可见的最暗恒星的星等值。此方法与 1.5.0 celestia:setgalaxylightgain() 方法相关联。
  2. 要获取当前可见的最暗恒星的星等值或当前 45° 时可见的最暗恒星的星等值,可以使用 celestia:getfaintestvisible() 方法。

示例-1
将 45° 时可见的最暗恒星的星等值设置为 9.0

celestia:setrenderflags{automag = true}
celestia:setfaintestvisible(9.0)

示例-2
将可见的最暗恒星的星等值设置为 7.0

celestia:setrenderflags{automag = false}
celestia:setfaintestvisible(7.0)


返回 celestia 方法索引。


getminorbitsize

[edit | edit source]

1.3.2 number celestia:getminorbitsize()

返回当前轨道渲染的最小尺寸,以数字表示。

此值在 Celestia 的 orbits renderflag 选项开启时使用,使用 celestia:setrenderflags() 方法。
尺寸以像素为单位测量,与轨道的半径相关。

注释

  1. 可以使用 celestia:getscreendimension() 方法获取实际屏幕尺寸(以像素为单位)。
  2. 要设置轨道渲染的最小尺寸,可以使用 celestia:setminorbitsize() 方法。

示例

actual_orbitsize = celestia:getminorbitsize()


返回 celestia 方法索引。


setminorbitsize

[edit | edit source]

1.3.2 celestia:setminorbitsize(number:orbitsize)

设置轨道渲染的最小尺寸。

此值在 Celestia 的 orbits renderflag 选项开启时使用,使用 celestia:setrenderflags() 方法。

参数

orbitsize
轨道渲染的最小尺寸。
负的 orbitsize 值将被视为零。
尺寸以像素为单位测量,与轨道的半径相关。
  • 注意:当尺寸大于屏幕尺寸的 50% 时,将完全不渲染轨道。

注释

  1. 使用此方法,例如,您可以在从太阳系缩小时影响行星内部轨道的淡出时机(反之亦然,在放大太阳系时淡入)。
  2. 不同计算机上的屏幕尺寸可能不同,因此此方法的效果也会有所不同。
  3. 要获取当前轨道渲染的最小尺寸,可以使用 celestia:getminorbitsize() 方法。

示例
将轨道渲染的最小半径尺寸设置为 30 像素,并渲染行星的轨道

celestia:setrenderflags{orbits = true}
celestia:setorbitflags{Planet = true}
celestia:setminorbitsize(30)


返回 celestia 方法索引。


getstardistancelimit

[edit | edit source]

1.3.2 number celestia:getstardistancelimit()

返回 Celestia 将显示恒星的最远距离,以光年为单位,以数字表示。

默认值为 1,000,000,但是,从 1.3.1 版本开始,Celestia 仅使用最多 16,000 光年的距离。

注释

  1. 要设置 Celestia 将显示恒星的最远距离,可以使用 celestia:setstardistancelimit() 方法。

示例

actual_stardistancelimit = celestia:getstardistancelimit()


返回 celestia 方法索引。


setstardistancelimit

[edit | edit source]

1.3.2 celestia:setstardistancelimit(number:distance)

设置 Celestia 将显示恒星的最远距离。

参数

distance
Celestia 将显示恒星的最大恒星距离(以光年为单位)。

注释

  1. 要获取当前 Celestia 将显示恒星的最远距离,可以使用 celestia:getstardistancelimit() 方法。

示例
仅显示距离小于 100 光年的恒星

celestia:setstardistancelimit(100)


返回 celestia 方法索引。


getminfeaturesize

[edit | edit source]

1.3.2 number celestia:getminfeaturesize()

返回位置标注的最小尺寸。

此值在 Celestia 的 locations labelflag 选项开启时使用,使用 celestia:setlabelflags()celestia:showlabel() 方法。

注释

  1. 当从远处观察一颗行星或卫星时,从一定距离开始,将首先显示最大或最重要的位置。随着您接近行星或卫星,将出现更多位置标签。
  2. 已定义位置的尺寸是在 Celestia 子目录中存储的位置文件中确定的。尺寸小于位置最小尺寸的已定义位置将不会被标注。
  3. 可以使用 celestia:setminfeaturesize() 方法设置位置标注的最小尺寸。
  4. 可以使用 observer:getlocationflags() 获取一个包含指示特定 locationflag 是否启用或禁用的键的表。

示例

actual_minfeaturesize = celestia:getminfeaturesize()


返回 celestia 方法索引。


setminfeaturesize

[edit | edit source]

1.3.2 celestia:setminfeaturesize(number:size)

设置位置标注的最小尺寸。

此值在 Celestia 的 locations labelflag 选项开启时使用,使用 celestia:setlabelflags()celestia:showlabel() 方法。

参数

size
位置标注的最小特征尺寸。
负的 size 值将被视为零。
尺寸小于此尺寸的已定义位置将不会被标注。

注释

  1. 当从远处观察一颗行星或卫星时,从一定距离开始,将首先显示最大或最重要的位置。随着您接近行星或卫星,将出现更多位置标签。
  2. 已定义位置的尺寸是在 Celestia 子目录中存储的位置文件中确定的。
  3. 可以使用 celestia:getminfeaturesize() 方法获取当前位置标注的最小尺寸。
  4. 可以使用 observer:setlocationflags() 确定特定 locationflag 是否启用或禁用。

示例
将最小特征尺寸设置为 1,以显示所有可用位置标签

celestia:setlabelflags{locations = true}
celestia:setminfeaturesize(1)


返回 celestia 方法索引。


getstarstyle

[edit | edit source]

1.3.2 string celestia:getstarstyle()

返回当前恒星的渲染样式,以字符串表示。

字符串将是以下之一

  • disc
    Celestia 绘制一个突出的圆形圆盘,其直径和亮度会根据恒星的实际大小、星等和距离而变化。
  • fuzzy
    Celestia 绘制一个更小、更逼真的“点”,其大小和亮度会发生变化。
  • point
    Celestia 将恒星绘制为不同亮度的光点。

注释

  1. 可以使用 celestia:setstarstyle() 方法设置恒星的渲染样式。

示例

actual_starstyle = celestia:getstarstyle()


返回 celestia 方法索引。


setstarstyle

[edit | edit source]

1.3.2 celestia:setstarstyle(string:starstyle)

设置恒星的渲染样式。

参数

starstyle
恒星的新渲染样式。
必须是以下之一
  • disc
    Celestia 绘制一个突出的圆形圆盘,其直径和亮度会根据恒星的实际大小、星等和距离而变化。
  • fuzzy
    Celestia 绘制一个更小、更逼真的“点”,其大小和亮度会发生变化。
  • point
    Celestia 将恒星绘制为不同亮度的光点。

注释

  1. 可以使用 celestia:getstarstyle() 方法获取当前恒星的渲染样式。

示例
未注释的行设置了 starstyle

-- celestia:setstarstyle("disc")
-- celestia:setstarstyle("fuzzy")
celestia:setstarstyle("point")


返回 celestia 方法索引。


object celestia:find(string:name)

此 celestia 方法可用于创建 CELX“object”对象。

参数

name
描述所需行星、卫星、小行星、彗星、星系、航天器等的字符串。
  • 恒星和天体通过其通用名称或拜耳和弗拉姆斯蒂德命名法以及 HD 或 HIP 目录编号命名
    (例如,“北极星”、“HIP 21589”、“41 ari”)。
  • 星系通过其通用名称或通过其梅西耶编号、NGC、UGC 或 MCG 目录编号命名
    (例如,“M 33”、“银河系”)。
  • 行星、卫星、小行星和人造卫星可以通过其通用名称命名
    (例如,“和平号空间站”、“木星”、“木卫一”、“卡西尼”)。
注意:如果您当前位于太阳系之外,并想寻找太阳系内的物体,
您必须在名称字符串中包含“Sol/”(例如,“Sol/火星”)。
注意:如果您正在寻找行星或卫星上命名的位置,您必须包含该位置所在的行星或卫星的名称,
以及位置本身,用斜杠 / 分隔(例如,“地球/阿姆斯特丹”或“Sol/地球/阿姆斯特丹”)。

注释

  1. CELX 的 "object" 对象既可以指代像行星或恒星这样的天体,也可以指代位置或航天器。
  2. CELX 的 "object" 对象可以使用object 方法。 "Object" 对象也可以用在其他方法中,这些方法需要一个 "object" 对象作为参数。

示例

-- Find Earth and store in object with name "planet_earth", when in our Solar System
planet_earth = celestia:find("Earth")
-- Find Earth and store in object with name "planet_earth", when outside of our Solar System
planet_earth = celestia:find("Sol/Earth")
-- Find Galaxy M33 and store in object with name "galaxy_m33"
galaxy_m33 = celestia:find("M 33")
-- Find Jupiter's moon Callisto and store in object with name "callisto"
callisto = celestia:find("Sol/Jupiter/Callisto")


返回 celestia 方法索引。


getselection

[edit | edit source]

object celestia:getselection()

返回当前选择项,以 CELX 的 "object" 对象形式。

注释

  1. CELX 的 "object" 对象既可以指代像行星或恒星这样的天体,也可以指代位置或航天器。
  2. CELX 的 "object" 对象可以使用object 方法。 "Object" 对象也可以用在其他方法中,这些方法需要一个 "object" 对象作为参数。

示例
获取当前选择项。如果未选择任何内容,则会选择太阳。

actual_selection = celestia:getselection()
if actual_selection:type() == "null" then
   actual_selection = celestia:find("Sol")
   celestia:select(actual_selection)
end


返回 celestia 方法索引。


select

[edit | edit source]

celestia:select(object:obj)

将当前选择项设置为指定的对象。

参数

obj
将成为新选择项的对象。
如果对象无效,则会清除选择项。

示例
查找并选择我们的月球

moon = celestia:find("Sol/Earth/Moon")
celestia:select(moon)

或者更简短

celestia:select(celestia:find("Sol/Earth/Moon"))


返回 celestia 方法索引。


celestia:mark(object:obj)

标记指定的对象。

参数

obj
要标记的对象。

注释

  1. 您可能希望使用object:mark() 方法,因为它提供了更多可能性。
  2. 标记仅在 Celestia 的 markers 渲染标志选项启用时才会显示,可以通过 celestia:setrenderflags() 方法启用。

示例
查找、居中并标记恒星毕宿五

selection = celestia:find("Aldebaran")
celestia:getobserver():center(selection)
celestia:setrenderflags{markers = true}
celestia:mark(selection)


返回 celestia 方法索引。


unmark

[edit | edit source]

celestia:unmark(object:obj)

从指定的对象中移除标记。

参数

obj
要移除其标记的对象。

注释

  1. 如果您不取消标记对象,并且不使用 celestia:setrenderflags() 方法关闭 markers 渲染标志,Celestia 仍会记住已标记的对象。下次启用 markers 渲染标志时,所有对象都将再次被标记。
  2. 您可能希望使用object:unmark() 方法。

示例
查找、居中并标记恒星北极星,并使用闪烁标记标记 10 秒钟

selection = celestia:find("Polaris")
celestia:getobserver():center(selection)
celestia:setrenderflags{markers = true}
for i = 1, 10 do
   celestia:mark(selection)
   wait(0.5)
   celestia:unmark(selection)
   wait(0.5)
end
celestia:setrenderflags{markers = false}


返回 celestia 方法索引。


unmarkall

[edit | edit source]

celestia:unmarkall()

此 celestia 方法会从 所有 对象中移除任何先前分配的标记。

使用此方法可以避免单独取消标记所有先前标记的对象。

注释

  1. 如果您不取消标记对象,并且不使用 celestia:setrenderflags() 方法关闭 markers 渲染标志,Celestia 仍会记住已标记的对象。下次启用 markers 渲染标志时,所有对象都将再次被标记。

示例
查找、居中并标记恒星北河二和北河三,并在 5 秒钟后再次取消标记它们

pollux = celestia:find("Pollux")
castor = celestia:find("Castor")
celestia:getobserver():center(pollux)
celestia:setrenderflags{markers = true}
celestia:mark(pollux)
celestia:mark(castor)
wait(5)
celestia:unmarkall()
celestia:setrenderflags{markers = false}


返回 celestia 方法索引。


gettime

[edit | edit source]

number celestia:gettime()

获取当前模拟时间,以 TDB (质心动力学时间) 儒略日形式表示。

较早的 Celestia 版本使用 UTC (协调世界时) 来计算时间和位置。
从版本 1.5.0 开始,虽然 Celestia 仍然在屏幕上显示 UTC,
但它在内部使用 TDB 时间尺度进行其他所有操作,因此对于 CELX 脚本来说 !!!

注释

  1. 可以使用 celestia:settime() 方法设置模拟时间。
  2. 要获取当前系统时间而不是当前模拟时间,应使用 1.6.0 celestia:getsystemtime() 方法。
  3. TDB 时间尺度与更熟悉的 UTC 稍有不同。使用 TDB 时,Celestia 可以更准确地放置对象。截至 2008 年 1 月 1 日,两者之间的差异约为 65 秒。有关详细信息,请参阅Celestia/Time_Scales
  4. 要将 UTC 时间和 TDB 时间相互转换,可以使用 1.5.0 celestia:utctotdb()1.5.0 celestia:tdbtoutc() 方法。
  5. 要将普通日历日期和儒略日相互转换,可以使用 celestia:tojulianday()celestia:fromjulianday() 方法。

示例

actual_tdbtime = celestia:gettime()


返回 celestia 方法索引。


settime

[edit | edit source]

celestia:settime(number:time)

将模拟时间设置为 TDB (质心动力学时间) 儒略日。

较早的 Celestia 版本使用 UTC (协调世界时) 来计算时间和位置。
从版本 1.5.0 开始,虽然 Celestia 仍然在屏幕上显示 UTC,
但它在内部使用 TDB 时间尺度进行其他所有操作,因此对于 CELX 脚本来说 !!!

参数

time
表示 TDB 儒略日的数字。
版本早于 1.5.0 的 Celestia 版本使用 UTC 儒略日编号。

注释

  1. 可以使用 celestia:gettime()observer:gettime() 方法获取当前模拟时间。
  2. TDB 时间尺度与更熟悉的 UTC 稍有不同。使用 TDB 时,Celestia 可以更准确地放置对象。截至 2008 年 1 月 1 日,两者之间的差异约为 65 秒。有关详细信息,请参阅Celestia/Time_Scales
  3. 要将 UTC 时间和 TDB 时间相互转换,可以使用 1.5.0 celestia:utctotdb()1.5.0 celestia:tdbtoutc() 方法。
  4. 要将普通日历日期和儒略日相互转换,可以使用 celestia:tojulianday()celestia:fromjulianday() 方法。

示例
将日期和时间精确设置为 UTC:2009 年 10 月 6 日 19 时 15 分 30 秒

tdb_dt = celestia:utctotdb(2009, 10, 06, 19, 15, 30)
celestia:settime(tdb_dt)


返回 celestia 方法索引。


gettimescale

[edit | edit source]

number celestia:gettimescale()

获取当前时间变化的倍数(速度),即多少秒模拟时间等于一秒实际时间,以数字形式表示。

注释

  1. 可以使用 celestia:settimescale() 方法设置时间变化的倍数(速度)。

示例

actual_timespeed = celestia:gettimescale()


返回 celestia 方法索引。


settimescale

[edit | edit source]

celestia:settimescale(number:timescale)

设置时间变化的倍数(速度),即多少秒模拟时间等于一秒实际时间。

参数

timescale
新的时间速度。
定义时间倍数(例如 100 倍)。
特殊值为
  • 0: 暂停时间
  • 1: 重置为实际时间
  • 负值会使时间倒流

注释

  1. 可以使用 celestia:gettimescale() 方法获取当前时间变化的倍数(速度)。

示例
将时间倍数设置为“快 1000 倍”。

celestia:settimescale(1000)


返回 celestia 方法索引。


getscripttime

[edit | edit source]

number celestia:getscripttime()

返回自脚本启动以来的经过时间(以秒为单位,包含小数部分),以数字形式表示。

注释

  1. 此方法可用于计时目的。

示例
在屏幕上打印经过的脚本时间。

-- Note: The elapsed time in this example increments with a bit more 
--       than 1 second (as defined in the wait(1.0)). This beacause 
--       the CELX methods themselves also take time to process.
for i = 1, 20 do
  actual_scripttime = celestia:getscripttime()
  celestia:print("Elapsed script time: " .. actual_scripttime, 1.0, -1, -1, 2, 4)
  wait(1.0)
end


返回 celestia 方法索引。


getobserver

[edit | edit source]

observer celestia:getobserver()

返回当前活动的观察者实例,以 CELX 的 "observer" 对象形式表示。

CELX 的 "observer" 对象用于访问特定于视图的属性,例如观察者位置、观察者方向、参考系和跟踪状态。

CELX 的 "observer" 对象可以使用observer 方法。 "Observer" 对象也可以用在其他方法中,这些方法需要一个 "observer" 对象作为参数。

注释

  1. 此方法返回 活动 视图的观察者,用户可以在多视图情况下使用 1.6.0 observer:makeactiveview() 方法更改视图。

示例
获取活动视图的观察者实例,并存储在 obs 中。

obs = celestia:getobserver()


返回 celestia 方法索引。


getobservers

[edit | edit source]

1.3.2 table celestia:getobservers()

返回所有已使用的观察者列表,即在多视图情况下每个视图一个观察者实例,以 CELX 的 "observer" 对象表形式表示。

CELX 的 "observer" 对象用于访问特定于视图的属性,例如观察者位置、观察者方向、参考系和跟踪状态。

CELX 的 "observer" 对象可以使用observer 方法。 "Observer" 对象也可以用在其他方法中,这些方法需要一个 "observer" 对象作为参数。

注释

  1. 每次使用 observer:splitview()observer:deleteview() 方法在多视图中更改观察者实例数量时,都需要使用此 celestia:getobservers() 方法更新 "observer" 对象表。

示例
将当前视图垂直分成两半。左侧转到金星,右侧转到火星,并在 10 秒钟后恢复单视图。

obs = celestia:getobserver()
obs:splitview("V", 0.5)
observers = celestia:getobservers()
venus = celestia:find("Sol/Venus")
observers[1]:goto(venus)
mars = celestia:find("Sol/Mars")
observers[2]:goto(mars)
wait(10.0)
obs:singleview()


返回 celestia 方法索引。


tojulianday

[edit | edit source]

number celestia:tojulianday(number:year [, number:month, number:day, number:hour, number:minute, number:seconds])

将 UTC 日历日期/时间转换为 UTC 儒略日,并以数字形式返回此儒略日。

UTC 儒略日是自公元前 4712 年 1 月 1 日格林威治时间中午(12:00:00)以来的天数和几分之一天的间隔。

参数

year
此日期的年份的整数。
月份 [可选]
日期所在年份的月份的整数(1-12)。默认值为 1。
日期 [可选]
日期所在月份的日期的整数(1-31)。默认值为 1。
小时 [可选]
日期所在日期的小时的整数。默认值为 0。
分钟 [可选]
日期所在小时的分钟的整数。默认值为 0。
秒钟 [可选]
日期所在分钟的秒钟的浮点数。默认值为 0.0。

注释

  1. 1.5.0 版本开始,尽管 Celestia 仍然在屏幕上显示 UTC,但它在内部使用 TDB 时间尺度进行其他所有操作,因此对于 CELX 脚本而言 !!! 对于这些较新的 Celestia 版本,在 celestia:settime() 方法中使用 UTC 儒略日(作为此 celestia:tojulianday() 方法的结果),会导致模拟时间设置错误。若要设置模拟时间,使用这些较新 Celestia 版本的儒略日,应使用 1.5.0 celestia:utctotdb() 方法,而不是此 celestia:tojulianday() 方法。
  2. 有关 TDB、UTC 以及 Celestia 中如何使用时间的更多信息,请参阅 Celestia/时间尺度

示例-1
使用比 1.5.0 版本更高的 Celestia 版本,此示例-1 将设置错误的模拟时间,这可以通过运行此示例-1 脚本后读取屏幕右上角的日期时间来检查。此示例-1 仅适用于早于 1.5.0 版本的 Celestia 版本。

utc_juliandate = celestia:tojulianday(2009, 10, 06, 12, 00, 0.0)
celestia:settime(utc_juliandate)
celestia:settimescale(0)

示例-2
使用比 1.5.0 版本更高的 Celestia 版本,下一个示例-2 将设置正确的模拟时间,这可以通过运行此示例-2 脚本后读取屏幕右上角的日期时间来检查。

tdb_juliandate = celestia:utctotdb(2009, 10, 06, 12, 00, 0.0)
celestia:settime(tdb_juliandate)
celestia:settimescale(0)


返回 celestia 方法索引。


fromjulianday

[edit | edit source]

1.3.2 表格 celestia:fromjulianday(数字:jd)

将 UTC 儒略日转换为 UTC 日历日期/时间。返回的表格包含以下键

  • year
  • 月份
  • 日期
  • 小时
  • 分钟
  • 秒钟

UTC 儒略日是自公元前 4712 年 1 月 1 日格林威治时间中午(12:00:00)以来的天数和几分之一天的间隔。

参数

jd
UTC 儒略日数字。
特殊值
  • 0 是上述参考日期的日期
  • 负值可用于前一个日期
  • 儒略日数 (JDN) 是儒略日 (JD) 的整数部分。
    • 2010 年 1 月 1 日的儒略日数为 2455198。
  • 儒略日的十进制部分
    • 0.1 是 2.4 小时或 144 分钟或 8640 秒
    • 0.01 是 0.24 小时或 14.4 分钟或 864 秒
    • 0.001 是 0.024 小时或 1.44 分钟或 86.4 秒
    • 0.0001 是 0.0024 小时或 0.144 分钟或 8.64 秒
    • 0.00001 是 0.00024 小时或 0.0144 分钟或 0.864 秒。

注释

  1. 1.5.0 版本开始,尽管 Celestia 仍然在屏幕上显示 UTC,但它在内部使用 TDB 时间尺度进行其他所有操作,因此对于 CELX 脚本而言 !!! 对于这些较新的 Celestia 版本,使用 celestia:gettime() 方法获取儒略日,并使用此 celestia:fromjulianday() 方法将其转换为日历日期/时间,会导致获取错误的日历日期/时间。若要获取正确的日历日期/时间,使用这些较新 Celestia 版本的 celestia:gettime() 方法中的儒略日,应使用 1.5.0 celestia:tdbtoutc() 方法。
  2. 有关 TDB、UTC 以及 Celestia 中如何使用时间的更多信息,请参阅 Celestia/时间尺度

示例-1
使用比 1.5.0 版本更高的 Celestia 版本,此示例-1 将获取错误的 TDB 日历日期/时间,而不是提到的 UTC 日历日期/时间。这可以通过将打印语句的结果与屏幕右上角显示的 UTC 日期/时间进行比较来检查。此示例-1 仅适用于早于 1.5.0 版本的 Celestia 版本。

celestia:settimescale(0)
utc_juliandate = celestia:gettime()
ut = celestia:fromjulianday(utc_juliandate)
celestia:print("Date/time: " .. ut.year .. " " .. ut.month .. " " .. ut.day .. " "
                .. ut.hour .. " " .. ut.minute .. " " .. ut.seconds, 10.0, -1, -1, 2, 4) 
wait(10.0)

示例-2
使用比 1.5.0 版本更高的 Celestia 版本,下一个示例-2 将设置正确的 UTC 日历日期/时间。这可以通过将打印语句的结果与屏幕右上角显示的 UTC 日期/时间进行比较来检查。

celestia:settimescale(0)
tdb_juliandate = celestia:gettime()
ut = celestia:tdbtoutc(tdb_juliandate)
celestia:print("Date/time: " .. ut.year .. " " .. ut.month .. " " .. ut.day .. " "
                .. ut.hour .. " " .. ut.minute .. " " .. ut.seconds, 10.0, -1, -1, 2, 4) 
wait(10.0)


返回 celestia 方法索引。


getscreendimension

[edit | edit source]

1.3.2 x,y celestia:getscreendimension()

以像素为单位返回当前 Celestia 窗口的宽度 (=x) 和高度 (=y),作为 2 个数字。

示例

x,y = celestia:getscreendimension()
celestia:print("Width: " .. x .. " pixels.\nHeight: " .. y .. " pixels.", 10.0, -1, -1, 4, 4)
wait (10.0)


返回 celestia 方法索引。


newvector

[edit | edit source]

向量 celestia:newvector(数字:x,数字:y,数字:z)

此 celestia 方法可用于从数字创建新的 CELX “向量”对象。

参数

x
新向量的 X 分量,以光年的百万分之一表示。
y
新向量的 Y 分量,以光年的百万分之一表示。
z
新向量的 Z 分量,以光年的百万分之一表示。

注释

  1. 如果向量分量以公里或英里定义,则必须先将这些分量转换为光年的百万分之一。
    因此,可以使用一个常量,该常量必须先在脚本中初始化
    • 从公里到光年的百万分之一,使用常量 uly_to_km = 9460730.4725808。
    • 从英里到光年的百万分之一,使用常量 uly_to_mls = 5912956.5453630。
  2. 接下来,可以将公里或英里转换为光年的百万分之一,如下所示
    • 光年的百万分之一 = 数字:公里 / uly_to_km
    • 光年的百万分之一 = 数字:英里 / uly_to_mls
  3. CELX “向量”对象是一个几何对象,它在三维坐标系中具有长度和方向 [X、Y、Z]。
  4. 可以在 CELX “向量”对象上使用 向量 方法。“向量”对象也可以用于其他方法,这些方法需要“向量”对象作为参数。

示例-1
创建一个向量,指向 Y 方向,长度为 1。

up_vector = celestia:newvector(0, 1, 0)

示例-2
创建一个向量,指向 X 方向,长度为 5000 公里。

uly_to_km  =  9460730.4725808
x5k_vector = celestia:newvector(5000/uly_to_km, 0, 0)


返回 celestia 方法索引。


newposition

[edit | edit source]

1.3.2 位置 celestia:newposition(数字:x,数字:y,数字:z)

此 celestia 方法可用于从数字创建新的 CELX “位置”对象。

参数

x
新位置的 X 分量,以光年的百万分之一表示。
y
新位置的 Y 分量,以光年的百万分之一表示。
z
新位置的 Z 分量,以光年的百万分之一表示。

注释

  1. 如果位置分量以公里或英里定义,则必须先将这些分量转换为光年的百万分之一。
    因此,可以使用一个常量,该常量必须先在脚本中初始化
    • 从公里到光年的百万分之一,使用常量 uly_to_km = 9460730.4725808。
    • 从英里到光年的百万分之一,使用常量 uly_to_mls = 5912956.5453630。
  2. 接下来,可以将公里或英里转换为光年的百万分之一,如下所示
    • 光年的百万分之一 = 数字:公里 / uly_to_km
    • 光年的百万分之一 = 数字:英里 / uly_to_mls
  3. CELX “位置”对象包含空间中一个点的精确坐标。位置相对于坐标系,在进一步使用之前可能需要将其转换为或从通用坐标系转换。
  4. 可以在 CELX “位置”对象上使用 位置 方法。“位置”对象也可以用于其他方法,这些方法需要“位置”对象作为参数。

示例
从火星中心出发,在“通用”坐标系的 X 方向上移动 20,000 公里,并显示屏幕左下角的火星位置。

uly_to_km = 9460730.4725808
-- Set frame of reference to "universal"
obs = celestia:getobserver()
obs:setframe(celestia:newframe("universal"))
-- Find and select Mars
mars = celestia:find("Sol/Mars")
celestia:select(mars)
-- Obtain and print actual position of Mars
now = celestia:gettime()
posmars = mars:getposition(now)
posmars_x = posmars:getx()
posmars_y = posmars:gety()
posmars_z = posmars:getz()
celestia:print("Actual position of Mars:\nX = " .. posmars_x .. 
               "\nY = " .. posmars_y .. "\nZ = " ..  posmars_z, 15, -1, -1, 1, 6)
-- Determine and goto specified position
pos = celestia:newposition((posmars_x + (20000/uly_to_km)), posmars_y, posmars_z )
obs:goto(pos,5.0)
-- Follow Mars and wait until the goto has finished
obs:follow(mars)
wait(5.0)
-- you are on the right position now, but probably Mars
-- may not be visible yet, so center Mars on your screen.
obs:center(mars,2.0)
wait(10.0)


返回 celestia 方法索引。


newposition (base64)

[edit | edit source]

1.3.2 位置 celestia:newposition(字符串:x,字符串:y,字符串:z)

此 celestia 方法可用于从 URL 样式的 Base64 编码值创建新的 CELX “位置”对象。

参数

x
新位置的 X 分量,作为从 cel 样式 URL 获取的字符串值。
y
新位置的 Y 分量,作为从 cel 样式 URL 获取的字符串值。
z
新位置的 Z 分量,作为从 cel 样式 URL 获取的字符串值。

注释

  1. 字符串值可以在 celURL 中的“x=”、“y=” 和“z=”之后,以及下一个出现的“&”之前找到。
  2. CELX “位置”对象包含空间中一个点的精确坐标。位置相对于坐标系,在进一步使用之前可能需要将其转换为或从通用坐标系转换。
  3. 可以在 CELX “位置”对象上使用 位置 方法。“位置”对象也可以用于其他方法,这些方法需要“位置”对象作为参数。

示例
根据以下 Celestia 版本 1.6.0 celURL,位于地球北极上方的位置

  • cel://SyncOrbit/Sol:Earth/2009-11-18T22:32:34.46583?x=Z7PNuA&y=sP9vw0j/+w&z=/P7//////////////////w&ow=-0.5&ox=-0.5&oy=0.5&oz=0.5&select=Sol:Earth&fov=26.5729&ts=1&ltd=0&p=0&rf=3987&lm=52864&tsrc=0&ver=3
-- First simulate some essential celURL settings.
earth = celestia:find("Sol/Earth")
obs = celestia:getobserver()
obs:synchronous(earth)
celestia:select(earth)
-- Then create and goto new position
earth_np_pos = celestia:newposition("Z7PNuA", "sP9vw0j/+w", "/P7//////////////////w")
obs:goto(earth_np_pos,2.0)
wait(2.0)
-- you are on the right position now, but probably Earth may not be visible yet,
-- so center Earth on your screen.
obs:center(earth,2.0)
wait(2.0)
-- (Mind the observer orientation may differ from the celURL above).


返回 celestia 方法索引。


newrotation (轴-角)

[edit | edit source]

旋转 celestia:newrotation(向量:轴,数字:角度)

此 celestia 方法可用于创建绕指定轴旋转的角度弧度的新的旋转(即四元数)。

参数

描述此旋转的 [x、y、z] 轴的向量。必须是“向量”对象。
角度
此旋转的角度,以弧度表示。必须是数字。

注释

  1. CELX 中的角度以弧度而不是度数定义。180 度(半圆)与 π 弧度相同 = 3.14159265 弧度 = math.pi 弧度 (LUA)。可以将度数转换为弧度,反之亦然,如下所示
    • 弧度 = math.rad( 数字:度数 ) = ( 数字:度数 / 180 * math.pi) = ( 数字:度数 / 180 * 3.14159265)。
    • 度数 = math.deg( 数字:弧度 ) = ( 数字:弧度 * 180 / math.pi) = ( 数字:弧度 * 180 / 3.14159265)。
  2. 此方法等效于 rotation:setaxisangle() 方法。仅使用此方法,将创建“旋转”对象,并且无需先存在。
  3. CELX “旋转”对象在内部是一个四元数,它是数学上描述三维空间中旋转的一种可能性(即它可以转换为旋转矩阵)。旋转也可以用于描述物体或观察者的方向(即观察者朝哪个方向看,以及“向上”是哪个方向)。
  4. 可以在 CELX “旋转”对象上使用 旋转 方法。“旋转”对象也可以用于其他方法,这些方法需要“旋转”对象作为参数。

示例-1
将当前相机视角旋转 180 度(类似于后视镜)。

-- Define the UP vector for the rotation (Y-axis).
-- Define a rotation object "lookback" with an angle of 180 degrees
-- (= math.pi radians), along the specified Y-axis in the UP vector.
-- Rotate the observer according the specified rotation.
up_vec = celestia:newvector(0,1,0)
lookback = celestia:newrotation(up_vec,math.pi)
obs = celestia:getobserver()
obs:rotate(lookback)

示例-2
在约 10 秒内将当前相机视角旋转 360 度。

up_vec = celestia:newvector(0,1,0)
obs_rotation = celestia:newrotation(up_vec, 2*math.pi/500)
for i = 1, 500 do
   celestia:getobserver():rotate(obs_rotation)
   wait(10/500)
end


返回 celestia 方法索引。


newrotation

[edit | edit source]

rotation celestia:newrotation(number:ow, number:ox, number:oy, number:oz)

此 celestia 方法可用于根据四个标量值(celURL 中使用的值)创建新的旋转(即四元数)。

参数

ow
新旋转的 OW 分量,作为从 cel 样式 URL 获取的数字值。
ox
新旋转的 OX 分量,作为从 cel 样式 URL 获取的数字值。
oy
新旋转的 OY 分量,作为从 cel 样式 URL 获取的数字值。
oz
新旋转的 OZ 分量,作为从 cel 样式 URL 获取的数字值。

注释

  1. 数字值可以在 celURL 中的 "ow="、"ox="、"oy=" 和 "oz=" 之后以及下一个 "&" 之前找到。
  2. 将向量的分量作为 ox-、oy-、oz- 值传递与传递向量本身不同。
    如果传递向量,则必须使用 newrotation (轴-角) 方法创建四元数。
  3. CELX “旋转”对象在内部是一个四元数,它是数学上描述三维空间中旋转的一种可能性(即它可以转换为旋转矩阵)。旋转也可以用于描述物体或观察者的方向(即观察者朝哪个方向看,以及“向上”是哪个方向)。
  4. 可以在 CELX “旋转”对象上使用 旋转 方法。“旋转”对象也可以用于其他方法,这些方法需要“旋转”对象作为参数。

示例
根据以下 Celestia 版本 1.6.0 celURL,位于地球北极上方的位置

  • cel://SyncOrbit/Sol:Earth/2009-11-18T22:32:34.46583?x=Z7PNuA&y=sP9vw0j/+w&z=/P7//////////////////w&ow=-0.5&ox=-0.5&oy=0.5&oz=0.5&select=Sol:Earth&fov=26.5729&ts=1&ltd=0&p=0&rf=3987&lm=52864&tsrc=0&ver=3
-- First simulate some essential celURL settings.
earth = celestia:find("Sol/Earth")
obs = celestia:getobserver()
obs:synchronous(earth)
celestia:select(earth)
-- Set the observer orientation according the celURL values.
rot = celestia:newrotation(-0.5, -0.5, 0.5, 0.5)
obs:setorientation(rot)
-- Then create and goto new position
earth_np_pos = celestia:newposition("Z7PNuA", "sP9vw0j/+w", "/P7//////////////////w")
obs:goto(earth_np_pos,2.0)
wait(2.0)


返回 celestia 方法索引。


newframe

[edit | edit source]

frame celestia:newframe(string:coordsysname [, object:reference, object:target])

此 celestia 方法可用于创建新的参考系作为 "frame" 对象。

参数

coordsysname
描述帧类型的字符串。它必须是以下之一
reference [可选]
新帧的参考对象。必须是 "object" 对象。
  • 坐标系 "universal" 不需要。
target [可选]
此帧的目标对象。必须是 "object" 对象。
  • 仅坐标系 "lock" 需要。

注释

  1. 在 Celestia 版本 1.6.0 中,名称 bodyfixed 将替换 planetographic,但出于兼容性原因,名称 planetographic 将继续起作用。
  2. CELX 参考 "frame" 是一个原点和一组轴,它们定义了用于物体的轨迹和方向的坐标系。原点是目录文件中定义的另一个物体。有几种方法可以设置坐标系轴。
  3. 可以使用 frame 方法在 CELX "frame" 对象上操作。本节还提供了有关使用参考系的更多信息。"Frame" 对象也可以用在其他方法中,这些方法需要 "frame" 对象作为参数。

示例-1
指示 Celestia 将活动坐标系设置为 UNIVERSAL

frame = celestia:newframe("universal")
obs = celestia:getobserver()
obs:setframe(frame)

示例-2
以下示例选择月球,然后将活动坐标系设置为 CHASE 并移至月球

moon = celestia:find("Sol/Earth/Moon")
celestia:select(moon)
frame = celestia:newframe("chase", moon)
obs = celestia:getobserver()
obs:setframe(frame)
obs:goto(moon, 2.0)
wait(2.0)

示例-3
指示 Celestia 将活动坐标系设置为 LOCK 地球和太阳。该示例将保持您相对于地球中心的方位,并在时间推移时保持太阳 (Sol) 和地球都在视野中。在运行此示例之前,请确保地球和太阳已在观察者的视野中。

earth = celestia:find("Sol/Earth")
celestia:select(earth)
sun = celestia:find("Sol")
frame = celestia:newframe("lock", earth, sun)
obs = celestia:getobserver()
obs:setframe(frame)
celestia:settimescale(50000)


返回 celestia 方法索引。


requestkeyboard

[edit | edit source]

1.3.2 celestia:requestkeyboard(boolean:enable)

启用或禁用键盘输入回调。

参数

enable
布尔值,用于确定是否应启用/禁用键盘输入。
  • 如果应启用键盘输入,则为 true
  • 让 celestia 处理键盘,则为 false。

注释

  1. 如果已启用键盘输入,则 celestia 将对每个按键执行名为 "celestia_keyboard_callback()" 的函数。调用此 celestia:requestkeyboard() 方法时,此函数必须存在。
  2. 按下的键作为字符串参数提供给函数,其中包含此键的 UTF-8 编码(对于 ASCII 字符,它只是包含正常字符的字符串)。
  3. "celestia_keyboard_callback()" 函数可以返回一个布尔值,指示是否已处理按键 (true) 还是应该继续正常处理 (false),没有返回值被视为true
  4. 这些回调只能在脚本正在执行 wait() 时发生。

示例
您可以在 CELX 脚本中使用以下示例来处理键盘输入

-- Initialize variable to have no content:
last_pressed_key = nil
--
-- Define functions section:
--
function celestia_keyboard_callback(key)
   last_pressed_key = key
   return true
end
--
function get_pressed_key()
   last_pressed_key = nil
   celestia:requestkeyboard(true)
   while true do
      if last_pressed_key ~= nil then
         key = last_pressed_key
         last_pressed_key = nil
         celestia:requestkeyboard(false)
         return key
      end
      wait(0.1)
   end
end
--
-- Main CELX script section:
--
-- Section within your script, where you want to handle keyboard input:
while true do
   local key = get_pressed_key()
   if key == string:key1 then
      valid_key = true
      -- specify your own CELX code here, about what to do if key matches string:key1.
   elseif key == string:key2 then
      valid_key = true
      -- specify your own CELX code here, about what to do if key matches string:key2.
   else
      valid_key = false
   end
   if valid_key then
      -- specify your own CELX code here, about what to do if a valid key has been pressed.
   end
   wait(0)
end


返回 celestia 方法索引。


requestsystemaccess

[edit | edit source]

1.3.2 celestia:requestsystemaccess()

请求访问 Lua 的 ioos 库的权限,这些库提供文件写入和程序执行。
有关详细信息,请参阅 Lua: 文档参考手册

注释

  1. 如果 celestia.cfg 文件中的 ScriptSystemAccessPolicy 参数设置为 "ask"(默认值),则会询问用户是否要允许此操作。此问题将在下一个 wait() 出现,因此您必须在请求生效之前调用 wait()
  2. 调用 celestia:requestsystemaccess() 方法后,将禁用键盘处理,因此,如果您需要它,则必须使用 celestia:requestkeyboard(true) 重新启用键盘处理。此行为可能会在将来的 Celestia 版本中发生变化(但重新启用也不会造成伤害)。

示例
要将 CELX 脚本中的信息写入文件,首先需要访问 LUA os & io 函数。如果请求成功,则可以使用以下方式使用 LUA os & io 函数

celestia:requestsystemaccess()
wait(0)
-- Use LUA function to open a file with name "LUAtest.txt"
-- in the Celestia main directory in write mode.
test_file = io.open ("LUAtest.txt" , "w")
-- Write some text to the just opened file.
io.output(test_file):write("This is a test")
-- Close the file. 
io.close (test_file)


返回 celestia 方法索引。


getscriptpath

[edit | edit source]

1.3.2 string celestia:getscriptpath()

以字符串形式返回实际运行脚本的路径(包括文件名)。

该路径可能相对于当前工作目录。

示例

pathname = celestia:getscriptpath()
celestia:print("The path to this script is: " .. pathname, 10.0, -1, -1, 2, 4)
wait(10.0)


返回 celestia 方法索引。


takescreenshot

[edit | edit source]

1.3.2 boolean celestia:takescreenshot([string:filetype, string:name])

截取屏幕截图并将其保存到磁盘(如果您的系统允许)。如果成功,则返回布尔值 true。

参数

filetype [可选]
定义屏幕截图的文件类型(扩展名),默认值为 "png"
必须是以下之一
  • "png"
  • "jpg"
name [可选]
一个字符串,将在此屏幕截图的文件名中使用,默认值为 ""。
此名称部分仅限于 A-z、0-9 和 _(下划线),最大长度为 8 个字符。

注释

  1. 为了避免覆盖其他文件(即非屏幕截图),文件名始终类似于 "screenshot-000001.png" 或 "screenshot-string:name-000001.png",其中数字从 1 开始,每次启动脚本时递增,name 可以由脚本选择 - 如上所述。
  2. 截取屏幕截图需要一些时间,但正在进行的任何闪光、打印、goto 或 center 命令都不会等待。这可能会在将来发生变化,但另一方面,还没有人抱怨过。
  3. 为安全原因在 Celestia 版本 1.3.2 中实施的限制在 Celestia 版本 1.4.0 中已部分解除,因为 CEL 脚本也提供不太安全的屏幕截图截取功能。这意味着可以通过使用 CEL 脚本来规避安全问题 :-(
  4. 但是,屏幕截图仍然会写入 celestia.cfg 文件中的 config 选项 "ScriptScreenshotDirectory" 设置的目录,默认设置为主 celestia 目录(通常类似于 C:\Program Files\Celestia\),具体取决于您的系统,Celestia 可能不允许写入该目录的文件。

示例
截取当前场景的屏幕截图并将其存储在文件名中:"screenshot-test-000001.jpg"。如果此文件名已存在,则数字部分将递增,直到找到第一个空闲数字。

screenshot = celestia:takescreenshot("jpg", "test")


返回 celestia 方法索引。


createcelscript

[edit | edit source]

celscript celestia:createcelscript(string:CELsource)

从包含有效 CEL 命令的字符串创建 "celscript" 对象,并在当前 CELX 脚本中执行 CEL 脚本。

参数

CELsource
包含有效 CEL 脚本源代码的字符串。
注意:如果字符串不包含有效的 CEL 脚本,则此方法将导致错误。

注释

  1. Lua 支持使用双括号的语法来表示长字符串,这在本文中很有用。通过使用它,您几乎可以在所有情况下将完整的 CEL 脚本直接复制并粘贴到 CELX 脚本中,而无需修改。
  2. 在 CEL 脚本执行期间,celscript:tick() 方法会反复调用,直到返回 false,表示 CEL 脚本已终止。

示例
以下示例选择地球,前往地球,然后花费 2.5 秒将显示距离更改为远离地球。所有这些都是通过将嵌入在 CELX 脚本中的 CEL 命令来完成的。

celsource = [[
              {
              select { object "Sol/Earth" }
              goto   { time 3 }
              wait   { duration 3 }
              changedistance { duration 2.5 rate 0.5 }
              wait   { duration 2.5 }
              }
            ]]
celscript = celestia:createcelscript(celsource)
while celscript:tick() do 
   wait(0) 
end


返回 celestia 方法索引。


getstarcount

[edit | edit source]

number celestia:getstarcount()

返回星表中恒星的总数,以数字表示。

示例

number_of_stars = celestia:getstarcount()
celestia:print("The total number of stars in the star catalogue: " .. number_of_stars, 10.0, -1, -1, 2, 4)
wait(10.0)


返回 celestia 方法索引。


getstar

[edit | edit source]

object celestia:getstar(number:index_number)

返回一颗恒星,由其在星表中的索引号标识,表示为“object”对象。

参数

index_number
星表中恒星的编号。
必须介于 0(零)和星表中恒星的总数减 1 之间。

注释

  1. 在 1.6.1 之前,此方法实现不正确,将它的参数视为非常内部的索引,而不是目录编号。因此,负数大于或等于星表中恒星总数的数字可能会导致 Celestia 错误!星表中恒星的总数可以通过使用celestia:getstarcount() 方法来获取。
  2. CELX 的 "object" 对象既可以指代像行星或恒星这样的天体,也可以指代位置或航天器。
  3. CELX 的 "object" 对象可以使用object 方法。 "Object" 对象也可以用在其他方法中,这些方法需要一个 "object" 对象作为参数。

示例
通过目录编号选择一颗恒星并前往该恒星,同时在屏幕上显示它的编号和名称。

number = 12345
star = celestia:getstar(number)
starname = star:name()
celestia:select(star)
obs = celestia:getobserver()
obs:goto(star,5.0)
celestia:print("The name of star number " .. number .. " is: " .. starname, 10.0, -1, -1, 2, 4)
wait(10.0)


返回 celestia 方法索引。


getdsocount

[edit | edit source]

1.5.0 number celestia:getdsocount()

返回深空天体 (DSO) 目录中深空天体的总数,以数字表示。

示例

number_of_dsos = celestia:getdsocount()
celestia:print("Total number of Deep Space Objects in DSO catalogue: " .. number_of_dsos, 10.0, -1, -1, 2, 4)
wait(10.0)


返回 celestia 方法索引。


getdso

[edit | edit source]

1.5.0 object celestia:getdso(number:index_number)

返回一个深空天体 (DSO),由其在 DSO 目录中的索引号标识,表示为“object”对象。

参数

index_number
深空天体 (DSO) 目录中深空天体的编号。
必须介于 0(零)和 DSO 目录中 DSO 的总数减 1 之间。

注释

  1. 在 1.6.1 之前,此方法实现不正确,将它的参数视为非常内部的索引,而不是目录编号。因此,负数大于或等于 DSO 目录中 DSO 总数的数字可能会导致 Celestia 错误!DSO 目录中 DSO 的总数可以通过使用 1.5.0 celestia:getdsocount() 方法来获取。
  2. CELX 的 "object" 对象既可以指代像行星或恒星这样的天体,也可以指代位置或航天器。
  3. CELX 的 "object" 对象可以使用object 方法。 "Object" 对象也可以用在其他方法中,这些方法需要一个 "object" 对象作为参数。

示例
通过目录编号选择一个 DSO 并前往该 DSO,同时在屏幕上显示它的编号和名称。

number = 0
dso = celestia:getdso(number)
dsoname = dso:name()
celestia:select(dso)
obs = celestia:getobserver()
obs:goto(dso,5.0)
celestia:print("The name of DSO number " .. number .. " is: " .. dsoname, 10.0, -1, -1, 2, 4)
wait(10.0)


返回 celestia 方法索引。


stars

[edit | edit source]

1.5.0 iterator celestia:stars()

返回一个迭代器,它可以与 Lua 的通用“for”语句一起使用,用于枚举 Celestia 星表中的所有恒星。

迭代器可以被认为是一种指针,它具有两个主要操作:

  1. 引用对象集合中的一个特定元素(称为元素访问),
  2. 修改自身以指向下一个元素(称为元素遍历)。

还必须有一种方法来创建迭代器,使其指向第一个元素,以及一种方法来确定迭代器是否已遍历完对象集合中的所有元素。

注释

  1. 可以使用object 方法对该迭代器进行操作。

示例
以下代码使用 celestia:stars() 迭代器来标记所有光谱型为 B 的恒星

celestia:unmarkall()
celestia:setrenderflags{markers = true}
celestia:select(nil)
for star in celestia:stars() do
   first, last = string.find(star:spectraltype(), "B", 1, true)
   if first == 1 then
      star:mark("#00ff00", "square", 10)
   end
end
wait(20.0)
celestia:unmarkall()
celestia:setrenderflags{markers = false}


返回 celestia 方法索引。


1.5.0 iterator celestia:dsos()

返回一个迭代器,它可以与 Lua 的通用“for”语句一起使用,用于枚举 Celestia 目录中的所有深空天体 (DSO:在 .DSC 文件中定义的对象)。

迭代器可以被认为是一种指针,它具有两个主要操作:

  1. 引用对象集合中的一个特定元素(称为元素访问),
  2. 修改自身以指向下一个元素(称为元素遍历)。

还必须有一种方法来创建迭代器,使其指向第一个元素,以及一种方法来确定迭代器是否已遍历完对象集合中的所有元素。

注释

  1. 可以使用object 方法对该迭代器进行操作。

示例
以下代码使用 celestia:dsos() 迭代器来标记所有哈勃类型为 SB 的星系

celestia:unmarkall()
celestia:setrenderflags{markers = true}
celestia:select(nil)
for dso in celestia:dsos() do
   if dso:getinfo().type == "galaxy" then
      hubbleType = dso:getinfo().hubbleType
      if string.find(hubbleType, "SB") then
         dso:mark( "green", "disk", 7, 0.7 )
      end
   end
end
wait(20.0)
celestia:unmarkall()
celestia:setrenderflags{markers = false}


返回 celestia 方法索引。


utctotdb

[edit | edit source]

1.5.0 number celestia:utctotdb(number:year [, number:month, number:day, number:hour, number:minute, number:seconds])

将 UTC 日历日期/时间转换为 TDB 儒略日,并以数字形式返回该儒略日。

参数

year
此日期的年份的整数。
月份 [可选]
日期所在年份的月份的整数(1-12)。默认值为 1。
日期 [可选]
日期所在月份的日期的整数(1-31)。默认值为 1。
小时 [可选]
日期所在日期的小时的整数。默认值为 0。
分钟 [可选]
日期所在小时的分钟的整数。默认值为 0。
秒钟 [可选]
日期所在分钟的秒钟的浮点数。默认值为 0.0。

注释

  1. 从版本 1.5.0 开始,尽管 Celestia 仍然在屏幕上显示 UTC,但它在内部使用 TDB 时间标度来处理其他所有内容,因此对于 CELX 脚本而言 !!! 为了使用儒略日设置模拟时间,对于这些较新的 Celestia 版本,应该使用 1.5.0 celestia:utctotdb() 方法,而不是旧的 celestia:tojulianday() 方法。
  2. 有关 TDB、UTC 以及 Celestia 中如何使用时间的更多信息,请参阅 Celestia/时间尺度

示例-1
获取 2007 年 8 月 12 日午夜 UTC 的 TDB 儒略日,并设置该模拟时间。

tdb_juliandate = celestia:utctotdb(2007, 8, 12)
celestia:settime(tdb_juliandate)
celestia:settimescale(0)

示例-2
获取 1492 年 12 月 25 日 12:50:00 UTC 的 TDB 儒略日,并设置该模拟时间。
请注意,在此示例中,日期实际上是儒略日历日期(罗马日历日期的改革),因为我们今天使用的公历日期直到 1582 年才被采用。

tdb_juliandate = celestia:utctotdb(1492, 12, 25, 12, 50 , 0.0)
celestia:settime(tdb_juliandate)
celestia:settimescale(0)


返回 celestia 方法索引。


tdbtoutc

[edit | edit source]

1.5.0 table celestia:tdbtoutc(number:tdb)

将 TDB 儒略日转换为 UTC 日历日期/时间。返回的表包含以下键:

  • year
  • 月份
  • 日期
  • 小时
  • 分钟
  • 秒钟

TDB 儒略日是自公元前 4712 年 1 月 1 日 11:59:17 UTC 以来以天和天分数表示的时间间隔。

参数

tdb
TDB 儒略日数字。
特殊值
  • 0 是上述参考日期的日期
  • 负值可用于前一个日期
  • 儒略日数 (JDN) 是儒略日 (JD) 的整数部分。
    • 2010 年 1 月 1 日的儒略日数为 2455198。
  • 儒略日的十进制部分
    • 0.1 是 2.4 小时或 144 分钟或 8640 秒
    • 0.01 是 0.24 小时或 14.4 分钟或 864 秒
    • 0.001 是 0.024 小时或 1.44 分钟或 86.4 秒
    • 0.0001 是 0.0024 小时或 0.144 分钟或 8.64 秒
    • 0.00001 是 0.00024 小时或 0.0144 分钟或 0.864 秒。

注释

  1. 从版本 1.5.0 开始,尽管 Celestia 仍然在屏幕上显示 UTC,但它在内部使用 TDB 时间标度来处理其他所有内容,因此对于 CELX 脚本而言 !!! 对于这些较新的 Celestia 版本,使用 celestia:gettime() 方法获取儒略日,并将该儒略日转换为日历日期/时间,应该使用 1.5.0 celestia:tdbtoutc() 方法,而不是旧的 celestia:fromjulianday() 方法。
  2. 有关 TDB、UTC 以及 Celestia 中如何使用时间的更多信息,请参阅 Celestia/时间尺度

示例
获取实际的 TDB 模拟时间,并将其转换为 UTC 日历日期/时间。可以通过将 print 语句的结果与屏幕右上角显示的 UTC 日期/时间进行比较来检查结果。

celestia:settimescale(0)
tdb_juliandate = celestia:gettime()
ut = celestia:tdbtoutc(tdb_juliandate)
celestia:print("Date/time: " .. ut.year .. " " .. ut.month .. " " .. ut.day .. " "
                .. ut.hour .. " " .. ut.minute .. " " .. ut.seconds, 10.0, -1, -1, 2, 4) 
wait(10.0)


返回 celestia 方法索引。


getaltazimuthmode

[edit | edit source]

1.5.0 boolean celestia:getaltazimuthmode()

返回一个布尔值,指示是否启用了高度方位模式。

  • true:启用了高度方位模式。
  • false:禁用了高度方位模式。

注释

  1. 高度方位模式对应于水平坐标系,该坐标系是使用观测者的当地地平线作为基本面的天球坐标系。水平坐标是:
    • 高度 (Alt),即天体与观测者当地地平线之间的夹角。
    • 方位 (Az),即天体绕地平线旋转的角度,相对于原点。
  2. 当观测者位于一个天体表面时(通过使用 [Ctrl+G] 键或 observer:gotosurface() 方法),按左右箭头键旋转视图:
    • "偏航" 如果启用了高度方位模式 (true)。
    • "横滚" 如果禁用了高度方位模式 (false)。
  3. 可以使用 1.5.0 celestia:setaltazimuthmode() 方法设置高度方位模式。

示例

actual_altaz = celestia:getaltazimuthmode()


返回 celestia 方法索引。


setaltazimuthmode

[edit | edit source]

1.5.0 celestia:setaltazimuthmode(boolean:altaz)

启用或禁用高度方位模式。

参数

altaz
布尔值,指示是否必须启用或禁用高度方位模式。
  • true 如果必须启用高度方位模式。
  • false 如果必须禁用高度方位模式。

注释

  1. 高度方位模式对应于水平坐标系,该坐标系是使用观测者的当地地平线作为基本面的天球坐标系。水平坐标是:
    • 高度 (Alt),即天体与观测者当地地平线之间的夹角。
    • 方位 (Az),即天体绕地平线旋转的角度,相对于原点。
  2. 当观测者位于一个天体表面时(通过使用 [Ctrl+G] 键或 observer:gotosurface() 方法),按左右箭头键旋转视图:
    • "偏航" 如果启用了高度方位模式 (true)。
    • "横滚" 如果禁用了高度方位模式 (false)。
  3. 可以使用 1.5.0 celestia:getaltazimuthmode() 方法获取当前的高度方位模式。

示例
未注释的行确定是否必须启用/禁用高度方位模式。

-- celestia:setaltazimuthmode(true)     -- alt-azimuth mode must be enabled.
celestia:setaltazimuthmode(false)       -- alt-azimuth mode must be disabled.


返回 celestia 方法索引。


getoverlayelements

[edit | edit source]

1.5.0 table celestia:getoverlayelements()

返回一个表,其中包含所有已知的叠加元素(参见 1.5.0 celestia:setoverlayelements() 方法)作为键,以及一个布尔值作为值,指示是否渲染特定叠加元素。

叠加元素与屏幕上部/下部、左部/右部的信息显示有关。

注释

  1. 要启用/禁用不同叠加元素的渲染,可以使用 1.5.0 celestia:setoverlayelements() 方法。

示例

actual_overlaytab = celestia:getoverlayelements()


返回 celestia 方法索引。


setoverlayelements

[edit | edit source]

1.5.0 celestia:setoverlayelements(table:overlayelements)

单独启用或禁用屏幕上每个叠加元素的渲染。

叠加元素与屏幕上部/下部、左部/右部的信息显示有关。

参数

overlayelements
一个包含叠加元素作为键,布尔值作为每个键的值的表格。每个叠加元素必须是以下之一
  • Time
    屏幕右上角的叠加元素。
  • Velocity
    屏幕左下角的叠加元素。
  • Selection
    屏幕左上角的叠加元素。
  • Frame
    屏幕右下角的叠加元素。
注意:注意 celestia 对此 celestia 方法的键的区分大小写 !!!

注释

  1. 类似于在线按下 [V] 键,通过两个详细程度级别切换整个信息显示(所有叠加元素一起)的开关。但是,此方法可以单独启用/禁用每个叠加元素,但无法在两个详细程度级别之间切换
  2. 可以使用 1.5.0 celestia:getoverlayelements() 方法获取每个叠加元素的当前渲染状态。

示例
禁用所有叠加元素的渲染。

-- create and initialize table first
overlaytab = {}
overlaytab.Time = false
overlaytab.Velocity = false
overlaytab.Selection = false
overlaytab.Frame = false
celestia:setoverlayelements(overlaytab)

或者更简短

-- Note the curly braces
celestia:setoverlayelements{Time = false, Velocity = false, Selection = false, Frame = false}


返回 celestia 方法索引。


getgalaxylightgain

[edit | edit source]

1.5.0 number celestia:getgalaxylightgain()

返回当前银河系光增益(亮度)级别,以数字形式表示。

注释

  1. 可以使用 celestia:setrenderflags() 方法打开/关闭星系。
  2. 可以使用 1.5.0 celestia:setgalaxylightgain() 方法设置银河系光增益(亮度)级别。

示例

actual_galaxylightgain = celestia:getgalaxylightgain()


返回 celestia 方法索引。


setgalaxylightgain

[edit | edit source]

1.5.0 celestia:setgalaxylightgain(number:lightgain)

设置银河系光增益(亮度)级别。

参数

lightgain
定义新的银河系光增益(亮度)级别的数字。
必须介于 0 (0%) 和 1 (100%) 之间,否则将调整为最接近的有效值 (0 或 1)。

注释

  1. 可以使用 celestia:setrenderflags() 方法打开/关闭星系。
  2. 可以使用 1.5.0 celestia:getgalaxylightgain() 方法获取当前银河系光增益(亮度)级别。
  3. 当访问银河系之外的星系时,增强亮度可以改善你对遥远星系的观测,而在银河系内,降低亮度可以改善你对恒星、行星、卫星等的观测。
  4. 银河系亮度也会随着使用 celestia:setfaintestvisible() 方法设置最微弱可见星等而发生变化。这些方法是关联的。

示例
启用星系的渲染并将其亮度最大化。

celestia:setrenderflags{galaxies = true}
celestia:setgalaxylightgain(1)


返回 celestia 方法索引。


gettextwidth

[edit | edit source]

1.5.0 number celestia:gettextwidth(string:text)

以数字形式返回文本字符串的宽度(以像素为单位)。

示例

textwidth = celestia:gettextwidth("This is a text string")


返回 celestia 方法索引。


1.5.0 celestia:log(string:text)

将文本写入 Celestia 日志文件。Celestia 支持 UTF-8 编码文本字符串,用于写入非 ASCII 字符。

参数

text
包含要写入 Celestia 日志的消息的字符串。
也可以在同一个日志命令中使用变量和文本字符串。
这可以通过如下方式连接文本字符串和变量来完成
  • "String1 " .. variable1 .. "String2 " .. variable2
注意:celestia:print() 方法不同,此字符串参数不能包含换行符“\n”以换行。

注释

  1. 此方法对于调试 Lua/CELX 脚本非常有用。
  2. 可以使用键盘上的波浪号 [~] 键(或某些系统上的 [~] + [空格键])在屏幕上显示 Celestia 日志。

示例
在屏幕上显示 Celestia 日志,运行此示例并验证文本是否已写入日志。

celestia:log("This message is written to the Celestia log")


返回 celestia 方法索引。


registereventhandler

[edit | edit source]

1.5.0 boolean celestia:registereventhandler(string:eventtype, function:eventhandler)

用脚本作者选择的行为(在函数中定义)替换 Celestia 的默认事件处理。

参数

eventtype
指定事件类型的字符串。必须是以下之一
  • "key"
  • "mouseup"
  • "mousedown"
  • "tick"
eventhandler
一个接受包含事件属性的单个表格参数并返回布尔值(指示它是否已处理事件)的函数。
使用 nil 取消绑定事件类型与事件处理程序的绑定。

注释

  1. 如果没有注册事件处理程序,或者注册的事件处理程序返回 false,Celestia 将恢复为该事件的默认行为。
  2. 事件类型与事件处理程序之间的绑定将保留,直到:
    1. Celestia 重新启动
    2. 在事件类型和另一个事件处理程序(可能在另一个脚本中)之间指定新的绑定
    3. 通过使用以下命令取消绑定事件类型与事件处理程序的绑定:
      celestia:registereventhandler(string:eventtype, nil)

示例
此键盘处理函数示例将键盘上的 [P] 和 [Q] 键绑定到处理程序 showmessage(),该处理程序会在屏幕上闪烁消息。

function showmessage()
   celestia:flash("Key pressed")
end

-- The table mapping key names to handlers
keyhandlers = { p = showmessage, q = showmessage }

function handlekey(k)
   -- k is a table containing the event properties; in this simple sample,
   -- we're only interested in char, the name of the key that was pressed.
   handler = keyhandlers[k.char]
   if (handler ~= nil) then
      handler()
      return true
   else
      return false
   end
end

celestia:registereventhandler("key", handlekey)


返回 celestia 方法索引。


geteventhandler

[edit | edit source]

1.5.0 boolean celestia:geteventhandler(string:eventtype)

返回一个布尔值,指示 Celestia 对指定事件类型的默认事件处理是否被替换

  • true,默认事件处理被替换。
  • false,默认事件处理被替换。

参数

eventtype
指定事件类型的字符串。必须是以下之一
  • "key"
  • "mouseup"
  • "mousedown"
  • "tick"

示例
测试 Celestia 对事件类型“key”的默认事件处理是否被替换。

handler = celestia:geteventhandler("key")
if handler then
   celestia:flash("Default event handling for the event type 'key' is replaced.", 5.0)
else
   celestia:flash("Default event handling for the event type 'key' is NOT replaced.", 5.0)
end


返回 celestia 方法索引。


setlabelcolor

[edit | edit source]

1.5.0 celestia:setlabelcolor(string:label, number:red, number:green, number:blue)

设置标签调色板的颜色。

参数

label
描述必须更改其颜色的标签的字符串。必须是以下之一
  • stars
  • planets
  • moons
  • asteroids
  • comets
  • spacecraft
  • locations
  • galaxies
  • constellations
  • equatorialgrid
  • 1.5.0 nebulae
  • 1.5.0 openclusters
  • 1.6.0 globulars
  • 1.6.0 dwarfplanets
  • 1.6.0 minormoons
  • 1.6.0 planetographicgrid
  • 1.6.0 galacticgrid
  • 1.6.0 eclipticgrid
  • 1.6.0 horizontalgrid
red
颜色的 RGB 值的红色部分,必须介于 0 和 1 之间。
green
颜色的 RGB 值的绿色部分,必须介于 0 和 1 之间。
blue
颜色的 RGB 值的蓝色部分,必须介于 0 和 1 之间。

注释

  1. 可以使用 1.6.0 celestia:getlabelcolor() 方法获取特定标签的当前颜色。
  2. 可以使用 celestia:showlabel()celestia:hidelabel()celestia:setlabelflags() 方法打开/关闭特定标签。

示例 1
将恒星标签的颜色设置为红色并打开恒星标签。

celestia:setlabelcolor("stars", 1, 0, 0)
celestia:setlabelflags{stars = true}

示例 2
ElChristou 的替代标签颜色。

celestia:setlabelcolor("stars",          0.471, 0.356, 0.682)
celestia:setlabelcolor("planets",        0.407, 0.333, 0.964)
celestia:setlabelcolor("moons",          0.231, 0.733, 0.792)
celestia:setlabelcolor("asteroids",      0.596, 0.305, 0.164)
celestia:setlabelcolor("comets",         0.768, 0.607, 0.227)
celestia:setlabelcolor("spacecraft",     0.930, 0.930, 0.930)
celestia:setlabelcolor("locations",      0.240, 0.890, 0.430)
celestia:setlabelcolor("galaxies",       0.000, 0.450, 0.500)
celestia:setlabelcolor("nebulae",        0.541, 0.764, 0.278)
celestia:setlabelcolor("openclusters",   0.239, 0.572, 0.396)
celestia:setlabelcolor("constellations", 0.125, 0.167, 0.200)
celestia:setlabelcolor("equatorialgrid", 0.095, 0.196, 0.100)


返回 celestia 方法索引。


setlinecolor

[edit | edit source]

1.5.0 celestia:setlinecolor(string:line, number:red, number:green, number:blue)

设置线条调色板的颜色。

参数

line
描述必须更改其颜色的线条的字符串。必须是以下之一
  • starorbits
  • planetorbits
  • moonorbits
  • asteroidorbits
  • cometorbits
  • spacecraftorbits
  • constellations
  • boundaries
  • equatorialgrid
  • 1.6.0 dwarfplanetorbits
  • 1.6.0 minormoonorbits
  • 1.6.0 planetographicgrid
  • 1.6.0 planetequator
  • 1.6.0 galacticgrid
  • 1.6.0 eclipticgrid
  • 1.6.0 horizontalgrid
  • 1.6.0 ecliptic
red
颜色的 RGB 值的红色部分,必须介于 0 和 1 之间。
green
颜色的 RGB 值的绿色部分,必须介于 0 和 1 之间。
blue
颜色的 RGB 值的蓝色部分,必须介于 0 和 1 之间。

注释

  1. 可以使用 1.6.0 celestia:getlinecolor() 方法获取特定线条的当前颜色。
  2. 可以使用 celestia:setorbitflags() 方法打开/关闭特定轨道。
  3. 可以使用 celestia:setrenderflags() 方法打开/关闭轨道、网格、星座和边界。
  4. 1.6.0 planetequator 是行星图网格的一部分,可以使用 object:addreferencemark() 方法为所有星体类型对象打开/关闭该网格。

示例 1
将 galacticgrid 的颜色设置为青色并打开 galacticgrid。

celestia:setlinecolor("galacticgrid", 0.0, 1.0, 1.0)
celestia:setrenderflags{galacticgrid = true}

示例 2
ElChristou 的替代线条颜色。

celestia:setlinecolor("starorbits",       0.500, 0.500, 0.800)
celestia:setlinecolor("planetorbits",     0.300, 0.323, 0.833)
celestia:setlinecolor("moonorbits",       0.080, 0.407, 0.392)
celestia:setlinecolor("asteroidorbits",   0.580, 0.152, 0.080)
celestia:setlinecolor("cometorbits",      0.639, 0.487, 0.168)
celestia:setlinecolor("spacecraftorbits", 0.400, 0.400, 0.400)
celestia:setlinecolor("constellations",   0.000, 0.120, 0.180)
celestia:setlinecolor("equatorialgrid",   0.070, 0.114, 0.073)
celestia:setlinecolor("boundaries",       0.100, 0.006, 0.066)


返回 celestia 方法索引。


getlabelcolor

[edit | edit source]

1.6.0 number, number, number celestia:getlabelcolor(string:label)

返回一个三元组数字(介于 0 和 1 之间),对应于指定标签的颜色(RGB 值)的红色、绿色和蓝色分量。

参数

label
描述必须返回其颜色的标签的字符串。必须是以下之一
  • stars
  • planets
  • moons
  • asteroids
  • comets
  • spacecraft
  • locations
  • galaxies
  • constellations
  • equatorialgrid
  • 1.5.0 nebulae
  • 1.5.0 openclusters
  • 1.6.0 globulars
  • 1.6.0 dwarfplanets
  • 1.6.0 minormoons
  • 1.6.0 planetographicgrid
  • 1.6.0 galacticgrid
  • 1.6.0 eclipticgrid
  • 1.6.0 horizontalgrid

注释

  1. 可以使用 1.5.0 版本的 celestia:setlabelcolor() 方法设置特定标签的颜色。
  2. 可以使用 celestia:showlabel()celestia:hidelabel()celestia:setlabelflags() 方法打开/关闭特定标签。

示例

r, g, b = celestia:getlabelcolor("planets")


返回 celestia 方法索引。


getlinecolor

[edit | edit source]

1.6.0 number, number, number celestia:getlinecolor(string:line)

返回一个三元组数字(介于 0 和 1 之间),对应于指定线条的 RGB 颜色值的红色、绿色、蓝色分量。

参数

line
描述需要返回其颜色的线条的字符串。必须是以下之一
  • starorbits
  • planetorbits
  • moonorbits
  • asteroidorbits
  • cometorbits
  • spacecraftorbits
  • constellations
  • boundaries
  • equatorialgrid
  • 1.6.0 dwarfplanetorbits
  • 1.6.0 minormoonorbits
  • 1.6.0 planetographicgrid
  • 1.6.0 planetequator
  • 1.6.0 galacticgrid
  • 1.6.0 eclipticgrid
  • 1.6.0 horizontalgrid
  • 1.6.0 ecliptic

注释

  1. 可以使用 1.5.0 版本的 celestia:setlinecolor() 方法设置特定线条的颜色。
  2. 可以使用 celestia:setorbitflags() 方法打开/关闭特定轨道。
  3. 可以使用 celestia:setrenderflags() 方法打开/关闭轨道、网格、星座和边界。
  4. 1.6.0 planetequator 是行星图网格的一部分,可以使用 object:addreferencemark() 方法为所有星体类型对象打开/关闭该网格。

示例

 r, g, b = celestia:getlinecolor("planetorbits")


返回 celestia 方法索引。


getsystemtime

[edit | edit source]

1.6.0 number celestia:getsystemtime()

以 TDB 儒略日期数字形式返回当前系统时间。

较早的 Celestia 版本使用 UTC (协调世界时) 来计算时间和位置。
从版本 1.5.0 开始,虽然 Celestia 仍然在屏幕上显示 UTC,
但它在内部使用 TDB 时间尺度进行其他所有操作,因此对于 CELX 脚本来说 !!!

注释

  1. 要获取当前模拟时间而不是当前系统时间,应改用 celestia:gettime()observer:gettime() 方法。
  2. TDB 时间尺度与更熟悉的 UTC 稍有不同。使用 TDB 时,Celestia 可以更准确地放置对象。截至 2008 年 1 月 1 日,两者之间的差异约为 65 秒。有关详细信息,请参阅Celestia/Time_Scales
  3. 要将 UTC 时间和 TDB 时间相互转换,可以使用 1.5.0 celestia:utctotdb()1.5.0 celestia:tdbtoutc() 方法。
  4. 要将普通日历日期和儒略日相互转换,可以使用 celestia:tojulianday()celestia:fromjulianday() 方法。

示例

actual_systemtime = celestia:getsystemtime()


返回 celestia 方法索引。


ispaused

[edit | edit source]

1.6.0 boolean celestia:ispaused()

返回一个布尔值,指示时间是否暂停。

  • 如果时间已暂停,则为 true
  • 否则为 false。

示例

actual_paused = celestia:ispaused()


返回 celestia 方法索引。


showconstellations

[edit | edit source]

1.6.0 celestia:showconstellations([table:constellation_names])

启用一个或多个星座的渲染。

参数

constellation_names [可选]
包含要显示的星座名称的表。必须是以下之一
  • "仙女座", "唧筒座", "天燕座", "宝瓶座", "天鹰座", "天坛座", "白羊座", "御夫座", "牧夫座", "雕具座", "鹿豹座", "巨蟹座", "猎犬座", "大犬座", "小犬座", "摩羯座", "船底座", "仙后座", "半人马座", "仙王座", "鲸鱼座", "变色龙座", "圆规座", "鸽子座", "后发座", "南冕座", "北冕座", "乌鸦座", "巨爵座", "南十字座", "天鹅座", "海豚座", "剑鱼座", "天龙座", "小马座", "波江座", "天炉座", "双子座", "鹤座", "武仙座", "时钟座", "长蛇座", "水蛇座", "印第安座", "蝎虎座", "狮子座", "小狮座", "天兔座", "天秤座", "狼座", "天猫座", "天琴座", "山案座", "显微镜座", "独角兽座", "苍蝇座", "矩尺座", "八分仪座", "蛇夫座", "猎户座", "孔雀座", "飞马座", "英仙座", "凤凰座", "绘架座", "双鱼座", "南鱼座", "船尾座", "罗盘座", "网罟座", "天箭座", "射手座", "天蝎座", "玉夫座", "盾牌座", "蛇头座", "蛇尾座", "六分仪座", "金牛座", "望远镜座", "三角座", "南三角座", "杜鹃座", "大熊座", "小熊座", "船帆座", "室女座", "飞鱼座", "狐狸座"。
  • 如果没有传递 constellation_names,则显示 **所有** 星座。
  • 如果 ..\celestia\data 目录中的 **asterisms.dat** 文件包含备用星群和/或星座名称,则此参数中也可以使用此文件中提到的名称。
**注意**:注意 celestia 在此方法中关于星座名称的大小写敏感性 !!!

注释

  1. 当使用 celestia:setrenderflags() 方法打开星座时,默认情况下会显示所有星座。为了使此 **celestia:showconstellations()** 方法生效,您首先必须使用 celestia:hideconstellations() 方法再次禁用星座的渲染。
  2. 除了星座的渲染之外,此 **celestia:showconstellations()** 方法还会影响星座名称。

示例-1
仅显示室女座和天秤座

-- Note the curly braces
celestia:setrenderflags{constellations = true}
celestia:hideconstellations()
celestia:showconstellations{"Virgo", "Libra"}

示例-2
仅显示黄道星座

celestia:setrenderflags{constellations = true}
celestia:hideconstellations()
zodiac = {"Pisces", "Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra",
          "Scorpius", "Ophiuchus", "Sagittarius", "Capricornus", "Aquarius"}
celestia:showconstellations(zodiac)

示例-3
显示 **所有** 星座

celestia:setrenderflags{constellations = true}
celestia:hideconstellations()
celestia:showconstellations()


返回 celestia 方法索引。


hideconstellations

[edit | edit source]

1.6.0 celestia:hideconstellations([table:constellation_names])

禁用一个或多个星座的渲染。

参数

constellation_names [可选]
包含要隐藏的星座名称的表。必须是以下之一
  • "仙女座", "唧筒座", "天燕座", "宝瓶座", "天鹰座", "天坛座", "白羊座", "御夫座", "牧夫座", "雕具座", "鹿豹座", "巨蟹座", "猎犬座", "大犬座", "小犬座", "摩羯座", "船底座", "仙后座", "半人马座", "仙王座", "鲸鱼座", "变色龙座", "圆规座", "鸽子座", "后发座", "南冕座", "北冕座", "乌鸦座", "巨爵座", "南十字座", "天鹅座", "海豚座", "剑鱼座", "天龙座", "小马座", "波江座", "天炉座", "双子座", "鹤座", "武仙座", "时钟座", "长蛇座", "水蛇座", "印第安座", "蝎虎座", "狮子座", "小狮座", "天兔座", "天秤座", "狼座", "天猫座", "天琴座", "山案座", "显微镜座", "独角兽座", "苍蝇座", "矩尺座", "八分仪座", "蛇夫座", "猎户座", "孔雀座", "飞马座", "英仙座", "凤凰座", "绘架座", "双鱼座", "南鱼座", "船尾座", "罗盘座", "网罟座", "天箭座", "射手座", "天蝎座", "玉夫座", "盾牌座", "蛇头座", "蛇尾座", "六分仪座", "金牛座", "望远镜座", "三角座", "南三角座", "杜鹃座", "大熊座", "小熊座", "船帆座", "室女座", "飞鱼座", "狐狸座"。
  • 如果没有传递 constellation_names,则隐藏 **所有** 星座。
  • 如果 ..\celestia\data 目录中的 **asterisms.dat** 文件包含备用星群和/或星座名称,则此参数中也可以使用此文件中提到的名称。
**注意**:注意 celestia 在此方法中关于星座名称的大小写敏感性 !!!

注释

  1. 当使用 celestia:setrenderflags() 方法打开星座时,默认情况下会显示所有星座。您首先必须使用此 **celestia:hideconstellations()** 方法再次禁用星座的渲染,然后 celestia:showconstellations() 方法才能生效。
  2. 除了禁用星座的渲染之外,此 **celestia:hideconstellations()** 方法还会影响星座名称。

示例-1
仅隐藏室女座和天秤座

-- Note the curly braces
celestia:setrenderflags{constellations = true}
celestia:hideconstellations{"Virgo", "Libra"}

示例-2
隐藏所有星座,除了室女座和天秤座

-- Note the curly braces
celestia:setrenderflags{constellations = true}
celestia:hideconstellations()
celestia:showconstellations{"Virgo", "Libra"}


返回 celestia 方法索引。


setconstellationcolor

[edit | edit source]

1.6.0 celestia:setconstellationcolor(number:red, number:green, number:blue [, table:constellation_names])

设置单个星座的颜色。

参数

red
颜色的 RGB 值的红色分量必须介于 0 和 1 之间。
green
颜色的 RGB 值的绿色分量必须介于 0 和 1 之间。
blue
颜色的 RGB 值的蓝色分量必须介于 0 和 1 之间。
constellation_names [可选]
包含应用颜色更改的星座名称的表。必须是以下之一
  • "仙女座", "唧筒座", "天燕座", "宝瓶座", "天鹰座", "天坛座", "白羊座", "御夫座", "牧夫座", "雕具座", "鹿豹座", "巨蟹座", "猎犬座", "大犬座", "小犬座", "摩羯座", "船底座", "仙后座", "半人马座", "仙王座", "鲸鱼座", "变色龙座", "圆规座", "鸽子座", "后发座", "南冕座", "北冕座", "乌鸦座", "巨爵座", "南十字座", "天鹅座", "海豚座", "剑鱼座", "天龙座", "小马座", "波江座", "天炉座", "双子座", "鹤座", "武仙座", "时钟座", "长蛇座", "水蛇座", "印第安座", "蝎虎座", "狮子座", "小狮座", "天兔座", "天秤座", "狼座", "天猫座", "天琴座", "山案座", "显微镜座", "独角兽座", "苍蝇座", "矩尺座", "八分仪座", "蛇夫座", "猎户座", "孔雀座", "飞马座", "英仙座", "凤凰座", "绘架座", "双鱼座", "南鱼座", "船尾座", "罗盘座", "网罟座", "天箭座", "射手座", "天蝎座", "玉夫座", "盾牌座", "蛇头座", "蛇尾座", "六分仪座", "金牛座", "望远镜座", "三角座", "南三角座", "杜鹃座", "大熊座", "小熊座", "船帆座", "室女座", "飞鱼座", "狐狸座"。
  • 如果没有传递 constellation_names 表,则将 **所有** 星座设置为指定颜色。
  • 如果 ..\celestia\data 目录中的 **asterisms.dat** 文件包含备用星群和/或星座名称,则此参数中也可以使用此文件中提到的名称。
**注意:**注意 Celestia 在此方法中关于星座名称的大小写敏感性 !!!

注释

  1. 可以使用 celestia:setrenderflags() 方法打开/关闭星座。
  2. 要仅渲染特定星座,可以使用 celestia:showconstellations()celestia:hideconstellations() 方法。
  3. 除了设置星座的颜色之外,此 **celestia:setconstellationcolor()** 方法还会影响星座名称。

示例-1
将所有星座的颜色设置为红色

celestia:setrenderflags{constellations = true}
celestia:setconstellationcolor(1, 0, 0)

示例-2
将所有黄道星座显示为黄色

celestia:setrenderflags{constellations = true}
zodiac = {"Pisces", "Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra",
          "Scorpius", "Ophiuchus", "Sagittarius", "Capricornus", "Aquarius"}
celestia:setconstellationcolor(1, 1, 0, zodiac)


返回 celestia 方法索引。


gettextureresolution

[edit | edit source]

1.6.0 number celestia:gettextureresolution()

返回当前纹理分辨率,表示为数字。

  • 0 为低分辨率 (lores)
  • 1 为中等分辨率 (medres)
  • 2 为高分辨率 (hires)

示例

actual_textureres = celestia:gettextureresolution()


返回 celestia 方法索引。


settextureresolution

[edit | edit source]

1.6.0 celestia:settextureresolution(number:resolution)

设置纹理分辨率。

  • 参数
resolution
与可用纹理分辨率之一对应的数字
  • 0 为低分辨率 (lores)
  • 1 为中等分辨率 (medres)
  • 2 为高分辨率 (hires)

示例
未注释的行决定纹理分辨率。

-- celestia:settextureresolution(0)  -- lores
-- celestia:settextureresolution(1)  -- medres
celestia:settextureresolution(2)     -- hires


返回 celestia 方法索引。


windowbordersvisible

[edit | edit source]

1.6.0 boolean celestia:windowbordersvisible()

返回一个布尔值,指示在多视图场景的情况下,每个视图周围的窗口边框是否可见。

  • 如果窗口边框可见,则为 true。
  • 如果窗口边框不可见,则为 false。

示例

actual_visible = celestia:windowbordersvisible()


返回 celestia 方法索引。


setwindowbordersvisible

[edit | edit source]

1.6.0 celestia:setwindowbordersvisible(boolean:visible)

设置在多视图场景的情况下,每个视图周围的窗口边框的可见性。

参数

visible
布尔值,指示在多视图场景的情况下,每个视图周围的窗口边框是否可见
  • true:窗口边框可见。
  • flase:窗口边框不可见。

示例
未注释的行设置在多视图场景的情况下,每个视图周围的窗口边框的可见性。

celestia:setwindowbordersvisible(true)      -- Window borders visible
-- celestia:setwindowbordersvisible(false)  -- Window borders NOT visible


返回 celestia 方法索引。


synchronizetime

[edit | edit source]

1.6.1 celestia:synchronizetime(boolean:synched)

设置在多视图场景的情况下,所有视图之间的时间是否同步。

参数

synched
布尔值,指示在多视图场景的情况下,所有视图之间的时间是否同步。
  • true:每个视图中的时间都相同。
  • false:可以在每个视图中独立设置不同的时间。

注释

  1. 重新打开时间同步会将所有视图中的时间重置为活动视图的时间。

示例
未注释的行决定在多视图场景的情况下,所有视图之间的时间是否同步。

-- celestia:synchronizetime(true)      -- Time is the same in each view
celestia:synchronizetime(false)        -- Time can be set in each view independently


返回 celestia 方法索引。


istimesynchronized

[edit | edit source]

1.6.1 boolean celestia:istimesynchronized()

返回一个布尔值,指示在多视图场景的情况下,所有视图之间的时间是否同步。

  • true:所有视图之间的时间同步。
  • false:所有视图之间的时间不同步。

示例

actual_synched = celestia:istimesynchronized()


返回 celestia 方法索引。


1.6.1 celestia:seturl(string:celURL [, observer:obs])

使观察者转到指定的 celURL。

参数

celURL
包含位置、方向、时间、渲染选项和视野的文本字符串(超链接)。
celURL 字符串具有特定的 Celestia 可识别格式
  1. 字符串始终以 "cel://" 开头;
  2. 然后是: "Follow"、"SyncOrbit"、"Chase"、"PhaseLock" 或 "Freeflight"
    • 后面跟着两个 "/" 字符之间的对象(例如 "/Sol:Earth/");
    • --或者-- "Freeflight" 情况下只有一个 "/" 字符。
  3. 日期格式: yyyy-mm-dd
    • 年份前可以加上 "-" 字符,表示公元前。
  4. 时间以 "T" 字符开头,以 "?" 字符结尾,格式为
    • hh:mm:ss.sssss TDB 时间,略微不同于 UTC 时间。
      有关 TDB、UTC 以及 Celestia 中如何使用时间的更多信息,请参阅 Celestia/时间尺度
  5. 观察者在空间中的位置 (x,y,z),以当前参考系表示
    • "x=" 后面跟着 X 位置(例如 "AKknXYYNARE")
    • "&y=" 后面跟着 Y 位置(例如 "ACb9ForuURI")
    • "&z=" 后面跟着 Z 位置(例如 "AJLCIRc5vuz//////////w")
  6. 观察者的方向 (ow, ox, oy, oz)
    • "ow=" 后面跟着旋转的 OW 分量(例如 "0.429893")
    • "&ox=" 后面跟着旋转的 OX 分量(例如 "0.319956")
    • "&oy=" 后面跟着旋转的 OY 分量(例如 "-0.786188")
    • "&oz=" 后面跟着旋转的 OZW 分量(例如 "-0.307779")
  7. 然后可以按顺序使用其他选项,例如
    • "&track=" 对象名称
    • "&select=" 对象名称
    • "&fov=" 视野(度)
    • "&ts=" 时间刻度
    • "&ltd=" 光线延迟(0 = 关闭,1 = 打开)
    • "&p=" 暂停(0 = 关闭,1 = 打开)
    • "&rf=" 渲染标志。rf 数字由这些单独标志的总和组成
      1 = 星星
      2 = 行星
      4 = 星系
      8 = 星座线
      16 = 云
      32 = 轨道
      64 = 天球网格
      128 = 夜间灯光
      256 = 大气
      512 = 轨道平滑线
      1024 = 日食阴影
      2048 = 光线传播 ???
      4096 = 环形阴影
      8192 = 星座边界
      16384 = 自动星等
      32768 = 彗星尾巴
      65536 = 标记
      131072 = 部分轨迹(尚未实现)
      262144 = 星云
      524288 = 星团
      1048576 = 球状星团
      2097152 = 云的阴影
      4194304 = 银河网格
      8388608 = 黄道网格
      16777216 = 水平网格
      33554432 = 黄道
    • "&lm=" 标签标志。lm 数字由指示显示的标签的这些单独标志的总和组成
      1 = 星星
      2 = 行星
      4 = 月亮
      8 = 星座
      16 = 星系
      32 = 小行星
      64 = 飞船
      128 = 地点
      256 = 彗星
      512 = 星云
      1024 = 星团
      2048 = 星座的本地名称
      4096 = 矮行星
      8192 = 小型卫星
      16384 = 球状星团
    • "&tsrc=" ???
    • "&ver=3" 用于 Celestia 1.6 及更高版本(目前)
obs [可选]
celestia:seturl() 方法生效的 "观察者" 对象。
如果没有指定观察者,则 seturl 将应用于当前活动视图。

注释

  1. Celestia 1.6.01.6.1 的 celURL 类型为 "ver=3"(string:celURL 中的最后一个参数),与早期版本的 celURL 不完全兼容。因此,与早期版本的 Celestia 相比,在 Celestia 1.6.01.6.1 中使用 ver=2 celURL 时,此 celestia:seturl() 方法的结果可能会有所不同。
  2. 要从 Celestia 在线获取 celURL,请按 [Ctrl+C] 或 [Ctrl+Ins] 键。这会将 celURL 保存到计算机的剪贴板中。要将 celURL 粘贴到 CELX 脚本中,只需将光标定位在 CELX 脚本中的适当位置,然后按 [Ctrl+V] 键。要将其设为 string:celURL,请在其前后加上双引号。
  3. 要从 CELX 脚本内部获取 celURL,必须使用 1.6.1 celestia:geturl() 方法。

示例
将自己定位在珠穆朗玛峰顶部,观看一个非常特殊的日出。

obs=celestia:getobserver()
celestia:seturl("cel://SyncOrbit/Sol:Earth/2009-07-21T22:47:04.72721?
x=N1WRszkGAg&y=R5015O+GFA&z=h+mfTNDb2P///////////w&ow=0.551145&ox=0.273737&oy=-
0.643962&oz=0.454554&select=Sol&fov=29.1666&ts=50.0&ltd=0&p=0&rf=20227&lm=1243136&tsrc=0&ver=3", obs) wait(180.0)


返回 celestia 方法索引。


1.6.1 string celestia:geturl([observer:obs])

以 celURL 类型字符串形式返回指定观察者的位置、方向、时间、渲染选项和视野。
有关 celURL 类型字符串格式的描述,请参阅 1.6.1 celestia:seturl() 方法。

参数

obs [可选]
celestia:geturl() 方法生效的 "观察者" 对象。
如果没有指定观察者,则会返回活动观察者的 celURL。

注释

  1. Celestia 1.6.01.6.1 的 celURL 类型为 "ver=3"(string:celURL 中的最后一个参数),与早期版本的 celURL 不完全兼容。因此,与早期版本的 Celestia 相比,在 Celestia 1.6.01.6.1 中使用 ver=2 celURL 时,此 celestia:seturl() 方法的结果可能会有所不同。
  2. 要从 CELX 脚本内部设置 celURL,必须使用 1.6.1 celestia:seturl() 方法。

示例

obs=celestia:getobserver()
actual_celurl = celestia:geturl(obs)


返回 celestia 方法索引。


settextcolor

[编辑 | 编辑源代码]

1.6.1 celestia:settextcolor(number:red, number:green, number:blue)

设置 Celestia 消息和脚本消息(即 celestia:print()celestia:flash() 方法)的文本颜色。

参数

red
颜色的 RGB 值的红色部分必须介于 0 到 1 之间。
green
颜色的 RGB 值的绿色部分必须介于 0 到 1 之间。
blue
颜色的 RGB 值的蓝色部分必须介于 0 到 1 之间。

注释

  1. 当你放大到明亮物体(例如太阳或水星)时,此方法非常有用。当你的屏幕被物体填满时,标准白色文本消息非常难以阅读。在这种情况下,更改文本颜色可能有助于提高文本消息的可读性。
  2. 无法在同一文本消息中更改文本颜色。
  3. 可以使用 1.6.1 celestia:gettextcolor() 方法获取当前的文本消息颜色。

示例
将 Celestia 和脚本消息的文本颜色设置为绿色

celestia:settextcolor(0.0, 1.0, 0.0)
celestia:flash("This text is printed GREEN", 5.0)
wait(5.0)


返回 celestia 方法索引。


gettextcolor

[编辑 | 编辑源代码]

1.6.1 number, number, number celestia:gettextcolor()

返回一个三元组数字(介于 0 到 1 之间),它对应于文本消息颜色的 RGB 值的红色、绿色、蓝色分量。

注释

  1. 可以使用 1.6.1 celestia:settextcolor() 方法设置文本消息的颜色。

示例

r, g, b = celestia:gettextcolor()


返回 celestia 方法索引。


runscript

[编辑 | 编辑源代码]

1.6.1 celestia:runscript(string:scriptname)

在 celx 脚本末尾添加此命令,可以启动任何 celx 或 cel 脚本,一旦原始 celx 脚本完成。

参数

scriptname
包含要启动的 celx 或 cel 脚本名称的文本字符串。

注释

  1. 此方法使用相对脚本名称。
  2. 在 celx 脚本中,此方法后面始终应加上 wait(0) 命令。
  3. 使用此方法,你可以进行脚本“链”。
  4. 一旦启动了第二个脚本,主脚本就会终止。这意味着 celestia:runscript() 命令下方的所有额外代码行都将被忽略。

示例 1
启动一个名为 "myscriptname.celx" 的 celx 脚本,该脚本位于与当前运行脚本相同的目录中。

celestia:runscript("myscriptname.celx")
wait(0)

示例 2
脚本 "myscriptname.celx" 位于一个名为 "myDir2" 的不同目录中。

celestia:runscript("../mydir2/myscriptname.celx")
wait(0)


返回 celestia 方法索引。


华夏公益教科书