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

Вход на сайт

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

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

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

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

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

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

Задача: Построить окружность, используя алгоритм Брезенхема.
Алгоритм: Строим четверть окружности, и достраиваем остальные симметрично. На каждой итерации цикла выбираем одну из трёх возможных точек(сравниваем расстояние от центра до выбранной точки с радиусом окружности).

Код программы: 

var plot = function(x, y, c) { // Установить пикселб в т. (x, y) с прозрачностью c
    if(isFinite(x) && isFinite(y)){
        var color = {
            r: plot.color.r,
            g: plot.color.g,
            b: plot.color.b,
            a: plot.color.a*c
        };
 
        setPixel(x,y, color);
    }
};
 
function setPixel (x,y,c) { // Функция установки пикселя в js
    var p=canvas.createImageData(1,1);
    p.data[0]=c.r;
    p.data[1]=c.g;
    p.data[2]=c.b;
    p.data[3]=c.a;
    var data = canvas.getImageData(x, y, 1,1).data;
    canvas.putImageData(p,x,y);
}
 
 
function drawCircle(x,y, radius, color){
    if(color)  {
        plot.color = color;
    } else {
        plot.color = {r:0,g:0,b:0,a:255};
    }
    var x0 = 0, y0 = radius, gap = 0, delta = (2 - 2 * radius);
    while (y0 >= 0)
    {
        plot(x + x0, y - y0, 1);
        plot(x - x0, y - y0, 1);
        plot(x - x0, y + y0, 1);
        plot(x + x0, y + y0, 1);
        gap = 2 * (delta + y0) - 1;
        if (delta < 0 && gap <= 0)
        {
            x0++;
            delta += 2 * x0 + 1;
            continue;
        }
        if (delta > 0 && gap > 0)
        {
            y0--;
            delta -= 2 * y0 + 1;
            continue;
        }
        x0++;
        delta += 2 * (x0 - y0);
        y0--;
    }
}

Прикрепленный файлРазмер
opryshko_exampleBresenhemCircle.html_.zip1.48 кб