Exemple #1
0
 private double MidDay(double time)
 {
     SunPosition sunPosition = new SunPosition(julianDate + time);
     double eqt = sunPosition.Equation;
     double noon = Utils.FixHour(12 - eqt);
     return noon;
 }
Exemple #2
0
 // Compute the time at which sun reaches a specific angle below horizon
 private double SunAngleTime(double angle, double time, string direction = "")
 {
     SunPosition sunPosition = new SunPosition(julianDate + time);
     double decl = sunPosition.Declinaison;
     double noon = MidDay(time);
     double acos = (-DegreeMath.Sin(angle) - DegreeMath.Sin(decl) * DegreeMath.Sin(latitude)) /
                   (DegreeMath.Cos(decl) * DegreeMath.Cos(latitude));
     if (acos > 1) acos = 1;
     double t = 1 / 15.0 * DegreeMath.Acos(acos);
     return noon + (direction == "ccw" ? -t : t);
 }
Exemple #3
0
 // Compute asr time
 private double AsrTime(double factor, double time)
 {
     SunPosition sunPosition = new SunPosition(julianDate + time);
     double decl = sunPosition.Declinaison;
     double angle = -DegreeMath.Acot(factor + DegreeMath.Tan(Math.Abs(latitude - decl)));
     return SunAngleTime(angle, time);
 }