Example #1
0
File: test.c Project: RTS2/rts2
int
rise_set_cal (struct ln_lnlat_posn *obs, time_t * start_time, int ndays)
{
  double JD = ln_get_julian_from_timet (start_time);

  int i;
  struct ln_rst_time rst;

  printf ("Calculating for longtitude %+3.2f, latitude %2.2f\n", obs->lng,
	  obs->lat);

  for (i = 0; i < ndays * 2; i++, JD += 0.5)
    {
      printf ("\nJD: ");
      print_jd (JD, obs);

      ln_get_solar_rst (JD, obs, &rst);
      printf ("\nset/rise: ");
      print_rst (&rst, obs);

      ln_get_solar_rst_horizon (JD, obs, LN_SOLAR_CIVIL_HORIZON, &rst);
      printf ("\ncivil %02f: ", LN_SOLAR_CIVIL_HORIZON);
      print_rst (&rst, obs);

      ln_get_solar_rst_horizon (JD, obs, LN_SOLAR_NAUTIC_HORIZON, &rst);
      printf ("\nnautic %02f: ", LN_SOLAR_NAUTIC_HORIZON);
      print_rst (&rst, obs);

      ln_get_solar_rst_horizon (JD, obs, LN_SOLAR_ASTRONOMICAL_HORIZON, &rst);
      printf ("\nastronomical %02f: ", LN_SOLAR_ASTRONOMICAL_HORIZON);
      print_rst (&rst, obs);
    }

  return 0;
}
Example #2
0
void MainWindow::setSunRiseAndSetVectors(const QDateTime &dateTime)
{
    struct ln_equ_posn equ;
    struct ln_rst_time rst;
    struct ln_zonedate rise, set, transit;
    struct ln_lnlat_posn observer;

    struct ln_hrz_posn hpos;

    double JD;

    observer.lat = ui->latEdit->text().toFloat();
    observer.lng = ui->lngEdit->text().toFloat();

    ln_date date;
    date.years = dateTime.date().year();
    date.months = dateTime.date().month();
    date.days = dateTime.date().day();
    date.hours = dateTime.time().hour();
    date.minutes = dateTime.time().minute();
    date.seconds = dateTime.time().second();

    JD = ln_get_julian_day(&date);

    /* ra, dec */
    ln_get_solar_equ_coords (JD, &equ);


    ln_get_hrz_from_equ(&equ, &observer, JD, &hpos);

    double a = ln_range_degrees(hpos.az - 180);

    QString s;
    s.sprintf("Azimut: %0.3f", a);
    ui->listWidget->addItem(s);
    s.sprintf("Evaluation: %0.3f", hpos.alt);
    ui->listWidget->addItem(s);

    /* rise, set and transit */
    if (ln_get_solar_rst (JD, &observer, &rst) == 1) {
        ui->listWidget->addItem(QString("Zirkumpolar"));
    } else {
        ln_get_local_date (rst.rise, &rise);
        ln_get_local_date (rst.transit, &transit);
        ln_get_local_date (rst.set, &set);
        s.sprintf("Aufgang: %02d:%02d:%02d", rise.hours, rise.minutes, (int)rise.seconds);
        ui->listWidget->addItem(s);
        s.sprintf("Transit: %02d:%02d:%02d", transit.hours, transit.minutes, (int)transit.seconds);
        ui->listWidget->addItem(s);
        s.sprintf("Untergang: %02d:%02d:%02d", set.hours, set.minutes, (int)set.seconds);
        ui->listWidget->addItem(s);

    }

    //sunHeading->setVisible(false);

    setSunVectors(&rise, &observer, sunRise);
    setSunVectors(&set, &observer, sunSet);

    mc->setView(QPointF(observer.lng, observer.lat));

    //overlay->addGeometry();
}