Avatar
Jenkings
Redaktor
Avatar
Jenkings:

Ahoj, už pár dní řeším problém jak přepočítávat Canvasové souřadnice myši na Isometrickou buňku/pole.

Našel jsem jakýsi návod na této stránce:
http://yal.cc/…etric-grids/
Konkrétně jsem použil demo:
https://dl.dropboxusercontent.com/…ple-iso.html

Bohužel ale při přizpůsobení pro můj problém, se mi nedaří tento převod zprovoznit. Vždy vycházejí nesmyslné hodnoty.

Můj kód:

var CoordinatesRecalculator = function(off,tileS) {
    this.offset = off; // vektor (x,y) pro uložení posunu mapy vůči canvasu (posun horního vrcholu mapy od souřadnic 0.0 na canvasu)
    this.tileSize = tileS; // vektor (x,y) pro uložení rozměrů jednoho políčka

    this.localCoords = function(GlobalX,GlobalY) {
                LX = ((GlobalX - this.offset.x) / this.tileSize.x + (GlobalY - this.offset.y) / this.tileSize.y) / 2;
                LY = ((GlobalY - this.offset.y) / this.tileSize.y - (GlobalX - this.offset.x) / this.tileSize.x) / 2;
                return {x:LX, y:LY};
    }
};
Editováno 26. srpna 8:28
Odpovědět 26. srpna 8:28
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
Odpovídá na Jenkings
Libor Šimo (libcosenior):

vektor (x, y)
x je lavy horny roh policka
y je pravy spodny roh policka
Vychadzas z tohoto?

Nahoru Odpovědět 26. srpna 8:46
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jenkings
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jenkings:

Asi mi zřejmě něco uniká.
Předpokládal jsem, že v parametru předám v offsetu jen posun mapy vůči plátnu o x a y. A druhým parametrem je jen výška a šířka daného kosočtverce(po­líčka). Pak tedy taky nerozumím co přesně je u kosočtverce "pravý dolní roh".. ?

Nahoru Odpovědět 26. srpna 8:53
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
Odpovídá na Jenkings
Libor Šimo (libcosenior):

Vychádzal som z dema, ktoré si uviedol.
Ak som správne pochopil tvoj zámer, chceš aby pri kliku na niektoré políčko sa v ňom niečo spravilo a je jedno či klikneš uprostred alebo v rohu.
Je to tak?

Nahoru Odpovědět 26. srpna 9:04
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jenkings
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jenkings:

V podstatě ano, zatím mi jde jen o určení indexu pole, na kterém se nachází kurzor.
Pro ilustraci tady je odkaz na celý můj script: http://jenkings.eu/…y/isometric/
Do konzole prohlížeče se vypisují debug informace o souřadnicích myši, a za nimi by měl být zobrazen index políčka na kterém se nachází kurzor

Nahoru Odpovědět 26. srpna 9:12
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
Odpovídá na Jenkings
Libor Šimo (libcosenior):

Sú tam hodnoty od -1 do 3, teda pole je 4 * 4 políčka? Prečo je tam hodnota -1?

Nahoru Odpovědět 26. srpna 9:23
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jenkings
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jenkings:

O to mi právě jde. Někde dělám chybu a ten přepočet prostě vůbec nefunguje.
Záhadně se to přepočítává někde uprostřed políček atd. Reálná velikost mapy je vidět v souboru globals.js, tedy 6x8

viz:

var map = [
  [0,0,3,1,1,1,1,1],
  [1,1,3,3,1,0,0,0],
  [0,0,0,0,1,0,1,1],
  [1,1,0,0,0,0,1,2],
  [1,1,0,0,0,1,1,2],
  [1,1,1,1,0,1,1,1]
];
Nahoru Odpovědět 26. srpna 9:31
Největší časovou náročnost má výpočet časové náročnosti..
Avatar
Odpovídá na Jenkings
Libor Šimo (libcosenior):

Sorry, pole má 3 * 4 políčiek. Len tá dlhšia časť je špatne rozdelená.
zľava: pol políčka, 3 * celé políčko, pol políčka.
Ale to určite vieš.

Nahoru Odpovědět 26. srpna 9:35
Aj tisícmíľová cesta musí začať jednoduchým krokom.
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.