トップページ > 機能追加 > 経度・緯度のオーバーレイ表示

経度・緯度のオーバーレイ表示


選択した天体にある程度接近した時、経度・緯度を表示します。
マーカーがONの時、マーカーのある部分の緯度になっています。
また、Ctrl+Gを押して天体表面に移動する時、移動後の経緯度になっています。
表示される経緯度の数値はメニューバーからNavigation-Go to Objectで表示される値と同じです。 経緯度オーバーレイ表示


変更方法


ソースコードをダウンロードしたディレクトリをMyCelestiaとします。
MyCelestia\celestia\src\celestia\celestiacore.cppを編集します。

2618行目付近に以下を挿入

static void displayApparentLongLat(Overlay& overlay,
                                    double longitude,
                                    double latitude,
                                    double radius,
                                    double distance)
{
    if (distance > radius)
    {
        double arcSize = radToDeg(asin(radius / distance) * 2.0);

        if (arcSize > 3.0)
        {
            overlay << _("Long.: ") << longitude << ' ';
            overlay << _("Lat.: ") << latitude << '\n';
        }
    }
}

2738行目付近に以下の赤文字部分を追加

static void displayPlanetInfo(Overlay& overlay,
                              int detail,
                              Body& body,
                              double t,
                              double distance,
                              Vec3d viewVec,
                              double longitude,
                              double latitude)
{

2754行目付近に以下の赤文字部分を追加

    if (detail > 1)
    {
        displayApparentLongLat(overlay, longitude, latitude, body.getRadius(), kmDistance);
        overlay << _("Day length: ");
        displayDuration(overlay, body.getRotationElements().period);
        overlay << '\n';

3199行目付近に以下の赤文字部分を追加

        case Selection::Type_Body:
            {
                double distance, longitude, latitude;
                sim->getSelectionLongLat(distance, longitude, latitude);

                overlay->setFont(titleFont);
                *overlay << sel.body()->getName(true).c_str();
                overlay->setFont(font);
                *overlay << '\n';
                displayPlanetInfo(*overlay,
                                  hudDetail,
                                  *(sel.body()),
                                  sim->getTime(),
                                  v.length() * 1e-6,
                                  v * astro::microLightYearsToKilometers(1.0),
                                  longitude,
                                  latitude);
            }
            break;

これらの変更を加えた後、保存してコンパイルします。
トップページ > 機能追加 > 経度・緯度のオーバーレイ表示