Autor Zpráva
Watchick
Profil
Zdravím, chtěl bych se zeptat:
mám takovouto mapu:

Žlutá vesnice je výchozí pozice... (tedy souřadnice 61/3)
vzdálenost k 61/1 je "2 políčka"
vzdálenost k 62/1 je "2,236 políčka" (počítá se phytágorovou větou tedy 2^2 + 1^2 = hledanavzdalenost^2)
vzdálenost k 58/0 je "4,242 políčka" (počítá se phytágorovou větou tedy 3^2 + 3^2 = hledanavzdalenost^2)

Potřeboval bych vypsat třeba 300 vesnic (od nejbližších po ty nejdále), + každá má v tabule vlastní typ, a chtěl bych zvolit třeba jen ty, které mají typ < 100, od tech, co jsou nejblize... a vypsat jich třeba 300...
jde tedy nějak takto porovnat vesnice hned v databázi, nebo se to musí pročítat a seřadit to až v php, a jak?
Díky moc Watchick

PS v databazi je treba 20 000 vesnic, tak to procitani asi moc nepřichází v úvahu že?...
AM_
Profil
určitě to půjde v databázi, vzdálenost je odmocnia z ((x2-x1) na druhou + (y2-y1) na druhou), jak se dělají mocniny v MySQL si najdeš v referenci, to z hlavy nevím...
pak něco jako SELECT (nejaky ty operace) AS vzdalenost FROM neco ORDER BY vzdalenost
TomášK
Profil
Šlo by tohle? Nebo něco přehlížím v zadání?
$vychozi_x = 61;
$vychozi_y = 3;
$limit = 300;

SELECT *, SQRT(POW((x - $vychozi_x), 2) + POW((y - $vychozi_y), 2)) AS vzdalenost FROM vesnice WHERE typ < 100 ORDER BY vzdalenost LIMIT $limit


Edit: zase jsem druhý :(
watchick
Profil *
ok, zkusim, diky jen pro moje info ted uplne nestiham sledovat logickou stranku toho odmocnovani v prikazu... najde to vednice vsemy snery ze?nemela by tam byt absolutni hodnota z Y - vychozy_y?
Alphard
Profil
watchick:
nemela by tam byt absolutni hodnota z Y - vychozy_y?
Nevím, jak přesně to myslíte, ale žádná absolutní hodnota tam být nemusí.
Odmocňujeme součet sudých mocnin, není probém.

Pokud vás ta vzdálenost nezajímá, nemusí tam ta odmocnina být vůbec. Porovnání bude stejné.
Watchick
Profil
Alphard
Jo, jasně, -2^2 jsou take 4 :) moje chyba :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0