Visualización y recorte
El uso principal del recorte en gráficos por computadora es eliminar objetos, líneas o segmentos de línea que están fuera del panel de visualización. La transformación de visualización es insensible a la posición de los puntos en relación con el volumen de visualización, especialmente aquellos puntos detrás del espectador, y es necesario eliminar estos puntos antes de generar la vista.
Recorte de puntos
Recortar un punto de una ventana determinada es muy fácil. Considere la siguiente figura, donde el rectángulo indica la ventana. El recorte de puntos nos dice si el punto dado (X, Y) está dentro de la ventana dada o no; y decide si usaremos las coordenadas mínima y máxima de la ventana.
La coordenada X del punto dado está dentro de la ventana, si X se encuentra entre Wx1 ≤ X ≤ Wx2. De la misma manera, la coordenada Y del punto dado está dentro de la ventana, si Y se encuentra entre Wy1 ≤ Y ≤ Wy2.
Recorte de línea
El concepto de recorte de línea es el mismo que el de recorte de puntos. En el recorte de línea, cortaremos la parte de la línea que está fuera de la ventana y mantendremos solo la parte que está dentro de la ventana.
Recortes de líneas de Cohen-Sutherland
Este algoritmo utiliza la ventana de recorte como se muestra en la siguiente figura. La coordenada mínima para la región de recorte es $ (XW_ {min,} YW_ {min}) $ y la coordenada máxima para la región de recorte es $ (XW_ {max,} YW_ {max}) $.
Usaremos 4 bits para dividir toda la región. Estos 4 bits representan la parte superior, inferior, derecha e izquierda de la región, como se muestra en la siguiente figura. Aquí elTOP y LEFT bit se establece en 1 porque es el TOP-LEFT esquina.
Hay 3 posibilidades para la línea:
La línea puede estar completamente dentro de la ventana (esta línea debe aceptarse).
La línea puede estar completamente fuera de la ventana (esta línea se eliminará por completo de la región).
La línea puede estar parcialmente dentro de la ventana (encontraremos el punto de intersección y dibujaremos solo la parte de la línea que está dentro de la región).
Algoritmo
Step 1 - Asignar un código de región para cada punto final.
Step 2 - Si ambos extremos tienen un código de región 0000 luego acepta esta línea.
Step 3 - De lo contrario, realiza lo lógico ANDoperación para ambos códigos de región.
Step 3.1 - Si el resultado no es 0000, luego rechace la línea.
Step 3.2 - De lo contrario, necesita recorte.
Step 3.2.1 - Elija un punto final de la línea que esté fuera de la ventana.
Step 3.2.2 - Busque el punto de intersección en el límite de la ventana (basado en el código de región).
Step 3.2.3 - Reemplace el punto final con el punto de intersección y actualice el código de región.
Step 3.2.4 - Repita el paso 2 hasta que encontremos una línea recortada aceptada trivialmente o rechazada trivialmente.
Step 4 - Repita el paso 1 para otras líneas.
Algoritmo de recorte de línea Cyrus-Beck
Este algoritmo es más eficiente que el algoritmo de Cohen-Sutherland. Emplea representación de líneas paramétricas y productos de puntos simples.
La ecuación paramétrica de la recta es -
P0P1:P(t) = P0 + t(P1 - P0)
Sea N i el borde normal exterior E i . Ahora elija cualquier punto arbitrario P Ei en el borde E i y luego el producto escalar N i . [P (t) - P Ei ] determina si el punto P (t) está "dentro del borde del clip" o "fuera" del borde del clip o "En" el borde del clip.
El punto P (t) está adentro si N i . [P (t) - P Ei ] <0
El punto P (t) está fuera si N i . [P (t) - P Ei ]> 0
El punto P (t) está en el borde si N i . [P (t) - P Ei ] = 0 (Punto de intersección)
N i . [P (t) - P Ei ] = 0
N i . [P 0 + t (P 1 - P 0 ) - P Ei ] = 0 (Reemplazando P (t) con P 0 + t (P 1 - P 0 ))
N i . [P 0 - P Ei ] + N i .t [P 1 - P 0 ] = 0
N i . [P 0 - P Ei ] + N i ∙ tD = 0 (sustituyendo D por [P 1 - P 0 ])
N yo . [P 0 - P Ei ] = - N yo ∙ tD
La ecuación para t se convierte en,
$$ t = \ tfrac {N_ {i}. [P_ {o} - P_ {Ei}]} {{- N_ {i} .D}} $$
Es válido para las siguientes condiciones:
- N i ≠ 0 (el error no puede ocurrir)
- D ≠ 0 (P 1 ≠ P 0 )
- N i ∙ D ≠ 0 (P 0 P 1 no paralelo a E i )
Recorte de polígonos (algoritmo de Sutherland Hodgman)
También se puede recortar un polígono especificando la ventana de recorte. El algoritmo de recorte de polígonos de Sutherland Hodgeman se utiliza para el recorte de polígonos. En este algoritmo, todos los vértices del polígono se recortan contra cada borde de la ventana de recorte.
Primero, el polígono se recorta contra el borde izquierdo de la ventana del polígono para obtener nuevos vértices del polígono. Estos nuevos vértices se utilizan para recortar el polígono contra el borde derecho, el borde superior, el borde inferior de la ventana de recorte como se muestra en la siguiente figura.
Al procesar un borde de un polígono con ventana de recorte, se encuentra un punto de intersección si el borde no está completamente dentro de la ventana de recorte y se recorta un borde parcial desde el punto de intersección hasta el borde exterior. Las siguientes figuras muestran recortes de borde izquierdo, derecho, superior e inferior:
Recorte de texto
Se utilizan varias técnicas para proporcionar recorte de texto en un gráfico de computadora. Depende de los métodos utilizados para generar caracteres y los requisitos de una aplicación en particular. Hay tres métodos para el recorte de texto que se enumeran a continuación:
- Recorte de cadena todo o nada
- Recorte de todo o nada de caracteres
- Recorte de texto
La siguiente figura muestra todo o nada de recorte de cadenas:
En el método de recorte de cadena todo o nada, mantenemos la cadena completa o rechazamos la cadena completa en función de la ventana de recorte. Como se muestra en la figura anterior, STRING2 está completamente dentro de la ventana de recorte, por lo que lo mantenemos y STRING1 está solo parcialmente dentro de la ventana, lo rechazamos.
La siguiente figura muestra el recorte de todos o ninguno de los caracteres:
Este método de recorte se basa en caracteres en lugar de una cadena completa. En este método, si la cadena está completamente dentro de la ventana de recorte, la mantenemos. Si está parcialmente fuera de la ventana, entonces:
Rechaza solo la parte de la cuerda que está fuera
Si el carácter está en el límite de la ventana de recorte, descartamos ese carácter completo y mantenemos el resto de la cadena.
La siguiente figura muestra el recorte de texto:
Este método de recorte se basa en caracteres en lugar de en toda la cadena. En este método, si la cadena está completamente dentro de la ventana de recorte, la mantenemos. Si está parcialmente fuera de la ventana, entonces
Rechaza solo la porción de cuerda que está afuera.
Si el carácter está en el límite de la ventana de recorte, descartamos solo la parte del carácter que está fuera de la ventana de recorte.
Gráficos de mapa de bits
Un mapa de bits es una colección de píxeles que describe una imagen. Es un tipo de gráficos de computadora que la computadora usa para almacenar y mostrar imágenes. En este tipo de gráficos, las imágenes se almacenan bit a bit y, por lo tanto, se denominan gráficos de mapa de bits. Para una mejor comprensión, consideremos el siguiente ejemplo en el que dibujamos una cara sonriente utilizando gráficos de mapa de bits.
Ahora veremos cómo esta carita sonriente se almacena poco a poco en los gráficos por computadora.
Al observar de cerca la carita sonriente original, podemos ver que hay dos líneas azules que se representan como B1, B2 y E1, E2 en la figura anterior.
De la misma manera, el emoticón se representa usando la combinación de bits de A4, B5, C6, D6, E5 y F4 respectivamente.
Las principales desventajas de los gráficos de mapa de bits son:
No podemos cambiar el tamaño de la imagen de mapa de bits. Si intenta cambiar el tamaño, los píxeles se vuelven borrosos.
Los mapas de bits de colores pueden ser muy grandes.