コード例 #1
0
        private static Vector3 SunPosition(float latitude, int dayOfYear, float dayPercent)
        {
            Vector3 target  = GenCelestial.SurfaceNormal(latitude);
            Vector3 current = GenCelestial.SunPositionUnmodified((float)dayOfYear, dayPercent, new Vector3(1f, 0f, 0f));

            current = Vector3.RotateTowards(current, target, 0.331612557f, 9999999f);
            float num = Mathf.InverseLerp(60f, 0f, Mathf.Abs(latitude));

            if (num > 0.0)
            {
                current = Vector3.RotateTowards(current, target, (float)(6.2831854820251465 * (17.0 * num / 360.0)), 9999999f);
            }
            return(current.normalized);
        }
コード例 #2
0
        private static Vector3 SunPosition(float latitude, int dayOfYear, float dayPercent)
        {
            Vector3 target  = GenCelestial.SurfaceNormal(latitude);
            Vector3 current = GenCelestial.SunPositionUnmodified((float)dayOfYear, dayPercent, new Vector3(1f, 0f, 0f), latitude);
            float   num     = GenCelestial.SunPeekAroundDegreesFactorCurve.Evaluate(latitude);

            current = Vector3.RotateTowards(current, target, 0.331612557f * num, 9999999f);
            float num2 = Mathf.InverseLerp(60f, 0f, Mathf.Abs(latitude));

            if (num2 > 0f)
            {
                current = Vector3.RotateTowards(current, target, 6.28318548f * (17f * num2 / 360f), 9999999f);
            }
            return(current.normalized);
        }
コード例 #3
0
        public static Vector3 CurSunPositionInWorldSpace()
        {
            int ticksAbsForSunPosInWorldSpace = GenCelestial.TicksAbsForSunPosInWorldSpace;

            return(GenCelestial.SunPositionUnmodified((float)GenDate.DayOfYear(ticksAbsForSunPosInWorldSpace, 0f), GenDate.DayPercent(ticksAbsForSunPosInWorldSpace, 0f), new Vector3(0f, 0f, -1f)));
        }
コード例 #4
0
 public static void LogSunAngleForYear()
 {
     for (int i = -90; i <= 90; i += 10)
     {
         StringBuilder stringBuilder = new StringBuilder();
         stringBuilder.AppendLine("Sun angles for latitude " + i + ", for each hour of each day of the year");
         stringBuilder.AppendLine("---------------------------------------");
         stringBuilder.Append("Day/hr".PadRight(6));
         for (int j = 0; j < 24; j += 2)
         {
             stringBuilder.Append((j.ToString() + "h").PadRight(6));
         }
         stringBuilder.AppendLine();
         for (int k = 0; k < 60; k += 5)
         {
             stringBuilder.Append(k.ToString().PadRight(6));
             for (int l = 0; l < 24; l += 2)
             {
                 float num = Vector3.Angle(GenCelestial.SurfaceNormal((float)i), GenCelestial.SunPositionUnmodified((float)k, (float)l / 24f, new Vector3(1f, 0f, 0f), 0f));
                 stringBuilder.Append((90f - num).ToString("F0").PadRight(6));
             }
             stringBuilder.AppendLine();
         }
         Log.Message(stringBuilder.ToString(), false);
     }
 }