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

Вход на сайт

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

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

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

Рекурсия присутствует?
И где эти прикрепленные файлы?
Я код на C++ набрал сам. Строил кривую Безье, но "прилипал" к нулю. То есть я задаю точки далеко от нуля, а он строил из нуля, а потом только обходил предложенные точки. Потом я нашёл Ваш сайт и эту статью. Оказалось, что я забыл возвести t в...
просто я не так понял, здесь мы вращаем точки куба что вращает сам куб. Мне нужно вращать просто 3д объект , данный способ не подходит
Задавайте объект в мировых координатах. Вращайте его относительно мировой системы координат. А при отрисовке преобразуйте в экранные координаты. Посмотрите пример преобразования в экранные координаты.

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

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

var canvas = document.getElementById("canvas");//инициализация канваса
var ctx = canvas.getContext("2d");
var r = 10, rad=20, a = 0, sin=0, x1 = r, y1 = r;//инициализация переменных
function draw() {
    rad = r;
    rad*=Math.abs(Math.sin(sin))+1;//изменение радиуса точек
    ctx.fillStyle = "rgba(242, 243, 244, 1)"//цвет фона
    ctx.fillRect(0, 0, 500, 500);//заливка фона
        for (var j = 0; j < 20; j++) {//прорисовка красных шаров, которые двигаются вправо
            for (var i = 0; i < 20; i++) {
                ctx.beginPath();
                ctx.arc(-23*x1+6*r*i + a, y1 + 12*r* j, rad, 0, 2 * Math.PI);
                ctx.fillStyle = "rgba(255, 0, 0, 0.33)"
                ctx.fill();
                ctx.closePath();
            }
        }//*/
 
        for (var j = 0; j < 20; j++) {//прорисовка красных шаров, которые двигаются влево
            for (var i = 0; i < 20; i++) {
                ctx.beginPath();
                ctx.arc(-41*x1+6*r*i - a, 7*y1 + 12*r* j, rad, 0, 2 * Math.PI);
                ctx.fillStyle = "rgba(255, 0, 0, 0.33)"
                ctx.fill();
                ctx.closePath();
            }
        }//*/
 
        for (var j = 0; j < 20; j++) {//прорисовка зеленых шаров, которые двигаются влево-вниз
            for (var i = 0; i < 20; i++) {
                ctx.beginPath();
 
                    ctx.arc(-47*x1 + 6 * r * i + 12*r*j - a, y1 + 6 * r *i - a, rad, 0, 2 * Math.PI);
                    ctx.fillStyle = "rgba(0, 255, 0, 0.33)"
                    ctx.fill();
                    ctx.closePath();
 
            }
        }//*/
 
        for (var j = 0; j < 20; j++) {//прорисовка зеленых шаров, которые двигаются вправо-вверх
            for (var i = 0; i < 20; i++) {
                ctx.beginPath();
                ctx.arc(-65*x1 + 6 * r * i + 12*r*j + a, -23*y1 + 6 * r *i + a, rad, 0, 2 * Math.PI);
                ctx.fillStyle = "rgba(0, 255, 0, 0.33)"
                ctx.fill();
                ctx.closePath();
            }
        }//*/
 
 
        for (var j = 0; j < 20; j++) {//прорисовка синих шаров, которые двигаются вправо-вниз
            for (var i = 0; i < 20; i++) {
                ctx.beginPath();
 
                ctx.arc(-71*x1 + 6 * r * i + 12*r*j + a, y1 + 6 * r *i - a, rad, 0, 2 * Math.PI);
                ctx.fillStyle = "rgba(0, 0, 255, 0.33)"
                ctx.fill();
                ctx.closePath();
 
            }
        }//*/
 
        for (var j = 0; j < 20; j++) {//прорисовка зеленых шаров, которые двигаются влево-вверх
            for (var i = 0; i < 20; i++) {
                ctx.beginPath();
                ctx.arc(-113*x1 + 6 * r * i + 12*r*j - a, -23*y1 + 6 * r *i + a, rad, 0, 2 * Math.PI);
                ctx.fillStyle = "rgba(0, 0, 255, 0.33)"
                ctx.fill();
                ctx.closePath();
            }
        }//*/
 
    a+=1;//переменная, отвечающая за смещение кружков
    sin+=Math.PI/60;//переменная отвечающая за плавное изменение радиуса кругов
    if(a > 12*r){ a=1;}
    if(sin == Math.PI) sin = 0;
 
}
draw();
canvas.addEventListener("click", draw);
setInterval(draw, 50);