Sunday, November 20, 2011

Mathematical Background of computer astrology - part 7( නැකත, නැකැත් පාදය ,විංශෝත්තරී මහ දශාව හා එම මහ දශා ශේෂය සෙවීම)

7 නැකත, නැකැත් පාදය ,විංශෝත්තරී මහ දශාව හා එම මහ දශා ශේෂය සෙවීම.

 මීට පෙර ලිපියෙන් යම් වේලාවක  චන්ද්‍ර,රාහු කේතු ග්‍රහස්ඵුථ හා එම ග්‍රහයන් පිහිටන රාශින් සෙවීමට ගණිත සිද්ධාන්ත ඉදිරිපත් කරන ලදී.

 එහිදී   d3 = plnt[7]   අගයෙන් චන්ද්‍ර ස්ඵුථය ලැබී ඇත.

       nak = plnt [7] * 3 /40
       pada = [4 * fract( nak)] +1     (   fract(nak) = fractional value of (nak) )
       nakn = integer part of  nak


1) (nakn +1)    මගින් නැකත ලැබේ.
   (nakn +1)      = 1 නම් අස්විද
   (nakn +1)      = 2 නම් බෙරණ
    (nakn +1)     = 3 නම් කැති
        .
        .
        .
        .
    (nakn +1)    = 27 නම් රේවතී

    
2) pada මගින් නැකැත් පාදය ලැබේ

