Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

Выдаёт ошибку glut32.dll не найден! При том, что он лежит в System32! Всё решил) Нужно отправить не в System32, а в System.
Спасибо за статью. Я не Ваш студент. Но мне она помогла написать функцию для Канторова множества на Python для черепашки: import turtle def kanter(x, y, d):     if d > 1:         turtle...
Как реализовать в данном примере границы расчёта?

Счетчики и рейтинг

Рейтинг@Mail.ru Яндекс.Метрика
Скриншот к примеру
Среда программирования: 
JavaScript
Код программы: 

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Вложенные квадраты</title>
</head>
<body>
<canvas id="canvas" width="1200" height="1800"></canvas>
<script>
	var canvas = document.getElementById("canvas");
	var ctx = canvas.getContext("2d");
	var size = 350; //размер квадратов
	var angle = 0; //угол поворота квадрата
 
	function drawSquare (p0, p1, p2, p3) { //функция для отрисовки квадрата
		ctx.beginPath();
		ctx.moveTo(p0.x, p0.y);
		ctx.lineTo(p1.x, p1.y);
		ctx.lineTo(p2.x, p2.y);
		ctx.lineTo(p3.x, p3.y);
		ctx.lineTo(p0.x, p0.y);
		ctx.stroke();
	}
	function drawPyramid (){ //функция для отрисовки вложенных квадратов	
		var pA = { //координаты вершин квадрата
			x: (250 + size * Math.cos(Math.PI / 4)),
			y: (250 + size * Math.sin(Math.PI / 4)),
		},
		pB = {
			x: (250 + size * Math.cos(3 * Math.PI / 4)),
			y: (250 + size * Math.sin(3 * Math.PI / 4))
		},
		pC = {
			x: (250 + size * Math.cos(5 * Math.PI / 4)),
			y: (250 + size * Math.sin(5 * Math.PI / 4))
		},
		pD = {
			x: (250 + size * Math.cos(7 * Math.PI / 4)),
			y: (250 + size * Math.sin(7 * Math.PI / 4))
		}
		drawSquare(pA, pB, pC, pD);
	}
	function drawSpiralSquare (){ ////функция для отрисовки вложенных спиральных квадратов
		var pA = { 
			x: (800 + size * Math.cos(angle + Math.PI / 4)),
			y: (250 + size * Math.sin(angle + Math.PI / 4)),
		},
		pB = {
			x: (800 + size * Math.cos(angle + 3 * Math.PI / 4)),
			y: (250 + size * Math.sin(angle + 3 * Math.PI / 4))
		},
		pC = {
			x: (800 + size * Math.cos(angle + 5 * Math.PI / 4)),
			y: (250 + size * Math.sin(angle + 5 * Math.PI / 4))
		},
		pD = {
			x: (800 + size * Math.cos(angle + 7 * Math.PI / 4)),
			y: (250 + size * Math.sin(angle + 7 * Math.PI / 4))
		}
		drawSquare(pA, pB, pC, pD);
	}
 
	for (let i = 0; i < 30; i++) { //цикл для построения вложенных квадратов и вложенных спиральных квадратов
		drawPyramid();
		drawSpiralSquare();
		size = size * Math.sin(Math.PI / 3); //с каждым шагом цикла меняется размер квадратов
		angle = angle + Math.PI / 19; //изменяется угол поворота квадрата
	}
</script>	
</body>
</html>

Прикрепленный файлРазмер
shevchuk_spyral.rar926 байтов