Ejemplo n.º 1
0
 /**
  * Get varga rashi.
  * 
  * @param array $ganitaRashi
  * @return array
  * @see Maharishi Parashara. Brihat Parashara Hora Shastra. Chapter 6, Verse 15.
  */
 public function getVargaRashi(array $ganitaRashi)
 {
     $amshaSize = 30 / $this->vargaAmsha;
     $result = Math::partsToUnits($ganitaRashi['degree'], $amshaSize, 'floor');
     $vargaRashi = [];
     $vargaRashi['degree'] = $result['parts'] * 30 / $amshaSize;
     $vargaRashi['rashi'] = Math::numberInCycle($ganitaRashi['rashi'] + $result['units']);
     return $vargaRashi;
 }
Ejemplo n.º 2
0
 /**
  * Get varga rashi.
  * 
  * @param array $ganitaRashi
  * @return array
  * @see Maharishi Parashara. Brihat Parashara Hora Shastra. Chapter 6, Verse 7-8.
  */
 public function getVargaRashi(array $ganitaRashi)
 {
     $amshaSize = 30 / $this->vargaAmsha;
     $result = Math::partsToUnits($ganitaRashi['degree'], $amshaSize, 'floor');
     $vargaRashi = [];
     $vargaRashi['degree'] = $result['parts'] * 30 / $amshaSize;
     if ($ganitaRashi['degree'] < 10) {
         $vargaRashi['rashi'] = Math::numberInCycle($ganitaRashi['rashi']);
     } elseif ($ganitaRashi['degree'] >= 10 && $ganitaRashi['degree'] < 20) {
         $vargaRashi['rashi'] = Math::numberInCycle($ganitaRashi['rashi'], 5);
     } else {
         $vargaRashi['rashi'] = Math::numberInCycle($ganitaRashi['rashi'], 9);
     }
     return $vargaRashi;
 }
Ejemplo n.º 3
0
 /**
  * Get tatkalika mitra. Planets 3 houses away on either sides adjacent to it 
  * are its tatkalika mitra (temporary friend) and render considerable strength.
  * 
  * @return array
  */
 public function getTatkalikaMitra($withoutChaya = true)
 {
     $mitraBhava = [-4, -3, -2, 1, 2, 3];
     foreach ($mitraBhava as $distance) {
         $rashi = Math::numberInCycle($this->objectRashi, $distance);
         $mitraRashi[$rashi] = $distance;
     }
     $listOption = $withoutChaya ? Graha::LIST_SAPTA : Graha::LIST_NAVA;
     $grahas = Graha::listGraha($listOption);
     foreach ($grahas as $key => $name) {
         $rashi = $this->getEnvironment()['graha'][$key]['rashi'];
         if (array_key_exists($rashi, $mitraRashi)) {
             $mitraGraha[$key] = $mitraRashi[$rashi];
         }
     }
     return $mitraGraha;
 }
Ejemplo n.º 4
0
 /**
  * Indu lagna calculation.
  * 
  * @return array
  * @see Kalidas. Uttara Kalamritam. Chapter 4, Verse 27.
  */
 public function getIL()
 {
     $this->checkData(__FUNCTION__);
     $kala = [Graha::KEY_SY => 30, Graha::KEY_CH => 16, Graha::KEY_MA => 6, Graha::KEY_BU => 8, Graha::KEY_GU => 10, Graha::KEY_SK => 12, Graha::KEY_SA => 1];
     $rashiRuler = function ($rashi) {
         $Rashi = Rashi::getInstance($rashi);
         return $Rashi->rashiRuler;
     };
     $ruler9FromLg = $rashiRuler($this->getData()['bhava'][9]['rashi']);
     $ruler9FromCh = $rashiRuler(Math::numberInCycle($this->getData()['graha'][Graha::KEY_CH]['rashi'], 9));
     $distance = ($kala[$ruler9FromLg] + $kala[$ruler9FromCh]) % 12;
     if ($distance == 0) {
         $distance = 12;
     }
     $rashiIL = Math::numberInCycle($this->getData()['graha'][Graha::KEY_CH]['rashi'], $distance);
     $degreeIL = $this->getData()['graha'][Graha::KEY_CH]['degree'];
     $lngIL = ($rashiIL - 1) * 30 + $degreeIL;
     return ['longitude' => $lngIL, 'rashi' => $rashiIL, 'degree' => $degreeIL];
 }
