Hi,
Sorry, the correct main() function is:

Void main()
{
        QDateTime date = QDateTime(QDate(2016, 4, 15), QTime(10,0,0,0),
QTimeZone::utc());
        setTime(date);
update()
Vec3d in;

        double ra = 16.123456;
        double dec = 36.46667;  
        spheToRect(ra*M_PI/180.0, dec*M_PI/180.0, in);

        Vec3d out2; // <---------------------------------------------
        out2 = j2000ToAltAz(in); //
<---------------------------------------------
 
        double alt1, az1;
        rectToSphe(&az1, &alt1, out2);

        qDebug() << "j2000ToAltAz.alt:" << alt1*180/M_PI;
        qDebug() << "j2000ToAltAz.az:" << az1*180/M_PI;
}


De: Andre Moutinho [mailto:mouti...@gmail.com] 
Enviada em: sábado, 14 de maio de 2016 11:04
Para: Stellarium developers public mailing list
(stellarium-pubdevel@lists.sourceforge.net)
Assunto: Simple J2000 to Altaz conversion help

Hello all,

I am trying to get the function j2000ToAltAz() work as simple as possible.
But my test case is not returning a valid RA/DEC to ALT/AZ conversion.

I have made getRotEquatorialToVsop87() returns Mat4d::identity() as a first
approach to make code simple. I have noticed that getRotEquatorialToVsop87()
uses JDE and this variable has a previous state (time) that I will not have
in my application so I don’t know how to solve this because my application
will only plot a static stellar map for a certain date/time/location. Maybe
returning an identity matrix would not change much the result.

I may be trying something stupid but please forgive me because I don’t have
much knowledge in this subject. Hope someone can help me.


Thanks a lot
Andre

Here is the code:


// Matrices used for every coordinate transfo
Mat4d matAltAzToEquinoxEqu;                // Transform from topocentric
altazimuthal coordinate to Earth Equatorial
Mat4d matEquinoxEquToAltAz;                // Transform from Earth
Equatorial to topocentric (StelObserver) altazimuthal coordinate
Mat4d matEquinoxEquToJ2000;                // For Earth, this is almost the
inverse precession matrix, =Rz(VSOPbias)Rx(eps0)Rz(-psiA)Rx(-omA)Rz(chiA)
Mat4d matJ2000ToEquinoxEqu;                // precession matrix
Mat4d matJ2000ToAltAz;
Mat4d matAltAzModelView;                   // Modelview matrix for
observer-centric altazimuthal drawing
Mat4d invertMatAltAzModelView;             // Inverted modelview matrix for
observer-centric altazimuthal drawing


const double JD_SECOND=0.000011574074074074074074; // 1/(24*60*60)=1/86400
const double JD_MINUTE=0.00069444444444444444444;  // 1/(24*60)   =1/1440
const double JD_HOUR  =0.041666666666666666666;    // 1/24
const double JD_DAY   =1.;
const double ONE_OVER_JD_SECOND = 24 * 60 * 60;    // 86400

QPair<double,double> JD;           // From 0.14 on: JD.first=JD_UT,
JD.second=DeltaT=TT-UT. To gain JD_TT, compute JDE=JD.first+JD.second or
better just call getJDE()
#define LATITUDE    51.76954
#define LONGITUDE   4.605606


const Mat4d
matJ2000ToVsop87(Mat4d::xrotation(-23.4392803055555555556*(M_PI/180)) *
Mat4d::zrotation(0.0000275*(M_PI/180)));
const Mat4d matVsop87ToJ2000(matJ2000ToVsop87.transpose());


Mat4d getRotEquatorialToVsop87()
{
    Mat4d rval = Mat4d::identity();
    return rval;
}

Mat4d getRotAltAzToEquatorial(double JD)
{
    double lat = LATITUDE;
    double lng = LONGITUDE;
    if( lat > 90.0 )  lat = 90.0;
    if( lat < -90.0 ) lat = -90.0;
    return Mat4d::zrotation((getSiderealTime(JD)+lng)*M_PI/180.)*
Mat4d::yrotation((90.-lat)*M_PI/180.);
}

update()
{
        matAltAzToEquinoxEqu = getRotAltAzToEquatorial(getJD());
        matEquinoxEquToAltAz = matAltAzToEquinoxEqu.transpose();
        matEquinoxEquToJ2000 = matVsop87ToJ2000 *
getRotEquatorialToVsop87();
        matJ2000ToEquinoxEqu = matEquinoxEquToJ2000.transpose();
        matJ2000ToAltAz = matEquinoxEquToAltAz*matJ2000ToEquinoxEqu;
}

Vec3d j2000ToAltAz(const Vec3d& v)
{
        return matJ2000ToAltAz*v;    
}


void setTime(QDateTime d)
{
       setJD(StelUtils::qDateTimeToJd(d));
}

Void main()
{
        QDateTime date = QDateTime(QDate(2016, 4, 15), QTime(10,0,0,0),
QTimeZone::utc());
        setTime(date);
update()
Vec3d in;

        double ra = 16.123456;
        double dec = 36.46667;  
        spheToRect(ra*M_PI/180.0, dec*M_PI/180.0, in);
        double alt1, az1;
        rectToSphe(&az1, &alt1, out2);

        qDebug() << "j2000ToAltAz.alt:" << alt1*180/M_PI;
        qDebug() << "j2000ToAltAz.az:" << az1*180/M_PI;
}



---
Este email foi escaneado pelo Avast antivírus.
https://www.avast.com/antivirus


------------------------------------------------------------------------------
Mobile security can be enabling, not merely restricting. Employees who
bring their own devices (BYOD) to work are irked by the imposition of MDM
restrictions. Mobile Device Manager Plus allows you to control only the
apps on BYO-devices by containerizing them, leaving personal data untouched!
https://ad.doubleclick.net/ddm/clk/304595813;131938128;j
_______________________________________________
Stellarium-pubdevel mailing list
Stellarium-pubdevel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/stellarium-pubdevel

Reply via email to