Visualizzazione e ritaglio

L'utilizzo principale del ritaglio nella grafica computerizzata è rimuovere oggetti, linee o segmenti di linea che si trovano al di fuori del riquadro di visualizzazione. La trasformazione della visualizzazione è insensibile alla posizione dei punti rispetto al volume di visualizzazione - in particolare quei punti dietro lo spettatore - ed è necessario rimuovere questi punti prima di generare la visualizzazione.

Punto di ritaglio

Ritagliare un punto da una determinata finestra è molto semplice. Considera la figura seguente, dove il rettangolo indica la finestra. Il ritaglio del punto ci dice se il punto dato (X, Y) si trova all'interno della finestra data oppure no; e decide se useremo le coordinate minime e massime della finestra.

La coordinata X del punto dato è all'interno della finestra, se X si trova tra Wx1 ≤ X ≤ Wx2. Allo stesso modo, la coordinata Y del punto dato è all'interno della finestra, se Y si trova tra Wy1 ≤ Y ≤ Wy2.

Ritaglio di linea

Il concetto di ritaglio di linea è lo stesso del ritaglio di punti. Nel ritaglio di linea, taglieremo la porzione di linea che è fuori dalla finestra e manterremo solo la parte che si trova all'interno della finestra.

Ritagli di linea Cohen-Sutherland

Questo algoritmo utilizza la finestra di ritaglio come mostrato nella figura seguente. La coordinata minima per la regione di ritaglio è $ (XW_ {min,} YW_ {min}) $ e la coordinata massima per la regione di ritaglio è $ (XW_ {max,} YW_ {max}) $.

Useremo 4 bit per dividere l'intera regione. Questi 4 bit rappresentano la parte superiore, inferiore, destra e sinistra della regione, come mostrato nella figura seguente. Qui, ilTOP e LEFT bit è impostato a 1 perché è il TOP-LEFT angolo.

Ci sono 3 possibilità per la linea:

  • La riga può essere completamente all'interno della finestra (questa riga dovrebbe essere accettata).

  • La linea può essere completamente al di fuori della finestra (questa linea verrà completamente rimossa dalla regione).

  • La linea può essere parzialmente all'interno della finestra (troveremo il punto di intersezione e disegneremo solo quella porzione di linea che si trova all'interno della regione).

Algoritmo

Step 1 - Assegna un codice regione per ogni endpoint.

Step 2 - Se entrambi gli endpoint hanno un codice regione 0000 quindi accetta questa riga.

Step 3 - Altrimenti, esegui la logica ANDfunzionamento per entrambi i codici regionali.

Step 3.1 - Se il risultato non lo è 0000, quindi rifiutare la linea.

Step 3.2 - Altrimenti ti serve il ritaglio.

Step 3.2.1 - Scegli un punto finale della linea che è fuori dalla finestra.

Step 3.2.2 - Trova il punto di intersezione al confine della finestra (in base al codice regionale).

Step 3.2.3 - Sostituisci endpoint con il punto di intersezione e aggiorna il codice regione.

Step 3.2.4 - Ripetere il passaggio 2 fino a quando non troviamo una linea tagliata banalmente accettata o banalmente rifiutata.

Step 4 - Ripetere il passaggio 1 per altre righe.

Algoritmo di ritaglio della linea Cyrus-Beck

Questo algoritmo è più efficiente dell'algoritmo di Cohen-Sutherland. Utilizza la rappresentazione parametrica della linea e semplici prodotti a punti.

L'equazione parametrica della linea è -

P0P1:P(t) = P0 + t(P1 - P0)

Sia N i il bordo normale verso l'esterno E i . Ora scegli un punto arbitrario P Ei sul bordo E i quindi il prodotto scalare N i . [P (t) - P Ei ] determina se il punto P (t) è "all'interno del bordo della clip" o "all'esterno" del bordo della clip o "Sul" bordo della clip.

Il punto P (t) è interno se N i . [P (t) - P Ei ] <0

Il punto P (t) è esterno se N i . [P (t) - P Ei ]> 0

Il punto P (t) è sul bordo se N i . [P (t) - P Ei ] = 0 (Punto di intersezione)

N i . [P (t) - P Ei ] = 0

