跳转到内容

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 对象类别:moonminormoon。它们非常直观: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

这些是布尔参数,这意味着它们可以设置为 truefalse。如果将 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 的单位是公里,而不是天文单位。

华夏公益教科书