Нарисуйте 2.5D или 3D карту с C # из линий - PullRequest
0 голосов
/ 11 мая 2010

Я разрабатываю пошаговое навигационное программное обеспечение для Windows Mobile с использованием C # и .NET CF. Я умею рисовать 2D карты, рисуя линии. Моя проблема в том, что я хотел бы получить карту 2.5D, как на картинке. Я пробовал неаффинное преобразование на 2D-рендеринге, но оно слишком медленное для устройства Windows Mobile, на которое мы нацеливаемся. Кто-нибудь может дать мне подсказку по моей проблеме?

пример изображения http://www.cartotype.com/assets/images/promopanels/citymap.png

Ответы [ 2 ]

1 голос
/ 11 мая 2010

Очень простого линейного преобразования может быть достаточно, поскольку область просмотра всегда будет иметь одинаковую ориентацию (т. Е. "Наклон").

Что-то вроде:

# 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 относительно центра экрана.

Это может быть сделано почти так же быстро, как и прямое рисование линий, при необходимости с учетом константных выражений и, возможно, с использованием таблицы поиска.

0 голосов
/ 09 сентября 2010

Используйте перспективное преобразование, потому что оно отобразит прямые линии на прямые. Подробнее в этом ответе .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...