Celestia/Celx 脚本/CELX Lua 方法/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 [可选]
- 相对于原点的垂直偏移。
注释
- 默认情况下,文本以白色打印。
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: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: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
注释
- 可以通过向此方法传递多个参数(用逗号分隔)来一次启用多个功能。
示例
启用彗星尾的渲染
celestia:show("comettails")
celestia:hide(string:renderflag)
禁用一个或多个渲染功能。此方法为了与旧脚本的向后兼容性而存在。
应该使用 celestia:setrenderflags() 方法来代替。
参数
- renderflag
- 描述要禁用的渲染功能的字符串。
- 参见 celestia:show() 方法。
注释
- 可以通过向此方法传递多个参数(用逗号分隔)来一次启用多个功能。
示例
禁用夜地图的渲染
celestia:hide("nightmaps")
table celestia:getrenderflags()
返回一个包含所有已知渲染标志(参见 celestia:setrenderflags() 方法)作为键的表,以及一个布尔值,指示特定渲染标志是启用还是禁用。
注释
- 此方法特别有用,可以在脚本开始时保存所有渲染标志,以便在脚本结束或脚本终止时,使用函数 celestia_cleanup_callback() 重置这些值。
示例
actual_renderflags = celestia:getrenderflags()
celestia:setrenderflags(table:renderflags)
可以使用 celestia:show 和 celestia: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}
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
注释
- 可以通过向此方法传递多个参数(用逗号分隔)来一次启用多个标签功能。
示例
启用行星和卫星的标记
celestia:showlabel("planets", "moons")
1.3.2 celestia:hidelabel(string:labelflag)
禁用标签的渲染。
参数
- labelflag
- 描述要禁用的标签类型的字符串。
- 参见 celestia:showlabel() 方法。
注释
- 可以通过向此方法传递多个参数(用逗号分隔)来一次禁用多个标签功能。
示例
分别启用星座的本地和拉丁文名称的标记
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")
1.3.2 table celestia:getlabelflags()
返回一个包含所有已知标签标志(参见 celestia:setlabelflags() 方法)作为键的表,以及一个布尔值,指示特定标签标志是启用还是禁用。
注释
- 此方法特别有用,可以在脚本开始时保存所有标签标志,以便在脚本结束或脚本终止时,使用函数 celestia_cleanup_callback() 重置这些值。
- 要启用或禁用特定标签标志,可以使用 celestia:setlabelflags() 方法。
示例
actual_labelflags = celestia:getlabelflags()
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
注释
- 要获取标签渲染的当前状态,可以使用 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}
1.3.2 table celestia:getorbitflags()
返回一个包含所有已知轨道标志(参见 celestia:setorbitflags() 方法)作为键的表,以及一个布尔值,指示
当使用 celestia:setrenderflags() 方法启用轨道时,特定轨道是启用还是禁用。
注释
- 要启用或禁用特定轨道的渲染,可以使用 celestia:setorbitflags() 方法。
示例
actual_orbitflags = celestia:getorbitflags()
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 方法的键的区分大小写 !!!
注释
- 要获取特定轨道渲染的当前状态,可以使用 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}
1.3.2 number celestia:getambient()
返回环境光的当前亮度级别,表示为数字。
注释
- 要设置环境光的亮度级别,可以使用 celestia:setambient() 方法。
示例
actual_ambient = celestia:getambient()
1.3.2 celestia:setambient(number:ambient)
设置环境光的亮度级别。
参数
- ambient
- 环境光的新级别,必须在 0 到 1 之间,否则将调整为最接近的有效值 (0 或 1)。
- 为了真实感,此数字应设置为 0.0。远离太阳的一侧将完全黑暗。
- 将此数字设置为 1.0 将导致远离太阳的一侧看起来与照亮的一侧一样亮。
注释
- 要获取环境光的当前亮度级别,可以使用 celestia:getambient() 方法。
示例
celestia:setambient(0.0)
1.3.2 number celestia:getfaintestvisible()
返回当前可见的最暗恒星的星等值。
如果启用了 AutoMag(请参阅 celestia:setrenderflags() 方法),则此方法将返回 45° 时可见的最暗恒星的星等值。
注释
- 要设置可见的最暗恒星的星等值或 45° 时可见的最暗恒星的星等值,可以使用 celestia:setfaintestvisible() 方法。
示例
actual_faintest = celestia:getfaintestvisible()
setfaintestvisible
[edit | edit source]1.3.2 celestia:setfaintestvisible(number:faintest)
设置可见的最暗恒星的星等值。
如果启用了 AutoMag(请参阅 celestia:setrenderflags() 方法),则设置 45° 时可见的最暗恒星的星等值。
参数
- faintest
- 新的可见的最暗恒星的星等值。
- Celestia 用户界面允许的范围约为 1.0 到 15.0。
注释
- 当使用 celestia:setrenderflags() 方法开启星系时,星系的亮度也会响应使用此 celestia:setfaintestvisible() 方法设置的可见的最暗恒星的星等值。此方法与 1.5.0 celestia:setgalaxylightgain() 方法相关联。
- 要获取当前可见的最暗恒星的星等值或当前 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)
getminorbitsize
[edit | edit source]1.3.2 number celestia:getminorbitsize()
返回当前轨道渲染的最小尺寸,以数字表示。
此值在 Celestia 的 orbits renderflag 选项开启时使用,使用 celestia:setrenderflags() 方法。
尺寸以像素为单位测量,与轨道的半径相关。
注释
- 可以使用 celestia:getscreendimension() 方法获取实际屏幕尺寸(以像素为单位)。
- 要设置轨道渲染的最小尺寸,可以使用 celestia:setminorbitsize() 方法。
示例
actual_orbitsize = celestia:getminorbitsize()
setminorbitsize
[edit | edit source]1.3.2 celestia:setminorbitsize(number:orbitsize)
设置轨道渲染的最小尺寸。
此值在 Celestia 的 orbits renderflag 选项开启时使用,使用 celestia:setrenderflags() 方法。
参数
- orbitsize
- 轨道渲染的最小尺寸。
- 负的 orbitsize 值将被视为零。
- 尺寸以像素为单位测量,与轨道的半径相关。
- 注意:当尺寸大于屏幕尺寸的 50% 时,将完全不渲染轨道。
注释
- 使用此方法,例如,您可以在从太阳系缩小时影响行星内部轨道的淡出时机(反之亦然,在放大太阳系时淡入)。
- 不同计算机上的屏幕尺寸可能不同,因此此方法的效果也会有所不同。
- 要获取当前轨道渲染的最小尺寸,可以使用 celestia:getminorbitsize() 方法。
示例
将轨道渲染的最小半径尺寸设置为 30 像素,并渲染行星的轨道
celestia:setrenderflags{orbits = true} celestia:setorbitflags{Planet = true} celestia:setminorbitsize(30)
getstardistancelimit
[edit | edit source]1.3.2 number celestia:getstardistancelimit()
返回 Celestia 将显示恒星的最远距离,以光年为单位,以数字表示。
默认值为 1,000,000,但是,从 1.3.1 版本开始,Celestia 仅使用最多 16,000 光年的距离。
注释
- 要设置 Celestia 将显示恒星的最远距离,可以使用 celestia:setstardistancelimit() 方法。
示例
actual_stardistancelimit = celestia:getstardistancelimit()
setstardistancelimit
[edit | edit source]1.3.2 celestia:setstardistancelimit(number:distance)
设置 Celestia 将显示恒星的最远距离。
参数
- distance
- Celestia 将显示恒星的最大恒星距离(以光年为单位)。
注释
- 要获取当前 Celestia 将显示恒星的最远距离,可以使用 celestia:getstardistancelimit() 方法。
示例
仅显示距离小于 100 光年的恒星
celestia:setstardistancelimit(100)
getminfeaturesize
[edit | edit source]1.3.2 number celestia:getminfeaturesize()
返回位置标注的最小尺寸。
此值在 Celestia 的 locations labelflag 选项开启时使用,使用 celestia:setlabelflags() 或 celestia:showlabel() 方法。
注释
- 当从远处观察一颗行星或卫星时,从一定距离开始,将首先显示最大或最重要的位置。随着您接近行星或卫星,将出现更多位置标签。
- 已定义位置的尺寸是在 Celestia 子目录中存储的位置文件中确定的。尺寸小于位置最小尺寸的已定义位置将不会被标注。
- 可以使用 celestia:setminfeaturesize() 方法设置位置标注的最小尺寸。
- 可以使用 observer:getlocationflags() 获取一个包含指示特定 locationflag 是否启用或禁用的键的表。
示例
actual_minfeaturesize = celestia:getminfeaturesize()
setminfeaturesize
[edit | edit source]1.3.2 celestia:setminfeaturesize(number:size)
设置位置标注的最小尺寸。
此值在 Celestia 的 locations labelflag 选项开启时使用,使用 celestia:setlabelflags() 或 celestia:showlabel() 方法。
参数
- size
- 位置标注的最小特征尺寸。
- 负的 size 值将被视为零。
- 尺寸小于此尺寸的已定义位置将不会被标注。
注释
- 当从远处观察一颗行星或卫星时,从一定距离开始,将首先显示最大或最重要的位置。随着您接近行星或卫星,将出现更多位置标签。
- 已定义位置的尺寸是在 Celestia 子目录中存储的位置文件中确定的。
- 可以使用 celestia:getminfeaturesize() 方法获取当前位置标注的最小尺寸。
- 可以使用 observer:setlocationflags() 确定特定 locationflag 是否启用或禁用。
示例
将最小特征尺寸设置为 1,以显示所有可用位置标签
celestia:setlabelflags{locations = true} celestia:setminfeaturesize(1)
getstarstyle
[edit | edit source]1.3.2 string celestia:getstarstyle()
返回当前恒星的渲染样式,以字符串表示。
字符串将是以下之一
- disc
Celestia 绘制一个突出的圆形圆盘,其直径和亮度会根据恒星的实际大小、星等和距离而变化。 - fuzzy
Celestia 绘制一个更小、更逼真的“点”,其大小和亮度会发生变化。 - point
Celestia 将恒星绘制为不同亮度的光点。
注释
- 可以使用 celestia:setstarstyle() 方法设置恒星的渲染样式。
示例
actual_starstyle = celestia:getstarstyle()
setstarstyle
[edit | edit source]1.3.2 celestia:setstarstyle(string:starstyle)
设置恒星的渲染样式。
参数
- starstyle
- 恒星的新渲染样式。
- 必须是以下之一
- disc
Celestia 绘制一个突出的圆形圆盘,其直径和亮度会根据恒星的实际大小、星等和距离而变化。 - fuzzy
Celestia 绘制一个更小、更逼真的“点”,其大小和亮度会发生变化。 - point
Celestia 将恒星绘制为不同亮度的光点。
- disc
注释
- 可以使用 celestia:getstarstyle() 方法获取当前恒星的渲染样式。
示例
未注释的行设置了 starstyle
-- celestia:setstarstyle("disc") -- celestia:setstarstyle("fuzzy") celestia:setstarstyle("point")
find
[edit | edit source]object celestia:find(string:name)
此 celestia 方法可用于创建 CELX“object”对象。
参数
- name
- 描述所需行星、卫星、小行星、彗星、星系、航天器等的字符串。
- 恒星和天体通过其通用名称或拜耳和弗拉姆斯蒂德命名法以及 HD 或 HIP 目录编号命名
(例如,“北极星”、“HIP 21589”、“41 ari”)。 - 星系通过其通用名称或通过其梅西耶编号、NGC、UGC 或 MCG 目录编号命名
(例如,“M 33”、“银河系”)。 - 行星、卫星、小行星和人造卫星可以通过其通用名称命名
(例如,“和平号空间站”、“木星”、“木卫一”、“卡西尼”)。
- 恒星和天体通过其通用名称或拜耳和弗拉姆斯蒂德命名法以及 HD 或 HIP 目录编号命名
- 注意:如果您当前位于太阳系之外,并想寻找太阳系内的物体,
您必须在名称字符串中包含“Sol/”(例如,“Sol/火星”)。
- 注意:如果您正在寻找行星或卫星上命名的位置,您必须包含该位置所在的行星或卫星的名称,
以及位置本身,用斜杠 / 分隔(例如,“地球/阿姆斯特丹”或“Sol/地球/阿姆斯特丹”)。
注释
- CELX 的 "object" 对象既可以指代像行星或恒星这样的天体,也可以指代位置或航天器。
- 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")
getselection
[edit | edit source]object celestia:getselection()
返回当前选择项,以 CELX 的 "object" 对象形式。
注释
- CELX 的 "object" 对象既可以指代像行星或恒星这样的天体,也可以指代位置或航天器。
- 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
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"))
mark
[edit | edit source]celestia:mark(object:obj)
标记指定的对象。
参数
- obj
- 要标记的对象。
注释
- 您可能希望使用object:mark() 方法,因为它提供了更多可能性。
- 标记仅在 Celestia 的 markers 渲染标志选项启用时才会显示,可以通过 celestia:setrenderflags() 方法启用。
示例
查找、居中并标记恒星毕宿五
selection = celestia:find("Aldebaran") celestia:getobserver():center(selection) celestia:setrenderflags{markers = true} celestia:mark(selection)
unmark
[edit | edit source]celestia:unmark(object:obj)
从指定的对象中移除标记。
参数
- obj
- 要移除其标记的对象。
注释
- 如果您不取消标记对象,并且不使用 celestia:setrenderflags() 方法关闭 markers 渲染标志,Celestia 仍会记住已标记的对象。下次启用 markers 渲染标志时,所有对象都将再次被标记。
- 您可能希望使用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}
unmarkall
[edit | edit source]celestia:unmarkall()
此 celestia 方法会从 所有 对象中移除任何先前分配的标记。
使用此方法可以避免单独取消标记所有先前标记的对象。
注释
- 如果您不取消标记对象,并且不使用 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}
gettime
[edit | edit source]number celestia:gettime()
获取当前模拟时间,以 TDB (质心动力学时间) 儒略日形式表示。
较早的 Celestia 版本使用 UTC (协调世界时) 来计算时间和位置。
从版本 1.5.0 开始,虽然 Celestia 仍然在屏幕上显示 UTC,
但它在内部使用 TDB 时间尺度进行其他所有操作,因此对于 CELX 脚本来说 !!!
注释
- 可以使用 celestia:settime() 方法设置模拟时间。
- 要获取当前系统时间而不是当前模拟时间,应使用 1.6.0 celestia:getsystemtime() 方法。
- TDB 时间尺度与更熟悉的 UTC 稍有不同。使用 TDB 时,Celestia 可以更准确地放置对象。截至 2008 年 1 月 1 日,两者之间的差异约为 65 秒。有关详细信息,请参阅Celestia/Time_Scales。
- 要将 UTC 时间和 TDB 时间相互转换,可以使用 1.5.0 celestia:utctotdb() 和 1.5.0 celestia:tdbtoutc() 方法。
- 要将普通日历日期和儒略日相互转换,可以使用 celestia:tojulianday() 和 celestia:fromjulianday() 方法。
示例
actual_tdbtime = celestia:gettime()
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 儒略日编号。
注释
- 可以使用 celestia:gettime() 或 observer:gettime() 方法获取当前模拟时间。
- TDB 时间尺度与更熟悉的 UTC 稍有不同。使用 TDB 时,Celestia 可以更准确地放置对象。截至 2008 年 1 月 1 日,两者之间的差异约为 65 秒。有关详细信息,请参阅Celestia/Time_Scales。
- 要将 UTC 时间和 TDB 时间相互转换,可以使用 1.5.0 celestia:utctotdb() 和 1.5.0 celestia:tdbtoutc() 方法。
- 要将普通日历日期和儒略日相互转换,可以使用 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)
gettimescale
[edit | edit source]number celestia:gettimescale()
获取当前时间变化的倍数(速度),即多少秒模拟时间等于一秒实际时间,以数字形式表示。
注释
- 可以使用 celestia:settimescale() 方法设置时间变化的倍数(速度)。
示例
actual_timespeed = celestia:gettimescale()
settimescale
[edit | edit source]celestia:settimescale(number:timescale)
设置时间变化的倍数(速度),即多少秒模拟时间等于一秒实际时间。
参数
- timescale
- 新的时间速度。
- 定义时间倍数(例如 100 倍)。
- 特殊值为
- 0: 暂停时间
- 1: 重置为实际时间
- 负值会使时间倒流
注释
- 可以使用 celestia:gettimescale() 方法获取当前时间变化的倍数(速度)。
示例
将时间倍数设置为“快 1000 倍”。
celestia:settimescale(1000)
getscripttime
[edit | edit source]number celestia:getscripttime()
返回自脚本启动以来的经过时间(以秒为单位,包含小数部分),以数字形式表示。
注释
- 此方法可用于计时目的。
示例
在屏幕上打印经过的脚本时间。
-- 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
getobserver
[edit | edit source]observer celestia:getobserver()
返回当前活动的观察者实例,以 CELX 的 "observer" 对象形式表示。
CELX 的 "observer" 对象用于访问特定于视图的属性,例如观察者位置、观察者方向、参考系和跟踪状态。
CELX 的 "observer" 对象可以使用observer 方法。 "Observer" 对象也可以用在其他方法中,这些方法需要一个 "observer" 对象作为参数。
注释
- 此方法返回 活动 视图的观察者,用户可以在多视图情况下使用 1.6.0 observer:makeactiveview() 方法更改视图。
示例
获取活动视图的观察者实例,并存储在 obs 中。
obs = celestia:getobserver()
getobservers
[edit | edit source]1.3.2 table celestia:getobservers()
返回所有已使用的观察者列表,即在多视图情况下每个视图一个观察者实例,以 CELX 的 "observer" 对象表形式表示。
CELX 的 "observer" 对象用于访问特定于视图的属性,例如观察者位置、观察者方向、参考系和跟踪状态。
CELX 的 "observer" 对象可以使用observer 方法。 "Observer" 对象也可以用在其他方法中,这些方法需要一个 "observer" 对象作为参数。
注释
- 每次使用 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()
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.5.0 版本开始,尽管 Celestia 仍然在屏幕上显示 UTC,但它在内部使用 TDB 时间尺度进行其他所有操作,因此对于 CELX 脚本而言 !!! 对于这些较新的 Celestia 版本,在 celestia:settime() 方法中使用 UTC 儒略日(作为此 celestia:tojulianday() 方法的结果),会导致模拟时间设置错误。若要设置模拟时间,使用这些较新 Celestia 版本的儒略日,应使用 1.5.0 celestia:utctotdb() 方法,而不是此 celestia:tojulianday() 方法。
- 有关 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)
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.5.0 版本开始,尽管 Celestia 仍然在屏幕上显示 UTC,但它在内部使用 TDB 时间尺度进行其他所有操作,因此对于 CELX 脚本而言 !!! 对于这些较新的 Celestia 版本,使用 celestia:gettime() 方法获取儒略日,并使用此 celestia:fromjulianday() 方法将其转换为日历日期/时间,会导致获取错误的日历日期/时间。若要获取正确的日历日期/时间,使用这些较新 Celestia 版本的 celestia:gettime() 方法中的儒略日,应使用 1.5.0 celestia:tdbtoutc() 方法。
- 有关 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)
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)
newvector
[edit | edit source]向量 celestia:newvector(数字:x,数字:y,数字:z)
此 celestia 方法可用于从数字创建新的 CELX “向量”对象。
参数
- x
- 新向量的 X 分量,以光年的百万分之一表示。
- y
- 新向量的 Y 分量,以光年的百万分之一表示。
- z
- 新向量的 Z 分量,以光年的百万分之一表示。
注释
- 如果向量分量以公里或英里定义,则必须先将这些分量转换为光年的百万分之一。
因此,可以使用一个常量,该常量必须先在脚本中初始化- 从公里到光年的百万分之一,使用常量 uly_to_km = 9460730.4725808。
- 从英里到光年的百万分之一,使用常量 uly_to_mls = 5912956.5453630。
- 接下来,可以将公里或英里转换为光年的百万分之一,如下所示
- 光年的百万分之一 = 数字:公里 / uly_to_km
- 光年的百万分之一 = 数字:英里 / uly_to_mls
- CELX “向量”对象是一个几何对象,它在三维坐标系中具有长度和方向 [X、Y、Z]。
- 可以在 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)
newposition
[edit | edit source]1.3.2 位置 celestia:newposition(数字:x,数字:y,数字:z)
此 celestia 方法可用于从数字创建新的 CELX “位置”对象。
参数
- x
- 新位置的 X 分量,以光年的百万分之一表示。
- y
- 新位置的 Y 分量,以光年的百万分之一表示。
- z
- 新位置的 Z 分量,以光年的百万分之一表示。
注释
- 如果位置分量以公里或英里定义,则必须先将这些分量转换为光年的百万分之一。
因此,可以使用一个常量,该常量必须先在脚本中初始化- 从公里到光年的百万分之一,使用常量 uly_to_km = 9460730.4725808。
- 从英里到光年的百万分之一,使用常量 uly_to_mls = 5912956.5453630。
- 接下来,可以将公里或英里转换为光年的百万分之一,如下所示
- 光年的百万分之一 = 数字:公里 / uly_to_km
- 光年的百万分之一 = 数字:英里 / uly_to_mls
- CELX “位置”对象包含空间中一个点的精确坐标。位置相对于坐标系,在进一步使用之前可能需要将其转换为或从通用坐标系转换。
- 可以在 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)
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 获取的字符串值。
注释
- 字符串值可以在 celURL 中的“x=”、“y=” 和“z=”之后,以及下一个出现的“&”之前找到。
- CELX “位置”对象包含空间中一个点的精确坐标。位置相对于坐标系,在进一步使用之前可能需要将其转换为或从通用坐标系转换。
- 可以在 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<d=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).
newrotation (轴-角)
[edit | edit source]旋转 celestia:newrotation(向量:轴,数字:角度)
此 celestia 方法可用于创建绕指定轴旋转的角度弧度的新的旋转(即四元数)。
参数
- 轴
- 描述此旋转的 [x、y、z] 轴的向量。必须是“向量”对象。
- 角度
- 此旋转的角度,以弧度表示。必须是数字。
注释
- CELX 中的角度以弧度而不是度数定义。180 度(半圆)与 π 弧度相同 = 3.14159265 弧度 = math.pi 弧度 (LUA)。可以将度数转换为弧度,反之亦然,如下所示
- 弧度 = math.rad( 数字:度数 ) = ( 数字:度数 / 180 * math.pi) = ( 数字:度数 / 180 * 3.14159265)。
- 度数 = math.deg( 数字:弧度 ) = ( 数字:弧度 * 180 / math.pi) = ( 数字:弧度 * 180 / 3.14159265)。
- 此方法等效于 rotation:setaxisangle() 方法。仅使用此方法,将创建“旋转”对象,并且无需先存在。
- CELX “旋转”对象在内部是一个四元数,它是数学上描述三维空间中旋转的一种可能性(即它可以转换为旋转矩阵)。旋转也可以用于描述物体或观察者的方向(即观察者朝哪个方向看,以及“向上”是哪个方向)。
- 可以在 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
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 获取的数字值。
注释
- 数字值可以在 celURL 中的 "ow="、"ox="、"oy=" 和 "oz=" 之后以及下一个 "&" 之前找到。
- 将向量的分量作为 ox-、oy-、oz- 值传递与传递向量本身不同。
如果传递向量,则必须使用 newrotation (轴-角) 方法创建四元数。 - CELX “旋转”对象在内部是一个四元数,它是数学上描述三维空间中旋转的一种可能性(即它可以转换为旋转矩阵)。旋转也可以用于描述物体或观察者的方向(即观察者朝哪个方向看,以及“向上”是哪个方向)。
- 可以在 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<d=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)
newframe
[edit | edit source]frame celestia:newframe(string:coordsysname [, object:reference, object:target])
此 celestia 方法可用于创建新的参考系作为 "frame" 对象。
参数
- coordsysname
- 描述帧类型的字符串。它必须是以下之一
- universal
- ecliptic
另请参阅 observer:follow() 方法。 - equatorial
- planetographic
另请参阅 observer:synchronous() 方法。 - observer (已弃用)
- lock
另请参阅 observer:lock() 方法。 - chase
另请参阅 observer:chase() 方法。 - 1.6.0 bodyfixed
另请参阅 observer:synchronous() 方法。
- reference [可选]
- 新帧的参考对象。必须是 "object" 对象。
- 坐标系 "universal" 不需要。
- target [可选]
- 此帧的目标对象。必须是 "object" 对象。
- 仅坐标系 "lock" 需要。
注释
- 在 Celestia 版本 1.6.0 中,名称 bodyfixed 将替换 planetographic,但出于兼容性原因,名称 planetographic 将继续起作用。
- CELX 参考 "frame" 是一个原点和一组轴,它们定义了用于物体的轨迹和方向的坐标系。原点是目录文件中定义的另一个物体。有几种方法可以设置坐标系轴。
- 可以使用 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)
requestkeyboard
[edit | edit source]1.3.2 celestia:requestkeyboard(boolean:enable)
启用或禁用键盘输入回调。
参数
- enable
- 布尔值,用于确定是否应启用/禁用键盘输入。
- 如果应启用键盘输入,则为 true
- 让 celestia 处理键盘,则为 false。
注释
- 如果已启用键盘输入,则 celestia 将对每个按键执行名为 "celestia_keyboard_callback()" 的函数。调用此 celestia:requestkeyboard() 方法时,此函数必须存在。
- 按下的键作为字符串参数提供给函数,其中包含此键的 UTF-8 编码(对于 ASCII 字符,它只是包含正常字符的字符串)。
- "celestia_keyboard_callback()" 函数可以返回一个布尔值,指示是否已处理按键 (true) 还是应该继续正常处理 (false),没有返回值被视为true。
- 这些回调只能在脚本正在执行 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
requestsystemaccess
[edit | edit source]1.3.2 celestia:requestsystemaccess()
请求访问 Lua 的 io 和 os 库的权限,这些库提供文件写入和程序执行。
有关详细信息,请参阅 Lua: 文档参考手册。
注释
- 如果 celestia.cfg 文件中的 ScriptSystemAccessPolicy 参数设置为 "ask"(默认值),则会询问用户是否要允许此操作。此问题将在下一个 wait() 出现,因此您必须在请求生效之前调用 wait()。
- 调用 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)
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)
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 个字符。
注释
- 为了避免覆盖其他文件(即非屏幕截图),文件名始终类似于 "screenshot-000001.png" 或 "screenshot-string:name-000001.png",其中数字从 1 开始,每次启动脚本时递增,name 可以由脚本选择 - 如上所述。
- 截取屏幕截图需要一些时间,但正在进行的任何闪光、打印、goto 或 center 命令都不会等待。这可能会在将来发生变化,但另一方面,还没有人抱怨过。
- 为安全原因在 Celestia 版本 1.3.2 中实施的限制在 Celestia 版本 1.4.0 中已部分解除,因为 CEL 脚本也提供不太安全的屏幕截图截取功能。这意味着可以通过使用 CEL 脚本来规避安全问题 :-(
- 但是,屏幕截图仍然会写入 celestia.cfg 文件中的 config 选项 "ScriptScreenshotDirectory" 设置的目录,默认设置为主 celestia 目录(通常类似于 C:\Program Files\Celestia\),具体取决于您的系统,Celestia 可能不允许写入该目录的文件。
示例
截取当前场景的屏幕截图并将其存储在文件名中:"screenshot-test-000001.jpg"。如果此文件名已存在,则数字部分将递增,直到找到第一个空闲数字。
screenshot = celestia:takescreenshot("jpg", "test")
createcelscript
[edit | edit source]celscript celestia:createcelscript(string:CELsource)
从包含有效 CEL 命令的字符串创建 "celscript" 对象,并在当前 CELX 脚本中执行 CEL 脚本。
参数
- CELsource
- 包含有效 CEL 脚本源代码的字符串。
注意:如果字符串不包含有效的 CEL 脚本,则此方法将导致错误。
注释
- Lua 支持使用双括号的语法来表示长字符串,这在本文中很有用。通过使用它,您几乎可以在所有情况下将完整的 CEL 脚本直接复制并粘贴到 CELX 脚本中,而无需修改。
- 在 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
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)
getstar
[edit | edit source]object celestia:getstar(number:index_number)
返回一颗恒星,由其在星表中的索引号标识,表示为“object”对象。
参数
- index_number
- 星表中恒星的编号。
- 必须介于 0(零)和星表中恒星的总数减 1 之间。
注释
- 在 1.6.1 之前,此方法实现不正确,将它的参数视为非常内部的索引,而不是目录编号。因此,负数或大于或等于星表中恒星总数的数字可能会导致 Celestia 错误!星表中恒星的总数可以通过使用celestia:getstarcount() 方法来获取。
- CELX 的 "object" 对象既可以指代像行星或恒星这样的天体,也可以指代位置或航天器。
- 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)
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)
getdso
[edit | edit source]1.5.0 object celestia:getdso(number:index_number)
返回一个深空天体 (DSO),由其在 DSO 目录中的索引号标识,表示为“object”对象。
参数
- index_number
- 深空天体 (DSO) 目录中深空天体的编号。
- 必须介于 0(零)和 DSO 目录中 DSO 的总数减 1 之间。
注释
- 在 1.6.1 之前,此方法实现不正确,将它的参数视为非常内部的索引,而不是目录编号。因此,负数或大于或等于 DSO 目录中 DSO 总数的数字可能会导致 Celestia 错误!DSO 目录中 DSO 的总数可以通过使用 1.5.0 celestia:getdsocount() 方法来获取。
- CELX 的 "object" 对象既可以指代像行星或恒星这样的天体,也可以指代位置或航天器。
- 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)
stars
[edit | edit source]1.5.0 iterator celestia:stars()
返回一个迭代器,它可以与 Lua 的通用“for”语句一起使用,用于枚举 Celestia 星表中的所有恒星。
迭代器可以被认为是一种指针,它具有两个主要操作:
- 引用对象集合中的一个特定元素(称为元素访问),
- 修改自身以指向下一个元素(称为元素遍历)。
还必须有一种方法来创建迭代器,使其指向第一个元素,以及一种方法来确定迭代器是否已遍历完对象集合中的所有元素。
注释
- 可以使用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}
dsos
[edit | edit source]1.5.0 iterator celestia:dsos()
返回一个迭代器,它可以与 Lua 的通用“for”语句一起使用,用于枚举 Celestia 目录中的所有深空天体 (DSO:在 .DSC 文件中定义的对象)。
迭代器可以被认为是一种指针,它具有两个主要操作:
- 引用对象集合中的一个特定元素(称为元素访问),
- 修改自身以指向下一个元素(称为元素遍历)。
还必须有一种方法来创建迭代器,使其指向第一个元素,以及一种方法来确定迭代器是否已遍历完对象集合中的所有元素。
注释
- 可以使用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}
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.5.0 开始,尽管 Celestia 仍然在屏幕上显示 UTC,但它在内部使用 TDB 时间标度来处理其他所有内容,因此对于 CELX 脚本而言 !!! 为了使用儒略日设置模拟时间,对于这些较新的 Celestia 版本,应该使用 1.5.0 celestia:utctotdb() 方法,而不是旧的 celestia:tojulianday() 方法。
- 有关 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)
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.5.0 开始,尽管 Celestia 仍然在屏幕上显示 UTC,但它在内部使用 TDB 时间标度来处理其他所有内容,因此对于 CELX 脚本而言 !!! 对于这些较新的 Celestia 版本,使用 celestia:gettime() 方法获取儒略日,并将该儒略日转换为日历日期/时间,应该使用 1.5.0 celestia:tdbtoutc() 方法,而不是旧的 celestia:fromjulianday() 方法。
- 有关 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)
getaltazimuthmode
[edit | edit source]1.5.0 boolean celestia:getaltazimuthmode()
返回一个布尔值,指示是否启用了高度方位模式。
- true:启用了高度方位模式。
- false:禁用了高度方位模式。
注释
- 高度方位模式对应于水平坐标系,该坐标系是使用观测者的当地地平线作为基本面的天球坐标系。水平坐标是:
- 高度 (Alt),即天体与观测者当地地平线之间的夹角。
- 方位 (Az),即天体绕地平线旋转的角度,相对于原点。
- 当观测者位于一个天体表面时(通过使用 [Ctrl+G] 键或 observer:gotosurface() 方法),按左右箭头键旋转视图:
- "偏航" 如果启用了高度方位模式 (true)。
- "横滚" 如果禁用了高度方位模式 (false)。
- 可以使用 1.5.0 celestia:setaltazimuthmode() 方法设置高度方位模式。
示例
actual_altaz = celestia:getaltazimuthmode()
setaltazimuthmode
[edit | edit source]1.5.0 celestia:setaltazimuthmode(boolean:altaz)
启用或禁用高度方位模式。
参数
- altaz
- 布尔值,指示是否必须启用或禁用高度方位模式。
- true 如果必须启用高度方位模式。
- false 如果必须禁用高度方位模式。
注释
- 高度方位模式对应于水平坐标系,该坐标系是使用观测者的当地地平线作为基本面的天球坐标系。水平坐标是:
- 高度 (Alt),即天体与观测者当地地平线之间的夹角。
- 方位 (Az),即天体绕地平线旋转的角度,相对于原点。
- 当观测者位于一个天体表面时(通过使用 [Ctrl+G] 键或 observer:gotosurface() 方法),按左右箭头键旋转视图:
- "偏航" 如果启用了高度方位模式 (true)。
- "横滚" 如果禁用了高度方位模式 (false)。
- 可以使用 1.5.0 celestia:getaltazimuthmode() 方法获取当前的高度方位模式。
示例
未注释的行确定是否必须启用/禁用高度方位模式。
-- celestia:setaltazimuthmode(true) -- alt-azimuth mode must be enabled. celestia:setaltazimuthmode(false) -- alt-azimuth mode must be disabled.
getoverlayelements
[edit | edit source]1.5.0 table celestia:getoverlayelements()
返回一个表,其中包含所有已知的叠加元素(参见 1.5.0 celestia:setoverlayelements() 方法)作为键,以及一个布尔值作为值,指示是否渲染特定叠加元素。
叠加元素与屏幕上部/下部、左部/右部的信息显示有关。
注释
- 要启用/禁用不同叠加元素的渲染,可以使用 1.5.0 celestia:setoverlayelements() 方法。
示例
actual_overlaytab = celestia:getoverlayelements()
setoverlayelements
[edit | edit source]1.5.0 celestia:setoverlayelements(table:overlayelements)
单独启用或禁用屏幕上每个叠加元素的渲染。
叠加元素与屏幕上部/下部、左部/右部的信息显示有关。
参数
- overlayelements
- 一个包含叠加元素作为键,布尔值作为每个键的值的表格。每个叠加元素必须是以下之一
- Time
屏幕右上角的叠加元素。 - Velocity
屏幕左下角的叠加元素。 - Selection
屏幕左上角的叠加元素。 - Frame
屏幕右下角的叠加元素。
- Time
- 注意:注意 celestia 对此 celestia 方法的键的区分大小写 !!!
注释
- 类似于在线按下 [V] 键,通过两个详细程度级别切换整个信息显示(所有叠加元素一起)的开关。但是,此方法可以单独启用/禁用每个叠加元素,但无法在两个详细程度级别之间切换。
- 可以使用 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}
getgalaxylightgain
[edit | edit source]1.5.0 number celestia:getgalaxylightgain()
返回当前银河系光增益(亮度)级别,以数字形式表示。
注释
- 可以使用 celestia:setrenderflags() 方法打开/关闭星系。
- 可以使用 1.5.0 celestia:setgalaxylightgain() 方法设置银河系光增益(亮度)级别。
示例
actual_galaxylightgain = celestia:getgalaxylightgain()
setgalaxylightgain
[edit | edit source]1.5.0 celestia:setgalaxylightgain(number:lightgain)
设置银河系光增益(亮度)级别。
参数
- lightgain
- 定义新的银河系光增益(亮度)级别的数字。
- 必须介于 0 (0%) 和 1 (100%) 之间,否则将调整为最接近的有效值 (0 或 1)。
注释
- 可以使用 celestia:setrenderflags() 方法打开/关闭星系。
- 可以使用 1.5.0 celestia:getgalaxylightgain() 方法获取当前银河系光增益(亮度)级别。
- 当访问银河系之外的星系时,增强亮度可以改善你对遥远星系的观测,而在银河系内,降低亮度可以改善你对恒星、行星、卫星等的观测。
- 银河系亮度也会随着使用 celestia:setfaintestvisible() 方法设置最微弱可见星等而发生变化。这些方法是关联的。
示例
启用星系的渲染并将其亮度最大化。
celestia:setrenderflags{galaxies = true} celestia:setgalaxylightgain(1)
gettextwidth
[edit | edit source]1.5.0 number celestia:gettextwidth(string:text)
以数字形式返回文本字符串的宽度(以像素为单位)。
示例
textwidth = celestia:gettextwidth("This is a text string")
log
[edit | edit source]1.5.0 celestia:log(string:text)
将文本写入 Celestia 日志文件。Celestia 支持 UTF-8 编码文本字符串,用于写入非 ASCII 字符。
参数
- text
- 包含要写入 Celestia 日志的消息的字符串。
- 也可以在同一个日志命令中使用变量和文本字符串。
- 这可以通过如下方式连接文本字符串和变量来完成
- "String1 " .. variable1 .. "String2 " .. variable2
- 注意:与 celestia:print() 方法不同,此字符串参数不能包含换行符“\n”以换行。
注释
- 此方法对于调试 Lua/CELX 脚本非常有用。
- 可以使用键盘上的波浪号 [~] 键(或某些系统上的 [~] + [空格键])在屏幕上显示 Celestia 日志。
示例
在屏幕上显示 Celestia 日志,运行此示例并验证文本是否已写入日志。
celestia:log("This message is written to the Celestia log")
registereventhandler
[edit | edit source]1.5.0 boolean celestia:registereventhandler(string:eventtype, function:eventhandler)
用脚本作者选择的行为(在函数中定义)替换 Celestia 的默认事件处理。
参数
- eventtype
- 指定事件类型的字符串。必须是以下之一
- "key"
- "mouseup"
- "mousedown"
- "tick"
- eventhandler
- 一个接受包含事件属性的单个表格参数并返回布尔值(指示它是否已处理事件)的函数。
- 使用 nil 取消绑定事件类型与事件处理程序的绑定。
注释
- 如果没有注册事件处理程序,或者注册的事件处理程序返回 false,Celestia 将恢复为该事件的默认行为。
- 事件类型与事件处理程序之间的绑定将保留,直到:
- Celestia 重新启动
- 在事件类型和另一个事件处理程序(可能在另一个脚本中)之间指定新的绑定
- 通过使用以下命令取消绑定事件类型与事件处理程序的绑定:
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)
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
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.6.0 celestia:getlabelcolor() 方法获取特定标签的当前颜色。
- 可以使用 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)
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.6.0 celestia:getlinecolor() 方法获取特定线条的当前颜色。
- 可以使用 celestia:setorbitflags() 方法打开/关闭特定轨道。
- 可以使用 celestia:setrenderflags() 方法打开/关闭轨道、网格、星座和边界。
- 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)
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.5.0 版本的 celestia:setlabelcolor() 方法设置特定标签的颜色。
- 可以使用 celestia:showlabel() 和 celestia:hidelabel() 或 celestia:setlabelflags() 方法打开/关闭特定标签。
示例
r, g, b = celestia:getlabelcolor("planets")
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.5.0 版本的 celestia:setlinecolor() 方法设置特定线条的颜色。
- 可以使用 celestia:setorbitflags() 方法打开/关闭特定轨道。
- 可以使用 celestia:setrenderflags() 方法打开/关闭轨道、网格、星座和边界。
- 1.6.0 planetequator 是行星图网格的一部分,可以使用 object:addreferencemark() 方法为所有星体类型对象打开/关闭该网格。
示例
r, g, b = celestia:getlinecolor("planetorbits")
getsystemtime
[edit | edit source]1.6.0 number celestia:getsystemtime()
以 TDB 儒略日期数字形式返回当前系统时间。
较早的 Celestia 版本使用 UTC (协调世界时) 来计算时间和位置。
从版本 1.5.0 开始,虽然 Celestia 仍然在屏幕上显示 UTC,
但它在内部使用 TDB 时间尺度进行其他所有操作,因此对于 CELX 脚本来说 !!!
注释
- 要获取当前模拟时间而不是当前系统时间,应改用 celestia:gettime() 或 observer:gettime() 方法。
- TDB 时间尺度与更熟悉的 UTC 稍有不同。使用 TDB 时,Celestia 可以更准确地放置对象。截至 2008 年 1 月 1 日,两者之间的差异约为 65 秒。有关详细信息,请参阅Celestia/Time_Scales。
- 要将 UTC 时间和 TDB 时间相互转换,可以使用 1.5.0 celestia:utctotdb() 和 1.5.0 celestia:tdbtoutc() 方法。
- 要将普通日历日期和儒略日相互转换,可以使用 celestia:tojulianday() 和 celestia:fromjulianday() 方法。
示例
actual_systemtime = celestia:getsystemtime()
ispaused
[edit | edit source]1.6.0 boolean celestia:ispaused()
返回一个布尔值,指示时间是否暂停。
- 如果时间已暂停,则为 true
- 否则为 false。
示例
actual_paused = celestia:ispaused()
showconstellations
[edit | edit source]1.6.0 celestia:showconstellations([table:constellation_names])
启用一个或多个星座的渲染。
参数
- constellation_names [可选]
- 包含要显示的星座名称的表。必须是以下之一
- "仙女座", "唧筒座", "天燕座", "宝瓶座", "天鹰座", "天坛座", "白羊座", "御夫座", "牧夫座", "雕具座", "鹿豹座", "巨蟹座", "猎犬座", "大犬座", "小犬座", "摩羯座", "船底座", "仙后座", "半人马座", "仙王座", "鲸鱼座", "变色龙座", "圆规座", "鸽子座", "后发座", "南冕座", "北冕座", "乌鸦座", "巨爵座", "南十字座", "天鹅座", "海豚座", "剑鱼座", "天龙座", "小马座", "波江座", "天炉座", "双子座", "鹤座", "武仙座", "时钟座", "长蛇座", "水蛇座", "印第安座", "蝎虎座", "狮子座", "小狮座", "天兔座", "天秤座", "狼座", "天猫座", "天琴座", "山案座", "显微镜座", "独角兽座", "苍蝇座", "矩尺座", "八分仪座", "蛇夫座", "猎户座", "孔雀座", "飞马座", "英仙座", "凤凰座", "绘架座", "双鱼座", "南鱼座", "船尾座", "罗盘座", "网罟座", "天箭座", "射手座", "天蝎座", "玉夫座", "盾牌座", "蛇头座", "蛇尾座", "六分仪座", "金牛座", "望远镜座", "三角座", "南三角座", "杜鹃座", "大熊座", "小熊座", "船帆座", "室女座", "飞鱼座", "狐狸座"。
- 如果没有传递 constellation_names,则显示 **所有** 星座。
- 如果 ..\celestia\data 目录中的 **asterisms.dat** 文件包含备用星群和/或星座名称,则此参数中也可以使用此文件中提到的名称。
- **注意**:注意 celestia 在此方法中关于星座名称的大小写敏感性 !!!
注释
- 当使用 celestia:setrenderflags() 方法打开星座时,默认情况下会显示所有星座。为了使此 **celestia:showconstellations()** 方法生效,您首先必须使用 celestia:hideconstellations() 方法再次禁用星座的渲染。
- 除了星座的渲染之外,此 **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()
hideconstellations
[edit | edit source]1.6.0 celestia:hideconstellations([table:constellation_names])
禁用一个或多个星座的渲染。
参数
- constellation_names [可选]
- 包含要隐藏的星座名称的表。必须是以下之一
- "仙女座", "唧筒座", "天燕座", "宝瓶座", "天鹰座", "天坛座", "白羊座", "御夫座", "牧夫座", "雕具座", "鹿豹座", "巨蟹座", "猎犬座", "大犬座", "小犬座", "摩羯座", "船底座", "仙后座", "半人马座", "仙王座", "鲸鱼座", "变色龙座", "圆规座", "鸽子座", "后发座", "南冕座", "北冕座", "乌鸦座", "巨爵座", "南十字座", "天鹅座", "海豚座", "剑鱼座", "天龙座", "小马座", "波江座", "天炉座", "双子座", "鹤座", "武仙座", "时钟座", "长蛇座", "水蛇座", "印第安座", "蝎虎座", "狮子座", "小狮座", "天兔座", "天秤座", "狼座", "天猫座", "天琴座", "山案座", "显微镜座", "独角兽座", "苍蝇座", "矩尺座", "八分仪座", "蛇夫座", "猎户座", "孔雀座", "飞马座", "英仙座", "凤凰座", "绘架座", "双鱼座", "南鱼座", "船尾座", "罗盘座", "网罟座", "天箭座", "射手座", "天蝎座", "玉夫座", "盾牌座", "蛇头座", "蛇尾座", "六分仪座", "金牛座", "望远镜座", "三角座", "南三角座", "杜鹃座", "大熊座", "小熊座", "船帆座", "室女座", "飞鱼座", "狐狸座"。
- 如果没有传递 constellation_names,则隐藏 **所有** 星座。
- 如果 ..\celestia\data 目录中的 **asterisms.dat** 文件包含备用星群和/或星座名称,则此参数中也可以使用此文件中提到的名称。
- **注意**:注意 celestia 在此方法中关于星座名称的大小写敏感性 !!!
注释
- 当使用 celestia:setrenderflags() 方法打开星座时,默认情况下会显示所有星座。您首先必须使用此 **celestia:hideconstellations()** 方法再次禁用星座的渲染,然后 celestia:showconstellations() 方法才能生效。
- 除了禁用星座的渲染之外,此 **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"}
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 在此方法中关于星座名称的大小写敏感性 !!!
注释
- 可以使用 celestia:setrenderflags() 方法打开/关闭星座。
- 要仅渲染特定星座,可以使用 celestia:showconstellations() 和 celestia:hideconstellations() 方法。
- 除了设置星座的颜色之外,此 **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)
gettextureresolution
[edit | edit source]1.6.0 number celestia:gettextureresolution()
返回当前纹理分辨率,表示为数字。
- 0 为低分辨率 (lores)
- 1 为中等分辨率 (medres)
- 2 为高分辨率 (hires)
示例
actual_textureres = celestia:gettextureresolution()
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
windowbordersvisible
[edit | edit source]1.6.0 boolean celestia:windowbordersvisible()
返回一个布尔值,指示在多视图场景的情况下,每个视图周围的窗口边框是否可见。
- 如果窗口边框可见,则为 true。
- 如果窗口边框不可见,则为 false。
示例
actual_visible = celestia:windowbordersvisible()
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
synchronizetime
[edit | edit source]1.6.1 celestia:synchronizetime(boolean:synched)
设置在多视图场景的情况下,所有视图之间的时间是否同步。
参数
- synched
- 布尔值,指示在多视图场景的情况下,所有视图之间的时间是否同步。
- true:每个视图中的时间都相同。
- false:可以在每个视图中独立设置不同的时间。
注释
- 重新打开时间同步会将所有视图中的时间重置为活动视图的时间。
示例
未注释的行决定在多视图场景的情况下,所有视图之间的时间是否同步。
-- celestia:synchronizetime(true) -- Time is the same in each view celestia:synchronizetime(false) -- Time can be set in each view independently
istimesynchronized
[edit | edit source]1.6.1 boolean celestia:istimesynchronized()
返回一个布尔值,指示在多视图场景的情况下,所有视图之间的时间是否同步。
- true:所有视图之间的时间同步。
- false:所有视图之间的时间不同步。
示例
actual_synched = celestia:istimesynchronized()
1.6.1 celestia:seturl(string:celURL [, observer:obs])
使观察者转到指定的 celURL。
参数
- celURL
- 包含位置、方向、时间、渲染选项和视野的文本字符串(超链接)。
- celURL 字符串具有特定的 Celestia 可识别格式
- 字符串始终以 "cel://" 开头;
- 然后是: "Follow"、"SyncOrbit"、"Chase"、"PhaseLock" 或 "Freeflight"
- 后面跟着两个 "/" 字符之间的对象(例如 "/Sol:Earth/");
- --或者-- "Freeflight" 情况下只有一个 "/" 字符。
- 日期格式: yyyy-mm-dd
- 年份前可以加上 "-" 字符,表示公元前。
- 时间以 "T" 字符开头,以 "?" 字符结尾,格式为
- hh:mm:ss.sssss TDB 时间,略微不同于 UTC 时间。
有关 TDB、UTC 以及 Celestia 中如何使用时间的更多信息,请参阅 Celestia/时间尺度。
- hh:mm:ss.sssss TDB 时间,略微不同于 UTC 时间。
- 观察者在空间中的位置 (x,y,z),以当前参考系表示
- "x=" 后面跟着 X 位置(例如 "AKknXYYNARE")
- "&y=" 后面跟着 Y 位置(例如 "ACb9ForuURI")
- "&z=" 后面跟着 Z 位置(例如 "AJLCIRc5vuz//////////w")
- 观察者的方向 (ow, ox, oy, oz)
- "ow=" 后面跟着旋转的 OW 分量(例如 "0.429893")
- "&ox=" 后面跟着旋转的 OX 分量(例如 "0.319956")
- "&oy=" 后面跟着旋转的 OY 分量(例如 "-0.786188")
- "&oz=" 后面跟着旋转的 OZW 分量(例如 "-0.307779")
- 然后可以按顺序使用其他选项,例如
- "&track=" 对象名称
- "&select=" 对象名称
- "&fov=" 视野(度)
- "&ts=" 时间刻度
- "<d=" 光线延迟(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 将应用于当前活动视图。
注释
- Celestia 1.6.0 和 1.6.1 的 celURL 类型为 "ver=3"(string:celURL 中的最后一个参数),与早期版本的 celURL 不完全兼容。因此,与早期版本的 Celestia 相比,在 Celestia 1.6.0 和 1.6.1 中使用 ver=2 celURL 时,此 celestia:seturl() 方法的结果可能会有所不同。
- 要从 Celestia 在线获取 celURL,请按 [Ctrl+C] 或 [Ctrl+Ins] 键。这会将 celURL 保存到计算机的剪贴板中。要将 celURL 粘贴到 CELX 脚本中,只需将光标定位在 CELX 脚本中的适当位置,然后按 [Ctrl+V] 键。要将其设为 string:celURL,请在其前后加上双引号。
- 要从 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<d=0&p=0&rf=20227&lm=1243136&tsrc=0&ver=3", obs) wait(180.0)
1.6.1 string celestia:geturl([observer:obs])
以 celURL 类型字符串形式返回指定观察者的位置、方向、时间、渲染选项和视野。
有关 celURL 类型字符串格式的描述,请参阅 1.6.1 celestia:seturl() 方法。
参数
- obs [可选]
- 此 celestia:geturl() 方法生效的 "观察者" 对象。
- 如果没有指定观察者,则会返回活动观察者的 celURL。
注释
- Celestia 1.6.0 和 1.6.1 的 celURL 类型为 "ver=3"(string:celURL 中的最后一个参数),与早期版本的 celURL 不完全兼容。因此,与早期版本的 Celestia 相比,在 Celestia 1.6.0 和 1.6.1 中使用 ver=2 celURL 时,此 celestia:seturl() 方法的结果可能会有所不同。
- 要从 CELX 脚本内部设置 celURL,必须使用 1.6.1 celestia:seturl() 方法。
示例
obs=celestia:getobserver() actual_celurl = celestia:geturl(obs)
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.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)
1.6.1 number, number, number celestia:gettextcolor()
返回一个三元组数字(介于 0 到 1 之间),它对应于文本消息颜色的 RGB 值的红色、绿色、蓝色分量。
注释
- 可以使用 1.6.1 celestia:settextcolor() 方法设置文本消息的颜色。
示例
r, g, b = celestia:gettextcolor()
1.6.1 celestia:runscript(string:scriptname)
在 celx 脚本末尾添加此命令,可以启动任何 celx 或 cel 脚本,一旦原始 celx 脚本完成。
参数
- scriptname
- 包含要启动的 celx 或 cel 脚本名称的文本字符串。
注释
- 此方法使用相对脚本名称。
- 在 celx 脚本中,此方法后面始终应加上 wait(0) 命令。
- 使用此方法,你可以进行脚本“链”。
- 一旦启动了第二个脚本,主脚本就会终止。这意味着 celestia:runscript() 命令下方的所有额外代码行都将被忽略。
示例 1
启动一个名为 "myscriptname.celx" 的 celx 脚本,该脚本位于与当前运行脚本相同的目录中。
celestia:runscript("myscriptname.celx") wait(0)
示例 2
脚本 "myscriptname.celx" 位于一个名为 "myDir2" 的不同目录中。
celestia:runscript("../mydir2/myscriptname.celx") wait(0)