Eli millä kaavalla saan laskettua kahden pisteen välisen matkan pituuden? Käytössä on geometrinen x-y kartta.
Sen tiedän että moinen onnistuu pythagoran lauseella. Etäisyys2 =x2 + y2
Mutta entäpä jos mennään pakkasen puolelle?? eli esimerkiksi matkustetaan pisteestä a(x -8 | y -7) pisteeseen b(x 9 | y -7) ??
Vaikeutetaan hommaa vielä siten että Jos kartan reunat yhidstettäisiin alareuna yläreunaan ja vasen- oikeaan- reunaan.. Tästä saamme donitsin muotoisen kartan, eikö niin??
Näin pisteestä a pisteeseen b olisi lyhyempi reitti ylittämällä kartan reuna..
Eli: tähän haen vastausta, miten saan laskettua etäisyyden ns. donitsi kartalla?
Toivottavasti joku ymmärsi ja osaa hjelppiä :D
Negatiivisilla arvoilla lasketaan samalla tavoin, kuin positiivisillakin arvoilla. Jos sinua pelottaa kohdata matematiikan ilkeä todellisuus voit aina tietenkin käyttää koordinaatin itseisarvoa.
Kerrohan tarkemmin tuosta donitsistasi, missä origo sijaitsee ja miten pisteet jakaantuvat tuon donitsin pinnalle.
Toivottavasti ymmärrät speksata paremmin.
Eli pelaan Travian -nimistä peliä ja suunnitelmissa olisi koodata itse pari työkalua PHP:lla. Tässä pelissä kartta on 801 x 801 kokoinen..
Tämän pitäisi selventää tuota "donitsin muotoista karttaa" :
Tossa toisessa kuvassa näkyy paremmin (0|0) keski piste, sekä (-400|400), (-400|-400), (400|-400) ja (400|400).. Eli ääri pisteet..
Eli käytännössä jos pisteet a ja b on tarpeeksi lähellä ääri reunaa, tulee matka lyhyemmäksi, jos ylitetään reuna.
Eli tuohon esimerkkiini soveltaen piste a(x -8 |y -7) ja piste b(x 9 |y -7) pythagoran lauseella matka olisi 17ruutua.
Donitsi mallissa matka olisi lyhyempi, jos hypättäisiin ns. alarajan (-10) ylitse, ja päädyttäisiin jatkamaan matkaa vastakkaisesta reunasta.
Jollain foorumilla tuosta donitsista käytettiin myös geometristä nimeä: Torus. Kun yritin etsiä... tuloksetta, laskukaavaa tähän propleemaani..
No eipä ole kovin vaikeaa. Jos kahden pisteen välisen etäisyyden d x- tai y-komponentti on > 400 niin etäisyyskomponentti on 800-d. Sama pätee siis yhtä aikaa sekä x että y -koordinaatissa ja kokonaisetäisyys saadaan sitten noista etäisyyden komponenteista pythagoraalla.
En ole mikään matikka nero, mutta eikös tuo toi vain jos kuljetaan suoraan pysty- tai vaaka- suunnassa kartalla?? Jos kuljetaan karttaa 45asteen kulmassa (0|0 pisteestä 400|400 pisteeseen), niin pisin mahdollinen matka on 565.69 ruutua, joten tuota "Jos etäisyys on >400" -scriptiä ei voi käyttää tässä...
Korjaa jos olen väärässä.
Siinä tarkistetaan erikseen x- ja y-suuntainen etäisyys, ja kumpikaan erikseen ei voi olla yli 400 ruutua.
Niin siis maksimietäisyyshän on (400^2 + 400^2)^.5 eli juurikin se noin 565,69.
:D Aivan niin... Minäkin voisin lukea koodin ajatuksen kanssa ennen kuin alan kyseleen...
SuurKiitos tästä funktiosta, testailenkin sitä heti huomenissa... Sen verran täytyy kysyä, että mitä toi "abs($x1 - $x2);" funktio tekee?
Palauttaa $x1 - $x2 laskutoimituksen itseisarvon. Eli siis jos $x2 on suurempi kuin $x1 niin palauttaa $x2 - $x1, muuten $x1 - $x2. Eli etäisyys on tietenkin aina plusmerkkinen, kuljettiin kumpaan suuntaan tahansa.
Noniin nyt olen taas viisaampi amatööri :P
Aihe on jo aika vanha, joten et voi enää vastata siihen.