Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wykres funkcji liniowej
Forum PHP.pl > Forum > PHP
Divinity
Piszę skrypt w oparciu o bibliotekę GD, który będzie rysować wykres funkcji liniowej. Układ współrzędnych już narysowałem i teraz chciałbym, aby każde 20 pikseli było traktowane jako jednostka, a wykres rysowany w sposób odpowiedni, a nie od górnego lewego punktu. Tylko kompletnie nie wiem jak się za to zabrać. Gdyby ktoś mógł pomóc będę bardzo wdzięczny.

Kod skryptu:

  1. <?
  2. header("Content-type: image/png");
  3. $obraz = ImageCreateTrueColor(1000, 550);
  4. $sox = -20;
  5. $soy = 11;
  6.  
  7. // Definicje kolorów
  8. $kolor['1'] = ImageColorAllocate($obraz, 0, 0, 0);  // czarny
  9. $kolor['2'] = ImageColorAllocate($obraz, 255, 255, 255); // biały
  10. $kolor['3'] = ImageColorAllocate($obraz, 255, 255, 0);  // żółty
  11. $kolor['4'] = ImageColorAllocate($obraz, 0, 0, 255);  // niebieski
  12. $kolor['5'] = ImageColorAllocate($obraz, 0, 255, 0);  // zielony
  13. $kolor['6'] = ImageColorAllocate($obraz, 255, 0, 0);  // czerwony
  14.  
  15.  
  16. imagefill ($obraz, 0, 0, $kolor['2']);
  17. imageline ($obraz, 0, 275, 1000, 275, $kolor['1']); //oś OX
  18. imageline ($obraz, 500, 0, 500, 551, $kolor['1']); //oś OY
  19.  
  20. for ($i=0; $i<=1000; $i++) { //podziałka osi OX
  21. imageline ($obraz, $i, 272, $i, 278, $kolor['1']);
  22. $i+=24;
  23. }
  24.  
  25. for ($i=0; $i<=1000; $i++) { //skala osi OK
  26. imagestring ($obraz, 'arial.ttf', $i, 280, $sox, $kolor['1']);
  27. $i+=24;
  28. $sox++;
  29. }
  30.  
  31. for ($i=0; $i<=550; $i++) { //podziałka osi OY
  32. imageline ($obraz, 497, $i, 503, $i, $kolor['1']);
  33. $i+=24;
  34. }
  35.  
  36. for ($i=0; $i<=550; $i++) { //skala osi OY
  37. imagestring ($obraz, 'arial.ttf', 505, $i, $soy, $kolor['1']);
  38. $i+=24;
  39. $soy--;
  40. }
  41.  
  42. for ($x=0; $x<=1000; $x++) { //rysowanie wykresu funkcji
  43. $y = $x;
  44. ImageSetPixel($obraz, $x, $y, $kolor['6']);
  45. } 
  46.  
  47. imagePNG($obraz);
  48. ImageDestroy($obraz);
  49. ?>


Z góry dziękuje za pomoc
Pozdrawiam
LBO
imageline()

nie wiem po co rysujesz wykres pixel po pixel.. skoro to jest funkcja liniowa -> rysuj linie biggrin.gif (ewentualnie wyjatki zazncz typu f(x) = |x|..
Divinity
To akurat problem nie jest, tylko zastanawiam się jak zrobić, żeby wykres był rysowany względem początku układu współrzędnych, a nie początku obrazka.

Pozdrawiam
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.