Loading

Alison's New App is now available on iOS and Android! Download Now

Study Reminders
Support
Text Version

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Hola y bienvenidos a la conferencia número 27 en el curso de gráficos de la computadora. Estamos discutiendo el gasoducto 3D, ya que puede recordar que tiene 5 etapas y ya hemos discutido 4 etapas en detalles y actualmente estamos en la quinta etapa. Por lo tanto, vamos a tener un rápido relook en las 5 etapas.
Como se puede ver en esta figura. Ya hemos discutido la primera etapa en los detalles, la representación del objeto, luego la transformación de la segunda etapa de modelado, la tercera etapa de iluminación o la asignación de color, la cuarta etapa de visualización de la tubería y actualmente estamos en la quinta etapa de conversión de exploración o representación.
Ahora, en la conversión de escaneo lo que hacemos, esencialmente tratamos de mapear la descripción de una imagen dada en el sistema de coordenadas del dispositivo a una descripción en la cuadrícula de píxeles que significa, configurar píxeles. Por lo tanto, en las conferencias anteriores hemos cubierto los métodos que se siguen para tal mapeo, para el punto, la línea y el círculo.
Y hemos visto cómo podemos mejorar la eficiencia de estos métodos introduciendo mejores enfoques como el algoritmo de dibujo de la línea de Bresenham utilizado para la conversión de la exploración de líneas, el algoritmo de punto medio para la conversión de exploración de círculo y así sucesivamente. Hoy vamos a discutir otra técnica de conversión de escaneo relacionada con áreas de relleno, junto con eso también vamos a discutir cómo mostrar los personajes que significa las letras, números etcétera en la pantalla. Trataremos de obtener una idea amplia sobre la representación de personajes.
Comencemos con el renderizado de área de relleno. Así que, primero tratemos de entender qué es un área de relleno.
Lo que hemos discutido hasta ahora, cómo determinar los píxeles que definen una línea o un límite del círculo.
A veces ese no es el caso, a veces podemos conocer pixels que forman parte de una región. Y es posible que queramos aplicar un color específico a toda esa región. Entonces, antes lo que hicimos? Determinamos los píxeles que forman parte de una sola línea o el límite del círculo, pero a veces puede haber situaciones en las que podemos ir por asignar colores a la región en lugar de una línea o un límite.
Ahora, eso es lo mismo que decir que queremos llenar una región con un color especificado. Por lo tanto, esto es la representación de áreas de relleno, uno de los temas de nuestra discusión de hoy. Por lo tanto, cuando hablamos de representación de área de relleno nos estamos refiriendo a una región y nuestro objetivo es llenar esa región entera que significa los píxeles que forman parte de esa región con un color especificado. Esto contrasta con lo que hemos aprendido anteriormente, donde nuestro objetivo era encontrar píxeles y, por supuesto, asignar colores a los que forman parte de una línea o el límite de un círculo.
Tratemos de entender este concepto con un ejemplo. ¿Considera un sistema de pintura interactivo, así que en ese sistema lo que hacemos? Podemos tratar de dibujar cualquier forma arbitraria y entonces podemos desear asignar algunos colores a esa forma, eso significa asignar colores dentro del límite de ese conjunto. También, es posible que queramos cambiar el color, por lo que lo primero es que queramos colorearlo, colorear esa forma arbitraria que hemos dibujado.
Ahora, cuando decimos que estamos tratando de colorear alguna forma que significa que queremos colorear el límite, así como el interior. También es posible que queramos cambiar de color y que de forma demasiado interactiva que significa seleccionar algún color de un menú, haga clic en el interior de la forma para indicar que el nuevo color a aplicar a esa forma. Si usted ha usado algún sistema de pintura interactivo, entonces tal vez ya está familiarizado con estas cosas.
Por ejemplo, suponga que este es nuestro lienzo y aquí hemos dibujado una forma algo así, entonces puede haber un menú de color o decir paleta de colores, por lo que podemos elegir este menú, digamos por ejemplo este color haga clic en nuestro puntero del ratón o toque algún punto dentro de esta forma y luego el color central se aplica en el interior de esta forma. Por lo tanto, es la coloración interactiva de una forma. Y aquí como se puede ver, estamos preocupados por la coloración de una región en lugar de sólo el límite, a diferencia de lo que hicimos cuando estábamos tratando de determinar los píxeles, así como sus colores para las líneas o límites del círculo La pregunta es cómo podemos realizar dicha coloración o el relleno de la región? Ahora, eso depende de cómo se definan las regiones, por lo que puede haber diferentes maneras de definir una región y dependiendo de esa definición podemos tener enfoques de llenado de región.
En líneas generales hay dos definiciones de una región, una es la definición de nivel de píxel una es la definición geométrica.
En el caso de una definición de nivel de píxel definimos una región en términos de píxeles que significa que podemos definir la región en términos de píxeles de límite o podemos definir la región en términos de píxeles dentro de un límite. En el primer caso, cuando se define una región en términos de píxeles de límite o el conjunto de píxeles que definen el límite, dicha definición se denomina límite definido.
En el otro caso no definimos explícitamente un límite sino un conjunto de píxeles que define toda la región en ese caso que le llamamos interior definido. Por lo tanto, estas definiciones de píxeles son útiles cuando estamos tratando con regiones que tienen límites complejos o como acabamos de ver aplicaciones como sistemas interactivos de pintura. Por lo tanto, para formas complejas, es difícil lidiar con el límite, por lo que su definición de nivel de píxel puede ser útil. También en sistemas interactivos las definiciones de nivel de píxeles son muy útiles.
El otro tipo de definición de área de relleno es la definición geométrica, aquí definimos una región en términos de las primitivas geométricas tales como bordes y vértices que ya hemos visto antes durante nuestras técnicas de representación de objetos. Ahora, este enfoque en particular está destinado principalmente a las regiones poligonales. Y estas definiciones se utilizan comúnmente en paquetes gráficos generales, que ya hemos mencionado anteriormente.
Por lo tanto, las definiciones esencialmente geométricas significa, definir una región en términos de primitivas geométricas tales como bordes, vértices, si usted puede recordar que hemos discutido tales cosas durante nuestra discusión sobre la representación objetiva donde usamos la lista de vértices, lista de bordes para definir objetos o regiones. Y cuando estamos tratando con definiciones geométricas, están destinadas principalmente a definir regiones que son poligonales en forma.
Ahora, con este conocimiento de dos amplias definiciones de regiones, intentemos entender los algoritmos de conversión de barrido de llenado de la región diferente. Comenzaremos con un simple enfoque que se llama algoritmo de llenado de semillas. Entonces, lo que sí nos deja tratar de entender.
Entonces, la idea es muy simple para un algoritmo de relleno de semillas, empezamos con un pixel interior y coloreamos la región progresivamente, esa es una idea simple.
Claramente aquí estamos asumiendo una definición de nivel de píxel particularmente, una definición de límite de una región, donde se especifican los píxeles de límite. Y también asumimos que conocemos al menos un pixel interior, ahora que pixel se llama pixel de semilla y si conocemos los pixeles de límite podemos decidir sobre cualquier pixel de semilla, es fácil, porque estamos lidiando con un pixel de semilla, por lo que el algoritmo se denomina algoritmo de relleno de semillas. Por lo tanto, tenemos un pixel de semillas y tenemos definiciones de límites de la región en términos de píxeles.
A continuación en este algoritmo, también se supone que los píxeles interiores están conectados a otros píxeles en cualquiera de las dos formas, ya sea que se pueden conectar a 4 píxeles que se llama 4 conectados o se pueden conectar a 8 píxeles, que se llama 8 conectado. Ahora, estos son los píxeles vecinos, por ejemplo, supongamos que se trata de un píxel de semilla y hay píxeles alrededor, si esta es la cuadrícula, donde el círculo muestra los píxeles, entonces se puede suponer que estos píxeles están conectados a los 4 píxeles vecinos o a los 8 píxeles vecinos.
Por consiguiente, la naturaleza de la conexión se llama 4 conectada o 8 conectada. Así que, cuando estamos hablando de 4 conectados, asumimos esencialmente que vamos a volver a dibujar la figura de nuevo, supongamos que estos son los píxeles estos puntos de intersección de la cuadrícula, este es un píxel, ahora en caso de 4 conectados los 4 píxeles vecinos se definen como superior, inferior, izquierda y derecha que significa que esto es la parte superior, esto es inferior, esto es correcto y esto se deja.
Mientras que cuando estamos tratando con 8 píxeles conectados, estamos tratando con la parte superior de 8 vecinos, arriba a la izquierda, esta es la parte superior izquierda, luego arriba a la derecha, luego izquierda, derecha, abajo, abajo izquierda esto está aquí y abajo a la derecha aquí. Por lo tanto, cualquiera de estas conexiones podemos asumir. Y en consecuencia se ejecuta el algoritmo.
Por lo tanto, la idea básica es simple que mantenemos una pila, el pixel de semilla es primero empujado a la pila y luego un bucle ejecutado hasta que la pila no está vacía. Ahora, en cada paso, colgamos el pixel superior de la pila y asignamos el color deseado a ese píxel.
El algoritmo se muestra aquí. Entonces, ¿cuál es nuestra aportación? El color del pixel límite, el color especificado, que queremos asignar a la región y la semilla o el pixel interior, cualquier pixel de semilla y la salida son los pixeles interiores con el color especificado que es nuestro objetivo. Empezamos con empujar el pixel de semilla a una pila y luego entramos en un bucle donde establecemos el pixel actual para ser el pixel de pila de pila al popping de la pila, aplicar color especificado a ese píxel, entonces hacemos uso de la propiedad conectada.
Por lo tanto, si estamos asumiendo que es un 4 pixel conectado, entonces para cada uno de los 4 píxeles conectados o si estamos asumiendo que es 8 pixel conectado entonces para cada uno de los 8 píxeles conectados del pixel actual, ¿qué hacemos? Comprobamos si el color del pixel conectado no es igual al color del límite que significa que no hemos alcanzado el límite o el color del pixel conectado no es igual al color especificado que significa que todavía no lo hemos asignado ningún color, entonces lo empujamos a la pila.
Por lo tanto, para cada píxel pulsamos 4 píxeles conectados a la pila o 8 píxeles conectados a la pila dependiendo de la naturaleza de conexión que estamos asumiendo. Y luego volvemos aquí y el bucle continúa todavía la pila está vacía que significa que hemos alcanzado el límite o hemos asignado colores a todos los píxeles interiores. Esa es la simple idea del algoritmo de llenado de semillas. A continuación vamos a discutir otro enfoque que se llama relleno de inundación. La idea es casi similar con algunas variaciones menores. Veamos cómo funciona.
Ahora, en caso de algoritmo de llenado de inundación, asumimos una definición diferente que es una definición interior que significa que los píxeles interiores son conocidos. Anteriormente, asumimos la definición de límite con sólo un píxel interior, que es el píxel de semilla. Ahora, aquí estamos asumiendo la definición interior, eso significa que todos los píxeles interiores son conocidos. Y nuestro objetivo es colorear o recolorear la región con un color especificado.
La idea es similar al relleno de semillas, con alguna diferencia. Ahora, en este caso las decisiones se toman con base en el color interior original de los píxeles actuales en lugar del color del pixel límite. Otras cosas siguen siendo las mismas, eso significa usar una pila y utilizar los elementos de pila de una manera particular, colorearlos de una manera particular sigue siendo el mismo.
Por lo tanto, el algoritmo se muestra aquí de nuevo la entrada es el color del pixel interior, el color especificado y el pixel interior o pixel de semilla, es aún más fácil aquí porque ya conocemos los píxeles interiores y podemos recoger al azar un pixel y la salida es después de asignar los colores a todos los píxeles el conjunto de píxeles.
Ahora, pulsamos los pixels de semillas para apilar y como antes de entrar en un bucle, primero nos pop la pila y lo establecemos en el pixel actual aplicando el color especificado, asumiendo entonces la conectividad como lo hacíamos antes, tratamos con 4 u 8 píxeles conectados y para cada píxel hacemos el cheque, ahora aquí el cheque es ligeramente diferente en comparación con lo que hicimos antes. Aquí comprobamos si el color del píxel conectado es el color interior.
Sólo en ese caso pulsamos el píxel conectado, porque aquí no podemos comprobar el color del límite, no hay ningún límite especificado. Y luego seguimos como antes de que la pila esté vacía. Por lo tanto, en ambos casos empezamos con un pixel de semilla, pero en un caso estamos tratando con una definición límite de píxeles, en otro caso estamos tratando con una definición interior de región en términos de píxeles. Y por lo tanto nuestro algoritmo cambia ligeramente de otra manera la idea amplia sigue siendo la misma.
Vamos a discutir un tercer enfoque, que se basa en la definición geométrica que se llama algoritmo de relleno de polígono de línea de exploración. Por lo tanto, los enfoques anteriores de relleno de semilla o relleno de inundación dependen de definiciones de píxeles. En caso de algoritmo de relleno de polígono de línea de exploración, dependemos de la definición geométrica.
Por lo tanto, aquí asumimos que la región se define en términos de sus vértices y bordes, por supuesto aquí la suposición implícita es que la región es poligonal y los vértices se redondean a los píxeles más cercanos. Estas son las cosas que asumimos.
Primero discutiremos el algoritmo y luego trataremos de entenderlo en términos de un ejemplo ilustrativo. Por lo tanto, aquí la entrada es el conjunto de vértices y la salida son los píxeles, los píxeles interiores con el color especificado. Desde los vértices lo que hacemos es determinar el máximo, las líneas de exploración mínimas, eso significa los valores y máximos y mínimos para el polígono.
Así que, por ejemplo aquí supongamos que esta es nuestra cuadrícula de píxeles y tenemos forma como esta, por lo que tenemos que saber el mínimo y que es aquí ymin y máximo y que dice aquí ymax. Por lo tanto, este máximo y mínimo primero lo determinamos, entonces empezamos desde la línea de exploración mínima, que es la más baja aquí.
Y luego entramos en un bucle y continuamos en el bucle hasta llegar a la línea de exploración máxima como se muestra en esta condición de bucle. Entonces, ¿en el bucle lo que hacemos? Para cada borde o el par de vértices del polígono si van para una comprobación si la línea de exploración está dentro de un determinado rango definido por las coordenadas y del borde, entonces se determina el punto de intersección de la línea de exploración de borde.
¿Después de estos pasos lo que hacemos? Clasificamos los puntos de intersección en orden creciente de coordenadas x, eso significa que primero tratamos de determinar los puntos de intersección entonces los clasificamos en orden creciente, luego aplicamos el color especificado a los píxeles que están dentro de los puntos de intersección todos los píxeles intermedios que aplicamos el color y luego vamos a la siguiente línea de exploración, esa es la idea amplia.
Por lo tanto, primero determinamos el mínimo y máximo que empezamos con el mínimo y continuamos el procesamiento hasta que se alcance la línea de exploración máxima. ¿En cada paso del proceso o en cada ejecución de bucle lo que hacemos? Determinamos estos dos puntos de intersección del borde con las líneas de exploración para obtener los dos extremos en una sola línea de exploración y luego asignar el color especificado a todos los píxeles que están dentro de estos extremos, esa es la idea simple. Permítanos, ahora tratemos de entenderlo en términos de un ejemplo.
Pasaremos por un ejemplo ilustrativo para conseguir más claridad sobre el algoritmo.
Consideremos esta cifra. Aquí hay un polígono o área de relleno especificada con 4 vértices A, B, C y D como se muestra aquí. Ahora, seguimos una convención anti-reloj de denominación de vértice, por lo que hay 4 bordes AB, BC, CD y DA.
Ahora, primero, determinamos la extensión mínima y máxima de las líneas de exploración. Aquí es 1 es el mínimo como se puede ver aquí y 6 es la máxima línea de exploración, esto lo determinamos como el primer paso.
Entonces empezamos el bucle. Así, partimos de 1 y continuamos hasta 6 y en cada ejecución del bucle procesamos una línea de exploración. Por lo tanto, cuando estamos empezando con 1, por lo que nuestro objetivo es determinar los puntos de intersección de la línea de exploración y igual a 1 con los 4 bordes en el bucle interno del algoritmo que es las líneas 6 a 10.
Si ejecuta las líneas, encontrará que para el borde AB la condición si se satisface y el punto de intersección es A, para BC y los bordes de CD la condición no se satisface, de nuevo para DA la condición se satisface y obtenemos A de nuevo, por lo que el punto de intersección es sólo A.
Puesto que ya es un vértice, no puede haber ningún pixels intermedio. Por lo tanto, obtenemos 2 puntos de intersección, que es el mismo vértice A, por lo que es el único píxel y aplicamos el color especificado.
A continuación, vamos a la siguiente iteración estableciendo la línea de exploración igual a 2 y comprobando que 2 no es la línea de exploración máxima que es 6, por lo que volvemos a ejecutar el bucle.
En la segunda iteración del bucle, ¿qué hacemos? Verificamos los puntos de intersección como antes con los bordes y la línea de exploración y igual a 2, es decir, esta línea de exploración.
Ahora, por y igual a 2 y si comprobamos los bordes vemos que para AB si la condición está satisfecha que significa que hay un punto de intersección, utilizando la ecuación de línea de borde y la ecuación de línea de exploración podemos obtener el punto de intersección como este, este punto, para BC y CD la condición si no satisface para BC y CD, por lo que no hay intersección.
Y para DA la condición satisface, de nuevo. Por lo tanto, esto es para el punto de intersección de AB, esto es para el punto de intersección de DA y este punto de intersección de DA que podemos encontrar para ser (3, 2) mediante el uso de la ecuación de línea para el borde, así como la ecuación de la línea de exploración. Por lo tanto, este punto es un punto de intersección, este punto es otro punto de intersección.
Entonces realizamos una clasificación como se menciona en el algoritmo y obtenemos estos dos puntos de intersección en un orden ordenado como este. Por lo tanto, este es un punto de intersección y este es el otro punto de intersección. En medio de pixels están ahí como se puede ver así que este mismo es un píxel en-entre, entonces tenemos este píxel, que es (4, 2) y luego tenemos (5, 2).
Tenga en cuenta que el otro punto de intersección no es un píxel en sí mismo porque implica un número real como coordenada. Por lo tanto, hemos encontrado los 3 píxeles, que están ahí entre los dos puntos de intersección, entonces aplicamos el color especificado a estos píxeles. A continuación, restablecemos la línea de exploración a 3 y comprobamos si 3 es la línea de exploración máxima, no es así que volvemos a entrar en el bucle.
Y de manera similar procesamos las líneas de exploración y= 3, y= 4, y= 5 hasta y=6. Por lo tanto, esa es la idea del algoritmo. Por lo tanto, para resumir aquí en este algoritmo de relleno de polígono de línea de exploración, ¿qué hacemos? Asumimos una representación geométrica de la región, región poligonal en términos de bordes o vértices. A continuación, para cada línea de exploración que está entre las líneas de exploración mínima y máxima, ¿qué hacemos? Determinamos los puntos de intersección de los bordes con esas líneas de exploración, clasificarlas para obtener dos puntos de intersección extremos, identificar el en entre píxeles y colorear esos píxeles. Y esto lo hacemos para todas las líneas de exploración que están ahí entre las líneas de exploración mínima y máxima.
Ahora, hay dos cosas que requieren alguna elaboración en el algoritmo.
Primero es cómo determinamos el punto de intersección de 8 líneas de exploración, que creo que todos ustedes saben que podemos utilizar la ecuación de línea que podemos determinar por los dos puntos finales y podemos utilizar la ecuación de la línea de exploración para obtener el punto de intersección. Por lo tanto, esta ecuación de la línea se puede evaluar con el valor de la línea de exploración para obtener el punto de intersección, que es un enfoque muy simple y creo que todos ustedes pueden ya saber cómo hacer eso.
En segundo lugar, ¿cómo determinamos los píxeles en dos puntos de intersección? Esto es de nuevo muy simple, empezamos desde la izquierda más pixel que es el punto de intersección o justo al lado del punto de intersección y luego continuar a lo largo de la línea de exploración hasta obtener un valor de píxel que es menor que el punto de intersección derecho. Coordenada de Pixel x comprobamos en todas estas comprobaciones. Por lo tanto, ambos son simples, pero el segundo punto que es cómo determinar los píxeles dentro de dos puntos de intersección no es tan simple como aparece. ¿Y por qué eso es así?
Si asumimos que tenemos un polígono cóncavo, entonces hay un problema. Por lo tanto, cualquier explicación que se dé se basa en la suposición de que estamos tratando con polígonos convexos. Para los polígonos cóncavos no es tan fácil determinar los píxeles intermedios, hay problemas adicionales que hay que resolver antes de determinar los píxeles interiores.
Pongamos un ejemplo, aquí en esta figura como se puede ver se trata de un polígono cóncavo, por lo que cuando estamos tratando con estos dos puntos de intersección extremos, algunos píxeles están fuera del polígono, aunque si seguimos el enfoque que hemos descrito anteriormente que simplemente nos moveremos a lo largo de esta línea para obtener todos los píxeles intermedios, entonces los píxeles externos también se tratarán como píxeles interiores, que definitivamente no queremos. Por lo tanto, tenemos que ir por un enfoque diferente cuando estamos tratando con polígonos cóncavos. Lo que tenemos que hacer es determinar explícitamente dentro de pixels, pixels que están dentro del polígono. Como se puede ver en la figura que no es tan obvio para los polígonos cóncavos.
Por lo tanto, en este caso tenemos que realizar una prueba interna externa para cada píxel que es, por supuesto, una sobrecarga adicional.
¿Y cómo podemos hacerlo? Por lo tanto, para cada píxel p lo que podemos hacer es determinar el recuadro delimitador del polígono que es el máximo y los valores mínimos x e y de los vértices de los polígonos. Este es el primer paso, luego en el segundo paso elegimos un píxel arbitrario, denotémoslo por p0, fuera del recuadro delimitador.
Así que, en este caso, este puede ser nuestro recuadro delimitador, ya que se puede ver que cubre todos los vértices del polígono. Luego elegimos un píxel fuera de esta caja fuerte en algún lugar, digamos aquí, que significa elegir un punto (x, y) que está fuera del rango mínimo y máximo de las coordenadas del polígono. En la tercera etapa creamos una línea uniendo p y p0.
Por lo tanto, creamos una línea entre el píxel que está dentro que es nuestro píxel de preocupación y el punto que está fuera del recuadro delimitador. En la etapa final vamos para algunos cheques, si la línea se cruza los bordes del polígono incluso el número de veces entonces p está fuera, de lo contrario es dentro. Así que, como puedes ver supongamos que tenemos un píxel aquí y estos dos píxeles si nos unimos a él se intersecciona una vez, eso es un número impar de tiempo, por lo que este píxel está dentro.
Mientras que, si estamos tratando con un píxel aquí y nos estamos uniendo a esto, por lo que como se puede ver aquí intersección es dos veces que es incluso número de veces, por lo que este píxel está fuera. Del mismo modo, estos píxeles si nos unimos a estas dos líneas, vemos que no se entrecruzan los bordes del polígono, por lo que es 0, por lo que en ese caso también está fuera.
Pero por supuesto todos estos controles llevan tiempo, por lo que es una sobrecarga adicional cuando estamos tratando con polígonos cóncavos. De lo contrario, el algoritmo de relleno de polígono de línea de exploración para polígonos convexos es bastante simple. Por lo tanto, hemos discutido diferentes algoritmos de relleno de región, tanto para definiciones de nivel de píxel como para definiciones geométricas.
Para las definiciones de nivel de píxeles que hemos aprendido sobre el algoritmo de llenado de semillas y el algoritmo de llenado de inundación, ambos son similares con una variación menor. Para las definiciones geométricas que hemos aprendido sobre el algoritmo de relleno de polígono de línea de exploración, este algoritmo es bastante simple y sencillo cuando estamos tratando con polígono convexo, pero requiere comprobaciones adicionales cuando estamos tratando con polígonos cóncavos. Ahora, intentemos entender cómo se muestran los caracteres en la pantalla del ordenador. Entonces, ¿cómo representamos a los personajes?
Aquí, el carácter significa caracteres alfanuméricos.
Ahora, la representación de caracteres es, por supuesto, como todos sabemos que es un tema importante, por ejemplo, considerar esta diapositiva, aquí vemos un montón de caracteres alfanuméricos mostrados. Por lo tanto, claramente es un tema importante y este es el bloque de construcción de cualquier contenido textual, por lo que cualquier aplicación que trate de mostrar textos debe tener soporte para la representación de caracteres. ¿Y cómo se hace?
Como todos sabemos cuando estamos tratando con alguna aplicación de procesamiento de texto, típicamente gran cantidad de texto necesita ser exhibido en corto tiempo de duración. Por ejemplo, si tenemos en cuenta el desplazamiento, ahora con cada acción de desplazamiento se vuelve a dibujar todo el conjunto de caracteres y eso se tiene que hacer muy rápidamente. Por lo tanto, la representación eficiente de los caracteres es un tema muy importante en los gráficos de la computadora.
Ahora, antes de intentar entender la representación de caracteres, vamos a tener un vistazo rápido a la fuente de la idea y ya sabemos que probablemente ya se ha oído hablar de este término, así que vamos a ver qué es una fuente y cómo se trata dentro de los gráficos de la computadora.
Por lo tanto, cuando hablamos de la fuente, la fuente o el tipo de letra denota el estilo de diseño general de los personajes y hay muchas fuentes de este tipo como probablemente todos nosotros estamos usando todos los días como Times New Roman, Courier, Arial y así sucesivamente. Por lo tanto, estas fuentes o tipografías indican el estilo de diseño de los personajes cómo se ven.
Ahora, cada fuente se puede representar con apariencia variable. Por lo tanto, la apariencia puede ser diferente, puede ser audaz, puede estar en cursiva o puede ser en negrita y en cursiva.
Junto con eso hay otro concepto llamado tamaño, lo grande o pequeño que el personaje aparece en la pantalla. Por lo tanto, que se denota por punto, por ejemplo un font de 10 puntos, font de 12 puntos y así en lo que es un mayor de altura de carácter en pulgadas y este término se toma prestado de tipografía, pero en gráficos de ordenador no utilizamos la medida original.
En cambio, suponemos que ese punto es equivalente a 1/72 de una pulgada o aproximadamente 0,0139 pulgadas. Y esto también se conoce como DTP o publicación de escritorio o punto de postscript. Entonces, cuando estamos hablando de un punto, suponemos que es 1/72 de una pulgada o aproximadamente 0,0139 pulgadas, lo que indica la altura del personaje.
Ahora, con ese conocimiento básico, intentemos entender cómo se representan los personajes.
Por lo tanto, hay ampliamente dos formas de representar los caracteres, uno es el mapa de bits se describe.
En caso de font bimapeado, definimos una cuadrícula de píxeles para cada carácter, por ejemplo, considerar esta cuadrícula de 8 por 8 píxeles y podemos definir la cuadrícula para el carácter B en el capital, donde los píxeles que forman parte de los caracteres están marcados en ON y otros son OFF. Por lo tanto, cuando la cuadrícula se representa para B, sólo esos píxeles se iluminarán otros píxeles no se iluminarán. Los círculos negros aquí indican los píxeles ON como se puede ver aquí y las cajas blancas indican los píxeles OFF. Por lo tanto, podemos tener este tipo de cuadrícula para cada carácter cuando estamos tratando con la fuente de mapa de bits.
En contraste cuando estamos tratando con la fuente del contorno el enfoque es totalmente diferente, aquí los personajes se definen usando primitivos geométricos tales como puntos y líneas. Por lo tanto, pocos pixels pueden ser proporcionados y luego otros pixeles se determinarán usando técnicas de conversión de escaneo para puntos, líneas y círculos.
Por lo tanto, esencialmente se proporcionan pocos pixeles y usando esos pixeles la computadora atraerá a las primitivas tales como lineas o círculos para construir un caracter como crear una imagen. Por lo tanto, en el caso de la fuente de mapa de bits, ya especificamos todos los píxeles, mientras que en el caso de la fuente de contorno no se especifican todos los píxeles, se especifican pocos píxeles y se utiliza la forma global se calcula o se crea siguiendo las técnicas de conversión de escaneo.
Las fuentes claramente bitmapeadas son sencillas de definir y primero de representar porque aquí no hay ningún cálculo involucrado. No necesitamos calcular ningún pixels que ya estén especificados, pero tiene algunos problemas.
Obviamente, requerirá almacenamiento adicional, gran cantidad de almacenamiento, porque para cada personaje estamos almacenando una información de pixel grid y luego si queremos redimensionar o remodelar para generar diferente efecto estiloso de la fuente entonces eso no es fácilmente posible con definiciones de bitmap y la fuente resultante puede parecer ser mala.
La tercera preocupación es que el tamaño de la fuente depende de la resolución de la pantalla, porque estamos arreglando la cuadrícula de píxeles. Por lo tanto, si la resolución cambia, es posible que la representación no se vea bien. Por ejemplo, supongamos que hemos definido un mapa de bits alto de 12 píxeles, que producirá un carácter de 12 puntos en una resolución de 72 píxeles por pulgada. Ahora, si cambiamos la resolución a 96 píxeles por pulgada, el mismo mapa de bits producirá un carácter de 9 puntos que es posible que no queramos. Por lo tanto, dependiendo de la resolución el resultado puede cambiar.
Por otro lado, las fuentes de contorno computan los pixeles intermedios, no almacenan todo, por lo que requiere menos almacenamiento, puede realizar transformaciones geométricas con efecto satisfactorio para reshape y todo el tamaño, por lo que la distorsión será menor y no es dependiente de la resolución.
Pero por otro lado la representación de tales fuentes es lenta, lo que es bastante obvio porque los cálculos están involucrados, necesitamos crear la forma, necesitamos escanear convertir la forma antes de la representación. Por lo tanto, debido a tales cálculos la representación es más lenta en comparación con las fuentes de mapa de bits. Por lo tanto, ambos enfoques tienen sus lados positivos y negativos y dependiendo de los recursos utilizados y el resultado deseado podemos elegir un enfoque particular.
Cualquier cosa que he discutido hoy se puede encontrar en este libro, usted puede pasar a través del capítulo 9 sección 9.3 y 9.4 para más detalles sobre los temas que hemos cubierto hoy. En la próxima conferencia, vamos a discutir un tema interesante en la conversión de escaneo que se llama efecto aliasing hasta entonces gracias y adiós.