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

Mam taki kod:
<?php /** * wykresy funkcji trygonometrycznych */ $picWidth = 360*2; $picHeight = 200; $pic = ImageCreate($picWidth+1,$picHeight+1); $cWhite = ImageColorAllocate($pic,255,255,255); ImageFilledRectangle($pic,0,0,$picWidth+1,$picHeight+1,$cWhite); $cRed = ImageColorAllocate($pic,255,0,0); $cBlue = ImageColorAllocate($pic,0,0,255); $cGreen = ImageColorAllocate($pic,12,192,0); $cOrange = ImageColorAllocate($pic,249,144,0); // sinus $curX = 0; $curY = $picHeight/2; for($pt = 0; $pt<$picWidth; $pt++) { $newX=$curX+1; $newY=($picHeight/2)+(-sin(deg2rad($newX))*($picHeight/2)); ImageLine($pic,$curX,$curY,$newX,$newY,$cBlue); $curX=$newX; $curY=$newY; } // cosinus $curX = 0; $curY = $picHeight; for($pt = 0; $pt<$picWidth; $pt++) { $newX=$curX+1; $newY=($picHeight/2)+(-cos(deg2rad($newX))*($picHeight/2)); ImageLine($pic,$curX,$curY,$newX,$newY,$cRed); $curX=$newX; $curY=$newY; } // tangens $curX = 0; $curY = $picHeight/2; for($pt = 0; $pt<$picWidth; $pt++) { $newX=$curX+1; $newY=($picHeight/2)+(-tan(deg2rad($newX))*($picHeight/2)); ImageLine($pic,$curX,$curY,$newX,$newY,$cGreen); $curX=$newX; $curY=$newY; } // cotangens $curX = 0; $curY = $picHeight; for($pt = 0; $pt<$picWidth; $pt++) { $newX=$curX+1; $newY=($picHeight/2)+(1/(-tan(deg2rad($newX)))*($picHeight/2)); ImageLine($pic,$curX,$curY,$newX,$newY,$cOrange); $curX=$newX; $curY=$newY; } $cBlack = ImageColorAllocate($pic,0,0,0); ImageLine($pic,360,0,360,$picHeight,$cBlack); ImageLine($pic,0,$picHeight/2,$picWidth,$picHeight/2,$cBlack); ImagePNG($pic); ImageDestroy($pic); ?>
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

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

//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

Pozdrawiam.