Exemplo n.º 1
0
 /**
  * Generate list of Raja yogas.
  * 
  * @return \Iterator
  * @see Maharishi Parashara. Brihat Parashara Hora Shastra. Chapter 41, Verse 28.
  */
 public function generateYoga()
 {
     $Analysis = new Analysis($this->Data);
     $bhavaKendra = Bhava::$bhavaKendra;
     array_shift($bhavaKendra);
     $kendraRulers = $Analysis->getBhavaRulers($bhavaKendra);
     $trikonaRulers = $Analysis->getBhavaRulers(Bhava::$bhavaTrikona);
     foreach ($kendraRulers as $kendraRuler) {
         foreach ($trikonaRulers as $trikonaRuler) {
             $KendraRuler = Graha::getInstance($kendraRuler);
             $KendraRuler->setEnvironment($this->Data);
             $TrikonaRuler = Graha::getInstance($trikonaRuler);
             $TrikonaRuler->setEnvironment($this->Data);
             // Parivarthana
             if ($this->hasParivarthana($kendraRuler, $trikonaRuler)) {
                 (yield ['kendra' => $kendraRuler, 'trikona' => $trikonaRuler, 'interplay' => Yoga::INTERPLAY_PARIVARTHANA]);
             }
             // Conjunct
             $kendraRulerIsConjuncted = $KendraRuler->isConjuncted();
             if (isset($kendraRulerIsConjuncted[$trikonaRuler])) {
                 (yield ['kendra' => $kendraRuler, 'trikona' => $trikonaRuler, 'interplay' => Yoga::INTERPLAY_CONJUNCT]);
             }
             // Aspect
             $kendraRulerIsAspected = $KendraRuler->isAspectedByGraha();
             $trikonaRulerIsAspected = $TrikonaRuler->isAspectedByGraha();
             if ($kendraRulerIsAspected[$trikonaRuler] == 1 && $trikonaRulerIsAspected[$kendraRuler] == 1) {
                 (yield ['kendra' => $kendraRuler, 'trikona' => $trikonaRuler, 'interplay' => Yoga::INTERPLAY_ASPECT]);
             }
         }
     }
 }
Exemplo n.º 2
0
 /**
  * This kind of strength is based on the planets placed in different houses 
  * in the chart.
  * 
  * @return array
  */
 protected function balaMulatrikonadi()
 {
     foreach ($this->balaGraha as $key => $name) {
         $Graha = Graha::getInstance($key)->setEnvironment($this->Data);
         $rashiAvastha = $Graha->getRashiAvastha();
         switch ($rashiAvastha) {
             case Rashi::GRAHA_UCHA:
                 $bala[$key] = 70;
                 break;
             case Rashi::GRAHA_MOOL:
                 $bala[$key] = 60;
                 break;
             case Rashi::GRAHA_SWA:
                 $bala[$key] = 50;
                 break;
             case Rashi::GRAHA_FRIEND:
                 $bala[$key] = 40;
                 break;
             case Rashi::GRAHA_NEUTRAL:
                 $bala[$key] = 30;
                 break;
             case Rashi::GRAHA_ENEMY:
                 $bala[$key] = 20;
                 break;
             case Rashi::GRAHA_NEECHA:
                 $bala[$key] = 10;
         }
     }
     return $bala;
 }
Exemplo 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;
 }
Exemplo n.º 4
0
 /**
  * Get varga rashi.
  * 
  * @param array $ganitaRashi
  * @return array
  * @see Maharishi Parashara. Brihat Parashara Hora Shastra. Chapter 6, Verse 27-28.
  */
 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'] < 5) {
         if ($ganitaRashi['rashi'] % 2) {
             $lord = Graha::KEY_MA;
         } else {
             $lord = Graha::KEY_SK;
         }
     } elseif ($ganitaRashi['degree'] >= 5 && $ganitaRashi['degree'] < 10) {
         if ($ganitaRashi['rashi'] % 2) {
             $lord = Graha::KEY_SA;
         } else {
             $lord = Graha::KEY_BU;
         }
     } elseif ($ganitaRashi['degree'] >= 10 && $ganitaRashi['degree'] < 18) {
         $lord = Graha::KEY_GU;
     } elseif ($ganitaRashi['degree'] >= 18 && $ganitaRashi['degree'] < 25) {
         if ($ganitaRashi['rashi'] % 2) {
             $lord = Graha::KEY_BU;
         } else {
             $lord = Graha::KEY_SA;
         }
     } else {
         if ($ganitaRashi['rashi'] % 2) {
             $lord = Graha::KEY_SK;
         } else {
             $lord = Graha::KEY_MA;
         }
     }
     if ($ganitaRashi['rashi'] % 2) {
         $trait = 'positive';
     } else {
         $trait = 'negative';
     }
     $grahaObject = Graha::getInstance($lord);
     $grahaSwaRashi = $grahaObject->grahaSwa;
     $vargaRashi['rashi'] = $grahaSwaRashi[$trait]['rashi'];
     return $vargaRashi;
 }
