Consulta Rellenado de Polígonos

Consulta Rellenado de Polígonos

de Renzo Damian Gambone Camblong -
Número de respuestas: 6

Buenas,

Estaba repasando las ppts y la clase grabada de rellenado de polígonos y no termino de entender algunos de los casos particulares del algoritmo.

Entiendo que para cada linea de barrido (dado un y su linea horizontal) me voy moviendo hacia la derecha (aumentando según x)

Y que para intersección de la linea de rastreo con una arista del polígono se tiene que contar paridad (empezando en par) y pintando solo los pixeles cuando la intersección cambia a impar hasta que vuelve a cambiar a par.

---

Lo que no termino de entender es para el caso particular 3 y 4, a qué se refiere con y_min e y_max. Leyendo lo que entiendo es que cada arista tiene dos vertices y para esa arista en lugar de contar ambos vertices para la paridad se quiere procesar solo el de menor posición en y?

En la clase me suena que se habló de que no se querían contar intersecciones dos veces, pero no entiendo como un algoritmo que va barriendo horizontalmente puede procesar el mismo punto dos veces.

Mirando el antes y el después del poligono aprecio que se descartaron muchos más puntos del lado de arriba que de lado de abajo (y supongo que tiene algo que ver, pero no me termina de cuadrar)

---

Me pasa  algo parecido con las horizontales (que dice que no cuentan para la paridad al no ser ni y_min ni y_max). Ahí mirando el dibujo veo que si viene ya pintada por haber pasado por una arista no horizontal sigue pintando en la horizontal, pero que sinó no.

Espero haberme podido expresar claramente. Muchas gracias!

Saludos,
Renzo.

En respuesta a Renzo Damian Gambone Camblong

Re: Consulta Rellenado de Polígonos

de Eduardo Fernandez -

Hola Renzo,

Lo que hace el algoritmo es ver la intersección de la línea de barrido con las aristas del polígono, y en ese caso, en el vértice, hay 2 intersecciones de la linea de barrido. Pero no las cuenta dos veces, sólo cuenta una intersección. 

Luego, para el caso de las aristas horizontales, estas no se consideran, no se cuentan, se ignoran. Sólo se toman en cuenta las otras aristas. Entonces, si hay intersección con un vertice ymax para una arista y la otra arista es horizontal, entonces el ymax no se considera y se mantiene la paridad. Si el vértice es ymin del otro vértice, entonces sí cambia la paridad. O sea, sigue la regla de ymin e ymax para las otras aristas. 

Fijate si esta explicación te ayuda.

Cualquier cosa preguntá más específico lo que te falta comprender.

saludos,

Eduardo

En respuesta a Eduardo Fernandez

Re: Consulta Rellenado de Polígonos

de Renzo Damian Gambone Camblong -
Buenas Eduardo,

Entiendo que cuenta una sola intersección pero no entiendo por qué hace diferencia el y_min o y_max (pues ambas lineas inciden en el mismo punto, no?)

Creo que es que no termino de entender bien qué es un vértice y_max (quiere decir que para una arista no horizontal el vertice superior?)

Entendí que las horizontales no son ninguna entonces no alteran la paridad actual, pero me pierdo en qué es bien y_min e y_max.

Gracias por la respuesta.

Saludos,
Renzo.
En respuesta a Renzo Damian Gambone Camblong

Re: Consulta Rellenado de Polígonos

de Eduardo Fernandez -

Hola,

Lo que hace es calcular la intersección de cada arista con la linea de rastreo. 

Dada una arista y la línea de rastreo, se fija dónde fue esa intersección (¿fue en el vértice superior de la arista (y_max)?, ¿fue en el interior de la arista?, ¿fue en el vértice inferior (y_min)?). Según el caso lo toma en cuenta o no para el cambio de paridad. 

Vértice y_max es el vértice con coordenada y máxima. y_min es el vértice con coordenada y mínima.

Aristas horizontales tienen todos los puntos con el mismo valor de y (por tanto no hay un vértice y_max ni uno y_min)

Ojalá ahora quede más claro,

Eduardo 

En respuesta a Eduardo Fernandez

Re: Consulta Rellenado de Polígonos

de Renzo Damian Gambone Camblong -
Buenas,

Ahí va creo que entendí, no es que el vertice se va a contar dos veces, sinó que para ver si contarlo para la paridad se mira si tiene alguna intersección con un vértice y_min (en tal caso cuenta) si no no cuenta para el calculo de la paridad.

Por ejemplo en /\ contaría pero en \/ no, correcto?

Y en el caso _/ no se contaría pero en el caso /¯ sí.

Eso es todo para ver si ese vertice de intersección afecta o no en cambiar la paridad.

Es así, no?

Muchas gracias,
Renzo.