# 惑星の定数を取得する

**URL:** <https://forum.spacecubics.com/t/topic/42>\
**Category:** Community\
**Tags:** lang-ja\
**Created:** [January 15, 2022, 7:10am UTC](https://forum.spacecubics.com/t/topic/42 "2022-01-15T07:10:21Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![yashi](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.spacecubics.com/yashi/32/10_2.png) [@yashi](https://forum.spacecubics.com/u/yashi)\
**Post date:** [January 15, 2022, 7:10am UTC](https://forum.spacecubics.com/t/topic/42/1 "2022-01-15T07:10:21Z")

</div>

NASA NAIF が公開している SPICE では、惑星の定数を取得することができます。たとえば地球の半径を取りたい場合は、以下のコードで取得することができます。

```C
#include <stdio.h>
#include "SpiceUsr.h"

int main()
{
	SpiceBoolean found;
	SpiceInt nr;
	SpiceDouble radii[3];
	SpiceInt code;
	SpiceChar name[] = "Io";

	bodn2c_c(name, &code, &found);
	printf("Found %s code? %s", name, found ? "Yes" : "No\n");
	if (found) {
		printf(" => %d\n", code);

		/* load PCK files */
		furnsh_c("pck00010.tpc");

		found = bodfnd_c(code, "RADII");
		printf("Found %s radii? %s", name, found ? "Yes" : "No\n");
		if (found) {
			bodvcd_c(code, "RADII", 3, &nr, radii);
			printf(" => %8.3f %8.3f %8.3f\n",
			       radii[0], radii[1], radii[2]);
		}
	}

	return 0;
}

```

これを実行すると、以下のように出力されます。

```plaintext
Found Earth code? Yes => 399
Found Earth radii? Yes => 6378.137 6378.137 6356.752

```

地球の半径が、 [約 6378 Km](https://ja.wikipedia.org/wiki/%E5%9C%B0%E7%90%83%E5%8D%8A%E5%BE%84) なことがわかります。

SPICE の中で、地球は ID `399` が割り当てられています。

地球は球体なのに半径の値が 3つ戻ってくる理由は、地球は実は赤道半径の方が極半径よりも長い 「[扁球](https://ja.wikipedia.org/wiki/%E6%89%81%E7%90%83)」だからです。

3つの数値は、左から順番に

1. 赤道半径 (最長部)
2. 赤道半径 (最短部)
3. 極半径

と、なっています。 地球や他の大きな惑星の場合赤道半径は同じですが、例えば木星の第一衛星である[イオ](https://ja.wikipedia.org/wiki/%E3%82%A4%E3%82%AA_(%E8%A1%9B%E6%98%9F))では、赤道半径に差が出ます。イオ (`"Io"`)の ID は、 `501` です。

```plaintext
Found Io code? Yes => 501
Found Io radii? Yes => 1829.400 1819.400 1815.700

```

イオの場合は、長軸を木星に向けた楕円体のようです。