Ejemplo n.º 5
0
 /**
  * Get varga rashi.
  * 
  * @param array $ganitaRashi
  * @return array
  * @see Maharishi Parashara. Brihat Parashara Hora Shastra. Chapter 6, Verse 17-21.
  */
 public function getVargaRashi(array $ganitaRashi)
 {
     $amshaSize = 30 / $this->vargaAmsha;
     $result = Math::partsToUnits($ganitaRashi['degree'], $amshaSize, 'floor');
     $vargaRashi = [];
     $vargaRashi['degree'] = $result['parts'] * 30 / $amshaSize;
     $rashiObject = Rashi::getInstance((int) $ganitaRashi['rashi']);
     $rashiBhava = $rashiObject->rashiBhava;
     switch ($rashiBhava) {
         case Rashi::BHAVA_CHARA:
             $vargaRashi['rashi'] = Math::numberInCycle(1 + $result['units']);
             break;
         case Rashi::BHAVA_STHIRA:
             $vargaRashi['rashi'] = Math::numberInCycle(9 + $result['units']);
             break;
         case Rashi::BHAVA_DVISVA:
             $vargaRashi['rashi'] = Math::numberInCycle(5 + $result['units']);
             break;
     }
     return $vargaRashi;
 }
Ejemplo n.º 6
0
 /**
  * Get varga rashi.
  * 
  * @param array $ganitaRashi
  * @return array
  * @see Maharishi Parashara. Brihat Parashara Hora Shastra. Chapter 6, Verse 24-26.
  */
 public function getVargaRashi(array $ganitaRashi)
 {
     $amshaSize = 30 / $this->vargaAmsha;
     $result = Math::partsToUnits($ganitaRashi['degree'], $amshaSize, 'floor');
     $vargaRashi = [];
     $vargaRashi['degree'] = $result['parts'] * 30 / $amshaSize;
     $rashiObject = Rashi::getInstance((int) $ganitaRashi['rashi']);
     $rashiBhuta = $rashiObject->rashiBhuta;
     switch ($rashiBhuta) {
         case Maha::BHUTA_AGNI:
             $vargaRashi['rashi'] = Math::numberInCycle(1 + $result['units']);
             break;
         case Maha::BHUTA_PRITVI:
             $vargaRashi['rashi'] = Math::numberInCycle(4 + $result['units']);
             break;
         case Maha::BHUTA_VAYU:
             $vargaRashi['rashi'] = Math::numberInCycle(7 + $result['units']);
             break;
         case Maha::BHUTA_JALA:
             $vargaRashi['rashi'] = Math::numberInCycle(10 + $result['units']);
             break;
     }
     return $vargaRashi;
 }
Ejemplo n.º 7
0
 /**
  * Get lord of hora.
  * 
  * @param int $horaNumber Number of hora
  * @param int $varaKey Key of vara
  * @return string
  */
 public static function getLord($horaNumber, $varaKey)
 {
     $lords = Math::shiftArray(Graha::listGraha(Graha::LIST_CHESHTA), $varaKey);
     $lordsKeys = array_keys($lords);
     $numLord = Math::numberInCycle(1, $horaNumber, 7) - 1;
     return $lordsKeys[$numLord];
 }
Ejemplo n.º 8
0
 /**
  * Set nakshatra navatara.
  * 
  * @return void
  */
 protected function setNakshatraNavatara()
 {
     if ($this->nakshatraKey == 28) {
         $result = null;
     } else {
         $result = Math::numberInCycle($this->nakshatraKey, 1, 9);
     }
     $this->nakshatraNavatara = $result;
 }
