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); }
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); }
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))); }
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); } }