Продолжаем образовательную серию.
Я начну с небольшого уточнения к предыдущей серии. Формула для Ys выводится не совсем аналогично формуле для Xs. Дело в том, что там наличествует поворот, и соответственно стороны треугольника будут не f, ys, z и y, а f / cos α, ys, z / cos α и y. cos α сокращается, поэтому формула правильная, но сам вывод был неточен. Подзабыл за 10 лет конечно, хотя формулами периодически пользовался.
Едем дальше. Сферическая проекция.
Это вид сверху, тут всё совсем просто. Xs = R tg α. Заметьте что гипотенуза равна R / cos α, это понадобится нам в дальнейшем.
Это вид сбоку. Я вначале представлял его аналогично виду сверху, но это неправильно. Здесь тот же самый момент который я уже описал вначале, только немного в другом варианте. На рисунке два прямоугольных треугольника, тот который горизонтальный мы уже видели на предыдущей картинке. Соответственно, нижний катет вертикального будет равен R / cos α. Тогда Ys = R tg β / cos α. Вот и всё. Мы получили формулы которые по углам на сфере дают координаты на экране:
Xs = R tg α
Ys = R tg β / cos α
Для преобразования достаточно пройти с некоторым шагом углы которые попадут в экран и скопировать нужные точки оттуда.
Всё верно? Будьте внимательны.