Copy the code The code is as follows:
//The following code will draw a very beautiful leaf
// Define the value of one minute of PI angle
define("PII", M_PI/180);
// Create a new image resource and define its background as white and the foreground color as black
$im = imagecreate(670,500);
$white = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
$g = imagecolorallocate($im, 0x00, 0x00, 0x00);
// Example from below From the code, we can know that the initial values $x, $y, $L, $a are divided into 300, 500, 100, 270 respectively
function drawLeaf($g, $x, $y, $L, $a ) {
global $im;
$B = 50;
$C = 9;
$s1 = 2;
$s2 = 3;
$s3 = 1.2;
if($L > $s1) {
// Calculate the positioning of the leaf
$x2 = $x + $L * cos($a * PII);
$y2 = $y + $L * sin($a * PII);
$x2R = $x2 + $L / $s2 * cos(($a + $B) * PII);
$y2R = $y2 + $ L / $s2 * sin(($a + $B) * PII);
$x2L = $x2 + $L / $s2 * cos(($a - $B) * PII);
$ y2L = $y2 + $L / $s2 * sin(($a - $B) * PII);
// Calculate the positioning of the leaf below
$x1 = $x + $L / $s2 * cos ($a * PII);
$y1 = $y + $L / $s2 * sin($a * PII);
$x1L = $x1 + $L / $s2 * cos(($a - $B) * PII);
$y1L = $y1 + $L / $s2 * sin(($a - $B) * PII);
$x1R = $x1 + $L / $s2 * cos(($a + $B) * PII);
$y1R = $y1 + $L / $s2 * sin(($a + $B) * PII);
// Draw separately The trunk and leaf surface of the leaf
ImageLine($im, (int)$x, (int)$y, (int)$x2, (int)$y2, $g);
ImageLine($im, (int)$x2, (int)$y2, (int)$x2R, (int)$y2R, $g);
ImageLine($im, (int)$x2, (int)$y2, (int )$x2L, (int)$y2L, $g);
ImageLine($im, (int)$x1, (int)$y1, (int)$x1L, (int)$y1L, $g);
ImageLine($im, (int)$x1, (int)$y1, (int)$x1R, (int)$y1R, $g);
// Call itself recursively again
drawLeaf( $g, $x2, $y2, $L / $s3, $a + $C);
drawLeaf($g, $x2R, $y2R, $L / $s2, $a + $B);
drawLeaf($g, $x2L, $y2L, $L / $s2, $a - $B);
drawLeaf($g, $x1L, $y1L, $L / $s2, $a - $ B);
drawLeaf($g, $x1R, $y1R, $L / $s2, $a + $B);
}
}
// Instantiate
drawLeaf( $g, 300, 500, 100, 270);
header("Content-type: image/png");
imagepng($im);
?>
In PHP programming, recursive calls are often used with static variables. The meaning of static variables can be found in the PHP manual. I hope the following code will be more helpful for understanding recursion and static variables
Copy the code The code is as follows:
header( "Content-type: text/plain");
function static_function () {
static $i = 0;
if ($i++ < 10) {
echo $i . "n" ;
static_function();
}
}
static_function(); This code will output numbers from 1 to 10. When the static_function function runs for the second time, the variable i is still retained and not released because it is a static variable, and the auto-incremented value can be obtained.
http://www.bkjia.com/PHPjc/326226.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/326226.htmlTechArticleCopy the code as follows: ?php //The following code will draw a very beautiful leaf// Define PI 1 The value of the angle in minutes define("PII", M_PI/180); // Create a new image resource and define its background...