解説用の星図をさっさかつくるプロジェクト メモ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日 記す