Cg algoritmo de bresenham
FrankMarcel.com – SEO, Tecnologia e Informação
RSS Feed
Follow me on twitter.
Desenhar Reta em Java – Algoritmo de Bresenham/DDA Inteiro
Autor: frankmarcel - 31 de julho de 2009Deixe um comentário! (5)Ver comentários!
Hail! É verdade, o objetivo é fazer deste, um blog de SEO, mas programação também está no sangue e eu gosto de variar o tema, então lá vai: Algoritmo de Bresenham ou DDA Inteiro – o algoritmo para desenhar retas “na raça” – código em Java.
O objetivo deste algoritmo é reduzir o esforço computacional para se desenhar uma reta, bem como reduzir erros de arredondamento e operações com ponto flutuante. E, de fato, o algortimo de Bresenham consegue fazer isso – ele se desenvolve sem nenhuma operação de ponto flutuante, nenhuma variável numérica é do tipo float ou double e, também, o algoritmo não realiza divisões entre números inteiros.
Abaixo, o algoritmo para desenhar retas em Java e, na sequência, algumas explicações. Algoritmo DDA Inteiro em Java (Bresenham) 1 2 3 4 5 6 7 8 9 10 11 | public void draw(Graphics g){ int x, y, erro, deltaX, deltaY; erro = 0; x = p1.x; y = p1.y; deltaX = p2.x - p1.x; deltaY = p2.y - p1.y; if((Math.abs(deltaY)>=Math.abs(deltaX) && p1.y>p2.y) ||(Math.abs(deltaY)<Math.abs(deltaX) && deltaY<0)){ x = p2.x; y = p2.y; deltaX = p1.x-p2.x; deltaY = p1.y-p2.y; } p1.draw(g); if(deltaX>=0){ if(Math.abs(deltaX)>=Math.abs(deltaY)){ for(int i=1;i<Math.abs(deltaX);i++){ if(erro<0){ x++; new Ponto(x,y).draw(g); erro += deltaY; }else{ |
Detalhes sobre o DDA Inteiro de Retas
Como eu uso esse método?
Normalmente eu crio uma classe “Reta” com os atributos Ponto p1 e p2 (os pontos inicial e final da reta), o seu método construtor que recebe o ponto inicial e o final; e este método “draw” para desenhar a reta. package re tas.circulos.cg; public class Bresenham {