Otóż mam dość nietypowy problem z tym algorytmem i o dziwo występuje on tylko na linuksowej wersji octavy (sprawdzałem na windowsowskiej - działa wszystko w porządku). Otóż zrealizowałem działanie tego algorytmu za pomocą tego kodu:
Kod: Zaznacz cały
clear all;
X = zeros(255);
x1 = input('Podaj x1: ');
y1 = input('Podaj y1: ');
x2 = input('Podaj x2: ');
y2 = input('Podaj y2: ');
if x1 > x2
temp = x1;
x1 = x2
x2 = temp
end;
if y1 > y2
temp = y1;
y1 = y2
y2 = temp
end;
dx = x2 - x1;
dy = y2 - y1;
e = dx/2;
n = 0;
while x1 != x2
e = e - dy;
if(e < 0);
x1 = x1 + 1;
y1 = y1 + 1;
X(x1,y1) = 255;
e = e+dx;
else
x1= x1 + 1;
X(x1,y1) = 255;
end;
end;
figure(1);
image(X);
imwrite(X, 'x.jpg');
colormap(gray(2));
Kod: Zaznacz cały
octave:1> Zad1
Podaj x1: 10
Podaj y1: 10
Podaj x2: 200
Podaj y2: 200
octave: magick/semaphore.c:525: LockSemaphoreInfo: Assertion `semaphore_info != (SemaphoreInfo *) ((void *)0)' failed.
panic: Aborted -- stopping myself...
attempting to save variables to `octave-core'...
save to `octave-core' complete
Przerwane