Diskuze: Přepočet bodů GDI Polyline na okno když část trasy dočasně okno "opustí"
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Nejprve musíš zjistit, která souřadnice je poměrové dál než ta druhá. Př. Má-li souřadnici A[x,y] = A[11000,10000], pak poměr x = x / 1920 a poměr y = y / 1080. Z toho je patrné, že poměr y je větší než pomer x. Proto se budeš řídit dle osy y. A právě hodnota 1080 bude odpovídat hodnotě y, tedy hodnotě 10000. x hodnota bude (11000/10000)*1080. Poměr stran je zachován, všechny body se Ti vejdou do obrazovky a zároveň využíváš její maximální velikost.
Není mi jasné, jak to myslíš. Geografické rozměry obrazovky mám dané a nechci je zatím měnit, viděl bych méně bodů v oblasti, která mě zajímá. Problém je jen to, když část bodů (jejich souřadnice), "opustí" v průběhu trasy (počet bodů pro Polyline) geografickou oblast obrazovky.
Pokud nechceš měnit geografické rozměry, musíš vybrat z listu souřadnic ty, které vyhovují povolenému rozsahu. Při urcitem přiblížení máš nějaký koeficient a použití tohoto koeficientu spolu s testovanou souřadnici získas pozici na obrazovce. Pokud je tato pozice větší než rozsah obrazovky, posouvas se na další souradnici.
To by bylo dost náročné. Trasa může mít okolo 5 000 bodů a dočasně "opustit" obrazovku může jen malá část bodů. Problém je v tom, že nemohu předat Polyline záporné hodnoty souřadnic obrazovky, když dané body "opustí" geografickou plochu a nevím, jakou hodnotu pro takovéto body zadat. 0, 0 by odkazovalo na levý horní roh obrazovky. Je také možné, že Polyline vynese jen body, které jsou všechny "vykreslitelné". Body mohou trasu dočasně opustit i v několika úsecích. Ideální by asi bylo použit nějakou funkci, která by přes "matici" obrazovky vybrala body, které lze vykreslit, i když by pak trasa nebyla na obrazovce spojitá.
Testování 5000 souřadnic je otázkou několika desítek max stovek ms. Testuje se na platný rozsah obrazovky. S body, které jsou mimo, se nezaobiras. Tu funkci Ti od začátku popisuji.
V noci mě napadlo, jak na to. Pokud je LON souřadnice daného bodu vlevo za levým okrajem obrazovky, uložím x = 0. Už to funguje, jak má.
Ještě zkusím, zda bych ušetřil cyklus na přepočet GPS souřadnic na body na obrazovce pomocí funkce SetWorldTransform a SetMapMode MM_ANISOTROPIC.
Zobrazeno 7 zpráv z 7.