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
b4rt3kk
post
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Nie wiem czy dobrze zrozumiałem, ale obszar o najmniejszej gęstości (tj. najmniejszej liczby przypisanych punktów) możesz zrealizować jednym prostym zapytaniem.

  1. SELECT area, COUNT(id) AS ile FROM star GROUP BY area ORDER BY ile ASC LIMIT 0,1


Jako wynik otrzymasz nazwę (identyfikator) obszaru oraz liczbę przypisanych punktów.

Nie wiem jak ustanawiasz te obszary, ale jeśli np. w bazie są współrzędne początku i końca obszaru, to teraz je pobierasz na podstawie wyniku poprzedniego zapytania. Załóżmy, że otrzymujesz już taki wynik:

  1. $x0, $x1, $y0, $y1; // współrzędne obszaru
  2.  
  3. // można teraz wylosować współrzędne nowego punktu
  4.  
  5. $newX = mt_rand($x0, $x1);
  6. $newY = mt_rand($y0, $y1);
  7. $z = mt_rand(0,10);
  8.  
  9. // sprawdzasz znów bazę czy punkt takowy już nie istnieje
  10. $query = "SELECT COUNT(id) FROM star WHERE x = '$newX' AND y = '$newY'";
  11. // jeśli punkt istnieje, losujesz ponownie współrzędne, a jeśli nie to możesz go zapisać do bazy


I to chyba tyle?

Ten post edytował b4rt3kk 15.11.2012, 17:32:59
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 17.10.2025 - 15:56