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