Scripts

Formule naar grafiek.

Met dit script kun je van een lineare formule (zoals y = 2x + 4) een grafiek maken. Je kunt zelf instellen wat het maximale aantal grafieken in een assenstelsel zijn. Bekijk het voorbeeld maar, dan is alles wel duidelijk.

formule-naar-grafiek
////// HIERONDER grafiek.php ///////

<?

if($_POST['formule']){

$x = $HTTP_POST_VARS['x'];
$y = $HTTP_POST_VARS['y'];

if(is_numeric($x) && is_numeric($y)){

	if($x <= 50 && $y <= 50 && $x >= -50 && $y >= -50){

		echo "<img src='grafiek_afb.php?x=".$x."&y=".$y."'><br>";

		// echo "<script language='JavaScript'> document.location = 'grafiek_afb.php?x=".$x."&y=".$y."'; </script>";

		echo "&nbsp;<br>";

		echo "<b>Formule:</b> y = ".$x." x + ".$y."<br>";

	} else {

		echo "X en/of Y zijn hoger als 50, of zijn lager als - 50<br>";

	}

} else {

	echo "Er is geen getal ingevuld voor X of Y.<br>";

}

echo "&nbsp;<br>";
echo "<a href='grafiek.php'>Terug</a>";

} else {

echo "<form method='post' target='_self'>";
echo "<b>Maak een grafiek met een formule: (kies getallen van -50 tot en met 50)<br>";
echo "y = <input type='text' name='x' size='1' maxlength='3'> x + <input type='text' name='y' size='1' maxlenght='3'><br>";
echo "<input type='submit' name='formule' value='Maak grafiek'>";
echo "</form>";

}

?>

////// HIERONDER grafiek_afb.php ///////////

<?

header("content-type: image/png");

$image = ImageCreate(500, 500);

$achtergrond = ImageColorAllocate($image, 255, 255, 255);

$zwart = ImageColorAllocate($image, 0, 0, 0);
$wit = ImageColorAllocate($image, 255, 255, 255);
$grijs = ImageColorAllocate($image, 192, 192, 192);

$font = 'verdana.ttf'; 

// verticale strepen
$teller_h = 0;
while($teller_h <= 40){
	if($teller_h < 40){
		$teller_h_pix = $teller_h * 12.5;
	} else {
		$teller_h_pix = ($teller_h * 12.5) - 1;
	}
	ImageLine($image, $teller_h_pix, 0, $teller_h_pix, 500, $grijs);
	$teller_h ++;
}

// horizontale strepen
$teller_v = 0;
while($teller_v <= 40){
	if($teller_v < 40){
		$teller_v_pix = $teller_v * 12.5;
	} else {
		$teller_v_pix = ($teller_v * 12.5) - 1;
	}
	ImageLine($image, 0, $teller_v_pix, 500, $teller_v_pix, $grijs);
	$teller_v ++;
}


// assenstrepen
ImageLine($image, 250, 0, 250, 500, $zwart);
ImageLine($image, 0, 250, 500, 250, $zwart);

// 0 tekst
$grootte = 8;
$gedraait = 0;
$tekst = 0;
ImageTTFText($image, $grootte, $gedraait, 252, 248, $zwart, $font, $tekst); 

// het startpunt op de y - as berekenen
$y = $_GET['y'];
$y_pix = 250 - ($y * 12.5);
$y_pix_0 = $y * 12.5;

$x = $_GET['x'];

$x_20 = $x * 20;
$x_pix = $x_20 * 12.5;
$x_pix_2 = 250 - $x_pix - $y_pix_0;

$x_min20 = $x * -20;
$x_minpix = $x_min20 * 12.5;
$x_minpix_2 = 250 - $x_minpix - $y_pix_0;

ImageLine($image, 250, $y_pix, 499, $x_pix_2, $zwart);
ImageLine($image, 250, $y_pix, 0, $x_minpix_2, $zwart);

ImagePng($image);

ImageDestroy($image);

?>

Reacties

0
Nog geen reacties.