Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Układ równań wykres
kamil1114
post 16.03.2010, 21:00:20
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Chciałbym narysować w php wykres rozwiązania układu równań.

Na przykład żeby wyglądał tak jak na tej stronie: http://r065.prv.pl/ , czyli dwie osie x i y i prosta. Proszę o pomoc.

Tu mam kod , który tylko rozwiązuje układ równań , jak by ktoś mógł rzucić okiem , czy wszystko jest w nim ok:

  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <form method="get">
  6. Podaj a:<br/>
  7. <input type="text" name="a"><br/>
  8. Podaj b:<br/>
  9. <input type="text" name="b"><br/>
  10. Podaj c:<br/>
  11. <input type="text" name="c"><br/>
  12. Podaj d:<br/>
  13. <input type="text" name="d"><br/>
  14. Podaj e:<br/>
  15. <input type="text" name="e"><br/>
  16. Podaj f:<br/>
  17. <input type="text" name="f"><br/>
  18. <input type="submit" value="Oblicz">
  19. </form>
  20.  
  21. <?php
  22. $a=$_GET['a'];
  23. $b=$_GET['b'];
  24. $c=$_GET['c'];
  25. $d=$_GET['d'];
  26. $e=$_GET['e'];
  27. $f=$_GET['f'];
  28.  
  29.  
  30.  
  31. if(isset($a) && $a != 0 && isset($b) && $b != 0 && isset($c) && $c != 0 && isset($d) && $d !=0 && isset($e) && $e !=0 && isset($f) && $f !=0){
  32.  
  33.  
  34. if($a != $d && $b != $e && $c != $f){
  35.  
  36.  
  37.  
  38.  
  39. $x = ($e * $c - $f * $b) / ($d * $b - $e * $a);
  40. $y = ($f * $a - $d * $c) / ($d * $b - $e * $a);
  41.  
  42.  
  43.  
  44. echo "x= $x<br/>";
  45. echo "y= $y";
  46.  
  47. }
  48.  
  49. else echo ("Proste pokrywaja się");
  50.  
  51. }
  52.  
  53. else echo ("Wprowadz dane");
  54.  
  55.  
  56.  
  57. ?>
  58.  
  59. </body>
  60. </html>


EDIT:

Zrobiłem już coś takiego:

  1. <?
  2.  
  3. $obrazek=ImageCreate(500,500);
  4. $czerwony=ImageColorAllocate($obrazek,255 ,255 ,255);
  5. $czarny=ImageColorAllocate($obrazek,0 ,0 ,0);
  6. ImageFill($obrazek,1,1,$czerwony);
  7.  
  8. ImageLine($obrazek,250,0,250,500,$czarny);
  9. ImageLine($obrazek,500,250,0,250,$czarny);
  10.  
  11. $j=-5;
  12. $l=5;
  13.  
  14. //-----------------------------------
  15. $a=30;
  16. $b=45;
  17. $c=65;
  18. $d=45663;
  19. $e=434;
  20. $f=34;
  21. //-----------------------------------
  22.  
  23. $p1=(-1*($a*$j)-1*$c)/$b;
  24. $p3=(-1*($a*$l)-1*$c)/$b;
  25.  
  26. $p4=250+($p1*50);
  27. $p5=250+($p3*50);
  28.  
  29. $p6=(-1*($d*$j)-1*$f)/$e;
  30. $p7=(-1*($d*$l)-1*$f)/$e;
  31.  
  32. $p8=250+($p6*50);
  33. $p9=250+($p7*50);
  34.  
  35.  
  36. ImageLine($obrazek,$p4,$p4,$p5,$p5,$czarny);
  37. ImageLine($obrazek,$p8,$p8,$p9,$p9,$czarny);
  38.  
  39.  
  40. Header("Content-type: image/jpeg");
  41. ImageJPEG($obrazek);
  42.  
  43. ?>


Rysować rysuje , tylko nie tak jak trzeba , proszę pomóżcie co robię źle , wykres po prostu wychodzi zły.



Ten post edytował kamil1114 16.03.2010, 21:01:06
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
nospor
post 16.03.2010, 21:04:47
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
, wykres po prostu wychodzi zły.
Zagladam w szklaną kulę i widzę...widzę... no faktycznie wychodzi zły. Teraz ty zajrzyj do swojej szklanej kuli i odczytaj jakie siedzi rozwiązanie w mojej głowie smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kamil1114
post 16.03.2010, 21:12:25
Post #3





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Heh , zły w tym sensie , że po prostu z matematycznego punktu widzenia jest nie poprawny , linie się rysują , ale w złym miejscu na wykresie. Nie dodałem jeszcze skali , bo nie wiem jak to zrobić , domyślam się że najlepiej pętlą for , ale nie umiem.
Go to the top of the page
+Quote Post
nospor
post 16.03.2010, 21:16:22
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




