N88-BASICで惑星の軌道(1回目)~(9回目)

 

ケプラー方程式をニュートン法などで解いて

楕円、双曲線、放物線軌道を描画する

この記事はリニューアルしました

https://ulprojectmail.blogspot.com/2021/10/n88-basic-1.html

N88-BASICで天体の軌道 (1回目)

 

惑星、小惑星、彗星の軌道を表示する

この記事はリニューアルしました

<u>https://ulprojectmail.blogspot.com/2021/10/n88-basic-2.html</u>

N88-BASICで天体の軌道 (2回目)

 

午後(PM)12時は昼間か深夜か

 

結論を言いますと

午後(PM)12時を昼間とすると簡素

になりますので、

 

デジタル時計の表示と同じ、

昼間は午後(PM)12時

深夜は午前(AM)12時

とするのが良いと思います。

 

午後(PM)12時を深夜とすると煩雑

になります。

 

考察

 

24時間表示の時刻をT時、

12時間表示の時刻をt時とすると、

 

0≦T<24

0≦t<12 ただし0は通常12と表記される。

 

日付が1日から2日に変わる瞬間はT=0時

丁度で、T=0時は2日です。

このタイミングで午後から午前に変わると

考えるのが自然です。

 

0≦T<12 が午前、12≦T<24 が午後

0≦t<12 が午前、 0≦t<12 が午後

12時間表記の0時は12時と表記されるので

午前12時(午前t=0)は深夜(T= 0時)

午後12時(午後t=0)は昼間(T=12時)

となります。

午前と午後の時間帯に一貫性があります。

午前12:00:00の1秒後は午前12:00:01です。

午前12:59:59の1秒後は午前 1:00:00です。

すべて午前です。

 

一方

T=0時までが午後で少し過ぎてから午前に

なるのであれば、日付の変更と午後と午前の

変更のタイミングが違う(2つある)事になり

ます。

 

24時間の時

0≦T<12 が午前、12≦T<24 が午後

12時間の時

0≦t<12 が午前、 0≦t<12 が午後

12時を表示しなければ問題ありませんが

 

12時を表示する時

0<t≦12 が午前、 0<t≦12 が午後

で、午後12時は午前0時なので、

同じ時刻に午後と午前両方存在することになり、

午前と午後の時間帯に一貫性がありません。

さらに午後と午前の切り替わるタイミングが

日付が変わるタイミングとズレることになる

という2つもの煩雑さが生まれます。

更に、

午後12:00:00の1秒後は午前12:00:01ですか?

ならば、午後12:00:00.00の0.01秒後は

午前12:00:00.01ですか?

それとも、

午後12:00:00の1秒後は午後12:00:01なら

午後12:59:59の1秒後は午前 1:00:00ですか?

12時の途中または12時と1時の間という中途半端な

タイミングで午後と午前が切り替わります。

どちらにしても煩雑すぎですね。

 

簡素に0時の事を12時と表記すると考えれば

良いのではないでしょうか、

0時を12時と表記するのはアナログ時計の

名残と割り切りましょう。

12時からスタートするのが気持ち悪いと思う方も

いらっしゃるかと思いますが、

上記の3つもの煩雑さに比べれば些細な事だと

思います。

 

NL-BASICとnl20906.zip(ampm001.bas)は

以下のリンクからダウンロードできます。

NL-BASIC(N88-BASIC互換?)ホームページ

Readme.txtを読んで遊んで下さい。

 

 

下記リストをマウスで選択しCtrl+cでコピーし、

NL-BASICの画面でAlt+v(Ctrl+vではないので注意)

でプログラムを読込めます。

 

ampm001.bas

 

100 '------------------------------------------------------------

110 ' 24時間表示→12時間表示 by ULproject for N88-BASIC

120 '------------------------------------------------------------

130 INPUT "HH:MM:SS="; T$

140 H  = VAL(LEFT$(T$, 2))

150 B$ = RIGHT$(T$, 6)

160 IF H < 12 THEN A$ = "AM " ELSE A$ = "PM "

170 T  = H MOD 12

180 IF T = 0 THEN T = 12

190 A$ = "        " + A$ + RIGHT$(STR$(T + 100), 2))

