Görüntüleme ve Kırpma

Bilgisayar grafiklerinde kırpmanın birincil kullanımı, görüntüleme bölmesinin dışındaki nesneleri, çizgileri veya çizgi parçalarını kaldırmaktır. Görüntüleme dönüşümü, izleme hacmine göre noktaların konumuna - özellikle izleyicinin arkasındaki noktalara - duyarsızdır ve görünümü oluşturmadan önce bu noktaların kaldırılması gerekir.

Nokta Kırpma

Belirli bir pencereden bir noktayı kırpmak çok kolaydır. Dikdörtgenin pencereyi gösterdiği aşağıdaki şekli düşünün. Nokta kırpma, bize verilen noktanın (X, Y) verilen pencere içinde olup olmadığını söyler; ve pencerenin minimum ve maksimum koordinatlarını kullanıp kullanmayacağımıza karar verir.

X, Wx1 ≤ X ≤ Wx2 arasında yer alıyorsa, verilen noktanın X koordinatı pencerenin içindedir. Aynı şekilde, Y Wy1 ≤ Y ≤ Wy2 arasında yer alıyorsa, verilen noktanın Y koordinatı pencerenin içindedir.

Çizgi Kırpma

Çizgi kırpma kavramı, nokta kırpma ile aynıdır. Çizgi kırpmada, çizginin pencere dışında kalan kısmını keseceğiz ve sadece pencere içinde kalan kısmı tutacağız.

Cohen-Sutherland Hattı Kupürleri

Bu algoritma, aşağıdaki şekilde gösterildiği gibi kırpma penceresini kullanır. Kırpma bölgesi için minimum koordinat $ (XW_ {min,} YW_ {min}) $ ve kırpma bölgesi için maksimum koordinat $ (XW_ {max,} YW_ {max}) $ şeklindedir.

Tüm bölgeyi bölmek için 4 bit kullanacağız. Bu 4 bit, aşağıdaki şekilde gösterildiği gibi bölgenin Üst, Alt, Sağ ve Solunu temsil eder. BuradaTOP ve LEFT bit 1'e ayarlanmıştır çünkü TOP-LEFT köşe.

Hat için 3 olasılık vardır -

  • Satır tamamen pencere içinde olabilir (Bu satır kabul edilmelidir).

  • Satır tamamen pencere dışında olabilir (Bu satır bölgeden tamamen kaldırılacaktır).

  • Çizgi kısmen pencerenin içinde olabilir (Kesişme noktasını bulacağız ve çizginin sadece bölgenin içindeki kısmını çizeceğiz).

Algoritma

Step 1 - Her uç nokta için bir bölge kodu atayın.

Step 2 - Her iki uç noktanın da bölge kodu varsa 0000 sonra bu satırı kabul edin.

Step 3 - Aksi takdirde, mantıklı yapın ANDher iki bölge kodu için işlem.

Step 3.1 - Sonuç değilse 0000, sonra hattı reddedin.

Step 3.2 - Aksi takdirde, kırpmaya ihtiyacın var.

Step 3.2.1 - Pencerenin dışındaki çizginin bir uç noktasını seçin.

Step 3.2.2 - Pencere sınırındaki kesişme noktasını bulun (bölge koduna göre).

Step 3.2.3 - Uç noktayı kesişim noktasıyla değiştirin ve bölge kodunu güncelleyin.

Step 3.2.4 - Önemsiz bir şekilde kabul edilmiş veya önemsiz bir şekilde reddedilmiş kırpılmış bir çizgi bulana kadar 2. adımı tekrarlayın.

Step 4 - Diğer satırlar için 1. adımı tekrarlayın.

Cyrus-Beck Çizgi Kırpma Algoritması

Bu algoritma, Cohen-Sutherland algoritmasından daha etkilidir. Parametrik çizgi gösterimini ve basit nokta ürünlerini kullanır.

Doğrunun parametrik denklemi -

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

N i dışa doğru normal kenar E i olsun . Şimdi E i kenarındaki herhangi bir rasgele noktayı P Ei seçin ve ardından nokta ürünü N i . [P (t) - P Ei ], P (t) noktasının "klips kenarının içinde" mi yoksa "dışında" mı olduğunu belirler. Klip kenarında "açık".

N i ise P (t) noktası içerdedir . [P (t) - P Ei ] <0

N i ise P (t) noktası dışarıdadır . [P (t) - P Ei ]> 0

N i ise P (t) noktası kenardadır . [P (t) - P Ei ] = 0 (Kesişme noktası)

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

