解説用の星図をさっさかつくるプロジェクト メモ7 Javascript+fireworks+VB2005編

前のメモでは、解説用の星図を作る技術のメドはたったので、あとはそれをきちんと使うことを、座標変換・投影法を主体に整理した。

最終的な出力を決めるためには、用紙のサイズなどがわかっていなければいけない。しかし、

・解説を見ても、fireworks の用紙サイズを調べる方法がいまいちわからん。が、

指定のサイズの用紙を作ってしまうことは可能なようだ

fw.createFireworksDocument({x:1000,y:1000},{pixelsPerUnit:72,units:"inch"},"#ffffff");

jsf ファイルに上の1行だけ書いて、fireworks からスクリプト実行すると

縦横1000×1000ピクセル 72ppu の用紙がオープンする。

72ppiで1000ピクセルは、1000/72=13.89インチ=35.278センチメートルになる。

ややこしいので、最初から cm をunit に指定してみる

fw.createFireworksDocument({x:1000,y:1000},{pixelsPerUnit:72,units:"cm"},"#ffffff");

これもいけた。13.89cm角になる

20cm角にするには、200ppu(cm) で 4000×4000 とする必要がある。

fw.createFireworksDocument({x:4000,y:4000},{pixelsPerUnit:200,units:"cm"},"#ffffff");

では、用紙を決めて、横長の星図を作ってみる。

横幅を24cm、縦幅を12cm とする。

fw.createFireworksDocument({x:2400,y:1200},{pixelsPerUnit:100,units:"cm"},"#ffffff");

座標

X:RA 24h-0h を、0-2400 に変換する(昇方向注意)。

maxpaperX = 2400

maxRA=24

minRA =0

paperX = maxpaperX + (- RA * (maxpaperX/maxRA))

ex. RA=6 → 2400- 6 *( 2400/24) = 2400- 6*100= 2400-600 = 1800

Y:-90 - 90を、1200-0 に変換する (昇方向注意)。

maxpaperY = 1200

maxDEC=90

minDEC=-90

ex.DEC=0 で paperY が600 にならないといけない

paperY =-Ax + B

B = maxpaperY * maxDEC / (maxDEC-minDEC)

A = - (maxpaperY / ( maxDEC-minDEC)

x = DEC

paperY = - (maxpaperY / ( maxDEC-minDEC)*DEC + maxpaperY * maxDEC / (maxDEC-minDEC)

ex.DEC=0 → -1200/(90+90)*0+ 1200 * 90 /(90+90)  → 0+600=600

ex.DEC=45 → 300 OK


等級差 → 光度差 → 面積差 → 直径差 と変換したい

まず、等級差 → 光度差 ということでポグソンの法則

n-m = 2.5log(Lm/Ln) ポグソンの法則

Lm/Ln = という式にしたいので、左辺も log にすると

log 10^(n-m) = log(Lm/Ln)^2.5

log をはずす(対数の関係式を真数の関係式にする)

10^(n-m) = (Lm/Ln)^2.5

10^((n-m)/2.5) =Lm/Ln

n=4 m=1 とすると 10^(3)/2.5 = Lm/Ln 3/2.5=6/5=1.2

Lm/Ln= 10^1.2= 15.85 倍( 4等の明るさに対して1等は )

5mm が 1mm だと 5^2=25 だから 25倍差で大きすぎ。4mm だと 16倍差でぴったりなことがわかる
星の大きさは、1等星が4mm= 40unit とし4等星が1mm=10unit とする。

Lm/Ln = (Rm/Rn)^2

Lm/Ln^0.5 = Rm/Rn

ここで Rm = 40unit とすると

Rn= 40 / (Lm/Ln)^0.5

  = 40 / (10^((n-m)/2.5)) ^0.5          m=1 だから

  = 40 / (10^(n-1)2/5)^1/2

  = 40 / 10^(n-1)/5

ほんとかな n=4 とすると

R4 = 40 / 10^((4-1)/5 )

     = 40 / 10^0.6

      = 10.05unit OK!

ちなみに 0等星は、=40 / 10^((0-1)/5 ) = 40 / 10^-0.2 = 63.4

ちょっと一般化して

0等星の大きさ: maxstarR  恒星の等級 Vmag  その恒星のサイズ starR とすると

starR = maxstarR / 10^(0.2(Vmag))

ex.maxstarR=64  Vmag=1 だと starR= 40.4 OK!

という式が作れる

以上を整理すると、

paperX = maxpaperX + (- RA * (maxpaperX/maxRA))

paperY = - (maxpaperY / ( maxDEC-minDEC)*DEC + maxpaperY * maxDEC / (maxDEC-minDEC)

starR = maxstarR / 10^(0.2(Vmag))

となります。

2008年01月23日 記す

続く