🌙 Calculateur de Nakshatra Précis

Avec éphémérides astronomiques en temps réel

🔑 Configuration des APIs

AstronomyAPI (Recommandé)

  1. Créez un compte gratuit sur astronomyapi.com
  2. Obtenez vos identifiants API (1000 requêtes/mois gratuit)
  3. Remplacez dans le code PHP :
    private const ASTRONOMY_API_ID = 'votre_application_id';
    private const ASTRONOMY_API_SECRET = 'votre_application_secret';

Plan gratuit : 1000 requêtes/mois • Données précises • Support complet

🌌 Liste des 27 Nakshatras

1. Ashwini
0° - 13.3°
Planète: Ketu
2. Bharani
13.3° - 26.7°
Planète: Vénus
3. Krittika
26.7° - 40°
Planète: Soleil
4. Rohini
40° - 53.3°
Planète: Lune
5. Mrigashira
53.3° - 66.7°
Planète: Mars
6. Ardra
66.7° - 80°
Planète: Rahu
7. Punarvasu
80° - 93.3°
Planète: Jupiter
8. Pushya
93.3° - 106.7°
Planète: Saturne
9. Ashlesha
106.7° - 120°
Planète: Mercure
10. Magha
120° - 133.3°
Planète: Ketu
11. Purva Phalguni
133.3° - 146.7°
Planète: Vénus
12. Uttara Phalguni
146.7° - 160°
Planète: Soleil
13. Hasta
160° - 173.3°
Planète: Lune
14. Chitra
173.3° - 186.7°
Planète: Mars
15. Swati
186.7° - 200°
Planète: Rahu
16. Vishakha
200° - 213.3°
Planète: Jupiter
17. Anuradha
213.3° - 226.7°
Planète: Saturne
18. Jyeshtha
226.7° - 240°
Planète: Mercure
19. Mula
240° - 253.3°
Planète: Ketu
20. Purva Ashadha
253.3° - 266.7°
Planète: Vénus
21. Uttara Ashadha
266.7° - 280°
Planète: Soleil
22. Shravana
280° - 293.3°
Planète: Lune
23. Dhanishta
293.3° - 306.7°
Planète: Mars
24. Shatabhisha
306.7° - 320°
Planète: Rahu
25. Purva Bhadrapada
320° - 333.3°
Planète: Jupiter
26. Uttara Bhadrapada
333.3° - 346.7°
Planète: Saturne
27. Revati
346.7° - 360°
Planète: Mercure

📚 À propos des APIs utilisées

🌐 APIs Disponibles et Configuration

🏆 AstronomyAPI (Implémenté)

URL: astronomyapi.com

Précision: ±0.01° (Très haute)

Plan gratuit: 1000 requêtes/mois

Avantages: Données complètes, API REST moderne, documentation excellente

Configuration:
1. Inscription sur astronomyapi.com
2. Créer une application
3. Copier Application ID et Secret
4. Remplacer dans le code PHP
🔄 VSOP87 (Fallback Actuel)

Type: Algorithme astronomique

Précision: ±0.1° (Bonne)

Coût: Gratuit, aucune limite

Usage: Calcul local, pas d'API requise

Status: ✅ Opérationnel (utilisé si AstronomyAPI indisponible)
🌍 IPGeolocation (Backup)

URL: ipgeolocation.io

Précision: ±1° (Moyenne)

Plan gratuit: 1000 requêtes/mois

Usage: Données astronomiques générales

Note: Conversion requise altitude→longitude

⚙️ Instructions d'Installation AstronomyAPI

Étape 1: Inscription (Gratuite)
  1. Allez sur astronomyapi.com/auth/register
  2. Créez un compte gratuit (email + mot de passe)
  3. Confirmez votre email
Étape 2: Créer une Application
  1. Connectez-vous au dashboard
  2. Cliquez sur "Create Application"
  3. Nom: "Nakshatra Calculator"
  4. Description: "Calcul de Nakshatras védiques"
  5. Notez votre Application ID et Application Secret
Étape 3: Configuration du Code
// Dans le fichier PHP, remplacez ces lignes (ligne ~25-26) :
private const ASTRONOMY_API_ID = 'YOUR_ASTRONOMY_API_ID';
private const ASTRONOMY_API_SECRET = 'YOUR_ASTRONOMY_API_SECRET';

// Par vos vraies clés :
private const ASTRONOMY_API_ID = 'votre_application_id_ici';
private const ASTRONOMY_API_SECRET = 'votre_application_secret_ici';
Étape 4: Test

