Среда программирования:
Любая
Статья по теме:
Задача: Построить окружность, используя алгоритм Брезенхема.
Алгоритм: Строим четверть окружности, и достраиваем остальные симметрично. На каждой итерации цикла выбираем одну из трёх возможных точек(сравниваем расстояние от центра до выбранной точки с радиусом окружности).
Код программы:
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_.zip | 1.48 кб |