예제 #1
0
파일: Arudha.php 프로젝트: kunjara/jyotish
 /**
  * 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']];
 }