Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wykresy funkcji trygonometrycznych, jak usunąć asymptoty = dziedzina funkcji
Speedy
post
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 28
Dołączył: 4.12.2004

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


Witam!

Na wstępie dodam, że słabo znam się na GD - dopiero uczę się "malować" w php tongue.gif.

Mam taki kod:

  1. <?php
  2.  
  3. /**
  4.  * wykresy funkcji trygonometrycznych
  5.  */
  6.  
  7. Header("Content-type: image/png");
  8.  
  9. $picWidth = 360*2;
  10. $picHeight = 200;
  11. $pic = ImageCreate($picWidth+1,$picHeight+1);
  12. $cWhite = ImageColorAllocate($pic,255,255,255);
  13.  
  14. ImageFilledRectangle($pic,0,0,$picWidth+1,$picHeight+1,$cWhite);
  15.  
  16. $cRed = ImageColorAllocate($pic,255,0,0);
  17. $cBlue = ImageColorAllocate($pic,0,0,255);
  18. $cGreen = ImageColorAllocate($pic,12,192,0);
  19. $cOrange = ImageColorAllocate($pic,249,144,0);
  20.  
  21. // sinus
  22.  
  23. $curX = 0;
  24. $curY = $picHeight/2;
  25.  
  26. for($pt = 0; $pt<$picWidth; $pt++)
  27. {
  28. $newX=$curX+1;
  29. $newY=($picHeight/2)+(-sin(deg2rad($newX))*($picHeight/2));
  30. ImageLine($pic,$curX,$curY,$newX,$newY,$cBlue);
  31. $curX=$newX;
  32. $curY=$newY;
  33. }
  34.  
  35. // cosinus
  36.  
  37. $curX = 0;
  38. $curY = $picHeight;
  39.  
  40. for($pt = 0; $pt<$picWidth; $pt++)
  41. {
  42. $newX=$curX+1;
  43. $newY=($picHeight/2)+(-cos(deg2rad($newX))*($picHeight/2));
  44. ImageLine($pic,$curX,$curY,$newX,$newY,$cRed);
  45. $curX=$newX;
  46. $curY=$newY;
  47. }
  48.  
  49. // tangens 
  50.  
  51. $curX = 0;
  52. $curY = $picHeight/2;
  53.  
  54. for($pt = 0; $pt<$picWidth; $pt++)
  55. {
  56. $newX=$curX+1;
  57. $newY=($picHeight/2)+(-tan(deg2rad($newX))*($picHeight/2));
  58. ImageLine($pic,$curX,$curY,$newX,$newY,$cGreen);
  59. $curX=$newX;
  60. $curY=$newY;  
  61. }
  62.  
  63. // cotangens
  64.  
  65. $curX = 0;
  66. $curY = $picHeight;
  67.  
  68. for($pt = 0; $pt<$picWidth; $pt++)
  69. {
  70. $newX=$curX+1;
  71. $newY=($picHeight/2)+(1/(-tan(deg2rad($newX)))*($picHeight/2));
  72. ImageLine($pic,$curX,$curY,$newX,$newY,$cOrange);
  73. $curX=$newX;
  74. $curY=$newY;
  75. } 
  76.  
  77. $cBlack = ImageColorAllocate($pic,0,0,0);
  78. ImageLine($pic,360,0,360,$picHeight,$cBlack);
  79. ImageLine($pic,0,$picHeight/2,$picWidth,$picHeight/2,$cBlack);
  80. ImagePNG($pic);
  81. ImageDestroy($pic);
  82.  
  83. ?>


Jak narysować sinusoidę i cosinusoidę znalazłem w komentarzach w manualu. Zrobiłem tylko drobne przeróbki (dodałem minus przed tymi funkcjami, czyli odwróciłem je, bo nie wiedzieć dlaczego w oryginalnym skrypcie rysowały się one odwrócone tongue.gif).
Wykresy tangensa i contangensa sam sobie zrobiłem na podstawie wykresów cosinusa i sinusa.
Niestety tangensoida i cotangensoida rysują się razem z asymptotami, bo nie są określone ich dziedziny. Asymptoty nie należą do dziedziny.
W przypadku sinusa i cosinusa nie ma tego problemu, bo ich dziedziną jest zbiór liczb rzeczywistych.
Próbowałem różnych kombinacji, ale nic mi z tego nie wychodziło...

Jeśli chodzi o normalny zapis, to byłby on następujący:

( zapis lekko phpepowy, bo tak mi wygodniej, a symbole matematyczne mogłyby się komuś pomylić ze składnią php winksmiley.jpg )

//tangens

tan($x)=sin($x)/cos($x) dla cos($x)<>0

cos($x)<>0 dla $x<>pi()/2+round($k)*pi()

pi()/2+round($k)*pi() // asymptota tangensa

//cotangens

function ctan($x)
{
$v = cos($x)/sin($x);
return $v;
}

ctan($x) == true dla sin($x)<>0

sin($x)<>0 dla $x<>round($k)*pi()

round($k)*pi() // asymptota cotangensa

####

Zasadnicze pytanie brzmi następująco:

Jak usunąć asymptoty tangensoidy i contangensoidy na wykresie?

Dziękuję za wszelką pomoc smile.gif.

Pozdrawiam.

Ten post edytował Speedy 10.12.2005, 23:11:44


--------------------
Sygnatura niezgodna z regulaminem.
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: 22.08.2025 - 07:46