跳转到内容

Celestia/参考系

来自维基教科书,开放世界开放书籍

参考系

[编辑 | 编辑源代码]

参考系是用于定义天体轨迹和方向的坐标系的原点和坐标轴集。原点是目录文件中定义的其他天体。有很多方法可以设置坐标系轴。

用于定义天体轨迹和方向的参考系不需要相同。这在某些情况下很有用。例如,卫星的轨道可以用地心赤道坐标系给出,而姿态可以用当地垂直-当地水平坐标系给出。

所有参考系关键字都需要 Celestia 1.5。 它们会被早期版本忽略。

OrbitFrame 属性

[编辑 | 编辑源代码]

设置轨迹的参考系

默认值:对于以恒星为父天体的星体,轨道的默认参考系以恒星为中心。基本面是 J2000 地球黄道,首选方向(x 轴)是 J2000 春分点。对于所有其他天体,默认参考系是父天体的赤道系。

用法

OrbitFrame <reference frame>

BodyFrame 属性

[编辑 | 编辑源代码]

设置方向的参考系

默认值:对于以恒星为父天体的星体,方向的默认参考系是 J2000 黄道和春分点。对于所有其他天体,默认参考系是父天体的赤道系(这反过来可能默认为 J2000 黄道,依此类推)。

用法

BodyFrame <reference frame>

参考系对象

[编辑 | 编辑源代码]

参考系是一个列表,包含一个属性,该属性是特定参考系类型之一。

用法

{
    <J2000 ecliptic frame> | 
    <J2000 equator frame> |
    <body mean equator frame> |
    <body-fixed frame> |
    <two-vector frame>
}


EclipticJ2000 属性

[编辑 | 编辑源代码]

EclipticJ2000 是一个参考系,其基本面是 J2000 历元的地球黄道。x 轴指向 J2000 春分点,z 轴垂直于黄道指向北,y 轴完成右手系。

用法

EclipticJ2000
{
    Center <object name>
}


EquatorJ2000 属性

[编辑 | 编辑源代码]

EquatorJ2000 是一个参考系,其基本面是 J2000 历元的地球赤道。x 轴指向 J2000 春分点,z 轴是平均北极,y 轴完成右手系。

用法

EquatorJ2000
{
    Center <object name>
}


MeanEquator 属性

[编辑 | 编辑源代码]

MeanEquator 定义了一个参考系,其中天体的当天赤道是 xy 平面。z 轴垂直于 xy 平面,指向天体逆时针旋转的方向。x 轴是赤道平面在 J2000 黄道平面上的升交点。

用法

MeanEquator
{
    Center <object name>
    Object <object name>
    Freeze <date>
}

属性

  • Object: 基本面是该天体的赤道平面
  • Freeze: 如果设置,则使用冻结历元的赤道,而不是当天赤道

BodyFixed 属性

[编辑 | 编辑源代码]

BodyFixed 参考系与指定天体一起旋转。

用法

BodyFixed
{
    Center <object name>
}


TwoVector 属性

[编辑 | 编辑源代码]

用法

TwoVector
{
    Center <object name>
    Primary <axis>
    Secondary <axis>
}


轴对象
[编辑 | 编辑源代码]

轴对象是一个列表,包含一个方向属性和一个轴标签。

用法

{
    Axis "x" | "y" | "z" | "-x" | "-y" | "-z"
    <RelativePosition> | <RelativeVelocity> | <ConstantVector>
}


RelativePosition 属性
[编辑 | 编辑源代码]

用法

RelativePosition
{
    Observer <object name>
    Target <object name>
}

默认观察者对象是坐标系中心。目标对象没有默认值,必须始终指定。


RelativeVelocity 属性
[编辑 | 编辑源代码]

用法

RelativeVelocity
{
    Observer <object name>
    Target <object name>
}

默认观察者对象是坐标系中心。目标对象没有默认值,必须始终指定。

ConstantVector 属性
[编辑 | 编辑源代码]

用法

ConstantVector
{
    Vector <vector>
    Frame <reference frame>
}

示例

地球的北极旋转轴

ConstantVector
{
    Vector [ 0 0 1 ]
    Frame {
        EquatorJ2000 { Center "Sol/Earth" }
    }
}

参考系示例

[编辑 | 编辑源代码]

日心地球赤道

[编辑 | 编辑源代码]
OrbitFrame {
    EquatorJ2000 { Center "Sol" }
}

地心太阳黄道

