/** * 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; }
/** * 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; }
/** * 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; }
/** * 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]; }
/** * 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; }
/** * 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; }
/** * 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]; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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']]; }
/** * 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; } } }
/** * 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); } } }