Exemplo n.º 5
0
 /**
  * Generate list of Parivarthana yogas.
  * 
  * @return \Iterator
  * @see Mantreswara. Phaladeepika. Chapter 6, Verse 32.
  */
 public function generateYoga()
 {
     $saptaGraha = Graha::listGraha(Graha::LIST_SAPTA);
     foreach ($saptaGraha as $key1 => $name1) {
         $grahaChecked[] = $key1;
         foreach ($saptaGraha as $key2 => $name2) {
             if (in_array($key2, $grahaChecked)) {
                 continue;
             }
             if ($subtype = $this->hasParivarthana($key1, $key2)) {
                 $result = ['graha1' => $key1, 'graha2' => $key2];
                 if ($this->options['outputAmple']) {
                     $result = array_merge($result, ['subtype' => $subtype]);
                 }
                 (yield $result);
             }
         }
     }
 }
Exemplo n.º 6
0
 /**
  * Get start period.
  * 
  * @return array
  */
 public function getStartPeriod()
 {
     $nakshatra = $this->getData()['panchanga']['nakshatra'];
     $keysNakshatra = array_keys($this->orderNakshatra);
     $indexNum = array_search($nakshatra['key'], $keysNakshatra) + 1;
     $partSum = 0;
     foreach ($this->durationGraha as $key => $value) {
         $G = Graha::getInstance($key);
         $part = $G->grahaCharacter == Graha::CHARACTER_PAPA ? 4 : 3;
         $partSum += $part;
         if ($partSum >= $indexNum) {
             break;
         }
     }
     $num = $part - ($partSum - $indexNum);
     $result['graha'] = $key;
     $result['total'] = $this->durationTotal * Astro::DURATION_YEAR_GREGORIAN * 86400;
     $duration = round($this->durationGraha[$key] * Astro::DURATION_YEAR_GREGORIAN * 86400 / $part);
     $result['start'] = $duration * ($num - 1) + round($duration * (100 - $nakshatra['left']) / 100);
     return $result;
 }
Exemplo n.º 7
0
 /**
  * Return body label.
  * 
  * @param string $body
  * @param array $options
  * @return string
  */
 protected function getBodyLabel($body, array $options)
 {
     switch ($options['labelGrahaType']) {
         case 0:
             $label = $body;
             break;
         case 1:
             if (array_key_exists($body, Graha::$graha)) {
                 $grahaObject = Graha::getInstance($body);
                 $label = Utility::unicodeToHtml($grahaObject->grahaUnicode);
             } else {
                 $label = $body;
             }
             break;
         case 2:
             $label = call_user_func($options['labelGrahaCallback'], $body);
             break;
         default:
             $label = $body;
             break;
     }
     $data = $this->Data->getData();
     if (array_key_exists($body, Graha::listGraha(Graha::LIST_SAPTA))) {
         $vakraCheshta = $data['graha'][$body]['speed'] < 0 ? true : false;
     } else {
         $vakraCheshta = false;
     }
     $grahaLabel = $vakraCheshta ? '(' . $label . ')' : $label;
     return $grahaLabel;
 }
Exemplo n.º 8
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];
 }
Exemplo 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;
 }
Exemplo n.º 10
0
 /**
  * Determine if the jyotish object is affected.
  * 
  * @param null|string $feature Feature of graha (optional)
  * @param null|string $value Value of feature (optional)
  * @return bool|array
  */
 public function isAffected($feature = null, $value = null)
 {
     if (is_null($feature)) {
         $grahas = Graha::$graha;
     } else {
         $grahas = Graha::listGrahaByFeature($feature, $value);
     }
     $grahaAspected = array_intersect_key($this->isAspectedByGraha(), $grahas);
     $grahaAspected1 = array_intersect($grahaAspected, [1]);
     if (count($grahaAspected1)) {
         $isAspected = $grahaAspected1;
     } else {
         $isAspected = false;
     }
     $grahaConjuncted = array_intersect_key($this->isConjuncted(), $grahas);
     if (count($grahaConjuncted)) {
         $isConjuncted = $grahaConjuncted;
     } else {
         $isConjuncted = false;
     }
     $grahaHemmed = array_intersect_key($this->isHemmed(), $grahas);
     if (array_search('prev', $grahaHemmed) && array_search('next', $grahaHemmed)) {
         $isHemmed = $grahaHemmed;
     } else {
         $isHemmed = false;
     }
     if ($isHemmed || $isAspected || $isConjuncted) {
         return ['aspect' => $isAspected, 'conjunct' => $isConjuncted, 'hem' => $isHemmed];
     } else {
         return false;
     }
 }
