Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Tworzenie paraboli
Forum PHP.pl > Forum > Przedszkole
patryk9200
Cześć,
Mam pytanie jak w PHP stworzyć parabolę za pomocą GD?
Muszę stworzyć parabolę funkcji kwadratowej, mam funkcję która oblicza punkty na wykresie przez które ma przechodzić. Narysowałem tylko osie ale paraboli nigdzie nie umiem znaleźć jak zrobić.
Kshyhoo
Użyj Google
patryk9200
dzięki za podpowiedź, znalazłem ciekawy kod ale zamiast obrazka otrzymuję krzaki, co jest nie tak?
  1. <?php
  2. $limit=1000;
  3. $im = imagecreate($limit,$limit);
  4. $bgcolor = imagecolorallocate($im,0,0,0); // white background
  5. $for = imagecolorallocate($im,255,0,0);
  6. $xy= imagecolorallocate($im,0,0,225);$gray = imagecolorallocate($im,0,100,0);for($i=0;$i<=$limit;$i=$i+20){
  7. imageline($im, $i , 0 , $i , $limit,$gray);
  8. }
  9. for($i=0;$i<=$limit;$i=$i+20)
  10. {
  11. imageline($im, 0 , $i , $limit , $i,$gray);
  12. }
  13. imageline($im, 0, $limit/2, $limit, $limit/2, $xy);imageline($im, $limit/2, 0 , $limit/2, $limit, $xy);$x=1;$y=0;$sublimit=$limit/4;
  14. while($x<23)
  15. {
  16. $x=$x+0.01;
  17.  
  18. $y=($limit/2)-($x*$x);
  19. //imageline($im, $x+($limit/2), $y, $x+($limit/2), $y, $for);
  20. imagesetpixel ( $im , $x+($limit/2) , $y , $for );
  21. }
  22. while($x>-23)
  23. {
  24. $x=$x-0.01;
  25. $y=($limit/2)-($x*$x);
  26. imagesetpixel ( $im , $x+($limit/2) , $y , $for );
  27. }
  28. imagestring($im,5,($limit-($limit/4))-100,($limit-($limit/4)),"By Chetan Mendhe Y=X*X Equation" , imagecolorallocate($im,225,225,225));
  29.  
  30. imagepng($im);
  31. ?>
Kshyhoo
Brak deklaracji nagłówka...

  1. <?php
  2. ...
  3. header('Content-type: image/png');
  4. imagepng($im);
  5. ?>
patryk9200
Cytat(Kshyhoo @ 28.01.2010, 21:52:15 ) *
Brak deklaracji nagłówka...

[PHP]<?php
header('Content-type: image/png');
imagepng($im);
exit
?>
[PHP]

jak dam tak jak piszesz to wyskakuje błąd:
Warning: Cannot modify header information - headers already sent by (output started at /home/xxyy/ftp/funkcja/wykres.php:1) in /home/xxyy/ftp/funkcja/wykres.php on line 30
pyro
widziałeś już komunikat na tym forum jak próbujesz napisać posta z frazą hea`ders alrea`dy sent by? bez `
patryk9200
widziałem ale cokolwiek zastosuje to i tak nie działa
pyro
No to pokaż co stosujesz.
Fifi209
Upewnij się, że nic wcześniej nie wysyłasz do przeglądarki...

Kodowanie UTF-8? Zakoduj bez BOM.
patryk9200
już mam dzięki

mam jeszcze jeden problem, jak zrobić, żeby parabola przechodziła przez określone punkty na siatce, a jej wierzchołek też można by było dawać w różnych miejscach siatki oto kod:
  1. <?php
  2. header('Content-type: image/png');
  3. //wielkość obrazka
  4. $limit=1000;
  5. $im = imagecreate($limit,$limit);
  6. $bgcolor = imagecolorallocate($im,200,255,255); // white background
  7. $for = imagecolorallocate($im,255,0,0);
  8. $xy= imagecolorallocate($im,0,0,225);
  9. $gray = imagecolorallocate($im,0,100,0);
  10. for($i=0;$i<=$limit;$i=$i+20){
  11. imageline($im, $i , 0 , $i , $limit,$gray);
  12. }
  13. for($i=0;$i<=$limit;$i=$i+20)
  14. {
  15. imageline($im, 0 , $i , $limit , $i,$gray);
  16. }
  17. imageline($im, 0, $limit/2, $limit, $limit/2, $xy);imageline($im, $limit/2, 0 , $limit/2, $limit, $xy);
  18. $x=1;
  19. $y=0;
  20. $sublimit=$limit/4;
  21. //#####################################################################parabola
  22. while($x<23)
  23. {
  24. $x=$x+0.01;
  25. $y=($limit/2)-($x*$x);
  26. //imageline($im, $x+($limit/2), $y, $x+($limit/2), $y, $for);
  27. imagesetpixel ( $im , $x+($limit/2) , $y , $for );
  28. }
  29. while($x>-23)
  30. {
  31. $x=$x-0.01;
  32. $y=($limit/2)-($x*$x);
  33. imagesetpixel ( $im , $x+($limit/2) , $y , $for );
  34. }
  35. //######################################################################Parabola
  36. imagestring($im,5,($limit-($limit/5))-100,($limit-($limit/25)),"Wykres funkcji: " , imagecolorallocate($im,225,225,225));
  37. imagepng($im);
  38.  
  39. ?>
Kshyhoo
Kombinuj...
$limit/2 zmienia wierzchołek
patryk9200
Cytat(Kshyhoo @ 28.01.2010, 23:46:24 ) *
Kombinuj...
$limit/2 zmienia wierzchołek


to już dawno odkryłem natomiast nie umiem sobie poradzić z wielkością paraboli jak ją zmienić, jeszcze jedno jak zrobić żeby jak dam np. 2.5 to się przesunie o 2.5 kratki a nie tak jak teraz nie wiadomo w gdzie, zwiększając np. o 1 i tak dalej okazuje się że wielkość nie jest stała, może znacie inny sposób na to?

Kshyhoo
Parabola jest wykresem funkcji kwadratowej w postaci y=ax2+b. Jeżeli a jest dodatnie, ramiona paraboli skierowane są do góry. b odpowiada za "start" wierzchołka paraboli. Tyle matematyki. nie ma to się nijak do skryptu, gdzie trzeba kombinować wieloma elementami...
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.