西暦2525年。太陽系のすべての惑星(水星、金星、地球、火星、木星、土星、天王星、海王星)を訪れる旅に出たところです。 最初の寄港地は水星で、ここでは税関で書類の記入を求められます(お役所仕事はどうやら地球固有のものではないようです)。 書類を税関職員に手渡すと、職員はそれをじっくりと見て、眉をひそめます。 「まさか、_本当に_50歳だと信じろとおっしゃるのですか? 200歳に近いはずですよ!」
面白くなって、職員が笑い出すのを待ちますが、どうやら大真面目のようです。 そこで気づきます。書いたのは_地球年_での年齢なのに、職員は_水星年_だと思っていたのです! 水星の公転周期は地球よりずっと短いため、水星年で数えると実際の年齢はもっとずっと高くなります。 すばやく計算して、水星年での年齢を伝えると、職員は満足そうに微笑み、先へ進むように手で合図します。 次に税関を通るときにこんな混乱を避けられるよう、惑星ごとの年齢を_あらかじめ_計算しておこうと心に決めます。
冥王星がなぜ仲間に入っていないのか不思議に思った方は、こちらのYouTube動画を見てみてください。
秒単位の年齢が与えられたとき、太陽系の惑星ではその人が何歳になるかを計算します。
地球での1年は365.25日、つまり31,557,600秒です。 もし誰かが1,000,000,000秒の年齢だとしたら、その人の年齢は地球での31.69年になります。
他の惑星については、地球年での公転周期を考慮する必要があります。
| 惑星 | 地球年での公転周期 |
|---|---|
| 水星 | 0.2408467 |
| 金星 | 0.61519726 |
| 地球 | 1.0 |
| 火星 | 1.8808158 |
| 木星 | 11.862615 |
| 土星 | 29.447498 |
| 天王星 | 84.016846 |
| 海王星 | 164.79132 |
地球が太陽の周りを1周する実際の長さは、365.256日(1恒星年)に近い値です。 グレゴリオ暦は、平均すると365.2425日です。 完全に正確ではありませんが、この演習では365.25という値を使います。 1年の測り方については、Wikipediaの「年」の記事を参照してください。
この演習では、その惑星での1年の長さを表す独自の単位を持つ物理量を使って、年齢を返すことになります。 Arturoでは、量は数値と、それに対応する計量単位から成ります。
length: 10`m
units length ; `m
scalar length ; 10
10`m * 10`m ; 100 m²
Arturoの組み込みの`yr単位は31556952秒に変換されます。 そのため、説明の中で先に示した秒数を基準にして、独自の年単位を定義して使う必要があります。
量は、互換性のある別の単位に変換できます。
convert 1`m `ft ; 1250/381 ft
convert 100`m2 `ft2 ; 156250000/145161 ft²
property `m ; length
property `m2 ; area
convert 1`m `m2 ; conversion error results
浮動小数点数の精度には限界があるため、Arturoではスカラーが有理数として保存されることがあります。
代わりに概算の浮動小数点数として値を取り出すには、to関数を使えます。
length: convert 1`m `ft ; 1250/381 ft
to :floating length ; 3.280839895013123
Arturoでは、量に対して独自の単位を指定することもできます。
specify 'nauMile 1.151`mi
property `nauMile length
specify 'lea 3.00579`nauMile
property `lea ; length
depth: 20000`lea
convert depth `km ; 111355.7993425152 km