Exemplo n.º 11
0
 /**
  * Is there Mahapurusha yoga for the graha.
  * 
  * @param string $key Key of graha.
  * @return bool
  * @see Maharishi Parashara. Brihat Parashara Hora Shastra. Chapter 75, Verse 1-2.
  * @see Mantreswara. Phaladeepika. Chapter 6, Verse 1.
  */
 public function hasMahapurusha($key)
 {
     $Graha = Graha::getInstance($key);
     $Graha->setEnvironment($this->Data);
     $grahaBhava = $Graha->getBhava();
     $grahaAvastha = $Graha->getRashiAvastha();
     if (in_array($grahaBhava, Bhava::$bhavaKendra) && in_array($grahaAvastha, [Rashi::GRAHA_UCHA, Rashi::GRAHA_MOOL, Rashi::GRAHA_SWA])) {
         return true;
     } else {
         return false;
     }
 }
Exemplo n.º 12
0
 /**
  * Lagna at the end of a sign with a benefic in it and Jupiter in a 
  * Kendra/Trikona.
  * 
  * @return bool
  * @see Mantreswara. Phaladeepika. Chapter 27, Verse 1.
  */
 public function hasLgEndPBenGuInKnTr()
 {
     $lagnaDegree = $this->getData()[Data::BLOCK_LAGNA]['Lg']['degree'];
     $lagnaRashi = $this->getData()[Data::BLOCK_LAGNA]['Lg']['rashi'];
     if ($lagnaDegree < $this->optionLagnaEnd) {
         return false;
     }
     $Gu = Graha::getInstance(Graha::KEY_GU)->setEnvironment($this->Data);
     $guBhava = $Gu->getBhava();
     $isGuInKendraTrikona = in_array($guBhava, $this->temp['kendraAndTrikona']) ? true : false;
     $hasYoga = false;
     if ($guBhava == 1) {
         $hasYoga = true;
     } elseif ($isGuInKendraTrikona) {
         foreach (Graha::$graha as $grahaKey => $grahaName) {
             if ($grahaKey == Graha::KEY_GU) {
                 continue;
             }
             $Graha = Graha::getInstance($grahaKey)->setEnvironment($this->Data);
             $grahaChracter = $Graha->grahaCharacter;
             if ($grahaChracter == Graha::CHARACTER_SHUBHA) {
                 $grahaRashi = $this->getData()[Data::BLOCK_GRAHA][$grahaKey]['rashi'];
                 if ($grahaRashi == $lagnaRashi) {
                     $hasYoga = true;
                     break;
                 }
             }
         }
     }
     return $hasYoga;
 }
Exemplo n.º 13
0
 /**
  * Get graha character depending on the conjuntion with the other planets.
  * 
  * @return string
  */
 protected function getConjunctCharacter()
 {
     $benefic = 0;
     $malefic = 0;
     foreach ($this->getEnvironment()['graha'] as $key => $params) {
         if ($key == $this->objectKey) {
             continue;
         }
         if ($params['rashi'] == $this->objectRashi) {
             $G = Graha::getInstance($key);
             $G->setEnvironment($this->Data);
             if ($G->grahaCharacter == Graha::CHARACTER_SHUBHA) {
                 $benefic = $benefic + 1;
             } else {
                 $malefic = $malefic + 1;
             }
         }
     }
     if ($benefic > 0 && $malefic > 0 || $benefic == 0 && $malefic == 0) {
         $character = Graha::CHARACTER_MISHRA;
     } elseif ($malefic > 0) {
         $character = Graha::CHARACTER_PAPA;
     } else {
         $character = Graha::CHARACTER_SHUBHA;
     }
     return $character;
 }
Exemplo n.º 14
0
 /**
  * Is there Mahapurusha yoga for the graha.
  * 
  * @param string $key Key of graha.
  * @return bool
  * @throws Exception\InvalidArgumentException
  * @see Maharishi Parashara. Brihat Parashara Hora Shastra. Chapter 75, Verse 1-2.
  * @see Mantreswara. Phaladeepika. Chapter 6, Verse 1.
  */
 public function hasMahapurusha($key)
 {
     $panchaGraha = Graha::listGraha(Graha::LIST_PANCHA);
     if (!array_key_exists($key, $panchaGraha)) {
         throw new \Jyotish\Yoga\Exception\InvalidArgumentException("For {$key} Mahapurusha yoga is not available.");
     }
     $Graha = Graha::getInstance($key);
     $Graha->setEnvironment($this->Data);
     $grahaBhava = $Graha->getBhava();
     $grahaAvastha = $Graha->getRashiAvastha();
     if (in_array($grahaBhava, Bhava::$bhavaKendra) && in_array($grahaAvastha, [Rashi::GRAHA_UCHA, Rashi::GRAHA_MOOL, Rashi::GRAHA_SWA])) {
         return true;
     } else {
         return false;
     }
 }