Problema con la vista de pájaro o la representación 2.5D del mapa

Estoy desarrollando un software de navegación paso a paso y estoy usando la siguiente solución para convertir mis líneas de carreteras en 2.5D o Vista 3D

Dibuje 2.5D o mapa 3D con C # de líneas

Sin embargo, la solución anterior está bastante bien para líneas dentro del puerto de vista que es 0 <x <ancho y 0 <y <alto. Sin embargo, hay líneas en las que sus puntos pueden tener y <0 o x <0 o y> alto o x> ancho y luego la solución anterior se volvió loca. ¿Alguien podría ayudarme a descubrir cómo resolver el problema?

vvvv Con algoritmo 3D vvvv

.

vvvv Sin algoritmo 3D vvvv

Actualización :: Después de usar este código

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;

El mapa se vuelve como seguir

Creo que hay algo mal con los cálculos de Y cuando van mucho más allá de los valores negativos. Estoy usando Qt y las grietas en la línea parecen fallar con el renderizador de Qt, no relacionado con nuestro problema original.

Respuestas a la pregunta(2)

Su respuesta a la pregunta