Bonjour à toutes et à tous,
J'ai trouvé sur le forum une librairie qui permet de passer d'un système de coordonnées équatoriales à un système de coordonnées horizontales et vice versa.
le lien de la librairie.
le code exemple "full" ici. ( je met le lien volontairement sinon "The message exceeds the maximum allowed length (9000 characters)").
Comme intitulé du code il regroupe tous ce qu'on peut faire avec la librairie.
J'ai réussi à garder que les fonctions nécessaires pour la conversion entre les systèmes.
#include <Ephemeris.h>
long retourcoo;
void equatorialCoordinatesToString(EquatorialCoordinates coord, char raCoord[14] , char decCoord[14])
{
int raHour,raMinute;
float raSecond;
Ephemeris::floatingHoursToHoursMinutesSeconds(coord.ra, &raHour, &raMinute, &raSecond);
sprintf(raCoord," %02dh%02dm%02ds.%02d",raHour,raMinute,(int)raSecond,(int)round(((float)(raSecond-(int)raSecond)*pow(10,2))));
int decDegree,decMinute;
float decSecond;
Ephemeris::floatingDegreesToDegreesMinutesSeconds(coord.dec, &decDegree, &decMinute, &decSecond);
if(decDegree<0)
{
sprintf(decCoord,"%02dd%02d'%02d\".%02d",(int)decDegree,decMinute,(int)decSecond,(int)round(((float)(decSecond-(int)decSecond)*pow(10,2))));
}
else
{
sprintf(decCoord," %02dd%02d'%02d\".%02d",(int)decDegree,decMinute,(int)decSecond,(int)round(((float)(decSecond-(int)decSecond)*pow(10,2))));
}
}
void printEquatorialCoordinates(EquatorialCoordinates coord)
{
char raCoord[14];
char decCoord[14];
equatorialCoordinatesToString(coord,raCoord,decCoord);
Serial.print("R.A: ");
Serial.println(raCoord);
Serial.print("Dec: ");
Serial.println(decCoord);
return;
}
void printHorizontalCoordinates(HorizontalCoordinates coord)
{ long test;
Serial.print("Azi: ");
Serial.print(coord.azi,6);
Serial.print(" Alt: ");
Serial.println(coord.alt,6);
test = coord.azi;
return ( test);
}
void setup()
{
Serial.begin(9600);
Ephemeris::setLocationOnEarth(48,50,11,-2,20,14); // Lat: 48°50'11" Lon: -2°20'14"
Ephemeris::flipLongitude(true);// East is negative and West is positive
Ephemeris::setAltitude(75); // Set altitude to improve rise and set precision
int day=10,month=4,year=2014,hour=19,minute=21,second=0; // Choose a date and time
Serial.println("_____________________________________");
Serial.println("Testing coordinates transformations:");
EquatorialCoordinates objettest;
objettest.ra = Ephemeris::hoursMinutesSecondsToFloatingHours(2, 31, 49); // 2h31m49s
objettest.dec = Ephemeris::degreesMinutesSecondsToFloatingDegrees(89, 15, 51); // +89° 15′ 51″
printEquatorialCoordinates(objettest);
Serial.println("Convert RA/Dec to Alt/Az:");
HorizontalCoordinates polarStarHCoord = Ephemeris::equatorialToHorizontalCoordinatesAtDateAndTime(objettest,day, month, year,hour, minute, second);
printHorizontalCoordinates(polarStarHCoord);
Serial.println("Convert Alt/Az back to RA/Dec:");
objettest = Ephemeris::horizontalToEquatorialCoordinatesAtDateAndTime(polarStarHCoord,day, month, year,hour, minute, second);
printEquatorialCoordinates(objettest);
retourcoo = printHorizontalCoordinates(HorizontalCoordinates coord);
}
void loop() {}
Mais dans la fonction "printHorizontalCoordinates" :
void printHorizontalCoordinates(HorizontalCoordinates coord)
{ long test;
Serial.print("Azi: ");
Serial.print(coord.azi,6);
Serial.print(" Alt: ");
Serial.println(coord.alt,6);
test = coord.azi;
return ( test);
}
Je n'arrive pas à retourné la valeur "test" avec :
retourcoo = printHorizontalCoordinates(HorizontalCoordinates coord)
l'IDE ne compile pas .
sketch_jun28a:75:64: error: expected primary-expression before 'coord'
retourcoo = printHorizontalCoordinates(HorizontalCoordinates coord);
le ^ se place sous "coord" .
Ou est mon erreur ?
et quelles sont les fonctions des "::" ?
Par avance merci