Je développe un logiciel de navigation tour par tour et j'utilise la solution suivante pour faire mes lignes de routes en 2.5D ou 3DProblème avec vue plongeante ou le rendu 2.5D de carte
Draw 2.5D or 3D Map with C# from lines
Cependant, au-dessus de la solution est tout à fait acceptable pour des lignes au sein de l'orifice de visualisation qui est 0 x largeur < < et 0 < y < hauteur. Cependant, il y a des lignes que ses points peuvent avoir 0 ou 0 x < 0 ou x < 0 ou y> hauteur ou x> largeur et puis la solution ci-dessus est devenu fou. Quelqu'un pourrait-il m'aider à comprendre comment résoudre le problème?
vvvv Avec algorithme 3D vvvv
.
vvvv Sans algorithme 3D vvvv
mise à jour :: Après avoir utilisé ce code
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;
La carte devient comme suit
Je pense qu'il ya quelque chose de mal avec Y calculs quand ils vont chemin au-delà des valeurs négatives. J'utilise Qt et des fissures à la ligne semble bug avec Qt renderer, pas lié à notre problème d'origine.
Oui, aussi, au lieu de tracer une ligne d'épaisseur constante, déterminez le polygone correspondant (rectangle) dans les coordonnées de la carte source. Mappez ces 4 sommets en utilisant la transformation pour faire un polygone à dessiner (au lieu d'une simple ligne). Cela fera en sorte que les routes plus éloignées seront plus petites, comme il se doit. –
@Tom, merci pour l'entrée. @brainjam, pourriez-vous s'il vous plaît fournir une équation comme x = ****** ou un extrait de code pour moi? Mes faibles maths me rendent incapable d'obtenir un code de travail à partir d'un article wiki. Merci beaucoup – VOX
@VOX, j'ai ajouté une suggestion de transformation. – brainjam