Pberndt V4

Direkt zum Inhalt springen


Quellcode Plotter.php

Beschreibung

Ein simpler Funktions-Plotter.

Sourcecode

<?php

    /*
        Plotter

        Aktion: PHP Scripte für die armen dieser Welt
        Der Erlös geht für mein Pausenbrot drauf

        Copyright (c) 2004 by Phillip 'Firebird' Berndt
    */

   
    $imagesx = 320;
    $imagesy = 240;
   
    $einteilungx = 10;
    $einteilungy = 10;
   
    $formelx = 10;
    $formely = 10;
   
    $genauigkeit = .01;
   
    $font = "C:\WINNT\Fonts\Arial.ttf";
       
    set_time_limit(2);
   
   
    error_reporting(0);
   
    if (!isset($formel))
    {
        ?>
        Formel zeichnen<br><br><br>
        <form method=get target=_blank>
        Formel: <input type=text name=formel value="x">
        <input type=submit value="Zeichnen">
        </form>
        <?
        die();
    }
   
    $orig = $formel;
   
    // Sicherheit
    if(eregi("echo ",$formel)) die();
    if(eregi("fopen",$formel)) die();
    if(eregi("file",$formel)) die();
    if(eregi("unset",$formel)) die();
    if(eregi("mkdir",$formel)) die();
    if(eregi("rmdir",$formel)) die();
    if(eregi("dir",$formel)) die();
    if(eregi("\\\$",$formel)) die();
   
    $formel = str_replace("x","\$x", $formel);
   
    $bild = imagecreatetruecolor($imagesx, $imagesy);
    $weiss = imagecolorallocate($bild, 255, 255, 255);
    $schwarz = imagecolorallocate($bild, 100, 100, 100);
    $grau = imagecolorallocate($bild, 200, 200, 200);
   
   
   
    imagefill($bild, 1, 1, $weiss);
   
    // Formel
    imagettftext($bild, 8, 0, $formelx, $formely, $schwarz, $font, "f(x) = ".$orig);
   
    // Gitter
    imageline($bild, 0, $imagesy / 2, $imagesx, $imagesy / 2, $grau);
    imageline($bild, $imagesx / 2, 0, $imagesx / 2, $imagesy, $grau);
   
    // Gitter beschriften
    // X - Achse
    for($i=($imagesx/$einteilungx/2); $i<=$imagesx; $i += ($imagesx/$einteilungx/2))
    {
        imageline($bild, $i, $imagesy / 2 - 2, $i, $imagesy / 2 + 2, $grau);
        imagettftext($bild, 8, 0, $i - 3, $imagesy / 2 + 16, $grau, $font, $i / ($imagesx/$einteilungx/2) - $einteilungx);
    }
    // Y - Achse
    for($i=($imagesy/$einteilungy/2); $i<=$imagesy; $i += ($imagesy/$einteilungy/2))
    {
        imageline($bild, $imagesx / 2 - 2, $i, $imagesx / 2 + 2, $i, $grau);
        imagettftext($bild, 8, 0$imagesx / 2 - 15, $i + 3, $grau, $font, ($imagesy - $i) / ($imagesy/$einteilungy/2) - $einteilungy);
    }   
   
    // Zeichnen zeichnen
    for($x=-$einteilungx; $x<=$einteilungx; $x += $genauigkeit)
    {
        // Auflösen
       
        $erg = eval("return (".$formel.");");
       
        if($erg) {
            $mx = $x * ($imagesx/$einteilungx) + ($imagesx/2);
            $my = $imagesy - ($erg * ($imagesy/$einteilungy/2) + ($imagesy / 2));
           
            imagesetpixel($bild, $mx, $my, $schwarz);
        }
       
    }
   
    imagejpeg($bild);
?>

Download

Dateiname
Plotter.php
Größe
2.78kb