Каннабола

Каннабола — это семейство математических функций, описывающих поведение внешней границы листа конопли.

Самая простая каннабола, аналитически записываемая как R = (1 + sin(t))(1 + 0.9cos(8t))(1 + 0.1cos(24t)), была впервые выведена Супманом

Существуют и более сложные варианты каннаболы, например каннабола Шфаера (см. рисунок)

Каннабола и PHP

Скрипт реализующий построение каннаболы интерпретатором PHP:

<?
$image = imagecreate(601,601);
$white = imagecolorallocate($image, 255, 255, 255);
$gray = imagecolorallocate($image, 128, 128, 128);
$lightgray = imagecolorallocate($image, 216, 216, 216);
$black = imagecolorallocate($image, 0, 0, 0);
imagefill($image,0,0,$white);
for ($i=0;$i<=600;$i+=10) 
{
  imageline($image,0,$i,600,$i,$lightgray);
  imageline($image,$i,0,$i,600,$lightgray);
}
imageline($image,0,600,600,600,$gray);
imageline($image,0,0,0,600,$gray);
for ($i=600,$j=0;$i>=0;$i-=10,$j+=10) 
{
  imageline($image,0,$i,3,$i,$gray); 
  if ($j>0 && $j<600) imagestring ($image,1,6,$i-4,$j/10,$black);
  imageline($image,$i,597,$i,600,$gray); 
  if ($i>10 && $i<600) imagestringup ($image,1,$i-3,592,($i/10),$black);
}
function draw() 
{
  global $black,$image;
  for($z=200;$z>5;$z-=5)
  {
    $color = imagecolorallocate($image, 0, 255-$z/2-$z/3, 0);
    $oix=0;$ox=0;$oy=0;
    for($t=0;$t<8400;$t++)
    {
       $ix=$oix+pi()/4196;
       $r=(1+sin($ix))*(1-0.9*abs(sin(4*$ix)))*(0.9+0.05*cos(200*$ix));
       $x=cos($ix)*$r*$z+300;
       $y=-sin($ix)*$r*$z+500;
       if($ox==0&&$oy==0)
       {
          $ox=$x;
          $oy=$y;
       }
       imageline($image,$ox,$oy,$x,$y,$color);
       $ox=$x;
       $oy=$y;
       $oix=$ix;
    }
  } 
}
draw();
header('Content-type: image/jpeg');
imagepng($image);
?>

См. также

 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home