Problema com a vista aérea ou a renderização 2.5D do mapa

Estou desenvolvendo um software de navegação passo a passo e estou usando a solução a seguir para transformar minhas linhas de estradas em Vista 2.5D ou 3D

Desenhar mapa 2.5D ou 3D com C # das linhas

No entanto, a solução acima é bastante adequada para linhas dentro da porta de exibição que é 0 <x <largura e 0 <y <altura. No entanto, existem linhas em que seus pontos podem ter y <0 ou x <0 ou y> altura ou x> largura e, em seguida, a solução acima enlouqueceu. Alguém poderia me ajudar a descobrir como resolver o problema?

vvvv Com o algoritmo 3D vvvv

.

vvvv Sem algoritmo 3D vvvv

Update :: Depois 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;

O mapa se torna como segue

Eu acho que há algo errado com os cálculos de Y quando eles vão muito além dos valores negativos. Estou usando o Qt e as rachaduras na linha parecem um bug com o renderizador do Qt, não relacionado ao nosso problema original.

questionAnswers(2)

yourAnswerToTheQuestion