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.