Определить визуальный размер объекта на заданном расстоянии от начала координат (используя перспективу)

Допустим, у нас есть квадрат шириной 50 пикселей. А перспектива -webkit — это 1000px*.

Какова формула для определения того, насколько большим будет каждый квадрат на заданном расстоянии от зрителя (ширина, которой он будет казаться на экране)?

* Это означает, что позиция зрителя составляет 1000 пикселей от точки z=0.


person cmal    schedule 30.09.2011    source источник
comment
Вы предполагаете, что вид исходит из источника, а квадрат обращен к нему (т.е. без забавных углов)?   -  person Beta    schedule 01.10.2011
comment
Подождите, это 2D или 3D? И почему бы не начать с отрезка, прежде чем беспокоиться о квадрате? (В 3D квадрат рядом со зрителем не выглядит квадратным, его стороны выпирают наружу.)   -  person Beta    schedule 01.10.2011
comment
Не смешное дело. Предположим, что это прямая линия от окна просмотра к центру объекта и к точке схода.   -  person cmal    schedule 01.10.2011
comment
Итак... вы хотите узнать угловую ширину квадрата шириной 50 пикселей (предупреждение: очень плохие единицы), если смотреть с расстояния x пикселей, верно?   -  person Beta    schedule 01.10.2011
comment
да. Если это плохие единицы, используйте то, что вы предпочитаете, и я изменю вопрос.   -  person cmal    schedule 01.10.2011


Ответы (1)


Угловая ширина квадрата шириной 50 единиц, если смотреть с расстояния x единиц, равна 2 atan(25/x) (в радианах).

person Beta    schedule 01.10.2011
comment
Есть ли способ преобразовать угловой размер в кажущийся линейный размер (в единицах)? - person cmal; 14.10.2011
comment
@cmal: да, умножь на константу. Выберите константу, которая дает вам поле зрения, которое вам нравится. Если константа слишком мала, вы получите эффект «рыбий глаз». Если он слишком большой, это будет похоже на просмотр в бинокль. - person Beta; 15.10.2011
comment
умножение его на постоянную часть - это именно то, что я искал. Спасибо. - person cmal; 01.12.2011