Algoritmus pro výpočet vzdáleností od určité GPS pozice v definovaném okruhu
Dan
27. 2. 2008 18:14:03
27. 2. 2008 18:14:03
grenson
27. 2. 2008 21:02:59
27. 2. 2008 21:02:59
Veros
27. 2. 2008 21:46:49
27. 2. 2008 21:46:49
Dan
27. 2. 2008 22:11:51
27. 2. 2008 22:11:51
Veros
27. 2. 2008 22:21:45
27. 2. 2008 22:21:45
Dan
27. 2. 2008 22:29:00
27. 2. 2008 22:29:00
Jakub Adamus
28. 2. 2008 17:41:34
28. 2. 2008 17:41:34
Slavomír Hošták
28. 2. 2008 23:10:00
28. 2. 2008 23:10:00
kronta
29. 4. 2010 17:00:16
29. 4. 2010 17:00:16
Prodej
Více
Prodej hotového webu Velissya.eu – realitní samoobsluha
180 000 Kč
0 příhozů
Senegal.cz
15 000 Kč
0 příhozů
Prémiová třípísmenná doména MZP.sk (historie od 2007)
1 000 Kč
0 příhozů
Prodám doménu www.druhaliga.sk – Ideální pro sportovní projekty!
1 000 Kč
0 příhozů
Letago.cz na prodej, skvělý inzertní web
3 500 Kč
0 příhozů
class Point { public $x = 0, $y = 0; }
function circle_sql(&$point, $distance) {
$point_a0 = point_dir($point, $distance, 0);
// spocita hlavni ctverec (v tomto kruhu je vepsana kruznice, ve ktere hledas)
// delka strany tohoto ctverce
$q_main_len = abs(2 * ($point -> x - $point_a0 -> x));
// horni levy roh ctverce
$q_top_left = new Point($point -> x - ($q_main_len / 2), $point -> y + ($q_main_len / 2));
// vytvoreni SQL dotazu pro hledani nad danym ctvercem
$q_main_sql = 'x BETWEEN '.($q_top_left -> x).' AND '.($q_top_left -> x + $q_main_len);
$q_main_sql .= ' AND y BETWEEN '.($q_top_left -> y).' AND '.($q_top_left -> y - $q_main_len);
$point_a45 = point_dir($point, $distance, 0);
// ted vedlejsi ctverce, jeden jejich roh je v bode 45deg vzdalenem
// od stredu kruhu, druhy roh je napr. v top left
// delka strany techto ctvercu
$q_small_len = abs($q_top_left -> x - $point_a45 -> x);
// prvni ctverec (nahore vlevo)
// ma stejny roh jako ten velky
$q_small_1_top_left = &$q_top_left;
$q_small_1_sql = 'x BETWEEN '.($q_small_1_top_left -> x).' AND '.($q_small_1_top_left -> x + $q_small_len);
$q_small_1_sql .= ' AND y BETWEEN '.($q_small_1_top_left -> y).' AND '.($q_small_1_top_left -> y - $q_small_len);
// druhy ctverec (nahore vpravo)
// jeho roh je vzdaleny o main_len - small_len vpravo, y ma stejne
$q_small_2_top_left = new Point($q_top_left -> x + $q_main_len - $q_small_len,$q_top_left -> y);
$q_small_2_sql = '...';
// treti ctverec (dole vlevo)
// jeho roh je vzdaleny o main_len - small_len dole, x ma stejne
$q_small_3_top_left = new Point($q_top_left -> x,$q_top_left -> y + $q_main_len + $q_small_len);
$q_small_3_sql = '...';
// ctvrty ctverec (dole vpravo)
// roh je o main_len - small_len u obou souradnic
$q_small_4_top_left = new Point($q_top_left -> x + $q_main_len - $q_small_len,$q_top_left -> y + $q_main_len + $q_small_len);
$q_small_4_sql = '...';
// finalni sql - je v hlavnim ctverci a zaroven neni ani v jednom z tech mensich
return "SELECT id, x, y FROM body WHERE $q_main_len AND NOT ($q_small_1_sql OR $q_small_2_sql ...)";
}
function point_distance(&$point1, &$point2) {
// vrati vzdalenost mezi temito 2 body
return $distance;
}
function point_dir(&$point, $distance, $angle) {
// tahle funkce musi vratit bod, ktery je ve vzdalenosti $distance
// pod uhlem $angle od bodu $point
return $new_point;
}