БлогNot. Лиссажуть

Лиссажуть

Этот скрипт - очередной генератор картинок, вот несколько случайных фигур, для экономии места наложенных на одно полотно и с испорченным из-за формата 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 картинки
пример сгенерированной на PHP картинки

теги: php графика javascript картинка random

04.01.2020, 12:49; рейтинг: 270