float lon = atan2f(nx, nz) + TAU*t, lat = asinf(ny);
putchar(ASCII[(int)((diff + powf(spec,8) + rim) * N)]);
В первой строке спрятан весь фокус.
atan2(nx, nz) даёт долготу каждой точки на поверхности сферы. Добавляем TAU*t — и Земля начинает вращаться. Бесконечно.Вторая строка переводит яркость в символ.
Рассеянный свет. Блик. Свечение по краю. Одно число — один символ.
Ширина в 50 символов. И у вас уже есть Земля.
Без GPU. Без OpenGL. Без движка. Только нормаль поверхности и таблица символов.
А свечение по краю Земли?
rim = pow(1.0 - nz, 3) * 0.35
nz — это z-компонента нормали поверхности.На краю сферы
nz стремится к нулю. Значит, 1 - nz приближается к единице. Возводим в куб, чтобы сделать спад резче.Одна строка.
Вот вам и атмосфера.



