Hey!
Ich hab versucht ein Script zu schreiben, das eine eingegebene Funktion in ein Koordinatensysten zeichnet und eine kleine Wertetabelle macht. Das funktioniert auch ganz gut, nur wenn ich eine positive Zahl eingebe, gehts nicht mehr. Also "x^2-3x-5" geht, aber "x^2+3x+5" nicht. Ich glaub ich hab das auch schon kaputgebalstelt, weil ich an dem problem schon so lange sitze. Wäre cool, wenn ihr mal gcken könntet, wo mein Fehler liegt. Es soll anfangs nur ganz einfach sein und nicht viel können, aber dass es erstmal überhaupt richtig funktioniert. Danke schonmal.
Ich hab versucht ein Script zu schreiben, das eine eingegebene Funktion in ein Koordinatensysten zeichnet und eine kleine Wertetabelle macht. Das funktioniert auch ganz gut, nur wenn ich eine positive Zahl eingebe, gehts nicht mehr. Also "x^2-3x-5" geht, aber "x^2+3x+5" nicht. Ich glaub ich hab das auch schon kaputgebalstelt, weil ich an dem problem schon so lange sitze. Wäre cool, wenn ihr mal gcken könntet, wo mein Fehler liegt. Es soll anfangs nur ganz einfach sein und nicht viel können, aber dass es erstmal überhaupt richtig funktioniert. Danke schonmal.
PHP-Code:
<?php
function generate_pixel($x, $y, $image){
global $breite;
global $hoehe;
global $abstand;
##### Hier müsste der Fehler sein: #####
$x = $breite/2 + ($x*$abstand);
$y = $hoehe /2 - ($y*$abstand);
imageline($image, $x, $y, $x, $y, imagecolorallocate($image,255,0,0));
# imagesetpixel hat komischerweise nicht funktioniert... Dann musste ich imageline nehmen.
}
$breite = 600;
$hoehe = 600;
$abstand = 30;
if($generate){
header("Content-type: image/jpeg");
$image = imagecreate($breite,$hoehe);
$farbe_body = imagecolorallocate($image,100,100,200);
$farbe_lines = imagecolorallocate($image,0,0,0);
$a_of_x = ($breite/2)/$abstand;
$a_of_y = ($hoehe/2)/$abstand;
for($i=$a_of_x*(-1);$i<=$a_of_x;$i = $i + 0.0025){
$function2 = str_replace("x", $i, $function);
eval("\$y = ".$function2.";");
# imagesetpixel($image, x_to_koord($i), y_to_koord($y), $farbe_lines)
generate_pixel($i, $y, $image);
}
# Koordinatensystem zeichnen (x):
imageline($image, 0, $hoehe/2, $breite, $hoehe/2, $farbe_lines);
for($i=1;$i<=$a_of_x;$i++){
imageline($image, $breite/2+($i*$abstand), $hoehe/2+5, $breite/2+($i*$abstand), $hoehe/2-5, $farbe_lines);
imagechar($image, 5, $breite/2+($i*$abstand)-3, $hoehe/2+10, $i, $farbe_lines);
imageline($image, $breite/2-($i*$abstand), $hoehe/2+5, $breite/2-($i*$abstand), $hoehe/2-5, $farbe_lines);
imagechar($image, 5, $breite/2-($i*$abstand)-7, $hoehe/2+10, "-", $farbe_lines);
imagechar($image, 5, $breite/2-($i*$abstand)+2, $hoehe/2+10, $i, $farbe_lines);
# Andere Funktion, da sonst Fehler bei der Anzeige von mehrstelligen Zahlen
}
# Koordinatensystem zeichnen (y):
imageline($image, $breite/2, 0, $breite/2, $hoehe, $farbe_lines);
for($i=1;$i<=$a_of_y;$i++){
imageline($image, $breite/2+5, $hoehe/2+($i*$abstand), $breite/2-5, $hoehe/2+($i*$abstand), $farbe_lines);
imagechar($image, 5, $breite/2+10, $hoehe/2+($i*$abstand)-8, "-", $farbe_lines);
imagechar($image, 5, $breite/2+20, $hoehe/2+($i*$abstand)-8, $i, $farbe_lines);
imageline($image, $breite/2+5, $hoehe/2-($i*$abstand), $breite/2-5, $hoehe/2-($i*$abstand), $farbe_lines);
imagechar($image, 5, $breite/2+10, $hoehe/2-($i*$abstand)-8, $i, $farbe_lines);
# Andere Funktion, da sonst Fehler bei der Anzeige von mehrstelligen Zahlen
}
#################################################################
imagegif($image);
}
?>
Kommentar