
PROBLEMA AL DIBUJAR RECTA CON ALGORITMO DEL PUNTO MEDIO EN UNA IMAGEN
Publicado por Carlos (10 intervenciones) el 19/02/2018 14:24:58
Hola, tengo el siguiente problema. Estoy intentando dibujar una recta en una imagen usando el algoritmo del punto medio para rectas pero no me funciona porque solamente me asigna un valor en la ultima posicion de la imagen.
Aqui os dejo dos funciones dibuja_pixel y dibujaconpuntero
Dibuja pixel tiene como entrada la coordenadas de un punto x, y la matriz imagen y el color o brillo
Y lo que hace es comprobar que no te sales de la matriz y asignar el valor del color.
Y la siguiente funcion hace lo siguiente:
P1 Y P2 son dos puntos dados como un vector con coordenadas x,y la entrada es la imagen y el brillo es el colo asignado al pixel.
La funcion solamente sigue el algoritmo del punto medio
Alguien me puede decir donde esta el error?
Aqui os dejo dos funciones dibuja_pixel y dibujaconpuntero
1
2
3
4
5
6
7
8
function resultado=dibuja_pixel(x,y,image,color)
[m,n]=size(image);
if x <=m & y<=n
image(x,y)=color;
end
resultado = image;
end
Dibuja pixel tiene como entrada la coordenadas de un punto x, y la matriz imagen y el color o brillo
Y lo que hace es comprobar que no te sales de la matriz y asignar el valor del color.
Y la siguiente funcion hace lo siguiente:
P1 Y P2 son dos puntos dados como un vector con coordenadas x,y la entrada es la imagen y el brillo es el colo asignado al pixel.
La funcion solamente sigue el algoritmo del punto medio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function salida=dibujaconpuntero(p1,p2,entrada,brillo)
y=p1(2);
dy= (p2(2)-p1(2));
dx= (p2(1)-p2(1));
d=2*dy - dx;
res = entrada;
for x=p1(1):p2(1)
devuelve = dibuja_pixel(x,y,res,brillo);
if d <0
d = d + 2*dy;
else
y=y+1; d = d+2*dy-2*dx;
end
end
salida=devuelve;
end
Valora esta pregunta


0