3) vim = 9.0 *fract (plnt[7]/ 120)
    vimn = fract(vim)
    q = int (vim)   (integer part of vim )
 
      aa=(1-vimn)*yy[q];

 මෙහි  yy[q=0] =7    (කේතු මහ දශාවේ කාලය අවු 7)
           yy[1]=20    (සිකුරු මහ දශාවේ කාලය අවු 20)
          yy[2] =6      (රවි මහ දශාවේ කාලය අවු 6)
          yy[3] =10    (සදු මහ දශාවේ කාලය අවු 10)
           yy[4]=7    (කුජ(අඟහරු) මහ දශාවේ කාලය අවු 7)
          yy[5] =18    (රාහු මහ දශාවේ කාලය අවු 18)
           yy[6]=16    (ගුරු මහ දශාවේ කාලය අවු 16)
           yy[7]=19    (ශනි මහ දශාවේ කාලය අවු 19)
           yy[8]=17    (බුධ මහ දශාවේ කාලය අවු 17)





      bb=int(aa);   (integer part of aa
      ee=aa-bb;
      ff=ee*12;
     cc=(int)ff;
     gg=ff-cc;
     hh=gg*30;
     dd=(int)hh


 ඉහත   bb,cc,dd අගයන් වලින් ලබාදෙන වේලාවට අනුරූප මහදශාවෙන් ඉතිරි කාලය(මහ දශා ශේෂය) පිළිවෙලින් වර්ෂ,මාස දින වලින් ලැබේ.

මේ දක්වා ඉදිරිපත් කල යම් වේලාවකට අනුරූප ලග්නය රවි,බුධ,චන්ද්‍ර ,රාහු ,කේතු ග්‍රහස්ඵුථ (බුද්ධිමය දේපල වටිනාකම ගැන සලකා අනිත් ග්‍රහයන්ගේ ග්‍රහස්ඵුඵ ගනනය කිරීමට අදාළ කොටස් ඉදිරිපත් කොට නැත.නමුත් අන්තර්ජාලයේ සැරිසැරීමට දන්නා හා උසස් ගණිතය පිළිබද වැටහීමක් ඇති අයට අනිත් ග්‍රහයන්ගේ ග්‍රහස්ඵුථ ගනනයට අදාළ ගණිත කොටස් සොයා ගැනීම අසීරු නැත.) හා නැකත නැකැත් පාදය මහ දශාව හා එහි දශා ශේ'ය ගනනය කිරීමට සකස් කරන ලද සැකසූ  වැඩසටහනක් පහත දක්වා ඇති අතර  වැඩසටහන් ගැන අවබෝධයක් නැති අයගේ පහසුව තකා එහි ප්‍රතිදාන වැඩසටහන භාගත කිරීමේ පහසුව සලසා ඇත.එය භාගත කොට ඔබගේ උපන් දිනය වේලාව හා ස්ථානයේ අක්‍ෂාංශ දේශාංශ එහි දක්වා ඇති පරිදි ඇතුලත් කොට එමගින් ලැබෙන ප්‍රතිදානය හා ඔබගෙ  ජන්ම කේන්ද්‍රය හා සසදා බලන්න.
  

                                                            නිමි.

 භාගත කිරීමට මෙතනින් යන්න (download LITTLEHO.rar --> Extract --> run LITTLEHO.EXE)

--------------------------------------------------------------------------------------------------------------

#include<stdio.h>
#include<conio.h>
#include<math.h>

# define TRUE 1

extern double sqrt(), sin(), cos(), tan(), atan(), atan2(), fabs(), fmod();
double ps,pt,z1,z2,b6,s1,lat,longt,aya,obliq,sidtime,h6,G,tt[4];
int ret = 0, page =1, line, r3[13], s3[13], varga[13][7];
double plnt[26];
char *ras[] = {"MESHA","VRUSHABA","MITHUNA","KATAKA","SINHA","KANNYA","THULA","VHUSCHIKA","DHANU","MAKARA","KUMBA","MEENA"};
char *nak[] = {"ASVIDA", "BERANA", "KETTI", "REHENA", "MUWASIRASA", "ADA",
       "PUNAWASA", "PUSA", "ASLISA", "MA", "PUWAPAL",
        "UTTRAPAL", "HATHA", "SITHA", "SA", "VISA",
        "ANURA", "DHETA", "MULA", "PUWASALA", "UTTRASALA",
        "SUWANA", "DHENATA", "SIYAWASA", "PUWAPUTUPA",
        "UTTRAPUTUPA", "RHEWATEE"};
char *x1[] = {"KETU     ", "SIKURU   ", "RAVI     ", "SADU     ", "KUJA     ",
         "RAHU     ", "GURU     ", "SHANI    ", "BUDA     "};
double yy[] = {7, 20, 6, 10, 7, 18, 16, 19, 17};
char *day[] = {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY",
        "FRIDAY", "SATURDAY"};
long int LG;


long int jd(d,m,y)
long int d,m,y;
{
 long int j,a9,y9,m9,a1,b1,c1,d1,JDN;
 float b;

  a9 = (14-m)/12;
  y9 = y + 4800 - a9 ;
  m9 = m + 12*a9 -3 ;

  a1= (153*m9 +2)/5;
  b1 = y9/4;
  c1 = y9/100;
  d1 = y9/400;

  JDN = d + a1 + 365*y9 + b1 - c1 + d1 - 32045 ;

  j = JDN - 1720995 ;

 return(j);
 }
 double planet(pg,ph,pp,pe,pq,pa,pno)
 double pg,ph,pp,pe,pq,pa;
 int pno;
 {
 double pm,pb,pf,pc,pd,pr,e1,e2,e3,e4,v1,pv,pj,pk,pl,px,py;

    pm = pg - ph;
    if (pm < 0)
    pm += 360.0;
    pb = pm * z2;
    pf = pb + pe * sin(pb);
    do {
     pc = pf - pe * sin(pf) - pb;
     pd = 1 - pe * cos(pf);
     pf = pf - pc/pd;
     }  while (fabs(pc/pd) > 0.01);
     pr = pa * (1 - pe * cos(pf));
     e1 = atan(pe/sqrt(1-pe*pe));
     e2 = z1/4 - e1/2;
     e3 =tan(e2);
     e4 = tan(pf/2);
     v1 = atan(e4/e3);
     if (v1 < 0.0)
         v1 += z1;
     pv = 2 * v1;
     pc = ph * z2;
     pd = pp * z2;
     pb = pq * z2;
     pj = pv + pc;
     pk = pj - pd;
     pl = 1.0 - cos(pb);
     px = ( cos(pj) + sin(pk)*sin(pd)*pl) * pr;
     py = ( sin(pj) - sin(pk)*cos(pd)*pl) * pr;
     if (pno == 1) {
       ps = px;
       pt = py;
       }
     pc = ps + px;
     pd = pt + py;
     pm = atan(pd/pc)/z2;      
     if (pc < 0.0)
         pm += 180.0;
     else if (pd < 0.0)
         pm += 360.0;
     return pm;
     }


     double fract(x)
     double x;
     {
         long int i;
         double y;

         i = x;
         y = x - i;
         return y;
     }

 sun()
 {
     double g0,h0,p0,e0,q0,a0;
     int pno;

      g0 = 360 * fract(0.71455 + 99.99826 * b6);
      h0 = 258.76 + 0.323 * b6;
      p0 = 0.0;
      e0 = 0.016751 - .000042 * b6;
      q0 = 0.0;
      a0 = 1.0;
      pno = 1;

      plnt[pno]=planet(g0,h0,p0,e0,q0,a0,pno);

    return 0;
}

mer()
{
  double g0,h0,p0,e0,q0,a0;
  int pno;

       g0 = 360 * fract(0.43255 + 415.20187 * b6);
       h0 = 53.44 + 0.159 * b6;
       p0 = 24.69 - 0.211 * b6;
       e0 = 0.205614 + .00002 * b6;
       q0 = 7.00288 + 0.001861 * b6;
       a0 = 0.3871;
       pno = 2;

      plnt[pno] = planet(g0,h0,p0,e0,q0,a0,pno);

      return 0;
 }
moon()
{
  double g1,h1,a0,b0,c0,g0,e0,d0,f0,l0;
  double r0,d3,d4,d5;

       g1 = 360 * fract(0.71455 + 99.99826 * b6);
       h1 = 258.76 + 0.323 * b6;
       a0 = 360 * fract(0.68882 + 1336.851353 * b6);
       b0 = 360 * fract(0.8663 + 11.298994 * b6 -3.0e-5 * b6 * b6);
       c0 = 360 * fract(0.65756 - 5.376495 * b6);
  if (c0 < 0.0)
      c0 += 360.0;
       g0 = z2 * (a0-b0);
       e0 = z2 * (g1-h1);
       d0 = z2 * (a0-g1);
       f0 = z2 * (a0-c0);
       l0 = a0 + 6.2888*sin(g0) + 0.2136*sin(2*g0) + 0.01*sin(3*g0) + 1.274*sin(2*d0-g0) + 0.0085*sin(4*d0-2*g0);
       l0 = l0 - .0347*sin(d0) + 0.6583*sin(2*d0) + 0.0039*sin(4*d0) - 0.1856*sin(e0) - .0021*sin(2*e0) + 0.0052*sin(g0-d0);
       l0 = l0 - .0588*sin(2*g0-2*d0) + .0572*sin(2*d0-g0-e0) + .0533*sin(g0+2*d0) + .0458*sin(2*d0-e0) + .041*sin(g0-e0) - .0305*sin(g0+e0);
       l0 = l0 - .0237*sin(2*f0-g0) - .0153*sin(2*f0-2*d0) + .0107*sin(4*d0-g0) - .0079*sin(-g0+e0+2*d0) - .0068*sin(e0+2*d0) + .005*sin(e0+d0);
       l0 = l0 - .0023*sin(g0+d0) + .004*sin(2*g0+2*d0) + .004*sin(g0-e0+2*d0) - .0037*sin(3*g0-2*d0) - .0026*sin(g0-2*d0+2*f0) + .0027*sin(2*g0-e0);
       l0 = l0 - .0024*sin(2*g0+e0-2*d0) + .0022*sin(2*d0-2*e0) - .0021*sin(2*g0+e0) + .0021*sin(c0*z2) + .0021*sin(2*d0-g0-2*e0);
       l0 = l0 - .0018*sin(g0+2*d0-2*f0) + .0012*sin(4*d0-g0-e0) - .0008*sin(3*d0-g0);
       r0 = z2*2*(l0-c0);
       d3 = l0 - 0.1143*sin(r0) + .004;
  if (d3 >= 360.0)
       d3 -= 360.0;
  if (d3 < 0.0)
       d3 += 360.0;

       plnt[7] = d3;

  d4 = c0;

 plnt[8] = d4;

  d5 = c0 + 180.0;
  if (d5 >= 360.0)
       d5 -= 360.0;

       plnt[9] = d5;

       return 0;
}


ayan()
{
       plnt[0] = 22.460148 + 1.396042*b6 + 3.08e-4*b6*b6;
return 0;
}

bhav()
{
   double a0,b0,c0;
   int i;
   double bhavspl();

   aya = plnt[0];
   obliq = 23.452294 - 0.0130125 * b6;
   a0 = 24 * fract(0.2769 + 100.00214 * b6);
   b0 = h6 * 24 + 12;
   c0 = longt / 15;
   sidtime = 24 * fract( (a0+b0+c0) / 24);
   if (sidtime < 0)
       sidtime += 24.0;

   G = bhavspl(sidtime,lat);
   LG = G/30;

       printf("Ayanamsa        : %7.2lf\n", plnt[0]);
       printf("obliquity       : %7.2lf\n", obliq);
       printf("sideral Time    : %7.2lf\n\n", sidtime);
       printf("Ascendant Longitude (Lagna Sputa)   : %7.2lf \n",G);
       printf("Lagnaya     : %s \n",ras[LG]);
       printf("press Any Key   ");
return 0;
}


double bhavspl(a0, c0)
double a0, c0;
{
  double r0, w0, b0, g0;

  r0 = aya;
  w0 = obliq * z2;
  b0 = a0 *15 + 90.0;
  if (b0 >= 360.0)
      b0 -= 360.0;
  a0 *= z1 /12;
  c0 *= z2;
  if (a0 == 0.0 && c0 == 0.0)
      return 90.0;
  g0 = atan(-cos(a0)/(sin(c0) * sin(w0)/cos(c0)+sin(a0)*cos(w0)));
  g0 /= z2;
  if (g0 < 0.0)
      g0 += 180.0;
  if (b0 -g0 > 75.0)
      g0 += 180.0;
      g0 -= r0;
  if (g0 < 0.0)
      g0 += 360.0;
  if (g0 > 360.0)
      g0 -= 360.0;
      return g0;
}
 vimst()
{
   double d0, n0,aa,ee,ff,gg,hh;
   int q,dd,bb,cc;

   d0 = plnt[7];
   d0 = 9.0 * fract(d0/120);
   n0 = fract(d0);
   q = (int)d0;
   aa=(1-n0)*yy[q];
   bb=(int)aa;
   ee=aa-bb;
   ff=ee*12;
   cc=(int)ff;
   gg=ff-cc;
   hh=gg*30;
   dd=(int)hh;
   printf("\n Maha Dasa Balance = Years    Months    Days   \n");
   printf("\n       %s     %2d       %2d       %2d  \n",x1[q],bb,cc,dd);
   return 0;
   }

nakath()
{
int na,part;
double naksha ;

naksha = plnt[7]*3/40;
tt[1] = naksha;
part = 4*fract(tt[1])+1;
na = (int) tt[1];

printf("\n NAKATHA      : %s  \n",nak[na]);
printf("\n NAKATH PADA   : %d \n",part);

return 0;
}

main()
{
long int d,m,y,j,h,mt,i ;
int latdeg, latmt, longdeg, longmt,an,bn,cn,anx,bnx;
double fract(), planet(),aa1,bb1,cc1,aax,bbx ;
char ns,ew;

ps = 0.0;
 pt = 0.0;
 z1 = 3.14159265359;
 z2 = z1/180;
 s1 = 99.99826;

printf("          PROGRAMMED BY :B.D. CHANDANA PRABATH(JHOTHISHALANKA)\n");

printf("\n\n\n\nEnter Your Birth Day (Day.Month.Year)  Ex:- 1979/03/16 =16.3.1979  \n ");
 scanf("%ld.%ld.%ld", &d, &m, &y);
 printf("\n\n\n\n\nEnter Birth Time (h.mt) (24 hour)  Ex:- 10:31AM=10.31 , 10.31PM=22.31   \n ");
 scanf("%ld.%ld", &h, &mt);
 printf("\n\n\n\nEnter Birth city Latitude(latdeg.latmt n/s:)  Ex :- Kalutara=6.22 n  \n ");
 scanf("%d.%d %c", &latdeg, &latmt, &ns);
 printf("\n\n\n\nEnter Birth city Longitude(longdeg.longmt e/w:)  Ex:- Kalutara=79.58 e  \n ");
 scanf("%d.%d %c", &longdeg, &longmt, &ew);
 lat = (double)latdeg + (double)latmt / 60;
 if (ns == 'S' || ns == 's')
 lat = -lat;
 longt = (double)longdeg + (double)longmt / 60;
 if (ew == 'W' || ew == 'w')
 longt = -longt;


 j = jd(d,m,y);
 h6 = ((double)h + (double)mt / 60 - 17.5) / 24;
 b6 = (j - 694025 + h6) /36525;
 j = (j+4)%7;
 printf("\n Day is  : %s \n",day[j]);
 ayan();
 sun();
 mer();
 moon();
 bhav();
 getch();
 aax = plnt[1];
  bbx = plnt[2];
  aa1 = plnt[7];
  bb1 = plnt[8];
  anx = aax/30;
  bnx =bbx/30;

   cc1 = plnt[9];

  an = aa1/30 ;
  bn = bb1/30 ;
  cn = cc1/30;
 printf("\n\n  PLANET       LONGITUDE       RASI   \n");
 printf("\n  --------------------------------     \n");
 printf("\n  Sun          %7.2f         %s     \n",aax,ras[anx]);
 printf("\n  Mercury      %7.2f         %s     \n",bbx,ras[bnx]);
 printf("\n  MOON        %7.2f          %s     \n",aa1,ras[an]);
 printf("\n  RAHU        %7.2f          %s     \n",bb1,ras[bn]);
 printf("\n  KETU        %7.2f          %s     \n",cc1,ras[cn]);
 printf("\n  --------------------------------     \n\n");
 nakath();
 vimst();
 getch();
 return 0;

}

3 comments:

Anonymous said...

වටිනා ලිපි පෙලක්. ස්තුතිය් .

…තරංග

නිහඬ සිතිවිලි (Indrachapa) said...

ලින්ක් එක වැඩ නෑ !!!!

jhothishalanka said...

sorry..my 4shared account is canceled... have not logged in their account for 180 days.