Celestia/教程/卫星
在 Celestia 中,就像可以添加围绕恒星运行的行星、小行星和彗星一样,也可以围绕这些天体放置卫星,甚至在这些卫星上放置卫星!本教程将向您展示如何做到这一点。
本教程假定您已阅读上一页:简单小行星.
"Name" "Sol/Parent Body" { Class "class" Mesh "mesh.*" Texture "texture.*" Radius <number> Color [ <number> <number> <number> ] BlendTexture true EllipticalOrbit { Epoch <number> Period <number> SemiMajorAxis <number> Eccentricity <number> Inclination <number> AscendingNode <number> ArgOfPericenter <number> MeanAnomaly <number> } Albedo <number> RotationPeriod <number> }
我们将逐一介绍参数。定义看起来与简单小行星页面中给出的定义非常相似,但有一些关键区别需要注意到。
此外,您可以在任何时候将注释添加到您的 .ssc 代码中。注释以 #
符号开头,一直持续到下一行换行符。如果自己计算了参数或这些参数是猜测,添加解释注释是一个好主意。
一般来说,卫星的大多数参数与小行星中的参数相同。对于网格、纹理、半径、颜色、反照率和自转,它们是相同的,因此请参考该页面以获取更多信息。下面列出了区别。
"Name" "Sol/Parent Body"
这类似于小行星中的定义。这里,Sol/母体
只是意味着将卫星放置在某个“母体”的轨道上,而该“母体”又绕着“Sol”(太阳)运行。这种层次结构可以无限期地扩展:对于卫星的卫星或亚卫星,它看起来像这样
"Name" "Sol/Parent Body 2/Parent Body"
其中“名称”绕着“母体”运行,“母体”绕着“母体 2”运行,“母体 2”绕着“Sol”运行。
Class "moon"
Class "minormoon"
Celestia 为卫星提供了两个 SSC 对象类别:moon
和 minormoon
。它们非常直观:moon
应该用于天体的主要卫星,而 minormoon
应该用于次要卫星。次要卫星较小,通常是不规则的,可能具有偏心和/或倾斜的轨道。新发现的卫星通常是次要卫星;所有主要卫星都已在 Celestia 的默认版本中添加。
EllipticalOrbit { Epoch <number> Period <number> SemiMajorAxis <number> Eccentricity <number> Inclination <number> AscendingNode <number> ArgOfPericenter <number> MeanAnomaly <number> }
这段代码定义了卫星如何绕母体运行。可以使用其他参数,例如 PericenterDistance
,但这是最常见的格式。与绕恒星(例如太阳)运行的天体相比,卫星的关键区别在于,对于卫星,SemiMajorAxis
的单位是公里,而不是天文单位。
对于许多矮行星,例如冥王星,它们的卫星相对于母体而言非常大,因此它们的共同质心(质心)位于母体之外。对于这些天体,必须使用一种特殊方法,以便这两个天体绕着它们的质心运行。
以下是一些示例代码
ReferencePoint "Barycenter" "Sol" { EllipticalOrbit { Epoch <number> Period <number> SemiMajorAxis <number> Eccentricity <number> Inclination <number> AscendingNode <number> ArgOfPericenter <number> MeanAnomaly <number> } Visible true Clickable true } "Name" "Sol" { Class "class" Mesh "mesh.*" Texture "texture.*" Radius <number> Color [ <number> <number> <number> ] BlendTexture true OrbitFrame { EquatorJ2000 { Center "Sol/Barycenter" } } EllipticalOrbit { Epoch <number> Period <number> SemiMajorAxis <number> Eccentricity <number> Inclination <number> AscendingNode <number> ArgOfPericenter <number> MeanAnomaly <number> } Albedo <number> RotationPeriod <number> } "Moon" "Sol/Name" { Class "class" Mesh "mesh.*" Texture "texture.*" Radius <number> Color [ <number> <number> <number> ] BlendTexture true OrbitFrame { EquatorJ2000 { Center "Sol/Barycenter" } } EllipticalOrbit { Epoch <number> Period <number> SemiMajorAxis <number> Eccentricity <number> Inclination <number> AscendingNode <number> ArgOfPericenter <number> MeanAnomaly <number> } Albedo <number> RotationPeriod <number> }
同样,卫星的大多数参数与小行星中的参数相同。对于网格、纹理、半径、颜色、反照率和自转,它们是相同的,因此请参考该页面以获取更多信息。下面列出了区别。
ReferencePoint "Barycenter" "Sol"
在 SSC 文件中将“ReferencePoint”放在对象名称之前,会将该对象变成一个点,其他对象可以绕着它运行。
Visible true Clickable true
这些是布尔参数,这意味着它们可以设置为 true
或 false
。如果将 Visible
设置为 true
,则参考点的标签将可见。如果将 Clickable
设置为 true
,则参考点将可选择,就像任何其他对象一样。
"Name" "Sol"
在上面的代码中,您会注意到对象“名称”看起来像绕着“Sol”运行,尽管实际上它绕着“Barycenter”运行,而“Barycenter”绕着“Sol”运行。那么我们如何让它绕着“Barycenter”对象运行呢?
通过设置正确的 OrbitFrame。在下面的代码中,我们告诉 Celestia 将“名称”放在 Barycenter 的轨道上。
OrbitFrame { EquatorJ2000 { Center "Sol/Barycenter" } }
选择正确的轨道坐标系时要非常小心。这里,它被设置为“EquatorJ2000”,这意味着轨道元素位于赤道坐标系中。如果您从论文中提取元素,请检查轨道坐标系是赤道(EQJ2000)还是黄道(ECJ2000)坐标系。如果它说黄道,请改为使用以下代码
OrbitFrame { EclipticJ2000 { Center "Sol/Barycenter" } }
如果轨道坐标系有一个中心是“Something/Something”,那么 Period
的单位是天,而不是年,SemiMajorAxis
的单位是公里,而不是天文单位。