Algoritmo preciso de dibujo lineal de subpíxeles (algoritmo de rasterización)

Necesito un algoritmo que puede ser (un poco) más lento que elAlgoritmo de dibujo lineal de Bresenham pero tiene que ser mucho más exacto. Con "exacto" quiero decir: cada píxel tocado debe imprimirse. ¡No más, pero tampoco menos! Lo que significa que usar una línea más gruesa o similar no es una opción, ya que se incluirán demasiados píxeles. Además, no necesito un marco gráfico o similar como erapreguntó antes de¡Necesito el algoritmo! La aplicación no está realmente en 'gráficos' sino enárea de geografía donde los píxeles son 'mosaicos'.

El principal problema para mí es que necesito una precisión de subpíxeles, lo que significa que una línea podría comenzar en 0.75 / 0.33 y no solo en 0/0 como es el caso de los valores enteros. Traté de crear una solución de trabajo durante las últimas horas, pero no puedo hacer que funcione: hay demasiados casos extremos.

Primero pensé en una versión anti-alias como el algoritmo deWu debería hacerlo, pero imprime demasiados píxeles (especialmente para los puntos de inicio y finalización) y en algunos casos todavía falta algunos píxeles, p. para líneas muy cortas.

Luego traté de hacer que Bresenham funcionara donde reemplacé el segundo 'si' con 'más si' como se señalóaquí, y está más cerca pero aún no está allí. Luego intenté mover el Bresenham de precisión de entero a flotante, lo que resultó en un bucle sin fin (ya que los valores x, y saltaron sobre la condición final)if (y1 == y2 && x1 == x2))

Podría usar elingenuo dibujo lineal solución pero cualdelta debo usar? P.ej. si uso 0.1 todavía perderé algunos píxeles y usar valores más pequeños probablemente tomará demasiado tiempo (y aún faltan píxeles).

Se agradecería una solución de trabajo en C / Java / ... Al menos debería funcionar para el octante 1, pero una solución completa sería aún mejor.

Actualizar: Se me ocurrió la siguiente idea: usar la rasterización de línea ingenua y puedes calcular 4 píxeles candidatos para cada punto. Luego verifique esos 4 píxeles si la línea realmente los cruza. Pero no estoy seguro de si la intersección línea / caja puede ser lo suficientemente rápida.

Respuestas a la pregunta(2)

Su respuesta a la pregunta