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

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

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

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

У меня проблема вот с этим: gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);. Вылезает ошибка: CS1061 "object" не содержит определения "GL_COLOR_BUFFER_BIT", и не удалось найти доступный метод расширения "GL_COLOR_BUFFER_BIT",...
Большое спасибо. Единственный код который прошел без каких либо ошибок. Ура!!!
Скажите пожалуйста, подскажите алгоритм по которому по заданным точкам можно определить тип многогранника, скажем это куб или прямоугольный параллелепипед. Нашел теорию по этим фигурам: https://www.mat... https://www.mat... Акцентировать внимание...
Всем у кого не работает. файл wizard.script Ещё одно упоминание Glut32 в строке "if (!VerifyLibFile(dir_nomacro_lib, _T("glut32"), _T("GLUT's"))) return false;" меняем на "if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("GLUT's"))) return...
Не получается, емаё

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

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

//Инициализация canvas
var canvas = document.getElementById('canvas');
	var ctx = canvas.getContext('2d');
	//Объявление переменных
	a = 0;
	b = 0;
	check = 1;
 
	var currentAngle = 0; // значение угла
	var radius = 100; // радиус окружности
 
	//Отрисовка узнавемого изображения
	function draw() { //Функция отрисовки мороженого
 
		//Рожок
		ctx.clearRect(0, 0, 800, 800); //Очистка экрана перед отрисовкой
 
		// расчет синуса и косинуса текущего значения угла и умножение на значение радиуса
		var vx = Math.cos(currentAngle) * radius;
		var vy = Math.sin(currentAngle) * radius;
		//в будущем будем прибавлять полученные значения, чтобы придать вращение объектам
 
		currentAngle += 0.03;	// увеличиваем значение угла
 
		ctx.beginPath(); //начало записи пути
		ctx.fillStyle = "yellow"; //Данный элемент окрашивается в жёлтый
		ctx.moveTo(400+vx, 700+vy); //Вершина треугольника
		ctx.lineTo(300+vx, 400+vy); //Левая точка треугольника (к ней будет проведена линия от вершины)
		ctx.lineTo(500+vx, 400+vy); //Правая точка треугольника (к ней будет проведена линия от вершины)
		ctx.fill(); //Данный метод осуществляет заливку фигуры
		ctx.strokeStyle = "#CD5700"; //Контур мороженки
		ctx.closePath(); //конец пути
		ctx.stroke(); //определение  отрисовки пути
 
		//Сетка на рожке		
		for (var i = 300; i < 500; i += 25) { //Цикл для создания сетки на мороженом (данный фрагмент отрисовывает вертикальную сетку)
			ctx.beginPath();
			ctx.moveTo(i+vx, 400+vy);
			ctx.lineTo(400+vx, 700+vy);
			ctx.strokeStyle = "#CD5700"
			ctx.stroke();
		}
 
		for (var k = 400; k < 700; k += 30) { //Цикл для создания сетки на мороженом (данный фрагмент отрисовывает левую часть сетки (горизонтальной))
			ctx.beginPath();
			ctx.moveTo(300+vx, 400+vy);
			ctx.lineTo(400+vx, k+vy);
			ctx.strokeStyle = "#CD5700"
			ctx.stroke();
		}
 
		for (var k = 400; k < 700; k += 30) { //Цикл для создания сетки на мороженом (данный фрагмент отрисовывает правую часть сетки (горизонтальной))
			ctx.beginPath();
			ctx.moveTo(500+vx, 400+vy);
			ctx.lineTo(400+vx, k+vy);
			ctx.strokeStyle = "#CD5700"
			ctx.stroke();
		}
 
		//Шарики мороженого		
		ctx.beginPath();
		ctx.fillStyle = "pink";
		ctx.arc(400+vx, a+vy, 100, 0, Math.PI * 2, true); //Отрисовка шарика в canvas 
		//(координаты центра (в этом случае 400 + vx, а), радиус (100), 
		//угол начала дуги (0), угол завершения дуги (Math.PI*2), направление рисования дуги (true))
		ctx.strokeStyle = "#F8DBFF"
		ctx.stroke();
		ctx.fill()
 
		ctx.beginPath();
		ctx.arc(250+vx, b+vy, 80, 0, Math.PI * 2, true);
		ctx.strokeStyle = "#F8DBFF"
		ctx.stroke();
		ctx.fill()
 
		ctx.beginPath();
		ctx.arc(550+vx, b+vy, 80, 0, Math.PI * 2, true);
		ctx.strokeStyle = "#F8DBFF"
		ctx.stroke();
		ctx.fill()
 
		//Создание анимации
		if (check == true) {
			a = a + 2; //Чем больше данный параметр, тем быстрее анимация. Чем меньше, тем медленее
			b = b + 2.4;
		}
 
		if (a > 320 && b > 350) {
			check = false;
		}
		requestAnimationFrame(draw);  //Функция запуска анимации
	}

Прикрепленный файлРазмер
Demo.rar46.8 кб