/** * Constructor * * @param array $importData * @param string $lagna * @throws \Jyotish\Base\Exception\InvalidArgumentException */ public function __construct(array $importData, $lagna = Graha::KEY_LG) { $this->checkData($importData); foreach ($this->dataRequired as $block) { foreach ($this->importData[$block] as $key => $params) { if (!isset($params['rashi'])) { $units = Math::partsToUnits($params['longitude']); $this->importData[$block][$key]['rashi'] = $units['units']; $this->importData[$block][$key]['degree'] = $units['parts']; } } } if (!isset($this->importData[Data::BLOCK_BHAVA]) || $this->lagna != $lagna) { if (array_key_exists($lagna, Graha::$graha)) { $block = Data::BLOCK_GRAHA; } elseif ($lagna == Graha::KEY_LG) { $block = Data::BLOCK_LAGNA; } elseif (array_key_exists($lagna, Bhava::$bhava)) { $block = Data::BLOCK_BHAVA; } else { throw new \Jyotish\Base\Exception\InvalidArgumentException("The value of lagna should be 'Lg', key of graha or bhava."); } $this->lagna = $lagna; $longitude = $this->importData[$block][$lagna]['longitude']; for ($b = 1; $b <= 12; $b++) { $this->importData[Data::BLOCK_BHAVA][$b]['longitude'] = $longitude < 360 ? $longitude : $longitude - 360; $units = Math::partsToUnits($this->importData[Data::BLOCK_BHAVA][$b]['longitude']); $this->importData[Data::BLOCK_BHAVA][$b]['rashi'] = $units['units']; $this->importData[Data::BLOCK_BHAVA][$b]['degree'] = $units['parts']; $longitude += 30; } } }
/** * 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; }
/** * Constructor * * @param \Jyotish\Base\Data $Data */ public function __construct(\Jyotish\Base\Data $Data) { parent::__construct($Data); $this->bala['total'] = []; foreach ($this->balaVarga as $varga) { $balaVarga = 'bala' . ucfirst($varga); $this->bala[$varga] = $this->{$balaVarga}(); $this->bala['total'] = Math::arraySum($this->bala[$varga], $this->bala['total']); } }
/** * Get varga rashi. * * @param array $ganitaRashi * @return array * @see Maharishi Parashara. Brihat Parashara Hora Shastra. Chapter 6, Verse 5-6. */ 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'] < 15 && $ganitaRashi['rashi'] % 2 || $ganitaRashi['degree'] >= 15 && !($ganitaRashi['rashi'] % 2)) { $vargaRashi['rashi'] = 5; } else { $vargaRashi['rashi'] = 4; } 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 approximate ayanamsha value. * * @param null|DateTime $Date Date (optional) * @param string $ayanamsha Ayanamsha name (optional) * @return float */ public static function getAyanamsha(DateTime $Date = null, $ayanamsha = self::AYANAMSHA_LAHIRI) { if (is_null($Date)) { $Date = new DateTime('now'); } $TimeZone = $Date->getTimezone(); $yearMatching = sprintf('%04d', abs(self::$coincidence[$ayanamsha])); $eraMatching = strval(self::$coincidence[$ayanamsha])[0] == '-' ? '-' : ''; $dateMatching = $eraMatching . $yearMatching . '-01-01'; $DateMatching = new DateTime($dateMatching, $TimeZone); $Interval = $DateMatching->diff($Date); $factor = $Interval->days / Astro::DURATION_YEAR_GREGORIAN; $ayanamshaValue = Math::dmsToDecimal(['d' => 0, 'm' => 0, 's' => Astro::getPrecessionSpeed()]) * $factor; return $ayanamshaValue; }
/** * 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; }
/** * 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; }
/** * 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 data. * * @return array */ public function getVargaData() { $this->checkData(); if ($this->vargaKey == Varga::KEY_D1) { return $this->getData(\Jyotish\Base\Data::listBlock('main')); } $bhava1Varga = $this->getVargaRashi($this->getData()['bhava'][1]); foreach ($this->getData()['bhava'] as $k => $v) { $rashi = $k == 1 ? $bhava1Varga['rashi'] : Math::numberNext($rashi); $vargaData['bhava'][$k] = ['rashi' => $rashi, 'degree' => $bhava1Varga['degree'], 'longitude' => 30 * ($rashi - 1) + $bhava1Varga['degree']]; } foreach ($this->getData()['graha'] as $k => $v) { $result = $this->getVargaRashi($v); $vargaData['graha'][$k] = ['rashi' => $result['rashi'], 'degree' => $result['degree'], 'speed' => $this->getData()['graha'][$k]['speed'], 'longitude' => 30 * ($result['rashi'] - 1) + $result['degree'], 'latitude' => $v['latitude']]; } foreach ($this->getData()['lagna'] as $k => $v) { $result = $this->getVargaRashi($v); $vargaData['lagna'][$k] = ['rashi' => $result['rashi'], 'degree' => $result['degree'], 'longitude' => 30 * ($result['rashi'] - 1) + $result['degree']]; } return $vargaData; }
/** * 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; }
/** * Returns the list of navataras for nakshatra. Will be very useful when * choosing Muhurta. * * @param string $nakshatraKey Nakshatra key * @return array */ public static function listNakshatraNavatara($nakshatraKey) { if (!array_key_exists($nakshatraKey, self::listNakshatra())) { throw new \Jyotish\Panchanga\Exception\InvalidArgumentException("Nakshatra with the key '{$nakshatraKey}' does not exist."); } $nakshatas = Math::shiftArray(self::listNakshatra(), $nakshatraKey, true); $number = 1; $block = 1; foreach ($nakshatas as $key => $name) { $navataras[$key] = ['block' => $block, 'number' => $number, 'name' => self::$navatara[$number]]; $number++; if ($number > 9) { $block += 1; $number = 1; } } return $navataras; }
/** * From atmakaraka, the planets placed in kendras get 60 units each and planets * placed in panapharas get 40 units each and planets placed in apoklimas get * 20 points each. * * @return array */ protected function balaKendradi() { foreach ($this->balaGraha as $key => $name) { $distance = Math::distanceInCycle($this->getData()['graha'][$this->atmaKaraka]['rashi'], $this->getData()['graha'][$key]['rashi']); if (in_array($distance, Bhava::$bhavaKendra)) { $bala[$key] = 60; } elseif (in_array($distance, Bhava::$bhavaPanaphara)) { $bala[$key] = 40; } else { $bala[$key] = 20; } } return $bala; }
/** * 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; }
/** * 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); } } }
/** * Set graha character. * * @see Maharishi Parashara. Brihat Parashara Hora Shastra. Chapter 3, Verse 11. * @see Varahamihira. Brihat Jataka. Chapter 2, Verse 5. */ protected function setGrahaCharacter() { $lonCh = $this->getEnvironment()['graha'][Graha::KEY_CH]['longitude']; $lonSy = $this->getEnvironment()['graha'][Graha::KEY_SY]['longitude']; if ($lonCh < $lonSy) { $lonCh = $lonCh + 360; } $tithiUnits = Math::partsToUnits($lonCh - $lonSy, 12); if ($tithiUnits['units'] >= 8 && $tithiUnits['units'] < 23) { $this->grahaCharacter = Graha::CHARACTER_SHUBHA; } else { $this->grahaCharacter = Graha::CHARACTER_PAPA; } }
/** * 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 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; }
/** * Get Yoga. Ending Moment of the angular relationship between Sun and Moon * (Apparent Moon plus Apparent Sun). * * @param bool $withLimit Time limit * @return array */ public function getYoga($withLimit = false) { $this->checkData(__FUNCTION__); $unit = 360 / 27; $lngCh = $this->getData()['graha'][Graha::KEY_CH]['longitude']; $lngSy = $this->getData()['graha'][Graha::KEY_SY]['longitude']; $lngSum = $lngCh + $lngSy; if ($lngSum > 360) { $lngSum = $lngSum - 360; } $yogaUnits = Math::partsToUnits($lngSum, $unit); $yoga = []; $yoga['anga'] = Panchanga::ANGA_YOGA; $yoga['key'] = $yogaUnits['units']; $yoga['name'] = Yoga::$yoga[$yoga['key']]; $yoga['left'] = ($unit - $yogaUnits['parts']) * 100 / $unit; if ($withLimit) { $this->AngaDefiner = clone $this; $limit = $this->getAngaLimit($yoga); $yoga['end'] = $limit; $this->AngaDefiner = null; } return $yoga; }
/** * Upaketu calculation. * * @return array * @see Mantreswara. Phaladeepika. Chapter 25, Verse 5. */ public function getUk() { if (!isset($this->temp[self::KEY_UK])) { $result = $this->getIn()['longitude'] + 16 + 2 / 3; $lng = $result > 360 ? $result - 360 : $result; $unit = Math::partsToUnits($lng); $this->temp[self::KEY_UK] = ['longitude' => $lng, 'rashi' => $unit['units'], 'degree' => $unit['parts']]; } return $this->temp[self::KEY_UK]; }
/** * Constructor * * @param null|array $options Options to set (optional) */ public function __construct($options = null) { parent::__construct($options); $nakshatras = Nakshatra::listNakshatra(); $this->orderNakshatra = Math::shiftArray($nakshatras, 3, true); }
/** * 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; } } }
/** * Shree lagna calculation. * * @return array * @see Maharishi Jaimini. Jaimini Upadesha Sutras. Chapter 2, Quarter 4, Verse 27. */ public function getSL() { $this->checkData(__FUNCTION__); $nakshatra = $this->getData()['panchanga']['nakshatra']; $result1 = (1 - $nakshatra['left'] / 100) * 360; $result2 = $result1 + $this->getData()['lagna'][Graha::KEY_LG]['longitude']; $lngSL = $result2 > 360 ? $result2 - 360 : $result2; $unitSL = Math::partsToUnits($lngSL); return ['longitude' => $lngSL, 'rashi' => $unitSL['units'], 'degree' => $unitSL['parts']]; }
/** * Get obliquity of the ecliptic. * * @param null|DateTime $DateTime Date (optional) * @return float In degree */ public static function getEclipticObliquity(DateTime $DateTime = null) { $jc = Time::getJC($DateTime); $k = Math::dmsToDecimal(['d' => 23, 'm' => 26, 's' => 21.448]); $k1 = Math::dmsToDecimal(['d' => 0, 'm' => 0, 's' => 46.815]); $k2 = Math::dmsToDecimal(['d' => 0, 'm' => 0, 's' => 0.00059]); $k3 = Math::dmsToDecimal(['d' => 0, 'm' => 0, 's' => 0.001813]); $e = $k - $k1 * $jc - $k2 * $jc ** 2 + $k3 * $jc ** 3; return $e; }
/** * 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; }
/** * Returns an array of hemming grahas. * * @return array */ public function isHemmed() { $isHemmed = []; $p = 'prev'; $n = 'next'; ${$p} = Math::numberPrev($this->objectRashi); ${$n} = Math::numberNext($this->objectRashi); foreach (Graha::$graha as $key => $name) { if ($key == $this->objectKey) { continue; } if ($this->getEnvironment()['graha'][$key]['rashi'] == ${$n}) { $isHemmed[$key] = $n; } elseif ($this->getEnvironment()['graha'][$key]['rashi'] == ${$p}) { $isHemmed[$key] = $p; } } if (!(array_search($p, $isHemmed) && array_search($n, $isHemmed))) { $isHemmed = []; } return $isHemmed; }
/** * 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']]; }
/** * Format params. * * @param array $input Swetest data * @param null|array $params Array of blocks (optional) * @return array */ private function formatParams(array $input, array $params = null) { $dataParams = []; if (is_null($params) || in_array(Data::BLOCK_GRAHA, $params) && in_array(Data::BLOCK_BHAVA, $params)) { $count = 22; } elseif (in_array(Data::BLOCK_GRAHA, $params)) { $count = 8; } elseif (in_array(Data::BLOCK_BHAVA, $params)) { $count = 14; } foreach ($input as $k => $v) { // Break if swetest warning if ($k == $count) { break; } $parametersString = str_replace(' ', '', $v); $parameters = explode(',', $parametersString); $bodyName = $parameters[0]; $units = Math::partsToUnits($parameters[1]); if (array_key_exists($bodyName, $this->outputPlanets)) { $dataParams[Data::BLOCK_GRAHA][$this->outputPlanets[$bodyName]] = ['longitude' => (double) $parameters[1], 'latitude' => (double) $parameters[2], 'speed' => (double) $parameters[3], 'ascension' => (double) $parameters[4], 'declination' => (double) $parameters[5], 'rashi' => $units['units'], 'degree' => $units['parts']]; } elseif (array_key_exists($bodyName, $this->outputHouses)) { $dataParams[Data::BLOCK_BHAVA][$this->outputHouses[$bodyName]] = ['longitude' => (double) $parameters[1], 'ascension' => (double) $parameters[2], 'declination' => (double) $parameters[3], 'rashi' => $units['units'], 'degree' => $units['parts']]; } elseif (array_key_exists($bodyName, $this->outputLagna)) { $dataParams[Data::BLOCK_LAGNA][$this->outputLagna[$bodyName]] = ['longitude' => (double) $parameters[1], 'ascension' => (double) $parameters[2], 'declination' => (double) $parameters[3], 'rashi' => $units['units'], 'degree' => $units['parts']]; } } if (is_null($params) || in_array(Data::BLOCK_GRAHA, $params)) { $longitudeKe = Math::oppositeValue($dataParams['graha'][Graha::KEY_RA]['longitude'], 360); $ascensionKe = Math::oppositeValue($dataParams['graha'][Graha::KEY_RA]['ascension'], 360); $units = Math::partsToUnits($longitudeKe); $dataParams['graha'][Graha::KEY_KE] = ['longitude' => $longitudeKe, 'latitude' => $dataParams['graha'][Graha::KEY_RA]['latitude'], 'speed' => $dataParams['graha'][Graha::KEY_RA]['speed'], 'rashi' => $units['units'], 'degree' => $units['parts'], 'ascension' => $ascensionKe, 'declination' => $dataParams['graha'][Graha::KEY_RA]['declination']]; } return $dataParams; }
/** * Get the order of the grahas. * * @param string $graha * @return array */ public function getOrderGraha($graha) { $result = Math::shiftArray($this->durationGraha, $graha); return $result; }
/** * Get converting value of angle. * * @param string $value * @param bool $isLongitude * @return float */ private function getAngle($value, $isLongitude = false) { $valueArray = $this->convertValue($value); $decimal = Math::dmsToDecimal($valueArray); if ($isLongitude) { $decimal *= -1; } return $decimal; }