Une fois configuré, le système utilisera automatiquement AstronomyAPI pour des calculs de haute précision. En cas d'erreur ou de quota dépassé, il basculera automatiquement sur VSOP87.

✅ Avantages de AstronomyAPI :
  • Précision astronomique professionnelle
  • Données en temps réel
  • Support des coordonnées géographiques
  • API moderne et fiable
  • 1000 calculs gratuits par mois

⚙️ Configuration des APIs

Pour utiliser les APIs externes, modifiez ces parties du code:

1. Swiss Ephemeris (Recommandé)
// Installation: composer require kylekatarnls/php-swiss-ephemeris
use SwissEphemeris\SwissEphemeris;

private function getMoonPositionSwissEph($date, $lat, $lon) {
    $swe = new SwissEphemeris();
    $jd = $this->dateToJulianDay($date);
    
    $result = $swe->calc_ut($jd, SwissEphemeris::SE_MOON, SwissEphemeris::SEFLG_SWIEPH);
    
    return [
        'longitude' => $result[0], // Longitude géocentrique
        'latitude' => $result[1],  // Latitude géocentrique
        'distance' => $result[2],  // Distance en UA
        'source' => 'Swiss Ephemeris'
    ];
}
2. AstronomyAPI
private function getMoonPositionAstronomyAPI($date, $lat, $lon) {
    $apiKey = 'VOTRE_CLE_API'; // Obtenir sur astronomyapi.com
    $url = 'https://api.astronomyapi.com/api/v2/positions/moon';
    
    $headers = [
        'Authorization: Basic ' . base64_encode($apiKey . ':'),
        'Content-Type: application/json'
    ];
    
    $data = [
        'format' => 'json',
        'style' => 'default',
        'observer' => [
            'latitude' => $lat,
            'longitude' => $lon,
            'date' => $date->format('Y-m-d')
        ],
        'view' => [
            'type' => 'constellation'
        ]
    ];
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    $result = json_decode($response, true);
    
    return [
        'longitude' => $result['data']['position']['horizontal']['azimuth'],
        'source' => 'AstronomyAPI'
    ];
}
3. Configuration Complète
// Ajoutez ces constantes en haut de la classe
private const ASTRONOMY_API_KEY = 'votre_cle_astronomyapi';
private const IPGEOLOCATION_API_KEY = 'votre_cle_ipgeolocation';

// Méthode principale avec fallbacks
public function getMoonPositionFromAPI($date, $latitude = 0, $longitude = 0) {
    // 1. Essayer Swiss Ephemeris (le plus précis)
    if (class_exists('SwissEphemeris\SwissEphemeris')) {
        return $this->getMoonPositionSwissEph($date, $latitude, $longitude);
    }
    
    // 2. Essayer AstronomyAPI
    if (!empty(self::ASTRONOMY_API_KEY)) {
        $result = $this->getMoonPositionAstronomyAPI($date, $latitude, $longitude);
        if ($result) return $result;
    }
    
    // 3. Essayer IPGeolocation
    if (!empty(self::IPGEOLOCATION_API_KEY)) {
        $result = $this->getMoonPositionIPGeo($date, $latitude, $longitude);
        if ($result) return $result;
    }
    
    // 4. Fallback vers calcul VSOP87
    return $this->getMoonPositionVSOP87($date);
}

🎯 Précision des Méthodes

Méthode Précision Coût Recommandation
Swiss Ephemeris ±0.001° Gratuit ⭐⭐⭐⭐⭐
AstronomyAPI ±0.01° 1000/mois gratuit ⭐⭐⭐⭐
VSOP87 (actuel) ±0.1° Gratuit ⭐⭐⭐
Approximation simple ±5° Gratuit ⭐⭐
💡 Conseils d'Implémentation
  1. Pour la production: Utilisez Swiss Ephemeris pour une précision maximale
  2. Pour les tests: L'implémentation VSOP87 actuelle est suffisante
  3. Cache: Mettez en cache les résultats pour éviter les appels API répétés
  4. Fallbacks: Implémentez plusieurs sources pour la fiabilité
  5. Géolocalisation: OpenStreetMap Nominatim est gratuit et fiable
⚠️ Notes Importantes
  • Les calculs de Nakshatra nécessitent le système Nirayana (sidéral)
  • L'Ayanamsa de Lahiri est le standard en astrologie védique (≈24.12° en 2024)
  • Pour une précision optimale, utilisez les coordonnées exactes du lieu de naissance
  • Les APIs gratuites ont des limites de taux - implémentez la mise en cache