sądziłem ze jednak lepiej zrozumiesz moją jakze zabawną (och, nie trzeba klaskac winksmiley.jpg ) aluzję...
No nic, napiszę ci więc dosłownie:
Podaj jak wygląda wykres prawidlowy (link do strony nie dziala) - pokaż nam obrazek
Podaj jak wyglada zly wykres - zrob obrazek

Oba obrazki umiesc w odpowiednim serwisie i daj linka do nich.
Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kamil1114
post 16.03.2010, 21:25:09
Post #5





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Wybacz , jakoś nie skojarzyłem smile.gif

Tak powinno to wyglądać: http://img204.imageshack.us/i/image011c.gif/
a wygląda tak: http://img51.imageshack.us/i/wykresphp.jpg/

nie wiem czemu wyszła jedna długa linia , powinny być dwie i mniej więcej w takim ułożeniu jak na zdjęciu pierwszym
Go to the top of the page
+Quote Post
nospor
post 16.03.2010, 21:29:45
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No, to skoro już opanowales sztukę czytania aluzji (winksmiley.jpg) przejdziemy teraz do sztuki szukania bledu:
a sprawdzales czy Twoje wyliczenia są słuszne? Jesli nie są, to już wiesz czemu wykres wychodzi zły. Jesli zas są słuszne, to juz wiemy ze wina lezy po stronie rysowania smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kamil1114
post 16.03.2010, 21:34:45
Post #7





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Tak , wyliczenia się zgadzają. Błąd jest gdzieś w rysowaniu


Błąd jest gdzieś tutaj , tylko nie mogę go znaleźć:

  1. $p4=250+($p1*50);
  2. $p5=250+($p3*50);
  3. $p6=(-1*($d*$j)-1*$f)/$e;
  4. $p7=(-1*($d*$l)-1*$f)/$e;
  5. $p8=250+($p6*50);
  6. $p9=250+($p7*50);
  7.  
  8. ImageLine($obrazek,$p4,$p4,$p5,$p5,$czarny);
  9.  
  10. ImageLine($obrazek,$p8,$p8,$p9,$p9,$czarny);


Ten post edytował kamil1114 16.03.2010, 21:38:35
Go to the top of the page
+Quote Post
nospor
post 16.03.2010, 21:41:48
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ImageLine($obrazek,$p4,$p4,$p5,$p5,$czarny);
czy napewno za x1 i y1 ma byc ta sama wartosc $p4 a za x2 i y2 ma byc ta sama wartosc $p5 ? Ja tam zawsze sądziłem ze x i y to wspolrzedne w miare nie zalezne i nie zawsze muszą wynosic dokladnie tyle samo.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kamil1114
post 16.03.2010, 21:46:29
Post #9





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Masz rację , tu jest błąd , tylko co za to mogę wpisać ? Mam pustkę w głowie. Proszę o pomoc
Go to the top of the page
+Quote Post
nospor
post 16.03.2010, 21:54:08
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No przeciez rozwiązałes to równanie wiec to ty powinienes wiedziec co w nim jest X a co w nim jest Y.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kamil1114
post 16.03.2010, 22:06:19
Post #11





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

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


Niby tak , ale ten program ma rozwiązywać każde równanie i rysować wykres dla każdego równania.

Udało mi się już zrobić coś takiego:

  1. <?
  2.  
  3. $obrazek=ImageCreate(500,500);
  4. $czerwony=ImageColorAllocate($obrazek,255 ,255 ,255);
  5. $czarny=ImageColorAllocate($obrazek,0 ,0 ,0);
  6. ImageFill($obrazek,1,1,$czerwony);
  7.  
  8. ImageLine($obrazek,250,0,250,500,$czarny);
  9. ImageLine($obrazek,500,250,0,250,$czarny);
  10.  
  11. $j=-10;
  12. $l=10;
  13.  
  14. //-----------------------------------
  15. $a=1;
  16. $b=1;
  17. $c=3;
  18. $d=0.5;
  19. $e=1;
  20. $f=1;
  21. //-----------------------------------
  22.  
  23. $p1=(-1*($a*$j)-1*$c)/$b;
  24. $p3=(-1*($a*$l)-1*$c)/$b;
  25.  
  26. $p4=250+($p1*50);
  27. $p5=250+($p3*50);
  28.  
  29. $p6=(-1*($d*$j)-1*$f)/$e;
  30. $p7=(-1*($d*$l)-1*$f)/$e;
  31.  
  32. $p8=250+($p6*50);
  33. $p9=250+($p7*50);
  34.  
  35.  
  36. ImageLine($obrazek,250+$j,$p4,250+$l,$p5,$czarny);
  37. ImageLine($obrazek,$p8,250+$j,$p9,250+$l,$czarny);
  38.  
  39.  
  40. Header("Content-type: image/jpeg");
  41. ImageJPEG($obrazek);
  42.  
  43. ?>


Zmieniłem trochę kod , linie już się nie pokrywają , ale nadal nie są prawidłowo ułożone.
Teraz to wygląda tak: http://img532.imageshack.us/i/wykresphp.jpg/
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:15