the snake II
Erfahrenes Mitglied
Hallo zusammen,
Ich schreibe gerade an einem Script, das einen Funktionsgraphen, dessen Funktionsvorschrift in ein Formular eingegeben wird.
Zu den Eingaben:
Einfacher mathematischer aufbau einer Funktionsvorschrift:
In einem Formular kann in das erste Textfeld ("term") der Term für 'm*x', sowie in ein zweites ("term2") '+ b' eingegeben werden.
Bei Linearen Funktionen (hier liegen alle Punkte auf einer Geraden) funktioniert das auch gut. Bei einer Eingabe wie z.B. 'x*x' ( Fachbegriff ) in "term", sollte theoretisch eine Kurve, die im negativen 'y' und im positiven 'x' Bereich anfängt (man kann zwar nicht vom 'Anfang' sprechen, aber ich denke ihr wisst was ich meine), den Ursprung schneidet, und im positiven Bereich von 'x' und 'y' endet (s.o.).
Hier tritt der Fehler auf:
Die Kurve macht eine Schlangen-Linie:
Das kommt mir komisch vor, denn ich weiß nicht wie es sein kann, dass Lineare Funktionen funktionieren, die oben beschriebenen jedoch nicht.
Hat jemand eine Ahnung wie ich das Lösen könnte?
Anbei der Quellcode:
Ich schreibe gerade an einem Script, das einen Funktionsgraphen, dessen Funktionsvorschrift in ein Formular eingegeben wird.
Zu den Eingaben:
Einfacher mathematischer aufbau einer Funktionsvorschrift:
Code:
m * x + b
Bei Linearen Funktionen (hier liegen alle Punkte auf einer Geraden) funktioniert das auch gut. Bei einer Eingabe wie z.B. 'x*x' ( Fachbegriff ) in "term", sollte theoretisch eine Kurve, die im negativen 'y' und im positiven 'x' Bereich anfängt (man kann zwar nicht vom 'Anfang' sprechen, aber ich denke ihr wisst was ich meine), den Ursprung schneidet, und im positiven Bereich von 'x' und 'y' endet (s.o.).
Hier tritt der Fehler auf:
Die Kurve macht eine Schlangen-Linie:
Das kommt mir komisch vor, denn ich weiß nicht wie es sein kann, dass Lineare Funktionen funktionieren, die oben beschriebenen jedoch nicht.
Hat jemand eine Ahnung wie ich das Lösen könnte?
Anbei der Quellcode:
PHP:
<?php
$size = 600 + 41;
$color1 = 255;
$color2 = 255;
$color3 = 255;
$image = imagecreate($size,$size);
$farbe_body = imagecolorallocate($image,$color1,$color2,$color3);
$schwarz = imagecolorallocate($image,0,0,0);
$rot = imagecolorallocate($image,255,0,0);
$scala1 = 151;
$scala2 = 0;
//Achsen
imageline($image,20,321,621,321,$schwarz); //horizontal
imageline($image,321,20,321,621,$schwarz); //vertikal
//Pfeile
imageline($image,621,321,611,315,$schwarz); //rechts o
imageline($image,621,321,611,327,$schwarz); //rechts u
imageline($image,321,20,315,30,$schwarz); //oben l
imageline($image,321,20,327,30,$schwarz); //oben r
//Scala
for($i = 41;$i<=601;$i=$i+20){
imageline($image,$i,318,$i,324,$schwarz); //horizontal
imageline($image,318,$i,324,$i,$schwarz); //vertikal
}
//Beschriftung
$font = 1;
//Horizontal
$n = 14;
for($i = 35;$i<=301;$i=$i+20){
imagestring($image,$font,$i,326,"-".$n,$schwarz); //horizontal r
$n--;
}
$n = 1;
for($i = 339;$i<=601;$i=$i+20){
imagestring($image,$font,$i,326,$n,$schwarz); //horizontal r
$n++;
}
//Vertikal
$n = 1;
for($i = 338;$i<=601;$i=$i+20){
imagestring($image,$font,302,$i,"-".$n,$schwarz); //horizontal r
$n++;
}
$n = 14;
for($i = 37;$i<=301;$i=$i+20){
imagestring($image,$font,307,$i,$n,$schwarz); //horizontal r
$n--;
}
//Punkte einlesen
$pos = 14;
$pos2 = 0 - $pos;
$term1 = $_POST["term"];
$term1 = str_replace('x','$x',$term1);
$term1 = str_replace(',','.',$term1);
$term1 = str_replace('$x','$m',$term1);
$term2 = $_POST["term2"];
$m = 0;
$o = 300;
$u = 319;
$y = 317;
for($i=0;$i <= 1;$i++){
while($m < 15){
$x = 319+$m*20;
if($_POST["term2"])
eval("\$y = 317-((".$term2.")*20)-20*(".$term1.");");
else
eval("\$y = 317-20*(".$term1.");");
imagestring($image,$font,$x,$y,"o",$rot);
$m++;
$u - 20;
$o + 20;
}
}
$m = 0;
$y = 17;
for($i=0;$i <= 15;$i++){
$x = 319-$m*20;
if($_POST["term2"])
eval("\$y = 317-((".$term2.")*20)+20*(".$term1.");");
else
eval("\$y = 317+20*(".$term1.");");
//if($y>36)
imagestring($image,$font,$x,$y,"o",$rot);
$m++;
//$u - 20;
$o + 20;
}
header("Content-Type: image/jpeg");
imagejpeg($image,"",9999);
imagedestroy($image);
?>