示例#1
0
 /**
  * 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;
         }
     }
 }
示例#2
0
文件: D12.php 项目: mykitty/jyotish
 /**
  * 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;
 }
示例#3
0
 /**
  * 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']);
     }
 }
示例#4
0
文件: D2.php 项目: mykitty/jyotish
 /**
  * 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;
 }
示例#5
0
文件: D3.php 项目: mykitty/jyotish
 /**
  * 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;
 }
示例#6
0
 /**
  * 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;
 }
示例#7
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;
 }
示例#8
0
文件: D30.php 项目: mykitty/jyotish
 /**
  * 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;
 }
示例#9
0
文件: D20.php 项目: mykitty/jyotish
 /**
  * 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;
 }
示例#10
0
 /**
  * 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;
 }
示例#11
0
文件: D27.php 项目: mykitty/jyotish
 /**
  * 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;
 }
示例#12
0
 /**
  * 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;
 }
示例#13
0
 /**
  * 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;
 }
示例#14
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;
 }
示例#15
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);
         }
     }
 }
示例#16
0
文件: Ch.php 项目: mykitty/jyotish
 /**
  * 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;
     }
 }
示例#17
0
文件: Hora.php 项目: mykitty/jyotish
 /**
  * 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];
 }
示例#18
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;
 }
示例#19
0
 /**
  * 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;
 }
示例#20
0
 /**
  * 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];
 }
示例#21
0
 /**
  * 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);
 }
示例#22
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;
             }
     }
 }
示例#23
0
文件: Lagna.php 项目: mykitty/jyotish
 /**
  * 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']];
 }
示例#24
0
文件: Astro.php 项目: mykitty/jyotish
 /**
  * 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;
 }
示例#25
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;
 }
示例#26
0
 /**
  * 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;
 }
示例#27
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']];
 }
示例#28
0
 /**
  * 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;
 }
示例#29
0
 /**
  * Get the order of the grahas.
  * 
  * @param string $graha
  * @return array
  */
 public function getOrderGraha($graha)
 {
     $result = Math::shiftArray($this->durationGraha, $graha);
     return $result;
 }
示例#30
0
 /**
  * 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;
 }