Example #1
0
        private double SkyChanelAtPoint(SkylightDistCoef skyCoef, double theta, double phi)
        {
            var gamma = Math.Acos(
                Math.Cos(thetaSun) * Math.Cos(theta) +
                Math.Sin(thetaSun) * Math.Sin(theta) * Math.Cos(phiSun - phi));

            return(skyCoef.Zenith * CurlyF(skyCoef, theta, gamma) / CurlyF(skyCoef, 0, thetaSun));
        }
Example #2
0
            public AllSkylightDistCoef(double turbidity, double thetaSun)
            {
                var    t1   = thetaSun;
                var    t2   = t1 * t1;
                var    t3   = t1 * t2;
                double Yz   = (4.0453 * turbidity - 4.9710) * Math.Tan((4.0 / 9 - turbidity / 120) * (Math.PI - 2 * thetaSun)) - 0.2155 * turbidity + 2.4192;
                double Y0   = (4.0453 * turbidity - 4.9710) * Math.Tan((4.0 / 9 - turbidity / 120) * (Math.PI)) - 0.2155 * turbidity + 2.4192;
                double YZen = Yz / Y0;
                double xZen =
                    (+0.00166 * t3 - 0.00375 * t2 + 0.00209 * t1 + 0.00000) * turbidity * turbidity +
                    (-0.02903 * t3 + 0.06377 * t2 - 0.03202 * t1 + 0.00394) * turbidity +
                    (+0.11693 * t3 - 0.21196 * t2 + 0.06052 * t1 + 0.25886);
                double yZen =
                    (+0.00275 * t3 - 0.00610 * t2 + 0.00317 * t1 + 0.00000) * turbidity * turbidity +
                    (-0.04214 * t3 + 0.08970 * t2 - 0.04153 * t1 + 0.00516) * turbidity +
                    (+0.15346 * t3 - 0.26756 * t2 + 0.06670 * t1 + 0.26688);

                Y = new SkylightDistCoef()
                {
                    A      = +0.1787 * turbidity - 1.4630,
                    B      = -0.3554 * turbidity + 0.4275,
                    C      = -0.0227 * turbidity + 5.3251,
                    D      = +0.1206 * turbidity - 2.5771,
                    E      = -0.0670 * turbidity + 0.3703,
                    Zenith = YZen,
                };

                _x = new SkylightDistCoef()
                {
                    A      = -0.0193 * turbidity - 0.2592,
                    B      = -0.0665 * turbidity + 0.0008,
                    C      = -0.0004 * turbidity + 0.2125,
                    D      = -0.0641 * turbidity - 0.8989,
                    E      = -0.0033 * turbidity + 0.0452,
                    Zenith = xZen,
                };

                _y = new SkylightDistCoef()
                {
                    A      = -0.0167 * turbidity - 0.2608,
                    B      = -0.0950 * turbidity + 0.0092,
                    C      = -0.0079 * turbidity + 0.2102,
                    D      = -0.0441 * turbidity - 1.6537,
                    E      = -0.0109 * turbidity + 0.0529,
                    Zenith = yZen,
                };
            }
Example #3
0
 private static double CurlyF(SkylightDistCoef skyCoef, double theta, double gamma)
 {
     return
         ((1 + skyCoef.A * Math.Exp(skyCoef.B / Math.Cos(theta))) *
          (1 + skyCoef.C * Math.Exp(skyCoef.D * gamma) + skyCoef.E * Math.Cos(gamma) * Math.Cos(gamma)));
 }