% APRENDIZAJE AUTOMÁTICO (G. Pajares y J. M. de la Cruz, Eds.)
% Editorial: RA-MA
% Capítulo 11: Razonamiento Basado en Casos
% Autores: Ángela Ribeiro, Xavier P. Burgos Artizzu y Jesús M. Conesa Muńoz

% Función auxiliar
% Eliminación parcial de la línea de cultivo, método E3
function [res,colI2,aux2] = fC2Der(A,aux2,angulo,maximo,ptoIni,umb1,umb2,porc)
  [f,c] = size(A);
  res = A;
  mediaD=0;
  for i=1:f
        if(ptoIni+1<c)
            ptoD = ptoIni+1;
        else ptoD = c;
        end;
        sigueDer = true;
        while(sigueDer)
           if(sigueDer & ptoD<c)
               if(A(i,ptoD) == 1)%solo B 
                    if(ptoD+1<=c)
                        if(angulo(i,ptoD+1) == 1 | A(i,ptoD+1) == 1)
                            res(i,ptoD) = 0;
                            aux2(i,ptoD,1)=255;
                            aux2(i,ptoD,2)=255;
                            aux2(i,ptoD,3)=0;
                            ptoD = ptoD+1;
                        else ptoD = ptoD+1;
                        end;
                    else sigueDer = false;
                    end; 
               elseif(angulo(i,ptoD) == 1 & ptoD<c)%R (miro distancia a siguiente R)
                    aux = ptoD+1;
                    enc = (angulo(i,aux)==1 | A(i,aux)==1);
                    while(~enc & aux<=c)
                        enc = (angulo(i,aux)==1 | A(i,aux)==1);
                        aux = aux+1;
                    end;
                    enc = (enc & aux<=c);
                    if(enc)
                        if(aux-ptoD<=umb1)
                            res(i,ptoD:aux) = 0;
                            aux2(i,ptoD:aux,1)=255;
                            aux2(i,ptoD:aux,2)=255;
                            aux2(i,ptoD:aux,3)=0;
                            ptoD = aux;
                        elseif(aux-ptoD>umb1 & aux-ptoD<=umb2)
                            vfilas = sum(A(:,ptoD:aux));
                            if(max(vfilas)>=maximo*porc)
                                res(i,ptoD:aux) = 0;
                                aux2(i,ptoD:aux,1)=255;
                                aux2(i,ptoD:aux,2)=255;
                                aux2(i,ptoD:aux,3)=0;
                                ptoD = aux;
                            else sigueDer = false;
                            end;
                        else sigueDer = false;
                        end;    
                    else sigueDer = false;
                    end;
               else
                    aux = ptoD+1;
                    enc = (angulo(i,aux)==1 | A(i,aux)==1);
                    while(~enc & aux<=c)
                           enc = (angulo(i,aux)==1 | A(i,aux)==1);
                           aux = aux+1;
                    end;
                    if(aux-ptoD>umb2) sigueDer = false;
                    else ptoD = aux;
                    end; 
                end;
           else sigueDer = false;
           end;
        end;
        mediaD = mediaD+ptoD;
    end;
    colI2 = mediaD/f;
    
    res(:,ptoIni)=0;
    aux2(:,ptoIni,1)=255;
    aux2(:,ptoIni,2)=255;
    aux2(:,ptoIni,3)=0;