Проблема с высоты птичьего полета или 2.5D рендеринга карты
Я разрабатываю пошаговое навигационное программное обеспечение и использую следующее решение, чтобы превратить мои линии дорог в 2.5D или 3D View.
Нарисуйте 2.5D или 3D карту с C # из линий
Однако вышеприведенное решение вполне подходит для линий в пределах порта просмотра, который равен 0 <x <ширина и 0 <y <высота. Однако есть линии, у которых его точки могут иметь y <0 или x <0 или y> высоту или x> ширину, и тогда вышеуказанное решение сошло с ума. Может ли кто-нибудь помочь мне понять, как решить проблему?
vvvv с 3D алгоритмом vvvv
.
vvvv без трехмерного алгоритма vvvv
Обновление :: После использования этого кода
double x = p->x();
double y = p->y();
double t = -0.5;
x = x - w / 2;
y = y - h / 2;
double a = h / (h + y* sin(t));
double u = a * x + w / 2;
double v = a * y * cos(t) + h / 2;
p->setX(u);
p->setY(v);
return p;
Карта становится похожей на следующую
Я думаю, что с вычислениями Y что-то не так, когда они выходят далеко за пределы отрицательных значений. Я использую Qt и трещины в строке кажутся ошибкой с Qt рендерером, не связанной с нашей первоначальной проблемой.