Diskuze: Sachovnice

C# .NET .NET (C# a Visual Basic) Sachovnice American English version English version

Avatar
Lunil
Člen
Avatar
Lunil:

Ahojte ;)
Mam na vas taky malicky dotazik :)
Model :
Mam 2rozmernu sachovnicu. Jej velkost je premenliva, takze pouzivam na nu dynamicke int[][][]; X,Y ukazuje suradnicu v sieti, Z zatial vidi / nevidi.

Ked to vykreslujem, prechadzam cele pole. Vypocitavam kazdeho polica (1 stvorcek ma zatial 100x100 pixlov) kde ma byt vykreslene, ak mi padne do vyseku zobrazenia, nakreslim ho. Vsetko facha dobre, este aj posuvanie myskou mi ide. Posuvanie spociva v tom, ze mu poviem zdialenost od bodu 0,0 a dlzku kolko ma vykreslit. napriklad, vysek zacina 200X,200Y a dlzky 300X, 250Y.

Problematika:
Ked som zacal robit scale, narazil som na malicky problem, Ono mi to vsetzko zoomuje vzhladom na pociatok suradnicoveho systemu. Je to samozrejme logicke, ak mam 4 policka vedla seba a dam scale 0.5, tak na pociatku 2heho policka pri scale 0.5 zacina 3tie policko. Lebo bod 0,0 sa nezmenil.
Ako dokazem zmenit pociatok 0,0 (popripade moj posun) vzhladom na scale?

Najblizsie som sa dostal k tomu tak, ze posun som vynasobil Scale. Cize som posunul pociatok suradnicoveho systemu ta, ze lavy horny roh je vzdy ten isty a prava strana a spodok sa prisposobuju. Lenze chcel by som aby stred vyseku bol vzdy ten isty a aj nalavo, napravo, hore, dole sa mi to prisposobovalo.

Projekt :
1 vizualizacia je lepsia ako 10 opisov.
http://ulozto.sk/…/projekt-zip

Za odpoved vopred dakujem :)

Editováno 9.6.2013 14:40
Odpovědět 9.6.2013 14:37
Neustalym resetovanim pocitaca ho dovedieme do pozadovaneho stavu. O:-)
Avatar
Lunil
Člen
Avatar
Lunil:

Prosim, moze to niekto presunut na spravne forum?
Ono to patrilo do ".NET (C# a Visual Basic)" -> XNA
Moc sa ospravedlnujem za zmetok :(

Nahoru Odpovědět 9.6.2013 14:45
Neustalym resetovanim pocitaca ho dovedieme do pozadovaneho stavu. O:-)
Avatar
TomBen
Redaktor
Avatar
Nahoru Odpovědět 9.6.2013 16:46
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Lunil
David Čápka:

Nějak jsem se v tom ztratil. Ty chceš aby ti to zoomovalo tam, kde je myš a ne vždy do počátku, je to tak? Mělo by stačit vzít pozici myši, vynásobit to scalem a o rozdíl oproti původní pozici posunout vykreslovanou šachovnici.

Nahoru Odpovědět 9.6.2013 20:19
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Lunil
David Čápka:

Možná o půlku rozdílu, teď nevím, musíš to zkusit :D

Nahoru Odpovědět 9.6.2013 20:20
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Lunil
Člen
Avatar
Lunil:

No nie, uvediem priklad
mam okno o dlzke 400 pixelov, mam 40 policok, kde jedno policko je siroke 100 pixelov
ked mam posun o 0 pixelov, tak na obrazove vidim policka 1, 2, 3, 4
ked mam posun o 200 pixelov, tak na obrazove vidim policka 3, 4, 5, 6
to je scale 1
ked dam scale 0.5
ked mam posun o 0 pixelov, tak na obrazove vidim policka 1, 2, 3, 4, 5, 6, 7, 8
ked mam posun o 200 pixelov, tak na obrazove vidim policka 3, 4, 5, 6, 7, 8, 9, 10

No a teraz ked pri tom scale sa vraciam postupne k 1
v prvom pripade posun 0 by sa to malo priblizovat k tak, ze stred je medzi 4, 5
v druhom pripade tak ze je stred medzi 6, 7;
Lenze oba pripady sa mi priblizuju tak, ze stred je na policku 1. A nech skusam hociako to matematicky prepocitat, stale mi to taha stred k pociatku suradnicoveho systemu a nie k stredu zobrazenia.

V priklade co som postol zdrojovy kod, ked sa spusti, posuva sa pravim tlacitkom, scale je koleckom. Pri zmene sa to vzdy prejavuje smerom lavy horny roh (cize smer k 0, 0).

Rad by som to vysvetlil lepsie, lenze je to narocne na popis :)

Nahoru Odpovědět 9.6.2013 21:12
Neustalym resetovanim pocitaca ho dovedieme do pozadovaneho stavu. O:-)
Avatar
Lunil
Člen
Avatar
Odpovídá na David Čápka
Lunil:

Super, dakujem za napovedu, pomohlo to co si napisal, akurat namiesto mysky, som dal suradnice stredu vyseku a islo to.
(Dobre priznam sa, musel som hodne rozmyslat, lebo pre mna to bolo hodne nejasne napisane a ked som to pocital nevychadzalo, takze som to zavrhol a dostal som sa k tomu po 2 hodinach rozmyslania :-D )

Pre ostatnych mozno pomoze vzorec :

Xn = (X - Xs)*Scale + Xs

Kde
Xn -> Nova pozicia bodu
X -> xsova suradnica bodu, ktory chcem posunut
Xs -> bod okolo ktoreho sa ma centrovat zoom (scale) (v mojom pripade, stred vyseku)

Takze dakujem za pomoc.

Nahoru Odpovědět  +1 14.6.2013 20:34
Neustalym resetovanim pocitaca ho dovedieme do pozadovaneho stavu. O:-)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Lunil
David Čápka:

Jestli z toho něco vznikne, tak to sem pak hoď :)

Nahoru Odpovědět 17.6.2013 18:46
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.