алгоритм преобразования 2D координат в 2.5D - PullRequest
0 голосов
/ 30 сентября 2010

У меня есть векторные данные карт улиц в формате 2D, как показано ниже:

polyline0: dataX = {x00, x01, .., x0n} dataY = {y00, y01, .., y0n}

polyline1: dataX = {x10, x11, .., x1n} dataY = {y10, y11, .., y1n}

polyline2: dataX = {x20, x21, .., x2n} dataY= {y20, y21, .., y2n}

...

ломаная: dataX = {xm0, xm1, .., xmn} dataY = {ym0, ym1, ..,ymn}

Я могу нарисовать полилинию0, полилинию1, .., полилинию на экране как вид сверху вниз (2D).

Теперь я хочу нарисовать полилинию0, полилинию1, .., полилинию на экранев виде 2.5D (перспективная или изометрическая проекция)

Я ищу алгоритм для преобразования 2D-координат в 2.5D.Я пытался найти этот алгоритм в интернете, но не смог найти.

То, что я ищу, - это простая формула, которая позволяет мне преобразовывать вышеуказанные 2D-данные в данные 2.5D, как показано ниже:

взять в качестве примера полилинию0: for (i = 0; i

Я ищу вашу помощь и очень благодарен вам за то, что вы помогли мне с алгоритмом преобразования 2D-координат в 2,5D.

1 Ответ

1 голос
/ 30 сентября 2010

Для комментаторов здесь описано 2.5D .

Изометрическая проекция выглядит довольно просто для реализации. Математика становится проще с вашими ограничениями.

Координата z точек на линиях всегда равна 0, поэтому произведение матриц на этой странице википедии равно

newx = 1 / sqrt(2) * oldx;
newy = 1 / sqrt(6) * (oldx + 2 * oldy);

или

newx = oldx;
newy = 1 / sqrt(3) * (oldx + 2 * oldy);

если вы не против масштабирования.

Другие изометрические изображения могут быть получены из источника выше.

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