- Draw a very beautiful leaf.
- Defines the value of the angle of a PI point
- Define ("PII", m_pi/180);
- Creates a new image resource and defines its background as white with a foreground color of black
- $im = Imagecreate (670,500);
- $white = Imagecolorallocate ($im, 0xFF, 0xFF, 0xFF);
- $g = Imagecolorallocate ($im, 0x00, 0x00, 0x00);
- From the code instantiated below you can tell that the initial value $x, $y, $L, $a not divided into 300, 500, 100, 270
- function Drawleaf ($g, $x, $y, $L, $a) {
- Global $im;
- $B = 50;
- $C = 9;
- $s 1 = 2;
- $s 2 = 3;
- $s 3 = 1.2;
- if ($L > $s 1) {
- Calculate the positioning of the leaves above
- $x 2 = $x + $L * cos ($a * PII);
- $y 2 = $y + $L * sin ($a * PII);
- $x 2R = $x 2 + $L/$s 2 * cos (($a + $B) * PII);
- $y 2R = $y 2 + $L/$s 2 * sin (($a + $B) * PII);
- $x 2L = $x 2 + $L/$s 2 * cos (($a-$B) * PII);
- $y 2L = $y 2 + $L/$s 2 * sin (($a-$B) * PII);
- Calculate the position of the leaves below
- $x 1 = $x + $L/$s 2 * cos ($a * PII);
- $y 1 = $y + $L/$s 2 * sin ($a * PII);
- $x 1L = $x 1 + $L/$s 2 * cos (($a-$B) * PII);
- $y 1L = $y 1 + $L/$s 2 * sin (($a-$B) * PII);
- $x 1R = $x 1 + $L/$s 2 * cos (($a + $B) * PII);
- $y 1R = $y 1 + $L/$s 2 * sin (($a + $B) * PII);
- Do not draw the leaves of the trunk and foliage
- Imageline ($im, (int) $x, (int) $y, (int) $x 2, (int) $y 2, $g);
- Imageline ($im, (int) $x 2, (int) $y 2, (int) $x 2R, (int) $y 2R, $g);
- Imageline ($im, (int) $x 2, (int) $y 2, (int) $x 2L, (int) $y 2L, $g);
- Imageline ($im, (int) $x 1, (int) $y 1, (int) $x 1L, (int) $y 1L, $g);
- Imageline ($im, (int) $x 1, (int) $y 1, (int) $x 1R, (int) $y 1R, $g);
- Recursively calls itself again
- Drawleaf ($g, $x 2, $y 2, $L/$s 3, $a + $C);
- Drawleaf ($g, $x 2R, $y 2R, $L/$s 2, $a + $B);
- Drawleaf ($g, $x 2L, $y 2L, $L/$s 2, $a-$B);
- Drawleaf ($g, $x 1L, $y 1L, $L/$s 2, $a-$B);
- Drawleaf ($g, $x 1R, $y 1R, $L/$s 2, $a + $B);
- }
- }
- Instantiation of
- Drawleaf ($g, 300, 500, 100, 270);
- Header ("Content-type:image/png");
- Imagepng ($im);
- ?>
Copy CodeIn PHP programming, recursive calls are often used with static variables. The meaning of static variables can be referenced in the PHP manual. Hopefully, the following code will be more useful for understanding recursion and static variables.
- Header ("Content-type:text/plain");
- function Static_function () {
- static $i = 0;
- if ($i + + < 10) {
- Echo $i. "\ n";
- Static_function ();
- }
- }
- Static_function ();
Copy CodeThe above code will output a number from 1 to 10. When the Static_function function is run for the second time, the variable i is still not released because it is a static variable, and thus the self-increment value can be obtained. |