Лиссажуть
Этот скрипт - очередной генератор картинок, вот несколько случайных фигур, для экономии места наложенных на одно полотно и с испорченным из-за формата JPEG качеством:
образцы фигур
Чем-то, наверное, это похоже на полиспираль и полярные цветы, но другое. Математически основано на фигурах Лиссажу.
В программе функция drawSpiral
выполняется через интервал и иногда очищает для себя экран. Естественно, можно вместо вызова setInterval
просто единожды вызвать функцию.
Последней строкой функция выводит в консоль браузера все настройки, давшие именно такую фигуру.
После запуска удобно нажать в браузере клавиши F11 и Ctrl+F5, чтобы развернуть окно на весь экран и обновить канву.
Ниже приводятся ссылка для выполнения скрипта онлайн.
Исходники можно увидеть, если нажать на прикреплённом файле правую кнопку мыши и сохранить его командой "Сохранить объект как...". Файл имеет тип .html и кодировку Юникода UTF-8.
Lissajous.html (2 Кб)
Выполнить скрипт онлайн в новом окне/вкладке
Добавим маленькую вариацию на PHP по той же теме. Скрипт можно выполнить на локальном хосте, таком как XAMPP (в нём и проверено, версия PHP 7.3).
Предполагается, что файл размещён в кодировке Юникода UTF-8, для обновления страницы и генерации нового узора достаточно нажать клавишу F5 в браузере. Цвет картинки всегда красный, это несложно поменять. Ну а сохранять рисунки с канвы HTML5 современные браузеры прекрасно умеют по клику правой кнопкой мыши на канве.
<?php //F5 - обновить картинку в браузере $w = 500; //ширина и высота картинки $img = imagecreatetruecolor($w, $w); //сделать картинку $color = imagecolorallocate ($img, 255, 255, 255); //белый imagefill ($img,0,0,$color); //залить //Творческая часть $c = floor($w/2); //середина $x0 = $y0 = -1; $color = imagecolorallocate ($img, 255, 0, 0); $r1 = $c*rnd(-1,1); $r2 = $c*rnd(-1,1); $m1 = rnd(-1,1); $m2 = rnd(-1,1); $d = 0; for ($phi=0; $phi<=360; $phi+=0.1) { $x1 = floor($r1*cos($m1*$phi)+$r2*cos($m2*($phi+$d)))+$c; $y1 = floor($r1*sin($m1*$phi)+$r2*sin($m2*($phi+$d)))+$c; $d -= 0.0001; if ($x0>-1 && $y0>-1) imageline ($img,$x0,$y0,$x1,$y1,$color); $x0 = $x1; $y0 = $y1; } //Конец творческой части header ('Content-Type: image/png'); //Отдаем формат .png header("Content-Disposition: inline; filename=lines.png"); imagepng ($img); //Отдали картинку с сервера imagedestroy ($img); //Удалили временный файл function rnd ($min,$max) { //случайное вещ.число [$min,$max] $a = mt_rand()/mt_getrandmax(); return $min + $a*($max-$min); } ?>
пример сгенерированной на PHP картинки
04.01.2020, 12:49 [1768 просмотров]