php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.10.2005, 19:55  
Gast
 
Beiträge: n/a
Standard Funktion in Koordinatensystem zeichnen - Finde Fehler nicht

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.
PHP-Code:
<?php
function generate_pixel($x$y$image){
 global 
$breite;
 global 
$hoehe;
 global 
$abstand;
 
#####  Hier müsste der Fehler sein: #####
 
$x $breite/+ ($x*$abstand);
 
$y $hoehe /- ($y*$abstand); 
 
imageline($image$x$y$x$yimagecolorallocate($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($image0$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($image5$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($image5$breite/2-($i*$abstand)-7$hoehe/2+10"-"$farbe_lines);    
   
imagechar($image5$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/20$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($image5$breite/2+10$hoehe/2+($i*$abstand)-8"-"$farbe_lines);     
   
imagechar($image5$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($image5$breite/2+10$hoehe/2-($i*$abstand)-8$i$farbe_lines);    
  
# Andere Funktion, da sonst Fehler bei der Anzeige von mehrstelligen Zahlen
  
}
  
#################################################################
  
  
imagegif($image); 
}
?>
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.10.2005, 20:27  
Gast
 
Beiträge: n/a
Standard

Zitat:
header("Content-type: image/jpeg");
Zitat:
imagegif($image);
Zwar erstmal nicht die Antwort auf deine Frage, aber beim groben Überflug gesehen.

Der Header wird als JPEG gesendet, obwohl ein GIF-Bild erstellt wird ?
 
Alt 18.10.2005, 20:50  
Gast
 
Beiträge: n/a
Standard

So ich habe mir das jetzt mal kurz reingezogen.
Zunächst ein anderes Beispiel, was ich mal vor einiger Zeit gemacht hatte:
http://www.cix88.de/cix_php/php_graf...natenkreuz.php
Vieleicht bringt dich das auf neue Ideen.

Ich geh jetzt mal ganz grob durch:

Zitat:
imageline($image, $x, $y, $x, $y, imagecolorallocate($image,255,0,0));
Hier wohl kaum eine Linie zu sehen sein, da $x und $y selbe Werte haben.
Es müsste so aussehen:
imageline($image, $x1, $y1, $x2, $y2, imagecolorallocate($image,255,0,0));
Wobei $x2 > $x1 ist, und $y2 > $y1

Zitat:
for($i=$a_of_x*(-1);$i<=$a_of_x;$i = $i + 0.0025){
Keine Ahnung was die 0.0025 soll ?
Da das ganze auf PX basiert, wundert mich etwas diese Angabe.

Zitat:
$function2 = str_replace("x", $i, $function);
eval("\$y = ".$function2.";");
Hier hat sich das Script aufgehangen, jedenfalls bei mir.
Keine Ahnung wozu diese 2 Zeilen gedacht sind ?

Zitat:
if($generate){
Was ist $generate ?
Zum Testen habe ich dein Script etwas umgebastelt, um überhaupt nachvollziehen zu können, um was es geht.

PHP-Code:
<?php
function generate_pixel($x$y$image){ 
 global 
$breite
 global 
$hoehe
 global 
$abstand
 
#####  Hier müsste der Fehler sein: ##### 
 
$x $breite/+ ($x*$abstand); 
 
$y $hoehe /- ($y*$abstand);
 
imageline($image$x$y$x+50$y+50imagecolorallocate($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 += 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($image0$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($image5$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($image5$breite/2-($i*$abstand)-7$hoehe/2+10"-"$farbe_lines);     
   
imagechar($image5$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/20$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($image5$breite/2+10$hoehe/2+($i*$abstand)-8"-"$farbe_lines);      
   
imagechar($image5$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($image5$breite/2+10$hoehe/2-($i*$abstand)-8$i$farbe_lines);     
  
# Andere Funktion, da sonst Fehler bei der Anzeige von mehrstelligen Zahlen 
  // } 
  ################################################################# 
   
  
imagegif($image'$$$.gif');  


echo 
'[img]$$$.gif[/img]';

?>
So sah es jetzt zum testen bei mir aus.
Mehr kann ich jetzt auch nicht tun, da ich grad wenig Zeit habe.
 
Alt 19.10.2005, 16:00  
Gast
 
Beiträge: n/a
Standard

Erstmal danke für deine Antwort!
Zu den Fragen:
Zitat:
Ich geh jetzt mal ganz grob durch:

Zitat:
imageline($image, $x, $y, $x, $y, imagecolorallocate($image,255,0,0));
Das musste ich machen, weil die funktion "imagesetpixel" komischerweise nicht funktioniert hat. So hab ich eben eine Linie der Länge 1 gemacht. Also einen Punkt

Zitat:
Keine Ahnung was die 0.0025 soll ?
Da das ganze auf PX basiert, wundert mich etwas diese Angabe.

Zitat:
$function2 = str_replace("x", $i, $function);
eval("\$y = ".$function2.";");
Das war notwendig, um die Genauigkeit einzustellen. Wäre das 1, würde er nur an alle $abstand Pixel einen punkt machen und keine Funktion zeichnen. bei 0.25 sind es Punkte mit Abständen dazwischen. usw.

Zitat:
Zitat: if($generate){
Was ist $generate ?
Das gehört zum übrigen Script. Das was ich gepostet hab ist nämlich nur ein Teil davon. $generate wird benutzt, um dem script zu sagen, dass er jetzt zeichnen soll. Es erstellt nämlich erst eine Wertetabelle und zeichnet die Funktion dann.

Ich stell das Script gleich mal online, dann kann man sich auch ansehen, was bis jetzt alles geht und was nicht:
Script: http://www.die-neue-welt.net/temp/funktion.php
Code: http://www.die-neue-welt.net/temp/funktion.txt

Das ist der aktuelle Fortschritt. Aber nicht wundern, da sind noch 2 Funktionen drin, die im Moment nicht benötigt werden (y_to_koord und x_to_koord) und viele Kommentare und alte Codeschnipsel. Ich hoffe ihr blickt da durch. Und das ist die "Diagnose-Version" -> Deshalb die ganzen Ausgaben der Punkte und Pixel...
 
Alt 19.10.2005, 23:09  
Gast
 
Beiträge: n/a
Standard

Zitat:
Das musste ich machen, weil die funktion "imagesetpixel" komischerweise nicht funktioniert hat.
Dann war diese sicher falsch geschrieben
 
Alt 20.10.2005, 22:05  
Gast
 
Beiträge: n/a
Standard

*no_comment*
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Rekursive Funktion bricht ab... duras666 PHP Tipps 2008 9 28.04.2008 11:36
Name der aufrufenden Funktion mAy^daY PHP Tipps 2007 5 20.01.2007 22:55
Fehler in rekursiver Funktion tinchen PHP Tipps 2006 1 27.08.2006 20:24
Komplexe Funktion: +Übersichtlichkeit, -Performance Jacks Rache PHP Tipps 2006 3 07.06.2006 14:22
fehler in einer funktion imported_master PHP Tipps 2006 3 08.04.2006 21:10
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
In einer Funktion auf eine Funktion der Klasse zugreifen phpbeginner PHP Tipps 2005-2 2 28.07.2005 00:30
Funktion in einer Funktion aufrufen? PHP Tipps 2005-2 11 14.06.2005 15:14
Problem mit einer rekursiven Funktion in einer Klasse ajo_silent PHP-Fortgeschrittene 6 13.06.2005 16:40
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
[Erledigt] sql syntax error in funktion, kann aber nix finden :( PHP Tipps 2004 10 20.07.2004 19:19
[Erledigt] Referenz auf Funktion übergeben PHP-Fortgeschrittene 7 20.07.2004 09:51
mysql_real_escape_string - Fehler Schaelle Datenbanken 0 03.07.2004 23:32
GDLIB -> Fehler : xxx.jpg is not a valid JPEG file PHP-Fortgeschrittene 11 09.06.2004 22:41

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
koordinatensystem zeichnen online, php koordinatensystem zeichnen, funktionen im koordinatensystem zeichnen, funktion im koordinatensystem zeichnen, koordinatensystem zeichnen, funktion zeichnen, funktion in koordinatensystem zeichnen, koordinaten zeichnen, gleichung im koordinatensystem einzeichnen, koordinaten zeichnen online, koordinatensystem mit php zeichnen, funktionen mit php zeichnen, x y punkte zeichnen css html php, funktionen im koordinatensystem zeichnen online, funktion im koordinatensystem, http://www.php.de/php-tipps-2005-2/32621-funktion-koordinatensystem-zeichnen-finde-fehler-nicht.html, funktionsgleichung im koordinatensystem, ein koordinatensystem mit php zeichnen, koordinatensystem in php zeichnen, funktionsgleichung ins koordinatensystem zeichnen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:15 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.