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%)
-----


Heh jednak nie działało już poprawiłem (IMG:style_emoticons/default/smile.gif) zastanawiam się czy spłaszczenie tablicy nie można zrobić w inny ładniejszy sposób (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.  
  6. $news_count[$i] = $this -> db -> query("SELECT COUNT(*) AS like" . $i . " FROM star WHERE area LIKE " . $i . "") -> row_array();
  7.  
  8. }
  9.  
  10. //spłaszczam tablice
  11. $a=1;
  12. foreach($news_count as $k=>$v) foreach($v as $k2=>$v2) { $splash[$a] = $v2; $a++; } var_export($splash ,true);
  13.  
  14. // wybieram najmniejsza wartość
  15. $i_min = '1';
  16. for ( $i = 1; $i <= 20; $i++ ){
  17. if ( $splash[$i] < $splash[$i_min] )
  18. $i_min = $i;
  19. }
  20. $area = $i_min;
  21.  
  22. //generuje losowe położenie
  23. $newX = mt_rand(0, 512);
  24. $newY = mt_rand(0, 310);
  25. $newZ = mt_rand(0, 10);
  26.  
  27. // na koniec zwracam wartości potrzebne do zapisania w bazie danych
  28. //oraz sprawdzam czy taka gwiazdka juz nie istnieje
  29.  
  30. $query = $this -> db -> query("SELECT COUNT(id) FROM star WHERE x = " . $newX . " AND y = " . $newY . "") -> row_array();
  31.  
  32. if ($query['COUNT(id)'] > 0) {
  33.  
  34. echo "Taka gwiazdka istnieje spróbuj jeszcze raz!";
  35.  
  36. } else {
  37. return array($newX, $newY, $newZ, $area);
  38.  
  39. }


Ten post edytował dexter00 16.11.2012, 14:38:57
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: 4.10.2025 - 16:39