N i . [P 0 + t (P 1 - P 0 ) - P Ei ] = 0 (Sostituendo 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 (sostituendo D con [P 1 - P 0 ])

N i . [P 0 - P Ei ] = - N i ∙ tD

L'equazione per t diventa,

$$ t = \ tfrac {N_ {i}. [P_ {o} - P_ {Ei}]} {{- N_ {i} .D}} $$

È valido per le seguenti condizioni:

  • N i ≠ 0 (l'errore non può verificarsi)
  • D ≠ 0 (P 1 ≠ P 0 )
  • N i ∙ D ≠ 0 (P 0 P 1 non parallelo a E i )

Ritaglio di poligoni (algoritmo di Sutherland Hodgman)

Un poligono può anche essere ritagliato specificando la finestra di ritaglio. L'algoritmo di ritaglio del poligono di Sutherland Hodgeman viene utilizzato per il ritaglio del poligono. In questo algoritmo, tutti i vertici del poligono vengono ritagliati contro ogni bordo della finestra di ritaglio.

Prima il poligono viene ritagliato contro il bordo sinistro della finestra del poligono per ottenere nuovi vertici del poligono. Questi nuovi vertici vengono utilizzati per ritagliare il poligono contro il bordo destro, il bordo superiore, il bordo inferiore della finestra di ritaglio come mostrato nella figura seguente.

Durante l'elaborazione di un bordo di un poligono con la finestra di ritaglio, viene trovato un punto di intersezione se il bordo non è completamente all'interno della finestra di ritaglio e viene ritagliato un bordo parziale dal punto di intersezione al bordo esterno. Le figure seguenti mostrano i ritagli dei bordi sinistro, destro, superiore e inferiore -

Ritaglio di testo

Diverse tecniche vengono utilizzate per fornire il ritaglio del testo in una grafica computerizzata. Dipende dai metodi utilizzati per generare i caratteri e dai requisiti di una particolare applicazione. Esistono tre metodi per il ritaglio del testo elencati di seguito:

  • Ritaglio di stringa tutto o nessuno
  • Tutti o nessuno di taglio dei caratteri
  • Ritaglio del testo

La figura seguente mostra il ritaglio di stringhe tutto o niente -

Nel metodo di clipping delle stringhe tutte o nessuna, manteniamo l'intera stringa o rifiutiamo l'intera stringa in base alla finestra di ritaglio. Come mostrato nella figura sopra, STRING2 è interamente all'interno della finestra di ritaglio, quindi lo teniamo e STRING1 essendo solo parzialmente all'interno della finestra, rifiutiamo.

La figura seguente mostra il ritaglio di tutti o nessuno dei caratteri:

Questo metodo di ritaglio si basa sui caratteri anziché sull'intera stringa. In questo metodo, se la stringa è interamente all'interno della finestra di ritaglio, la manteniamo. Se è parzialmente fuori dalla finestra, allora -

  • Rifiuti solo la parte della stringa che si trova all'esterno

  • Se il carattere si trova sul confine della finestra di ritaglio, scartiamo l'intero carattere e conserviamo la stringa rimanente.

La figura seguente mostra il ritaglio del testo:

Questo metodo di ritaglio si basa sui caratteri anziché sull'intera stringa. In questo metodo, se la stringa è interamente all'interno della finestra di ritaglio, la manteniamo. Se è parzialmente fuori dalla finestra, allora

  • Rifiuti solo la porzione di stringa che si trova all'esterno.

  • Se il carattere si trova sul confine della finestra di ritaglio, allora scartiamo solo quella porzione di carattere che si trova al di fuori della finestra di ritaglio.

Grafica bitmap

Una bitmap è una raccolta di pixel che descrive un'immagine. È un tipo di computer grafica che il computer utilizza per memorizzare e visualizzare le immagini. In questo tipo di grafica, le immagini vengono memorizzate un po 'alla volta e quindi viene chiamato Bit-map graphics. Per una migliore comprensione, prendiamo in considerazione il seguente esempio in cui disegniamo una faccina sorridente utilizzando la grafica bitmap.

Ora vedremo come questa faccina sorridente viene memorizzata un po 'alla volta nella computer grafica.

Osservando da vicino la faccina sorridente originale, possiamo vedere che ci sono due linee blu che sono rappresentate come B1, B2 e E1, E2 nella figura sopra.

Allo stesso modo, lo smiley viene rappresentato utilizzando i bit di combinazione di A4, B5, C6, D6, E5 e F4 rispettivamente.

I principali svantaggi della grafica bitmap sono:

  • Non è possibile ridimensionare l'immagine bitmap. Se provi a ridimensionare, i pixel diventano sfocati.

  • Le bitmap colorate possono essere molto grandi.