Ejemplo n.º 9
0
 /**
  * Set naisargika (natural) relations.
  * 
  * @see Maharishi Parashara. Brihat Parashara Hora Shastra. Chapter 3, Verse 55.
  */
 protected function setGrahaRelation()
 {
     $relation = [];
     $friendsFromMt = [2, 4, 5, 8, 9, 12];
     $enemiesFromMt = [3, 6, 7, 10, 11];
     $rashiMool = $this->grahaMool['rashi'];
     $rashiUcha = $this->grahaUcha['rashi'];
     $friends = [];
     $R = Rashi::getInstance($rashiUcha);
     $gFriend = $R->rashiRuler;
     if ($this->objectKey != $gFriend) {
         $friends[] = $gFriend;
     }
     $getRelation = function ($distance) use($rashiMool) {
         $grahas = [];
         foreach ($distance as $step) {
             $r = Math::numberInCycle($rashiMool, $step);
             $R = Rashi::getInstance((int) $r);
             $gRuler = $R->rashiRuler;
             if ($this->objectKey == $gRuler) {
                 continue;
             }
             $grahas[] = $gRuler;
         }
         return $grahas;
     };
     $friends = array_unique(array_merge($friends, $getRelation($friendsFromMt)));
     $enemies = array_unique($getRelation($enemiesFromMt));
     foreach (Graha::$graha as $key => $name) {
         if ($this->objectKey == $key) {
             continue;
         }
         if (in_array($key, $friends) && in_array($key, $enemies)) {
             $relation[$key] = 0;
         } elseif (in_array($key, $friends)) {
             $relation[$key] = 1;
         } elseif (in_array($key, $enemies)) {
             $relation[$key] = -1;
         } else {
             $G = Graha::getInstance($key, $this->getOptions());
             $relation[$key] = $G->grahaRelation[$this->objectKey];
         }
     }
     $relation[$this->objectKey] = $this->optionRelationSame ? 1 : null;
     $this->grahaRelation = $relation;
 }
Ejemplo n.º 10
0
 /**
  * Set rashi drishti and badhaksthana.
  * 
  * @see Maharishi Parashara. Brihat Parashara Hora Shastra. Chapter 8, Verse 1-3.
  */
 protected function setRashiDrishtiBadhaksthana()
 {
     $rashis = [];
     switch ($this->rashiBhava) {
         case Rashi::BHAVA_CHARA:
             $rashis = array_diff([2, 5, 8, 11], [$this->objectKey + 1]);
             $badhak = 11;
             break;
         case Rashi::BHAVA_STHIRA:
             $rashis = array_diff([1, 4, 7, 10], [$this->objectKey - 1]);
             $badhak = 9;
             break;
         case Rashi::BHAVA_DVISVA:
             $rashis = array_diff([3, 6, 9, 12], [$this->objectKey]);
             $badhak = 7;
     }
     $drishti = [];
     foreach ($rashis as $rashi) {
         $drishti[$rashi] = 1;
     }
     $badhaksthana = Math::numberInCycle($this->objectKey, $badhak);
     $this->rashiDrishti = $drishti;
     $this->rashiBadhaksthana = $badhaksthana;
 }
Ejemplo n.º 11
0
 /**
  * Arudha calculation.
  * 
  * @param string $key Arudha key
  * @param null|array $options Options to set (optional)
  * @return array
  * @throws Exception\InvalidArgumentException
  */
 public function getArudha($key, array $options = null)
 {
     $this->checkData();
     if (!array_key_exists($key, self::$arudha)) {
         throw new Exception\InvalidArgumentException("Arudha with the key '{$key}' does not exist.");
     }
     if ($key == self::KEY_AL) {
         $bhavaKey = 1;
     } elseif ($key == self::KEY_UL) {
         $bhavaKey = 12;
     } else {
         $bhavaKey = substr($key, 1);
     }
     $Bhava = Bhava::getInstance($bhavaKey)->setEnvironment($this->Data);
     $bhavaRuler = $Bhava->getRuler();
     $lngRuler = $this->getData()['graha'][$bhavaRuler]['longitude'];
     $lngBhava = $this->getData()['bhava'][$bhavaKey]['longitude'];
     $lngDiff = $lngRuler - $lngBhava;
     $lngArudha = $lngRuler + $lngDiff;
     if ($lngArudha >= 360) {
         $lngArudha = $lngArudha - 360;
     } elseif ($lngArudha < 0) {
         $lngArudha = 360 + $lngArudha;
     }
     $unitArudha = Math::partsToUnits($lngArudha);
     $rashiArudha = $unitArudha['units'];
     if ($this->optionUseException) {
         if (Math::inRange($lngDiff, 0 - $this->optionExceptionRang, $this->optionExceptionRang) || Math::inRange(abs($lngDiff), 90 - $this->optionExceptionRang, 90 + $this->optionExceptionRang)) {
             $rashiArudha = Math::numberInCycle($unitArudha['units'], 10);
             $lngArudha = ($rashiArudha - 1) * 30 + $unitArudha['parts'];
         }
     }
     return ['longitude' => $lngArudha, 'rashi' => $rashiArudha, 'degree' => $unitArudha['parts']];
 }
