1 自己看注释 doushu.js
var dizhiarry=["\u5b50","\u4e11","\u5bc5","\u536f","\u8fb0","\u5df3","\u5348","\u672a","\u7533","\u9149","\u620c","\u4ea5"];//地支
var tianganarry=["\u7532","\u4e59","\u4e19","\u4e01","\u620a","\u5df1","\u5e9a","\u8f9b","\u58ec","\u7678"];//天干
/*
*斗数宫
*/
/*
var doushugong = {
var dizhi,//地支
var tiangan,//天干
var xingqiu=[],//星宿
var gongming,//宫名 如身宫,迁移宫
var startyear,//大运开始年限
var endyear,//结束年限
}*/
/*
*斗数盘
*/
/**
var doushupan = {
var wuxinggu,//五行局
var sihua,//四化星系
var doushugongarry,
}*/
/**
* @紫微斗数排盘
* @charset UTF-8
* @Author zhu_min726@126.com
* @Version 1.0.3
* @公历斗数排盘 :doushupan.paipangongli(1987,11,01); //[you can ignore params of prefix 0]
@ 农历斗数排盘:doushupan.doushupannongli(1987,11,01,0); //年月日时//[you can ignore params of prefix 0]
* @干支斗数排盘:doushupan.doushupanganzhi(甲子甲子,甲子,甲子); //[you can ignore params of prefix 0]
*/
var doushu = {
paipangongli:function(y,m,d,h) {
},
//子午安身铃火宿,丑未天相寅申梁,卯酉天同身主是,巳亥天机辰戌昌
getshengzhu:function(nianzhi){
var shenzdic=new Map();
shenzdic.set('子','火铃');
shenzdic.set('丑','天相');
shenzdic.set('卯','天同');
shenzdic.set('巳','天机');
shenzdic.set('寅','天梁');
shenzdic.set('辰','文昌');
shenzdic.set('午','火铃');
shenzdic.set('未','天相');
shenzdic.set('酉','天同');
shenzdic.set('亥','天机');
shenzdic.set('申','天梁');
shenzdic.set('戌','文昌');
return shenzdic.get(nianzhi);
},
//子属贪狼丑亥门,寅戌生人属禄存。卯酉属文巳未武,辰申廉宿午破军
getmingzhu:function(gongwei){
var minggdic=new Map();
minggdic.set('亥','巨门');
minggdic.set('戌','禄存');
minggdic.set('酉','文曲');
minggdic.set('申','廉贞');
minggdic.set('未','武曲');
minggdic.set('子','贪狼');
minggdic.set('丑','巨门');
minggdic.set('寅','禄存');
minggdic.set('卯','文曲');
minggdic.set('辰','廉贞');
minggdic.set('巳','武曲');
minggdic.set('午','破军');
return minggdic.get(gongwei);
},
nayinwuxing:function(ganzhi){
var nywxdic=new Map();
nywxdic.set('甲子','海中金');
nywxdic.set('甲午','沙中金');
nywxdic.set('丙寅','炉中火');
nywxdic.set('丙申','山下火');
nywxdic.set('戊辰','大林木');
nywxdic.set('戊戌','平地木');
nywxdic.set('庚午','路旁土');
nywxdic.set('庚子','壁上土');
nywxdic.set('壬申','剑锋金');
nywxdic.set('壬寅','金箔金');
nywxdic.set('甲戌','山头火');
nywxdic.set('甲辰','覆灯火');
nywxdic.set('丙子','涧下水');
nywxdic.set('丙午','天河水');
nywxdic.set('戊寅','城头土');
nywxdic.set('戊申','大驿土');
nywxdic.set('庚辰','白蜡金');
nywxdic.set('庚戌','钗钏金');
nywxdic.set('壬午','杨柳木');
nywxdic.set('壬子','桑柘木');
nywxdic.set('甲申','泉中水');
nywxdic.set('甲寅','大溪水');
nywxdic.set('丙戌','屋上土');
nywxdic.set('丙辰','沙中土');
nywxdic.set('戊子','霹雳火');
nywxdic.set('戊午','天上火');
nywxdic.set('庚寅','松柏木');
nywxdic.set('庚申','石榴木');
nywxdic.set('壬辰','长流水');
nywxdic.set('壬戌','大海水');
nywxdic.set('乙丑','海中金');
nywxdic.set('乙未','沙中金');
nywxdic.set('丁卯','炉中火');
nywxdic.set('丁酉','山下火');
nywxdic.set('己巳','大林木');
nywxdic.set('己亥','平地木');
nywxdic.set('辛未','路旁土');
nywxdic.set('辛丑','壁上土');
nywxdic.set('癸酉','剑锋金');
nywxdic.set('癸卯','金箔金');
nywxdic.set('乙亥','山头火');
nywxdic.set('乙巳','覆灯火');
nywxdic.set('丁丑','涧下水');
nywxdic.set('丁未','天河水');
nywxdic.set('己卯','城头土');
nywxdic.set('己酉','大驿土');
nywxdic.set('辛巳','白蜡金');
nywxdic.set('辛亥','钗钏金');
nywxdic.set('癸未','杨柳木');
nywxdic.set('癸丑','桑柘木');
nywxdic.set('乙酉','泉中水');
nywxdic.set('乙卯','大溪水');
nywxdic.set('丁亥','屋上土');
nywxdic.set('丁巳','沙中土');
nywxdic.set('己丑','霹雳火');
nywxdic.set('己未','天上火');
nywxdic.set('辛卯','松柏木');
nywxdic.set('辛酉','石榴木');
nywxdic.set('癸巳','长流水');
nywxdic.set('癸亥','大海水');
return nywxdic.get(ganzhi);
},
/**
* 传入干支获得干支斗数排盘信息 <=>JSON
* @param y year
* @param m month
* @param d day
* @param y hour
@param m2 农历月份,考虑闰月情况
@param d2 农历出生日期,考虑闰月情况
* @return doushupan
*
*/
doushupanganzhi:function(y,m,d,h,m2,d2) {
var doushupan=new Object();
/**
var wuxinggu,//五行局
var sihua,//四化星系
var doushugongarry,
var shiergongindexarry;十二宫 名字数组
var tianganarry;//十二宫天干
var wuxingju ;五星局var ziweiindex紫薇地支宫位
var xingarry;
*/
//1 算命宫, 正月起寅,顺数生月。落处起时,逆命顺身
yuezhi=m.substr(1,2);
//alert(yuezhi);
indextmp=m2;
//alert(indextmp);
indextmp=indextmp+1;
if(indextmp>12){
indextmp=indextmp-12;
}
shizhi=h.substr(1,2);//时支
shinum=doushu.getIndexDiZhi(shizhi);
shennum=indextmp+shinum;
if(shennum>=12){
shennum=shennum-12;
}
mingnum=indextmp-shinum;
if(mingnum<0){
mingnum=mingnum+12;
}
doushupan.shen=dizhiarry[shennum];
doushupan.ming=dizhiarry[mingnum];
// alert(shennum);
//alert(mingnum);
//四化 ,"甲廉破武阳,乙机梁紫阴;丙同机昌廉,丁阴同机巨;戊贪阴右机,己武贪梁曲;庚阳武阴同,辛巨阳曲昌;壬梁紫左武,癸破巨阴贪。"
var sihua;
switch(y.substr(0,1)){
case '甲':sihua="甲廉破武阳";break;
case '乙':sihua="乙机梁紫阴";break;;
case '丙':sihua="丙同机昌廉";break;;
case '丁':sihua="丁阴同机巨";break;;
case '戊':sihua="戊贪阴右机";break;;
case '己':sihua="己武贪梁曲";break;;
case '庚':sihua="庚阳武阴同";break;;
case '辛':sihua="辛巨阳曲昌";break;;
case '壬':sihua="壬梁紫左武";break;;
case '癸':sihua="癸破巨阴贪";break;;
default:break;
}
doushupan.sihua=sihua;
doushupan.sihuadetail=doushu.getsihuyadetail(sihua);//全名 []
//shennum 身宫位置 mingnum命宫位置
//alert(shennum);
//alert(mingnum);
//2 排12宫命兄妻子财,疾迁友官宅,福父逆宫排。
doushupan.shiergongindexarry=doushu.getSheergongindexarry(mingnum,shennum);
//3宫位天干 口诀:甲己之年丙为首,乙庚之岁戊打头,丙辛之干由庚起,丁壬生年仍为壬,戊癸之年甲干留。
var yeargan=y.substr(0,1);
doushupan.tianganarry= doushu.getTianGanIndexArry(yeargan);
//4 五行局 4.1取命宫干支 ,查表
minggan=doushupan.tianganarry[mingnum];
minggannum=doushu.getIndexTianGan(minggan);
doushupan.wuxingju=doushu.getwuxingju(minggannum,mingnum);
//5 装紫微星,农历日除以五行数,如木三局除以3
var wuxingshu=doushupan.wuxingju.substr(1,1);
var wuxingshunum=0;
switch (wuxingshu){
case '二':wuxingshunum=2;break;
case '三':wuxingshunum=3;break;
case '四':wuxingshunum=4;break;
case '五':wuxingshunum=5;break;
case '六':wuxingshunum=6;break;
default:;
}
var bushushutmp=0;
var chushutmp=0;
var diwangshu=0;
if(d2%wuxingshunum!=0){
bushushutmp=wuxingshunum-d2%wuxingshunum;//奇逆,偶顺
chushutmp=Math.ceil(d2/wuxingshunum);
if(bushushutmp%2==0){
//偶数
diwangshu=bushushutmp+chushutmp;
}else {
//奇数
diwangshu=chushutmp-bushushutmp;
}
}else{
diwangshu=d2/wuxingshunum;
}
var ziweiindex= 1+diwangshu;//2是寅宫 -1
if(ziweiindex<0){
ziweiindex=ziweiindex+12;
}else if(ziweiindex>=12){
ziweiindex=ziweiindex-12;
}
doushupan.ziweiindex=ziweiindex;
//初始化星宿数组。并把紫微星放进第N个数组,N为紫薇所在地支的位置。
var xingarry=doushu.initxingArry();
xingarry[ziweiindex].push("紫薇");
// 6 紫薇星系口诀:紫微天机逆行旁,隔一阳武天同当,又隔两位廉贞地,空三又见紫微郎。
//ziweiindex-1天机、天机-2太阳
xingarry=doushu.setZiweixingxi(xingarry,ziweiindex);
//7设置天府星系 天府太阴与贪狼,巨门天相及天梁,七杀空三破军位,八星顺数细推祥。
var tianfuindex=doushu.formatdizhi(4-ziweiindex);
xingarry=doushu.setTianfuxingxi(xingarry,tianfuindex);
//8设置生月星系 左辅正月起于辰,顺逢生月是贵门,右弼正月戌宫寻,逆至生月安其神。
//左辅(顺)右弼(逆) 正月辰(4) 正月戌10
zuofuindex=doushu.formatdizhi(4+m2-1);//-1 正月为0
xingarry[zuofuindex].push("左辅");
youbiindex=doushu.formatdizhi(10-m2+1);//正月为0
xingarry[youbiindex].push("右弼");
//天姚 天刑,顺时 正月天姚 丑1 天刑 酉9
xingarry[doushu.formatdizhi(1+m2-1)].push("天姚");
xingarry[doushu.formatdizhi(9+m2-1)].push("天刑");
//9年干星系 天马 禄存 擎羊 陀罗 天魁 天钺
//生年安天马口诀:寅午戌在申8,申子辰在寅2,巳酉丑在亥11,亥卯未在巳5。
switch(y.substr(1,1)){
case '寅':;
case '午':;
case '戌': xingarry[doushu.formatdizhi(8)].push("天马");break;
case '申':;
case '子':;
case '辰': xingarry[doushu.formatdizhi(2)].push("天马");break;
case '巳':;
case '酉':;
case '丑': xingarry[doushu.formatdizhi(11)].push("天马");break;
case '亥':;
case '卯':;
case '未': xingarry[doushu.formatdizhi(5)].push("天马");break;
default:;
}
/**
*/
//禄存 甲生禄存在寅宫,乙生在卯丙戊巳5,丁己禄存停午6方, 庚禄居申8辛禄酉9,壬禄在亥11癸子0藏,禄后陀罗前擎羊。
switch(y.substr(0,1)){
case '甲':xingarry[ 2].push("禄存");xingarry[ 1].push("陀罗");xingarry[ 3].push("擎羊");break;
case '乙':xingarry[ 3].push("禄存");xingarry[ 2].push("陀罗");xingarry[ 4].push("擎羊");break;;
case '丙':xingarry[ 5].push("禄存");xingarry[ 4].push("陀罗");xingarry[ 6].push("擎羊");break;;
case '丁':xingarry[ 6].push("禄存");xingarry[ 5].push("陀罗");xingarry[ 7].push("擎羊");break;;
case '戊':xingarry[ 5].push("禄存");xingarry[ 4].push("陀罗");xingarry[ 6].push("擎羊");break;;
case '己':xingarry[ 6].push("禄存");xingarry[ 5].push("陀罗");xingarry[ 7].push("擎羊");break;;
case '庚':xingarry[ 8].push("禄存");xingarry[ 7].push("陀罗");xingarry[ 9].push("擎羊");break;;
case '辛':xingarry[ 9].push("禄存");xingarry[ 8].push("陀罗");xingarry[ 10].push("擎羊");break;;
case '壬':xingarry[ 11].push("禄存");xingarry[ 10].push("陀罗");xingarry[ 0].push("擎羊");break;;
case '癸':xingarry[ 0].push("禄存");xingarry[ 11].push("陀罗");xingarry[ 1].push("擎羊");break;;
default:break;
}
// 天魁 天钺
/**甲戊庚牛(1)羊(7),乙己鼠(0)猴( 8)乡,六辛逢马(6)虎(2),
壬癸兔(3)蛇(5)藏,丙丁猪(11)鸡(9)位,此是魁钺方。
(如:甲、戊、庚年生人,天魁在丑宫,天钺在未宫。
乙、己年生人天魁在子宫,天钺在申宫……) */
switch(y.substr(0,1)){
case '甲':;
case