var BirthPlace = [
['アディスアベバ エチオピア', 9.022736, 38.746799],
['アテネ ギリシャ共和国', 37.973620, 23.718989],
['アビジャン コートジボワール', 5.336318, -4.027751],
['アレキサンドリア エジプト', 31.228000, 29.957718],
['アンマン ヨルダン', 31.949381, 35.932911],
['イスタンブール トルコ共和国', 41.065960, 29.006069],
['ウィーン オーストリア', 48.201841, 16.364571],
['ウラジオストック ロシア連邦', 43.125469, 131.886398],
['ウランバートル モンゴル国', 47.921378, 106.905540],
['エルサレム イスラエル', 31.773750, 35.225220],
['オークランド ニュージーランド', -36.904148, 174.760498],
['大阪 日本', 34.4112, 135.2946],
['オタワ カナダ', 45.411572, -75.698194],
['カイロ エジプト', 30.064742, 31.249509],
['カサブランカ モロッコ', 33.605381, -7.631949],
['カブール アフガニスタン', 34.528455, 69.171703],
['カラカス ベネズエラ・ボリバル共和国', 10.491016, -66.902061],
['キエフ ウクライナ', 50.453629, 30.503828],
['キンシャサ コンゴ民主共和国', -4.320836, 15.298660],
['グアテマラシティ グアテマラ', 14.624795, -90.532818],
['クアラルンプール マレーシア', 3.150210, 101.707703],
['クウェート クウェート国', 29.329404, 48.003930],
['クライストチャーチ ニュージーランド', -43.523529, 172.638199],
['ケープタウン 南アフリカ共和国', -33.924788, 18.429916],
['コペンハーゲン デンマーク王国', 55.692829, 12.554125],
['コルカタ インド', 22.543539, 88.334221],
['コロンボ スリランカ', 6.927468, 79.848358],
['サラエボ ボスニア・ヘルツェゴビナ連邦', 43.856430, 18.413420],
['サンタフェデボゴタ コロンビア', 4.609866, -74.082050],
['サンパウロ ブラジル', -23.581301, -46.622898],
['サンプトペテルブルグロシア連邦', 59.951889, 30.453329],
['サンフランシスコ アメリカ合衆国', 37.775000, -122.418330],
['サンホセ コスタリカ', 9.927128, -84.082012],
['シアトル アメリカ合衆国', 47.606390, -122.330830],
['シカゴ アメリカ合衆国', 41.850000, -87.650000],
['シドニー オーストラリア', -33.891576, 151.241709],
['ジブチ ジブチ共和国', 11.588599, 43.145850],
['ジャカルタ インドネシア', -6.211544, 106.845172],
['上海 中華人民共和国', 31.247869, 121.472702],
['シンガポール シンガポール', 1.298828, 103.824898],
['スコピエ マケドニア共和国', 42.003812, 21.452246],
['ストックホルム スウェーデン', 59.286948, 18.072977],
['ソウル 韓国', 37.532308, 126.957440],
['ソフィア ブルガリア', 42.710543, 23.323827],
['台北 台湾', 25.035089, 121.506699],
['ダカール セネガル', 14.686680, -17.451920],
['タシケント ウズベキスタン', 41.305229, 69.268967],
['ダッカ バングラデシュ', 23.709921, 90.407143],
['ダブリン アイルランド共和国', 53.341560, -6.257347],
['ダマスカス シリア・アラブ共和国', 33.519299, 36.313450],
['チュニス チュニジア共和国', 36.818810, 10.165960],
['テヘラン イラン', 35.696216, 51.422945],
['東京 日本', 35.41, 139.45],
['ドゥシャンベ タジキスタン', 38.565356, 68.775835],
['ドバイ アラブ首長国連邦', 25.281892, 51.517541],
['トビリシ グルジア', 41.709981, 44.792998],
['トリポリ リビア', 32.876174, 13.187507],
['ナイロビ ケニア共和国', -1.274359, 36.813106],
['ニューデリー インド', 28.637690, 77.205824],
['ニューヨーク アメリカ合衆国', 40.714170, -74.006390],
['パース オーストラリア', -31.932854, 115.861940],
['バグダッド イラク共和国', 33.332480, 44.418399],
['パナマ パナマ共和国', 8.994269, -79.518792],
['ハノイ ベトナム', 21.024250, 105.854694],
['ハバナ キューバ', 23.116800, -82.388557],
['パリ フランス', 48.852840, 2.349857],
['バルセロナ スペイン', 41.384855, 2.172164],
['バンクーバー カナダ', 49.242609, -123.099399],
['バンコク タイ王国', 13.730780, 100.521004],
['ビサウ ギニア・ビザウ共和国', 11.863980, -15.598210],
['ビシュケク キルギス共和国', 42.870022, 74.587883],
['平壌 北朝鮮', 39.031859, 125.753765],
['ブエノスアイレス アルゼンチン', -34.611781, -58.417309],
['ブカレスト ルーマニア', 44.430481, 26.122980],
['釜山 韓国', 35.157871, 129.054703],
['ブダペスト ハンガリー', 47.490812, 19.080970],
['プノンペン カンボジア', 11.558831, 104.917445],
['ブラザビル コンゴ共和国', -4.280772, 15.283650],
['プラハ チェコ共和国', 50.078816, 14.437635],
['プリマス イングランド', 50.378535, -4.139914],
['ブリュッセル ベルギー', 50.837051, 4.367612],
['ベオグラード セルビア', 44.802416, 20.465601],
['北京 中華人民共和国', 39.904491, 116.391468],
['ヘルシンキ フィンランド共和国', 60.160791, 24.952548],
['ベルリン ドイツ連邦共和国', 52.524268, 13.406290],
['ホーチミン(旧名サイゴン) ベトナム', 10.759180, 106.662498],
['香港 中華人民共和国', 22.278381, 114.174287],
['マドリード スペイン', 40.422319, -3.704289],
['マニラ フィリピン', 14.600657, 120.982150],
['マルセイユ フランス', 43.291413, 5.375633],
['ミュンヘン ドイツ', 48.139743, 11.560050],
['ミラノ イタリア', 45.471156, 9.185727],
['メキシコシティ メキシコ', 19.410636, -99.130588],
['メルボルン オーストラリア', -37.809575, 144.965186],
['モスクワ ロシア連邦', 55.746455, 37.631895],
['モナコ モナコ公国', 43.739190, 7.427498],
['モンテビデオ ウルグアイ', -34.8939, -56.15684],
['ヤンゴン ミャンマー連邦', 16.783656, 96.156831],
['ラパス ボリビア', -16.49901, -68.146248],
['リオデジャネイロ ブラジル', -22.90937, -43.214998],
['リスボン ポルトガル', 38.727486, -9.148677],
['リマ ペルー共和国', -12.093084, -77.046491],
['リヤド サウジアラビア', 24.640151, 46.724893],
['ルアンダ アンゴラ共和国', -8.813513, 13.237476],
['ローマ イタリア', 41.899344, 12.493110],
['ロサンゼルス アメリカ合衆国', 34.052220, -118.242780],
['ロンドン イギリス', 51.508967, -0.126127],
['ワシントン アメリカ合衆国', 38.894561, -77.009571],
['ワルシャワ ポーランド', 52.244949, 21.011881],
['ンジャメナ チャド', 12.104797, 15.044506]];
var imgstr =['', 'sun.png','moon.png','mercury.png','venus.png','mars.png','jupiter.png','saturn.png','uranus.png','neptune.png',
'pluto.png','ceres.png','pallas.png','juno.png','vesta.png','chiron.png','lilith.png','dragonhead.png','dragontail.png','asc.png','mc.png',
'aries.png','taurus.png','gemini.png','cancer.png','leo.png','virgo.png',
'libra.png','scorpio.png','sagittarius.png','capricorn.png','aquarius.png','pisces.png',
'conjunction.png','sextile.png','square.png','trine.png','opposition.png',
'semisextile.png','semisquare.png','quintile.png','biquintile.png','quincunx.png','sesquiquadrate.png','parallel.png'];
var TMan = new N6LTimerMan(); //タイマーマネージャー
var width = 540;
var height = 1440;
var planetnum = 32;
var dres;
var log = [0,0];
var img = [];
var bBBB;
var bRunning = false;
var bWaiting = false;
var Speed = 1.0;
var CCLWay = 0;
var fFst = 1;
var dat;
var time;
var dt;
var imgRead = 1;
var bRead = false;
var bLAM = false;
var intvl = 50;
var CNST_AU = 1.49597870700e+11;
var planet = [new Array(), new Array()];
function enter() {
createOption(0);
createOption(1);
onNOW();
onOO();
init(0);
TMan.add();
Loop(0); //初回実行
}
function Loop(id) {
if(bWaiting || 0 < fFst) onWaiting();
if(bRunning) onRunning();
TMan.timer[id].setalerm(function() { Loop(id); }, intvl); //メインループ再セット
}
function onNOW() {
var dt = new Date();
setday(dt);
onSTP();
}
function onOO() {
T41.value = 0;
T51.value = 0;
T61.value = 0;
onSTP();
}
function onSTP() {
bRunning = false;
init(0);
}
function onREV() {
init(-1);
}
function onRUN() {
init(1);
}
function setday(dt) {
var year = dt.getFullYear();
var month = dt.getMonth() + 1;
var day = dt.getDate();
var hour = dt.getHours();
var minute = dt.getMinutes();
var second = dt.getSeconds();
T11.value = year;
T21.value = month;
T31.value = day;
T41.value = hour;
T51.value = minute;
T61.value = second;
}
function createOption(n){
var elm = document.getElementById('BP' + n);
for(var i = 0; i < 109; i++){
var option = document.createElement('option');
option.value = "BPOPT"+ n + '_' + i;
option.textContent = BirthPlace[i][0];
elm.appendChild(option);
}
elm.value = "BPOPT"+ n + "_52";
chgbp(n);
}
function chgbp(n){
var elm = document.getElementById('BP' + n);
var num = Number(elm.value.substr(7));
elm = document.getElementById('TN' + n);
elm.value = BirthPlace[num][1];
elm = document.getElementById('TE' + n);
elm.value = BirthPlace[num][2];
log[n] = BirthPlace[num][2];
}
function init(b) {
bBBB = b;
if(0 <= b) Speed = Number(SPD.value);
else Speed = Number(SPD.value) * -1;
var radioList = document.getElementsByName("CCL");
for(i = 0; i<radioList.length; i++){
if(radioList[i].checked){
CCLWay = Number(radioList[i].value);
break;
}
}
for(i = 1; i < imgstr.length; i++){
img[i] = new Image();
img[i].src = "./img/horoscope/" + imgstr[i];
img[i].onload = function(){
imgRead++;
}
}
bWaiting = false;
InitKepler();
onWaiting();
}
function onWaiting() {
if(!bWaiting) {
fFst = -1;
if(bBBB) bRunning = true;
}
// dispplnt();
}
function onRunning() {
var msecPerMinute = 1000 * 60;
var msecPerHour = msecPerMinute * 60;
var msecPerDay = msecPerHour * 24;
if(fFst != 0) {
fFst = 0;
time = 0.0;
dt = Speed * msecPerDay;
}
//メインループ
UpdateFrameKepler();
}
function InitKepler() {
if(!bRead) fFst = 1;
dat = new Date();
PlanetInit(dat);
}
function UpdateFrameKepler() {
var msecPerMinute = 1000 * 60;
var msecPerHour = msecPerMinute * 60;
var msecPerDay = msecPerHour * 24;
var dat1;
var day = time / msecPerDay;
var tm = dt;
if(dt != 0.0) {
time = time + tm;
var datt = dat.getTime();
var dat1t = datt + time;
var dat1 = new Date(dat1t);
PlanetInit(dat1); //新しい日時で惑星初期化
dispplnt();
setday(dat1);
}
}
//惑星初期化
function PlanetInit(dat) {
var msecPerMinute = 1000 * 60;
var msecPerHour = msecPerMinute * 60;
var msecPerDay = msecPerHour * 24;
var Add = [log[0] / 180.0, log[1] / 180.0];
var i;
var j;
if(0 < fFst) {
//データファイル読み込み
if(!bWaiting) {
bWaiting = true;
readCSV('./javascripts/nas6lib/PData001.txt', 'analyzeCSV', 'readedCSV');
}
return;
}
else {
if(imgRead < imgstr.length){
setTimeout(function(){ PlanetInit(dat); }, 500);
return;
}
for(var i = 0; i < planetnum; i++) {
var PlanetName = dres[i][0];
var PlanetNo = Number(dres[i][1]);
var EpochYY = Number(dres[i][2]);
var EpochMM = Number(dres[i][3]);
var EpochDD = Number(dres[i][4]);
var Epochh = Number(dres[i][5]);
var Epochm = Number(dres[i][6]);
var Epochs = Number(dres[i][7]);
var a = Number(dres[i][8]);
var e = Number(dres[i][9]);
var m0 = Number(dres[i][10]);
var npd = Number(dres[i][11]);
var ra = Number(dres[i][12]);
var rb = Number(dres[i][13]);
var p = Number(dres[i][14]);
var ss = Number(dres[i][15]);
var ii = Number(dres[i][16]);
var ww = Number(dres[i][17]);
var m = Number(dres[i][18]);
var r = Number(dres[i][19]);
var mv = Number(dres[i][20]);
var dat0 = new Date(EpochYY, EpochMM - 1, EpochDD, Epochh, Epochm, Epochs);
var datt = dat.getTime();
var dat0t = dat0.getTime();
var ddat;
for (var j = 0; j < 2; j++){
if(j == 0){
var dat000 = new Date(T10.value,T20.value-1,T30.value,T40.value,T50.value,T60.value);
var datt000 = dat000.getTime();
ddat = (datt000 - dat0t) / msecPerDay - Add[j];
}
else {
ddat = (datt - dat0t) / msecPerDay - Add[j];
}
//惑星初期化
planet[j][i] = new N6LPlanet();
if(i == 0){
planet[j][i].CreateEarth(PlanetNo, PlanetName, ddat, dat0, a, e, m0, npd, ra, rb, p, ss, ii, ww, m, r);
}
else if(i == 2){
planet[j][i].CreateMoon(PlanetNo, PlanetName, ddat, dat0, Add[j], planet[j][0], true);
}
else if(i < 16){
planet[j][i].CreatePlanet(PlanetNo, PlanetName, ddat, dat0, a, e, m0, npd, ra, rb, p, ss, ii, ww, m, r, planet[j][0]);
}
else if(i < 21){
// planet[j][i].CreateConfig(PlanetNo, PlanetName, ddat, dat0, i - 16, planet[j][0]);
}
else{
// planet[j][i].CreateEtc(PlanetNo, PlanetName, ddat, dat0, m0, planet[j][0]);
}
}
}
planet[0][0].asc(dat);
planet[0][0].house(planet[0][0].m_asc);
dispplnt();
}
}
function readedCSV(res) {
var msecPerMinute = 1000 * 60;
var msecPerHour = msecPerMinute * 60;
var msecPerDay = msecPerHour * 24;
bWaiting = false;
bRead = true;
fFst = -1;
dres = res;
PlanetInit(dat);
return true;
}
function dispplnt() {
var msecPerMinute = 1000 * 60;
var msecPerHour = msecPerMinute * 60;
var msecPerDay = msecPerHour * 24;
var canvas = document.getElementById('cnv0');
if (canvas.getContext) {
var context = canvas.getContext('2d');
context.fillStyle = 'rgb(255,255,255)';
context.fillRect(0,0,width,height);
context.strokeStyle = 'rgb(0,0,0)';
context.lineWidth = 3;
context.beginPath();
context.arc(width / 2, width / 2, 260, 0, Math.PI*2, false);
context.stroke();
var vecWK = new N6LVector([1, 0]);
var nasc = -planet[0][0].m_asc * Math.PI / 180.0;
var nlog = log * Math.PI / 180.0;
var datt = dat.getTime();
var days = Math.floor(datt / msecPerDay);
var dayt = (datt / msecPerDay) - days;
var dayth = dayt * Math.PI * 2;
var i;
for(i = 1; i <16 ; i++){
var nel = planet[1][i].m_el * Math.PI / 180.0;
vecWK = new N6LVector([1, 0]);
vecWK = vecWK.Rot2D(nel);
// vecWK = vecWK.Rot2D(dayth);
// vecWK = vecWK.Rot2D(nasc);
// vecWK = vecWK.Rot2D(nlog);
context.drawImage(img[i], -vecWK.x[0] * 250 + width / 2 - 16, vecWK.x[1] * 250 + width / 2 - 16, 32, 32);
}
}
}