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 的单位是公里,而不是天文单位。