Boas…
Pessoal, peço a ajuda de vcs para a resolução de um grande problema.Tenho um trabalho de Computação Gráfica onde foi solicitado que fizéssemos um sistema para a geração de retas, polígonos, círculos.
O porém da história é que nós devemos usar o Algoritmo de Bresenham, plotando ponto a ponto.Nesse caso doi descartado o uso do método drawLine(x1,y1,x2,y2) para plotarmos a reta inteira.
O que está ocorrendo é que quando eu passo as coordenadas para o algoritmo, plotando ponto a ponto a reta sai crescente, e usando essas mesmas coordenadas utilizando o método drawLine a reta sai decrescente. O que realmente está ocorrendo é que o meu código está traçando a reta oposta a gerada pelo drawLine.Abaixo segue o código para esclarecimentos.
private void algoritmoReta(String x_1, String y_1, String x_2, String y_2) {
g.setColor( Color.WHITE );
g.fillRect( 0, 0, 400, 400 );
g.setColor( Color.BLUE );
int xmax=400, ymax=400, x1=0,x2=0,y1=0,y2=0;
try{
x1 = Integer.parseInt(x_1);
y1 = Integer.parseInt(y_1);
x2 = Integer.parseInt(x_2);
y2 = Integer.parseInt(y_2);
} catch (Exception e){
erro("Erro ao formatar pontos.");
}
int dx = Math.abs(x1-x2);
int dy = Math.abs(y1-y2);
int d = 2*(dy-dx);
int dneg = 2*dy;
int dpos = 2*(dy-dx);
int x=0, y=0, xend=0;
if(x1>x2){
x=x2;
y=y2;
xend=x1;
} else {
x=x1;
y=y1;
xend=x2;
}
putPixel(x, y);
while(x<xend){
x++;
if(d><0)
d+= dneg;
else{
y++;
d+= dpos;
}
putPixel(x, y);
}
}
private void putPixel(int x, int y){
//(x1, y1) é o ponto inicial
//(x2, y2) o ponto final da reta
//g.drawLine(10,100,300,300); /*pontos usados */
g.drawLine(x, 400-y, x, 400-y);
}