Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Algorytm przyporządkowujący losowo współrzędne na obszarze, Algorytm przyporządkowujący losowo współrzędne na obszarze
dexter00
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 15.11.2012
Skąd: warszawa

Ostrzeżenie: (0%)
-----


Witam,

No więc z php rozpocząłem swoją przygodę nie dawno (na początku października), w tej chwili pracuje na frameworku- Codeigniter, i stanąłem przed takim zadaniem muszę napisać w php i mysql algorytm który będzie przypisywał mi trzy współrzędne X,Y,Z dodawanego obiektu (punktu) na obszarze (np. obrazku) o wielkości 2560x1240 px . A teraz do rzeczy:

Dane:
punkt (0,0,0) znajduję się w lewym górnym rogu grupy powierzchni roboczej.
X - szerokość
Y- wysokość
Z- losowa wartość od 1 do 10
area- grupa do której należy obiekt (od 1 do 20 )

baza zawierająca dane obiektu:
(IMG:http://www.wyslij.nazwa.pl/praca/baza.png)

obszar jest podzielony na 20 części, każda ma swoją gęstość która będzie miała wyliczana dzięki danym z bazy (ilość wystąpień np 1 w kolumnie area) ,
(IMG:http://www.wyslij.nazwa.pl/praca/obszar.png)

No i na czym polega trudność - przy dodawaniu nowego obiektu muszę zbadać gęstość każdego obszaru (1-20) następnie wybrać ten z najmniejsza gęstością i przypisać ją do obiektu, przypisać w obszarze (np.2) losowe współrzędne (z zakresu X- 0:512 i Y - 0:248 Z- losowo od 1 do 10).

Nie wiem jak się do tego wszystkiego zabrać, jakieś podpowiedzi z jakich bibliotek, funkcji php,mysql mógłbym skorzystać przy tym zadaniu?

Z góry dziękuję za pomoc (IMG:style_emoticons/default/smile.gif)



Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dexter00
post
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 15.11.2012
Skąd: warszawa

Ostrzeżenie: (0%)
-----


No i teraz moje tablice mają sens , już wszystko działa , tylko zastanawiam się czy to nie będzie za bardzo obciążało serwera bo pętla for wykonuje w sumie 20 zapytań do bazy (IMG:style_emoticons/default/smile.gif)


  1. public function addStar() {
  2.  
  3. // znajdowanie najmniejszej gęstości poprzez sprawdzenienie ile razy występuje dany rekord np. obszar 1
  4. for ($i = 1; $i <= 20; $i++) {
  5. $news_count[$i] = $this -> db -> query("SELECT COUNT(*) AS like" . $i . " FROM star WHERE area LIKE " . $i . "") -> row_array();
  6.  
  7. }
  8. //otrzymuje tablice 1 do 20 gdzie mam ilość wystąpień:
  9.  
  10. // wybieram najmniejsza wartość
  11. $choose = min(array_filter($news_count));
  12.  
  13. //zapisuje do zmiennej v indeks tablicy
  14. $v = array_keys($choose);
  15. //$area zwraca mi numer obszaru
  16.  
  17. $area = substr($v[0], 4, 10);
  18. $newX = mt_rand(0, 512);
  19. $newY = mt_rand(0, 248);
  20. $newZ = mt_rand(0, 10);
  21.  
  22. // na koniec zwracam wartości potrzebne do zapisania w bazie danych
  23. //oraz sprawdzam czy taka gwiazdka juz nie istnieje
  24.  
  25. $query = $this -> db -> query("SELECT COUNT(id) FROM star WHERE x = ".$newX." AND y = ".$newY."") -> row_array();
  26.  
  27. if ($query['COUNT(id)'] > 0) {
  28.  
  29. echo "Taka gwiazdka istnieje spróbuj jeszcze raz!";
  30.  
  31. } else {
  32. return array($newX, $newY, $newZ, $area);
  33. }
  34.  
  35. }
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 05:11