Choose lambda value
, choose color
, choose iteration counter
, clockwise
<canvas id="canvas" width="600" height="600"></canvas> <script> var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var p0 = { //координаты снежинки x: 20, y: 400 }, p1 = { x: 200, y: 20 }, p2 = { x: 400, y: 400 }; function drawLine(p0, p1) { ctx.beginPath(); ctx.moveTo(p0.x, p0.y); ctx.lineTo(p1.x, p1.y); ctx.stroke(); } function drawKoch(p0, p1, limit) { //лимит - глубина рекурсии var dx = p1.x - p0.x, dy = p1.y - p0.y,
var ctx, canvas, r, r1, r2, r3, color, color1, color2, color3; // Функция Анимации window.requestAnimFrame = (function(){ return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame })(); // Функция запускающаяся автоматически после загрузки страницы window.onload = function(){ canvas = document.getElementById('paint'); ctx = canvas.getContext('2d');
Ширина линии
Расстояние между линиями
Задача — написать программу, которая будет строить изображение Канторова множества.
Для построения изображения ввести в поля "Ширина линии","Расстояние между линиями" нужные значения и нажать на кнопку отправить.
<!doctype html> <html lang = "en"> <head> <title> fractal </title> <meta charset = "utf-8"> <script src = "js/script.js" defer></script> </head> <body> <div id = "main" style = "position: absolute; top: 0; left: 0; "> <canvas id = "canvas" width = "500" height = "500" style = "background-color: black; "></canvas> <div id = "menu"> <span>Choose lambda value</span> <label> <input id = "lambda" type = "number" size = "3" min = "1" max = "5000" value = "64"> </label> <span>, choose color</span> <label> <select id = "color"> <option value = "fixed"> Fixed color </option> <option value = "random"> Random color </option> <option value = "allRandom"> All random color </option> <option value = "gradient"> Gradient color </option> </select> </label> <span>, choose iteration counter</span> <label> <input id = "counter" type = "number" size = "4" min = "1" max = "5000" value = "150"> </label> <span>, clockwise</span> <label> <input id = "clockwise" type = "checkbox" checked> </label> <button id = "start"> Select </button> </div> </div> </body> </html>
zoom power
Построить фрактал Квазиклевер с возможностью увеличить масштаб изображения и обзора конкретных участков фрактала.
После загрузки страницы нужно сначала задать количество итераций(ползунок power), потом изменить приближение(ползунок zoom), затем можно кликать по отдельным пикселям конвы для того, чтобы центрировать на них камеру.
Код программы:
////2// //1///3 - нумерация дочерних кругов ////4// var ctx,m=6,z=1,nx=250,ny=250; //ctx - конва, m - количество итераций, nx ny - координаты для центрирования по клику.
<canvas id="canv" width="500" height="500" ></canvas> <script> let ctx = document.getElementById('canv').getContext('2d'); ctx.beginPath(); ctx.fillStyle = "black"; ctx.fillRect (0, 0, 500, 500); ctx.fill(); ctx.stroke(); // функция строящая квадрат по длине диагонали, углу между диагональю и положительным направлением оси х, центру квадрата function SQR (d, alpha, cx, cy) { // расчет координат вершин квадрата
var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); var imageData; var xMouse = 0; var yMouse = 0; var stack = []; // Данная строчка необходима для правильной работы алгоритма // Смысл залючается в переносе начала координат на пол пикселя // Это необходимо для достижения четких границ линий // Без этого метода линии в канвасе не идеально черные, тк имеют сглаживание ctx.translate(0.5, 0.5); // Ставим пиксель, по умолчанию цвет черный function putPixel(x, y, c = {R: 0, G: 0, B: 0, A: 255}) {
<!-- VERTEX SHADER --> <script type="shader" id="Vshader"> attribute vec2 vertexPosition; //атрибут вершин void main(){ gl_Position = vec4(vertexPosition, 0.0, 1.0); //строим вершинный шейдер } </script> <!-- FRAGMENT SHADER --> <script type="shader" id="Fshader"> precision mediump float; //устанавливаем точность для чисел с плавающей точкой uniform vec2 u_resolution; //униформы uniform float u_time; void main(){ vec2 st = gl_FragCoord.xy/u_resolution.xy; //нормализуем область
<script> var ctx=document.getElementById('io').getContext('2d'); var LUCHI1X = [210, 237, 230, 190, 200, 221, 231, 243, 238, 326, 399, 345, 341, 379, 349, 320, 429, 325, 327, 379, 315, 332, 362, 325, 264, 257, 231, 200, 185, 183, 100, 30, 75, 47, 0, 41, 40, 25, 43, 80, 42, 107, 123, 132, 148];
var ctx, canvas, h, w, m, xs = [], ys = [], xt = [], yt = [], min = [], ans, xcen, ycen, k; window.onload = function(){ canvas = document.getElementById("paint"); w = canvas.width; h = canvas.height; ctx = canvas.getContext("2d"); ctx.fillStyle = "white"; }; function Init(){ // Инициализация переменных var xa, xb, ya, yb, xc, xd, yc, yd; // точки концов отрезков // массивы, содержащие информацию о точках и длинах всех рассматриваемых отрезков xs = []; ys = []; xt = [];