[编辑 | 编辑源代码]

该参考系基于 SPICE Frames Required Reading 文档中的一个示例。原点是地球,xy 平面是地球的轨道平面,x 轴指向从地球到太阳的方向。

OrbitFrame {
    TwoVector {
        Center "Sol/Earth"
        Primary {
            Axis "x"
            RelativePosition { Target "Sol" }
        }
        Secondary {
            Axis "y"
            RelativeVelocity { Target "Sol" }
        }
    }
}
    

太阳锁定

[编辑 | 编辑源代码]

该参考系用于一个名为“Test”的绕太阳运行的天体,其 z 轴指向太阳,x 轴指向运动方向。在该参考系中具有固定方向的天体始终保持相同的一面朝向太阳。

BodyFrame {
    TwoVector {
        Center "Sol/Test"
        Primary {
            Axis "z"
            RelativePosition { Target "Sol" }
        }
        Secondary {
            Axis "x"
            RelativeVelocity { Target "Sol" }
        }
    }
}

JPL 太阳系动力学页面

[编辑 | 编辑源代码]

JPL 太阳系动力学页面https://ssd.jpl.nasa.gov/?sat_elem 提供了使用各种参考系计算的行星卫星平均轨道参数。将这些参数输入到solarsys.ssc可能会很困难。

  • 当给出平均黄道元素(对于“物体”的卫星)时
EllipticalOrbit {
...
}

OrbitFrame { EclipticJ2000 {
        Center "object"
} }


  • 当元素以主星赤道为参考时
EllipticalOrbit {
...
}

OrbitFrame { BodyMeanEquator {
   Center "object"
   Object "object"
   [Freeze <date>]
} }


  • 当元素以 ICRF 为参考时(非常接近地球赤道系)
EllipticalOrbit {
...
}

OrbitFrame { EquatorJ2000 {
    Center "object"
} }


  • 当元素以局部拉普拉斯平面为参考时

这是最坏的情况。每个卫星的拉普拉斯平面由其极地赤经和赤纬(在赤道 J2000 系中)定义;这定义了局部拉普拉斯平面的升交点经度(90° 加上极地赤经)和倾角(余赤纬,即 90° 减去赤纬)。

EllipticalOrbit {
...
}

OrbitFrame { TwoVector {
    Center "object"
    Primary { Axis "x"
        ConstantVector { Vector [<Laplace plane ascending node>] Frame { EquatorJ2000 { Center "object" } } }
    }
    Secondary { Axis "z"
        ConstantVector { Vector [<Laplace plane pole>] Frame { EquatorJ2000 { Center "object" } } }
    }
} }


其他示例

[编辑 | 编辑源代码]

将多个物体相同地放置在地球表面上

[编辑 | 编辑源代码]

以下是如何定义相对于地球的位置和方向的示例。然后,可以在放置多个模型时参考此定义,而不是为每个模型复制相同的定义:只需在一个位置修改位置修正,而不是多个位置。

请注意,此示例中包含的一些声明可以省略,因为它们的默认值将适当地放置物体。

"Hale_position" "Sol/Earth"
{
 Class "invisible"
 Radius 0.0001

# Place the Hale Telescope on the peak of Mount Palomar

 OrbitFrame { BodyFixed { Center "Sol/Earth" }}
 FixedPosition  [ -2407.99 -4753.86 3507.91 ]

# Orient it appropriately with respect to the surface
 
 BodyFrame { BodyFixed { Center "Sol/Earth" }}
 FixedRotation { MeridianAngle -116.86 AscendingNode 90 }

}

"Hale_model" "Sol/Earth/Hale_position"
{
  Mesh "telescope.3ds"
  Radius 0.3

  OrbitFrame { BodyFixed { Center "Sol/Earth/Hale_position" }}
  FixedPosition  [ 0 0 0 ]

  BodyFrame { BodyFixed { Center "Sol/Earth/Hale_position" }}
  FixedRotation { }

  Albedo 0.1

}

"Dome_model" "Sol/Earth/Hale_position"
{
  Mesh "dome.3ds"
  Radius 0.3

  OrbitFrame { BodyFixed { Center "Sol/Earth/Hale_position" }}
  FixedPosition  [ 0 0 0 ]

  BodyFrame { BodyFixed { Center "Sol/Earth/Hale_position" }}
  FixedRotation { }

  Albedo 0.1

}
[编辑 | 编辑源代码]
华夏公益教科书