Problem mit Vogelperspektive oder 2.5D-Rendering von Map

Ich entwickle eine Turn-by-Turn-Navigationssoftware und verwende die folgende Lösung, um meine Straßenlinien in 2.5D- oder 3D-Ansicht umzuwandeln.

Draw 2.5D oder 3D Map mit C # aus Linien

Die obige Lösung ist jedoch für Linien innerhalb des Ansichtsfensters völlig in Ordnung, die 0 <x <width und 0 <y <height sind. Es gibt jedoch Linien, deren Punkte y <0 oder x <0 oder y> Höhe oder x> Breite haben können, und dann ist die obige Lösung verrückt geworden. Kann mir jemand helfen, das Problem zu lösen?

vvvv Mit 3D-Algorithmus vvvv

.

vvvv Ohne 3D-Algorithmus vvvv

Update :: Nach der Verwendung dieses Codes

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;

Die Karte wird wie folgt

Ich denke, bei Y-Berechnungen stimmt etwas nicht, wenn sie weit über negative Werte hinausgehen. Ich verwende Qt und Risse in der Zeile scheinen ein Problem mit dem Qt-Renderer zu sein, das nicht mit unserem ursprünglichen Problem zusammenhängt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage