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

Вход на сайт

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

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

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

torrvic, возможно, Вам нужно добавить -lGLU
Извините за тупой вопрос. У меня при сборке Вашего примера выходит ошибка: "undefined reference to gluLookAt". Не могу найти в какой библиотеке находится эта функция. У меня задано: -lGL -lglut ... Искал в /usr/lib таким образом: nm lib*so* | grep...
Здравствуйте. Спасибо за проект. У меня вопрос, по какой причине определение принадлежности точки многоугольнику работает некорректно, если координаты из больших чисел состоят, например: int[] vertex = new int[] {...
Сейчас проверила нашла причину не запускания // Создание контекста воспроизведения OpenGL и привязка его к панели на форме OpenGLControl1:=TOpenGLControl.Create(Self); with OpenGLControl1 do begin Name:='OpenGLControl1'; //вот тут...
Ну..кажется что то пошло не так http://pp.usera...

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

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

Алгоритм закраски с затравкой

С помощью этого алгоритма можно закрашивать любые замкнутые области.
Суть метода заключается в следующем: мы берём затравочную точку и закрашиваем её. Для каждого незакрашенного соседа мы выполняем аналогичную процедуру. Продолжаем делать это пока не дойдем до границы области.

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

<html>
<head>
<title>Lab 3</title>
<meta charset="utf-8">
<script type="text/javascript">
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
    c = c||1;
    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;
    if(data[3] <= p.data[3])
        canvas.putImageData(p,x,y);
}
 
 
 
 
 
function fill(x, y, color){ // Функция заливки многоугольника цветом color
    var startColor = canvas.getImageData(x, y, 1,1).data;
    plot.color = color;
    var q = [[x,y]];
    for(var i = 0; i!= q.length; i++){
        var x = q[i][0], y = q[i][1];
        var data = canvas.getImageData(x, y, 1,1).data;
        if(x>=0 && y>=0 && x<canvasX && y<canvasY && data[0]==startColor[0] && data[1]==startColor[1] && data[2]==startColor[2] && data[3]==startColor[3]){
            plot(x, y, 1);
            var s = q.length;
            q[s] = [x+1, y];
            q[s+1] = [x-1, y];
            q[s+2] = [x, y+1];
            q[s+3] = [x, y-1];
        }
    }
}
</script>
</head>
<body style="margin: 0; height: 100vh;">
<script type="text/javascript">
   var canvasElem= document.createElement('canvas');
    canvasElem.id     = "canvas";
    canvasElem.width  = 600;
    canvasElem.height = 600;
    canvasElem.style.margin = 'auto';
    canvasElem.style.display = 'flex';
    document.body.appendChild(canvasElem);
    canvas = canvasElem.getContext('2d');
    canvasX = canvasElem.width;
    canvasY = canvasElem.height;
    canvasElem.strokeStyle = "green";
    canvas.rect(50,50,250,200);
	canvas.stroke();
	fill(100, 100, {r:200, g:100, b:200, a:255});
 
 
 
</script>
</body>

Прикрепленный файлРазмер
plyushakova index html .zip1.01 кб