N i . [P 0 + t (P 1 - P 0 ) - P Ei ] = 0 (P (t) yerine 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 ([P 1 - P 0 ] yerine D yerine geçerek )

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

T'nin denklemi,

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

Aşağıdaki koşullar için geçerlidir -

  • N i ≠ 0 (hata olamaz)
  • D ≠ 0 (P 1 ≠ P 0 )
  • N ben ∙ D ≠ 0 (P 0 P 1 E i'ye paralel değil )

Çokgen Kırpma (Sutherland Hodgman Algoritması)

Bir çokgen, kırpma penceresi belirlenerek de kırpılabilir. Çokgen kırpma için Sutherland Hodgeman poligon kırpma algoritması kullanılmıştır. Bu algoritmada, çokgenin tüm köşeleri, kırpma penceresinin her bir kenarına doğru kırpılır.

İlk önce, çokgenin yeni köşelerini elde etmek için çokgen, çokgen penceresinin sol kenarına doğru kırpılır. Bu yeni köşeler, aşağıdaki şekilde gösterildiği gibi, çokgeni kırpma penceresinin sağ kenarına, üst kenarına, alt kenarına kırpmak için kullanılır.

Kırpma pencereli bir çokgenin bir kenarını işlerken, kenar tamamen kırpma penceresinin içinde değilse ve kesişme noktasından dış kenara kısmi bir kenar kırpılmışsa bir kesişim noktası bulunur. Aşağıdaki şekiller sol, sağ, üst ve alt kenar kırpıntılarını göstermektedir -

Metin Kırpma

Bir bilgisayar grafiğinde metin kırpma sağlamak için çeşitli teknikler kullanılır. Karakterleri oluşturmak için kullanılan yöntemlere ve belirli bir uygulamanın gereksinimlerine bağlıdır. Aşağıda listelenen üç metin kırpma yöntemi vardır -

  • Tümü veya hiçbiri dize kırpma
  • Tümü veya hiçbiri karakter kırpma
  • Metin kırpma

Aşağıdaki şekil dize kırpmanın tamamını veya hiçbirini göstermez -

Tümü veya hiçbiri dizge kırpma yönteminde, dizgenin tamamını tutarız veya tüm dizeyi kırpma penceresine göre reddederiz. Yukarıdaki şekilde gösterildiği gibi, STRING2 tamamen kırpma penceresinin içinde olduğundan onu tutuyoruz ve STRING1 sadece kısmen pencerenin içinde kalıyor, reddediyoruz.

Aşağıdaki şekil, karakter kırpmanın tümünü veya hiçbirini göstermez -

Bu kırpma yöntemi dizenin tamamı yerine karakterlere dayanmaktadır. Bu yöntemde dizge tamamen kırpma penceresinin içindeyse, onu saklarız. Kısmen pencerenin dışındaysa, o zaman -

  • Dizenin sadece dışarıdaki kısmını reddediyorsunuz

  • Karakter, kırpma penceresinin sınırındaysa, bu karakterin tamamını atarız ve kalan dizeyi saklarız.

Aşağıdaki şekil metin kırpmayı göstermektedir -

Bu kırpma yöntemi dizenin tamamı yerine karakterlere dayanmaktadır. Bu yöntemde dizge tamamen kırpma penceresinin içindeyse, onu saklarız. Kısmen pencerenin dışındaysa, o zaman

  • İpin sadece dışarıdaki kısmını reddedersiniz.

  • Karakter, kırpma penceresinin sınırındaysa, karakterin yalnızca kırpma penceresinin dışındaki kısmını atarız.

Bitmap Grafikleri

Bitmap, bir görüntüyü tanımlayan bir pikseller koleksiyonudur. Bilgisayarın resimleri saklamak ve görüntülemek için kullandığı bir bilgisayar grafiği türüdür. Bu tür grafiklerde, görüntüler parça parça saklanır ve bu nedenle Bit-harita grafikleri olarak adlandırılır. Daha iyi anlamak için bit haritası grafiklerini kullanarak gülen yüz çizdiğimiz aşağıdaki örneği ele alalım.

Şimdi bu gülen yüzün bilgisayar grafiklerinde parça parça nasıl saklandığını göreceğiz.

Orijinal gülen yüze yakından bakıldığında yukarıdaki şekilde B1, B2 ve E1, E2 olarak temsil edilen iki mavi çizgi olduğunu görebiliriz.

Aynı şekilde, gülen yüz, sırasıyla A4, B5, C6, D6, E5 ve F4'ün kombinasyon bitleri kullanılarak temsil edilir.

Bitmap grafiklerin ana dezavantajları şunlardır:

  • Bitmap görüntüsünü yeniden boyutlandıramıyoruz. Yeniden boyutlandırmaya çalışırsanız pikseller bulanıklaşır.

  • Renkli bit eşlemler çok büyük olabilir.