El algoritmo de línea de Bresenham es una forma de dibujar líneas rectas usando solo operaciones enteras rápidas (suma, resta y multiplicación por 2). Sin embargo, genera líneas con alias. ¿Hay una forma rápida similar de dibujar líneas antialias?
El algoritmo de línea de Bresenham es una forma de dibujar líneas rectas usando solo operaciones enteras rápidas (suma, resta y multiplicación por 2). Sin embargo, genera líneas con alias. ¿Hay una forma rápida similar de dibujar líneas antialias?
Respuestas:
¿Hay una forma rápida similar de dibujar líneas antialias?
No, porque, por definición, una línea suavizada toca más píxeles. Tales algoritmos serán más lentos.
En un rasterizador de software, la forma ubicua de dibujar líneas suavizadas es el algoritmo de línea de Xiaolin Wu . No es difícil de implementar, y de todos modos hay un pseudocódigo inusualmente de alta calidad en ese enlace.
En una tubería ráster de hardware, el primitivo de línea se expande a un cuadrante de espacio de pantalla mediante el sombreador de geometría predeterminado (o proporcionado por el usuario), y luego se dibuja como dos triángulos, que luego se pueden suavizar de la manera habitual.
En un rastreador de rayos, hay una variedad de opciones. Vale la pena pensar en cómo realmente quieres dibujar un objeto 1D. Tal vez como un cilindro (¡corteja las sombras!). Tenga en cuenta que esto introduce problemas de perspectiva / escorzo que pueden (o no) ser lo que desea. No hay una generalización clara. Entonces, obviamente, hagas lo que hagas, simplemente lo supermuestreas.