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

Вход на сайт

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

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

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

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

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

Рейтинг@Mail.ru Яндекс.Метрика
Язык программирования: 
Javascript
Среда программирования: 
Notepad++

var ctx, imgData, canvas;
var color = {r: 0, g: 124, b: 124 , a: 255}; 
var coords = new Array(1000); // массив центров окружностей
var Rn = 30; // радиус окружностей 
 
canvas = document.getElementById("cnvs");
ctx = canvas.getContext("2d");
 
function start()
{	
	calculateCoordinates();	// считаем координаты окружностей
	play(); // запускаем анимацию
}
 
function play()
{
    gradientMovement(); // рисуем картинку	
    setTimeout(() => requestAnimationFrame(play), 150); // задержка
}
 
function getRandomColor()
{
	// функция получения случайного цвета
	return "#"+((1<<24)*Math.random()|0).toString(16);
}
 
function setPixel(x, y, c) 
{ 
	/*
		Устанавливает пиксель с координатой (x, y) с цветом c
	*/
	var index = 4 * (x + canvas.width * y);  // получаем индекс пикселя
    imgData.data[index + 0] = c.r;
    imgData.data[index + 1] = c.g;
    imgData.data[index + 2] = c.b;
    imgData.data[index + 3] = c.a;
    return c;
}
 
var Point = function(x, y) 
{
	// Конструктор для точки
    this.x = x;
    this.y = y;
}
 
function gradientMovement()
{	
	/*
		Функция считает массив координат и отображает на странице.
	*/
 
    for(var i = 60; i < 570; i++)
	{		
		// координаты центра для каждой окружности		
		ctx.arc(Math.round(coords[i].x), Math.round(coords[i].y), Rn, 0, 2 * Math.PI);
		// рисуем окружности
		ctx.strokeStyle = getRandomColor(); 
		ctx.fillStyle = ctx.strokeStyle;
		ctx.stroke();
		ctx.fill();
		ctx.beginPath();   
	}
}
 
function calculateCoordinates() 
{
	/*
		Функция рассчитывает массив координат окружностей, и передает их в функцию для отрисовки.
	*/
 
	// Начальные данные
	var x0 = 4, y0 = 3, R = 3, N = 45, angle = 0;
 
    for(var i = 60; i < 570; i++)
	{		
		// по формулам вычисляем координаты центров окружностей 
		x = x0 + (i * R / N) * Math.cos(angle);
		y = y0 + ((N - i) * R / N) * Math.sin(angle); 
		// заносим координаты x и y в массив 
        coords[i] = (new Point(20 * x + 250, 20 * y + 250));
		// увеличивая угол на 6 градусов
        angle = angle + Math.PI / 30; 
	}
}

Прикрепленный файлРазмер
grad_movement.zip891.97 кб