Очень простого линейного преобразования может быть достаточно, поскольку область просмотра всегда будет иметь одинаковую ориентацию (т. Е. "Наклон").
Что-то вроде:
# assuming 0,0 is top left of screen
w = 320 # screen width
h = 480 # screen height
t1 = 0.75 # scale at top of screen
t2 = 1.25 # scale at bottom of screen
# x,y is the initial point
# x_,y_ is the transformed result
x_ = (x - w/2)*(t1+(y/h)*(t2-t1)) + w/2
y_ = y
Это умножит x
на меньший коэффициент при увеличении высоты экрана: от 0.75*x
вверху (когда y=0
) до 1.25*x
внизу (когда y=h
). Обратите внимание, что нам нужно масштабировать x
относительно центра экрана.
Это может быть сделано почти так же быстро, как и прямое рисование линий, при необходимости с учетом константных выражений и, возможно, с использованием таблицы поиска.