200 PRINT A$; B$

 

N88-BASICで三角関数(1回目)~(2回目)の記事は

下記ブログでリニューアルしました

 

https://ulprojectmail.blogspot.com/2021/09/1.html

三角関数 (1回目)

 

https://ulprojectmail.blogspot.com/2021/09/2.html

三角関数 (2回目)

 

N88-BASICで三角関数(3回目)

長半径a,離心率e(0≦e<1)の楕円を点で描画する。

 

1. 中心Oから±c離れた焦点F,F'

 

長半径a

離心率e = c / a

焦点距離c = ae

短半径  b = √(a2 - c2) = a√(1 - e2)

 

r = 線分PF、r'= 線分PF'と置くと、

楕円はr + r' = 2aとなる

Pの集合です。

 

この関係を余弦定理で表すと、

r'2 =  (2c)2 + r2 - 2(2c)r cos(180゚-θ)

  sin(180゚-θ) =  sinθ

  cos(180゚-θ) = -cosθ

  tan(180゚-θ) = -tanθ

(2a - r)2 =  4c2 + r2 + 4cr cosθ

-4ar + 4a2 = 4c2 + 4cr cosθ

(a + c cosθ)r = a2 - c2 

r = {(a2 - c2)/a} / (1 + c/a cosθ)

ここで、c / a = e、

(a2 - c2)/a = a2(1 - e2)/a = a(1 + e2)

より、

r = a(1 - e2) / (1 + e cosθ)

θ= 90゚の時のrを半直弦 ℓ = a(1 - e2)

θ=  0゚の時のrを近点距離q = a(1 - e)

θ=180゚の時のrを遠点距離Q = a(1 + e)

という。

[ θ= 90゚ ⇒ r = a(1-e2)     /(1+0) ]

[ θ=  0゚ ⇒ r = a(1-e)(1+e) /(1+e) ]

[ θ=180゚ ⇒ r = a(1-e)(1+e) /(1-e) ]

 

楕円の式

半直弦ℓ = a(1 - e2)を使うと、

r = ℓ / (1 + e cosθ)

 

極座標系(r,θ)は回転が簡単など利点が
多いと思います。

 

極座標系(r,θ)と直交座標系(x,y)

原点から距離r(動径r)、角度θの位置を

(x,y)とすると、

 

極座標系⇒直交座標系は、

x = rcosθ (cosθ = x / rより)

y = rsinθ (sinθ = y / rより)

 

直交座標系⇒極座標系は、

r = √(x2 + y2)

θ= Tan-1(y/x) = Cos-1(x/r)

となる。

 

BASICの座標系のy軸は下が正なので

グラフを書くときは上下逆転させる

必要があります。

点は少し大きめにするため、

CIRCLEで描いています。

間隔は5°ずつにしています。

 

NL-BASICとnl~.zip(cos003.bas)は

以下のリンクからダウンロードできます。

NL-BASIC(N88-BASIC互換?)ホームページ

Readme.txtを読んで遊んで下さい。

 

 

 

N88-BASICで三角関数(4回目)

近点距離q,離心率eの軌道を点で描画する。

(e=0),楕円(0<e<1),放物線(e=1),双曲線(e>1)

 

離心率  e = c / a = c / (q + c)

近点距離q = a(1 - e) = a - c

遠点距離Q = a(1 + e) = a + c

焦点距離c = ae

長半径  a = q / (1 - e) = q + c

短半径  b = √(a2 - c2) = a√(1 - e2)

半直弦 ℓ = a(1 - e2) = a(1-e)(1+e) = q(1 + e)

 

e = 1(放物線)の時、a = q / (1 - e) = q / 0

で、aが定義できないので、aの代わりに

qを使うことにします。

 

r = ℓ / (1 + e cosθ)より

r = q(1 + e) / (1 + e cosθ)

 

θは5°ずつ変化させています。

 

ただし、e=1,θ=180°のときは、

0で割ることになるので、エラーに

なりますが、エラーチェックは

していません。

 

NL-BASICとnl~.zip(cos004.bas)は

以下のリンクからダウンロードできます。

NL-BASIC(N88-BASIC互換?)ホームページ

Readme.txtを読んで遊んで下さい。