Ejemplo n.º 12
0
 /**
  * Determine if the graha is in pushkara bhaga or pushkara navamsha. Indicate 
  * when to pushkara bhaga remains less than 1 degree.
  * 
  * @return bool|int|float Distance to pushkara bhaga
  * @see Vaidyanatha Dikshita. Jataka Parijata. Chapter 1, Verse 58.
  */
 public function isPushkara($type = Graha::PUSHKARA_NAVAMSHA)
 {
     $rashiGraha = $this->getEnvironment()['graha'][$this->objectKey]['rashi'];
     $degGraha = $this->getEnvironment()['graha'][$this->objectKey]['degree'];
     $valNavamsha = Math::dmsToDecimal(['d' => 3, 'm' => 20]);
     switch ($type) {
         case Graha::PUSHKARA_BHAGA:
             $degPushkara = Rashi::$pushkaraBhaga[$rashiGraha];
             $distanceGraha = abs($degGraha - $degPushkara);
             if ($distanceGraha < 1) {
                 return $distanceGraha;
             } else {
                 return false;
             }
             break;
         case Graha::PUSHKARA_NAVAMSHA:
         default:
             $numNavamsha = null;
             $degNavamsha = [];
             for ($i = 0; $i <= 1; $i++) {
                 $degNavamsha['start'] = (Rashi::$pushkaraNavamsha[$rashiGraha][$i] - 1) * $valNavamsha;
                 $degNavamsha['end'] = $degNavamsha['start'] + $valNavamsha;
                 if ($degGraha >= $degNavamsha['start'] && $degGraha < $degNavamsha['end']) {
                     $numNavamsha = Rashi::$pushkaraNavamsha[$rashiGraha][$i];
                     break;
                 }
             }
             if (!is_null($numNavamsha)) {
                 $number = ($rashiGraha - 1) * 9 + $numNavamsha;
                 $navamsha = Math::numberInCycle(1, $number);
                 return $navamsha;
             } else {
                 return false;
             }
     }
 }
Ejemplo n.º 13
0
 /**
  * Constructor
  * 
  * @param \Jyotish\Base\Data $Data
  */
 public function __construct(\Jyotish\Base\Data $Data)
 {
     $this->setData($Data);
     foreach ($this->ashtakavarga as $varga) {
         $binduVarga = 'bindu' . $varga;
         foreach ($this->ashtakavarga as $graha) {
             for ($i = 1; $i <= 12; $i++) {
                 $bindu = in_array($i, $this->{$binduVarga}[$graha]) ? 1 : 0;
                 if ($graha != Graha::KEY_LG) {
                     $distance = Math::numberInCycle($this->getData()['graha'][$graha]['rashi'], $i);
                 } else {
                     $distance = Math::numberInCycle($this->getData()['lagna'][$graha]['rashi'], $i);
                 }
                 if (!isset($this->bhinnAshtakavarga[$varga][$distance])) {
                     $this->bhinnAshtakavarga[$varga][$distance] = 0;
                 }
                 $this->bhinnAshtakavarga[$varga][$distance] += $bindu;
             }
         }
         ksort($this->bhinnAshtakavarga[$varga]);
         if ($varga != Graha::KEY_LG) {
             $this->sarvAshtakavarga = Math::arraySum($this->bhinnAshtakavarga[$varga], $this->sarvAshtakavarga);
         }
     }
 }