Каннабола

Материал из Викиреальностя
Перейти к: навигация, поиск
Cannabola.jpg

()

Компас-3D. Python. Каннабола

Каннабола (cannabola) — интернет-мем[1], представляющий собой выведенное (по собственным данным) пользователями «Живого Журнала» семейство математических функций, описывающих поведение внешней границы листа конопли.

Самая простая каннабола аналитически записывается как:

R = (1 + sin(t))*(1 + 0.9cos(8t))*(1 + 0.1cos(24t))[1]

Существуют и более сложные варианты каннаболы:

R = (1 + sin(t))*(1 - 0.9*abs(sin(4*t)))*(0.9 + 0.05*cos(200*t))[1]

И суперсложные варианты[2].

Содержание

[править] Каннабола и PHP

Скрипт, реализующий построение каннаболы интерпретатором 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/png');
imagepng($image);
?>

[править] См. также

[править] Примечания

[править] Ссылки

Каннабола относится к темам: