Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP GD] - czesc wspolna 3 okregow
Forum PHP.pl > Forum > PHP
Kostek.88
Witam Was smile.gif

Mam nastepujacy problem... otoz tworze taki skrypt-ankiete, gdzie odpowiadacie dajmy na to - na 15 pytan. Kazde z tych pytan przyporzadkowane jest jednej z 3ch grup (uzytkownik nie wie jakiej). Na koncu wyswietla mi sie nastepujacy rezultat:



1) Kazdy okrag reprezentuje osobna grupe.
2) Jak zauwazyliscie, uzytkownik dal najwiecej poprawnych odpowiedzi na pytania z grupy 1. i 2., natomiast w 3. mniej (dlatego okrag jest mniejszy).

Ogolnie mam juz pewien kod (ponizej). Moj problem polega na tym, by:

1) pokolorowac czesc wspolna okregow na wybrany kolor
2) okregi musza byc zawsze generowane od srodka. W ponizszym kodzie, jesli wygenerujemy za male okregi, nie nachodza one na siebie.

PS. Sorki za brak PL znakow.

  1. public function rysuj($circle_1 = 100, $circle_2 = 100, $circle_3 = 100)
  2. {
  3. $circle_1 = $circle_1/100;
  4. $circle_2 = $circle_2/100;
  5. $circle_3 = $circle_3/100;
  6.  
  7. $image_width = 910;
  8. $image_height = 600;
  9.  
  10. if($image_width < $image_height){
  11. $base = $image_width;
  12. }else{
  13. $base = $image_height;
  14. }
  15.  
  16. // utworzenie pustego obrazka
  17. $image = imagecreatetruecolor($image_width, $image_height);
  18.  
  19. // kolory
  20. $white = imagecolorallocate($image, 255, 255, 255);
  21. $black = imagecolorallocate($image, 128, 128, 128);
  22. $orange = imagecolorallocate($image, 214, 111, 0);
  23.  
  24. // wypelnienie
  25. imagefill($image, 0, 0, $white);
  26.  
  27. $circle_1_height = round((($base/1.6))*$circle_1);
  28. $circle_1_x = $image_width/2;
  29. $circle_1_y = ($image_height/3);
  30.  
  31. $circle_2_height = round((($base/1.6))*$circle_2);
  32. $circle_2_x = $image_width/3;
  33. $circle_2_y = ($image_height/3)*2;
  34.  
  35. $circle_3_height = round((($base/1.6))*$circle_3);
  36. $circle_3_x = ($image_width/3)*2;
  37. $circle_3_y = ($image_height/3)*2;
  38.  
  39.  
  40.  
  41. // rysowanie okregow
  42. imageellipse($image, $circle_1_x, $circle_1_y, $circle_1_height, $circle_1_height, $orange);
  43. imageellipse($image, $circle_2_x, $circle_2_y, $circle_2_height, $circle_2_height, $orange);
  44. imageellipse($image, $circle_3_x, $circle_3_y, $circle_3_height, $circle_3_height, $orange);
  45.  
  46. // zmiekczenie linii
  47. imagefilter($image, IMG_FILTER_SMOOTH, 4);
  48.  
  49.  
  50. // wynik obrazka
  51. header("Content-type: image/png");
  52. imagepng($image);
  53.  
  54. imagedestroy($image);
  55. }


Sinevar
Może oprzeć się na: http://mathworld.wolfram.com/Circle-CircleIntersection.html, sprawdzić tak dla każej pary okręgów, a następnie porównać z trzecim okręgiem ?

Znalazłem jeszcze:
- http://www.matmana6.pl/tablice_matematyczn...e_dwoch_okregow
- http://www.google.com/url?sa=t&rct=j&a...GYw&cad=rja
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.