tuned animation for demo
[livewp] / applet / src / livewp-rules.c
index e0e7a2f..1fc2599 100644 (file)
@@ -49,18 +49,23 @@ void get_localtime(int * year, int * month, int * day, int * hour, int * min, in
 
 void get_coord(double * lat, double * lon)
 {
+    /* coordinates St.-Petersburg */
     *lat = 59.883333;
     *lon = 30.25;
+
+    /* coordinates Vitebsk */
+    //*lat = 55.166666;
+    //*lon = 30.133333;
+
+
 }
 
 double
 get_max_sun_alt(double lon, double lat, int year, int month, int day, int zone)
 {
     int h1, m1, h2, m2, h, m;
-    time_t t1, t2, t;
-    struct tm tm1, tm2;
+    struct tm;
     double alt, hour1, hour2, hh, x;
-    int hour, min;
 
     sun_rise_set(lon, lat,
                  year, month, day, 
@@ -79,8 +84,36 @@ get_max_sun_alt(double lon, double lat, int year, int month, int day, int zone)
     //printf("alt = %f \n", alt);
     return alt;
 }
+void get_sun_pos(int h, int m, double * alt, double * azm)
+{
+    int year, month, day, hour, min, zone;
+    double lat, lon, alt_max;
+    //get_localtime(&year, &month, &day, &hour, &min, &zone);
+    year = 2010;
+    month = 4;
+    day = 14;
+    hour = h;
+    min = m;
+    zone = 3;
+    get_coord(&lat, &lon);
+    alt_max = get_max_sun_alt(lon, lat, year, month, day, zone);
+    *alt = altitude(lon, lat, year, month, day, hour, min, zone);
+    //printf("max = %f alt = %f ",alt_max, *alt);
+    *alt = *alt / (alt_max + 10); // sun height in percent
+    //printf("alt1 = %f \n", *alt);
+
+    *azm = azimuth(lon, lat, year, month, day, hour, min, zone);
+    //printf("azm = %f ", *azm);
+    //if south latitude
+    if (lat < 0){
+        *azm = 75 + (75 - *azm);
+        *azm = fmod(*azm, 380);
+    }
+    *azm = (*azm - 75) / 210; // sun azimuth in percent
+    //printf("azm1 = %f \n", *azm);
+}
 
-void get_sun_pos(double * alt, double * azm)
+void get_sun_pos1(double * alt, double * azm)
 {
     int year, month, day, hour, min, zone;
     double lat, lon, alt_max;
@@ -89,7 +122,7 @@ void get_sun_pos(double * alt, double * azm)
     alt_max = get_max_sun_alt(lon, lat, year, month, day, zone);
     *alt = altitude(lon, lat, year, month, day, hour, min, zone);
     //printf("max = %f alt = %f ",alt_max, *alt);
-    *alt = *alt / (alt_max + 5); // sun height in percent
+    *alt = *alt / (alt_max + 10); // sun height in percent
     //printf("alt1 = %f \n", *alt);
 
     *azm = azimuth(lon, lat, year, month, day, hour, min, zone);
@@ -111,10 +144,23 @@ time_t get_next_sunset()
         return time(NULL) + 60*60*12;
 }
 
-int get_daytime()
+int get_daytime(int h, int m)
 {
     double alt, azm;
-    get_sun_pos(&alt, &azm);
+    get_sun_pos(h, m, &alt, &azm);
+    alt = alt * 100;
+    azm = azm * 100;
+    //printf("alt = %f azm=%f\n", alt, azm);
+    if (alt <= -12) return TIME_NIGHT;
+    if (alt > -12 && alt < 12 && azm < 50) return TIME_SUNRISE;
+    if (alt > -12 && alt < 12 && azm > 50) return TIME_SUNSET;
+    if (alt >= 12) return TIME_DAY;
+    return TIME_DAY;
+}
+int get_daytime1()
+{
+    double alt, azm;
+    get_sun_pos1(&alt, &azm);
     alt = alt * 100;
     azm = azm * 100;
     //printf("alt = %f azm=%f\n", alt, azm);
@@ -122,7 +168,7 @@ int get_daytime()
     if (alt > -7 && alt < 7 && azm < 50) return TIME_SUNRISE;
     if (alt > -7 && alt < 7 && azm > 50) return TIME_SUNSET;
     if (alt >= 7) return TIME_DAY;
-    
+    return TIME_DAY;
 }
 int get_moon_phase()
 { 
@@ -130,11 +176,13 @@ int get_moon_phase()
     double phase;
     get_localtime(&year, &month, &day, &hour, &min, &zone);
     phase = moon_phase(year, month, day) * 100;
-    printf("ph = %f\n", phase);
+    /* printf("ph = %f\n", phase); */
     if (phase <= 3 || phase >=97) return MOON_NONE;
     if (phase > 5 && phase <= 25) return MOON_GROWS;
     if (phase > 25 && phase <= 45) return MOON_GROWSHALF;
     if (phase > 45 && phase <= 55) return MOON_FULL;
     if (phase > 55 && phase <= 75) return MOON_DECREASHALF;
     if (phase > 75 && phase < 97) return MOON_DECREAS;
+    return MOON_NONE;
+
 }